设置 MCP 网关
AISIX MCP 网关把已注册的 MCP 服务器置于统一的 /mcp 端点后,并控制每个调用方可以使用的工具。这样,应用无需直接连接各个上游服务器,即可通过 AISIX 访问获准使用的工具。
本指南将注册一个上游 MCP 服务器,把其中一个工具授予一把调用方 API Key,并验证该调用方只能使用这个 工具。AISIX Cloud 与开源 AISIX 网关通过不同的管理路径配置相同的运行时行为。
前置条件
开始前,请准备以下环境:
- 对于 AISIX Cloud,完成 AISIX Cloud 快速入门,并保持其 Shell 和
aisix-dp网关运行。 - 对于开源 AISIX 网关,完成开源 AISIX 网关快速入门,并停留在其 Shell 和工作目录中,同时保持
aisix-quickstart网关运行。 - Docker、cURL 和 jq。
启动 MCP 测试服务器
此示例在 Docker 中运行 MCP 官方的 Everything 测试服务器。该服务器与你现有的网关会加入一个临时 Docker 网络,因此网关无需重启即可访问服务器。Everything 服务器只能用于本地测试:它没有身份认证,并包含一个可返回其进程环境的诊断工具。此处使用的容器不会接收任何机密信息。完成本指南后,请停止并移除该容器。
根据你的配置路径设置网关容器名称。
对于 AISIX Cloud:
export AISIX_GATEWAY_CONTAINER="aisix-dp"
对于开源 AISIX 网关:
export AISIX_GATEWAY_CONTAINER="aisix-quickstart"
创建临时网络,并把正在运行的网关连接到该网络:
docker network create aisix-mcp
docker network connect aisix-mcp "$AISIX_GATEWAY_CONTAINER"
在同一网络上启动 Everything 服务器:
docker run -d --name aisix-mcp-everything \
--network aisix-mcp \
node:22-alpine \
sh -c 'npx -y @modelcontextprotocol/server-everything@2026.7.4 streamableHttp'
等待服务器就绪:
for attempt in $(seq 1 120); do
docker logs aisix-mcp-everything 2>&1 | grep -q "listening on port 3001" && break
sleep 1
done
docker logs aisix-mcp-everything 2>&1 | grep "listening on port 3001"
最后一条命令会打印一行日志,确认端口 3001 已就绪。从网关容器中可通过 http://aisix-mcp-everything:3001/mcp 访问 MCP 端点。
注册服务器并授权工具
通过与你的部署对应的管理路径注册服务器。两种路径都把服务器命名为 everything,并且只把它的 echo 工具授予现有的快速入门调用方。
AISIX Cloud
注册测试服务器,并允许快速入门环境使用它:
MCP_SERVER_RESPONSE=$(curl -fsS -X POST "$AISIX_CP/mcp_servers" \
-H "Authorization: Bearer $AISIX_TOKEN" \
-H "Content-Type: application/json" \
--data-binary @- <<EOF
{
"name": "everything",
"type": "mcp",
"url": "http://aisix-mcp-everything:3001/mcp",
"auth_type": "none",
"allowed_environments": ["${ENV_ID}"]
}
EOF
)
export MCP_SERVER_ID=$(echo "$MCP_SERVER_RESPONSE" | jq -er '.mcp_server.id')
echo "$MCP_SERVER_RESPONSE" | jq
❶ name 会成为工具的命名空间。
❷ allowed_environments 控制哪些环境接收这一组织级资源。
快速入门创建的写入作用域管理员 Token 会立即批准该服务器。随后,控制面会自动把服务器投射到已连接的网关。
把 everything__echo 工具授予快速入门创建的调用方 API Key:
curl -fsS -X PATCH \
"$AISIX_CP/environments/$ENV_ID/api_keys/$API_KEY_ID" \
-H "Authorization: Bearer $AISIX_TOKEN" \
-H "Content-Type: application/json" \
-d '{"mcp_access":{"allow":["everything__echo"]}}' | jq
export AISIX_MCP_KEY="$AISIX_API_KEY"
该部分更新会保留 API Key 现有的模型访问权限。AISIX_MCP_KEY 使用快速入门返回的调用方明文 Key。
开源 AISIX 网关
在现有 resources.yaml 中,为快速入门调用方添加 mcp_access