跳到主要内容

按 Key 控制 MCP 工具访问

MCP 工具访问由调用方 API Key 上的 allowed_tools 字段控制。AISIX 会在 tools/list 时过滤工具列表,并在 tools/call 时再次检查权限。

工具名由 MCP Server 注册名称和上游工具名组成,中间使用两个下划线:<server>__<tool>。例如,注册名称为 github 的 Server 暴露 create_issue 工具时,调用方看到的工具名是 github__create_issue

allowed_tools含义
["github__create_issue"]只允许调用一个精确工具。
["github__*"]允许调用 github Server 的全部工具。
["*"]允许调用所有已注册 MCP Server 的所有工具。
[] 或省略不允许访问 MCP 工具。

创建只允许部分工具的调用方 Key

export AISIX_ADMIN_KEY="YOUR_ADMIN_KEY"
export AISIX_API_KEY="YOUR_CALLER_API_KEY"

AISIX_API_KEY_HASH=$(printf '%s' "${AISIX_API_KEY}" | shasum -a 256 | awk '{print $1}')

curl -sS -X POST "http://127.0.0.1:3001/admin/v1/apikeys" \
-H "Authorization: Bearer ${AISIX_ADMIN_KEY}" \
-H "Content-Type: application/json" \
-d '{
"key_hash": "'"${AISIX_API_KEY_HASH}"'",
"allowed_models": [],
"allowed_tools": [
"github__create_issue",
"runbooks__search"
]
}'

该 Key 只能列出和调用 github__create_issuerunbooks__search。如果 MCP 客户端尝试调用其它工具,AISIX 会拒绝请求,不会把调用发送到上游 MCP Server。

同一个调用方 API Key 可以同时拥有模型访问和 MCP 工具访问:

{
"allowed_models": ["gpt-4o-prod"],
"allowed_tools": ["github__create_issue"]
}

更新调用方 API Key 时请注意:PUT 会替换整个资源。请求体必须包含要保留的字段,例如 key_hashallowed_modelsallowed_tools、限流和生命周期配置。