按 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"
]
}'