限流与预算
对于 MCP 流量,调用方 API Key 仍然是流量控制边界。MCP 工具调用与模型流量共用该 Key 的请求限制、并发限制和预算,但不会消耗模型 Token。
MCP 没有单独的限流或预算资源。请 在调用方 API Key 上配置这些控制项,然后在 MCP 路径上验证行为。
控制项作用位置
网关只会对 tools/call 请求执行限流和预算检查。MCP 握手(包括 initialize)和通过 tools/list 进行的工具发现不会被限流。即使调用方已触发限流,也仍然可以连接并列出其 Key 允许访问的工具,但要等窗口重置后才能继续调用工具。
当某个工具调用因限流或预算被拒绝时,AISIX 会在联系上游 MCP 服务器之前返回错误,并且仍会把这次被拒绝的调用记录为用量事件。
适用的限流
调用方 API Key 的 rate_limit 对象可以定义请求速率、Token 速率和并发限制。在 MCP 路径上,只有请求速率和并发限制会直接计量工具调用:
| 限制 | 是否作用于 MCP 工具调用 | 说明 |
|---|---|---|
rps、rpm、rph、rpd | 是 | 每个 tools/call 会在对应窗口中计为一次请求。 |
concurrency | 是 | 每个进行中的工具调用会占用一个并发许可,直到调用返回。 |
tpm、tpd | 间接作用 | MCP 工具调用没有模型 Token,因此不会增加 Token 窗口计数。如果调用方 Key 的模型流量已经耗尽某个 Token 窗口,该 Key 的工具调用仍会在窗 口重置前被 HTTP 429 拒绝。 |
每个字段都是可选的。字段省略时,AISIX 不会执行该限制。
请使用请求速率限制或 concurrency 直接限制 MCP 调用量。只配置 Token 限制并不能限制 MCP 工具调用数量。
完整的限流字段和计数器存储选项请参见限流。
设置调用方限流
在调用方 API Key 上配置 rate_limit。下面的自托管示例会保留该 Key 仅用于 MCP,并将它限制为每分钟 1 次工具调用。请包含所有需要保留的现有 Key 字段;Admin API 的 PUT 会替换整个 Key 资源。
# Replace with your values
export AISIX_ADMIN_KEY="YOUR_ADMIN_KEY"
curl -sS -X PUT "http://127.0.0.1:3001/admin/v1/apikeys/YOUR_API_KEY_ID" \
-H "Authorization: Bearer ${AISIX_ADMIN_KEY}" \
-H "Content-Type: application/json" \
-d '{
"key_hash": "'"${AISIX_API_KEY_HASH}"'",
"allowed_models": [],
"allowed_tools": ["github__*"],
"rate_limit": {
"rpm": 1
}
}'
❶ 当该 Key 只用于 MCP 流量时,可使用空模型允许列表。如果同一个 Key 还需要调用模型,请保留现有模型访问权限。
❷ rpm: 1 会把该调用方 API Key 限制为每分钟 1 个请求。
要验证该限制,请使用该调用方 API Key 连接 MCP 客户端,并在同一分钟内调用两次允许访问的工具。第一次 tools/call 成功;第二次 tools/call 会在 AISIX 联系上游 MCP 服务器之前被 HTTP 429 拒绝。即使调用方被限流,握手和 tools/list 仍然可用。
在托管部署中,请在 AISIX 托管控制面中配置相同的调用方 API Key 限制。
在托管部署中应用预算
预算在 AISIX 托管控制面中配置,并由托管网关执行。当覆盖某个调用方 API Key 的预算已耗尽时,网关会在联系上游 MCP 服务器之前,以 budget_exceeded 错误拒绝该 Key 的 tools/call 请求。这个检查与模型路径使用相同的预算机制。
MCP 工具调用没有 Token 成本,因此本身不会增加基于 Token 的花费。但如果该调用方的模型流量已经耗尽预算,同一个调用方 API Key 的 MCP 工具调用也会被阻断,因为二者共用同一个 Key 和预算边界。预算目标、拒 绝响应和缓存行为请参见预算。
在自托管部署中,请使用调用方 API Key 的限流来治理 MCP 工具调用量。预算配置详情请参见预算。
下一步
你现在已经把调用方 API Key 控制项应用到 MCP 流量。使用下面的指南观察结果,或继续细化共享的限流和预算设置: