企业团队把 Claude Code 引入日常工作流之后,MCP(Model Context Protocol)的接入往往从"跑通 demo"快速演变成"谁能调哪个工具、花了多少 Token、出了问题找谁"的治理难题。本文聚焦 MCP Gateway 这一中间层,系统梳理权限分层、审计日志、用量限额三个核心治理维度,以及通过 ClaudeAPI 接入 Claude Code 的标准配置规范,帮助技术团队在 mcp gateway 层面建立可维护的管控机制。
什么是 MCP Gateway,为什么团队需要它
MCP 是 Anthropic 于 2024 年 11 月发布的开放协议(数据来源:Anthropic 官方博客 2024-11-25),定义了 AI 模型与外部工具/数据源之间的标准化通信格式。单人开发者直连 MCP Server 是最简配置,但团队场景下,多个成员共用同一批工具服务端时会产生三类问题:
- 权限边界模糊:实习生和架构师调用同一个数据库 MCP Server,没有粒度控制
- 成本黑盒:Token 消耗无法按成员/项目拆分,月底账单不知道谁烧的
- 审计缺失:工具调用记录分散在各客户端本地,出了安全事件无法溯源
MCP Gateway 作为一个反向代理层,部署在 Claude Code(或其他 MCP 客户端)与各 MCP Server 之间,统一承接所有工具调用请求,在这一层实现认证、授权、记录和限流。
Claude Code (Client)
│
▼
MCP Gateway ← 治理层:权限 / 审计 / 限额
│
┌────┼────┐
▼ ▼ ▼
MCP MCP MCP
Server A B C
Claude Code (Client)
│
▼
MCP Gateway ← 治理层:权限 / 审计 / 限额
│
┌────┼────┐
▼ ▼ ▼
MCP MCP MCP
Server A B C

核心治理维度一:团队权限分层
权限设计的基本原则是最小权限:每个身份只能访问完成当前任务所必须的工具集合。实践中通常分三层:
| 层级 | 身份示例 | 可访问工具范围 | 典型配置方式 |
|---|---|---|---|
| 管理员 | 技术负责人 | 全部 MCP Server + 治理配置 | 独立 API Key,不参与日常工作流 |
| 开发者 | 工程师 | 代码库、文档、CI 工具 | 按项目组分配 Key |
| 受限用户 | 实习生、外包 | 只读工具(文档搜索、代码查看) | Key 附加工具白名单 |
在 ClaudeAPI 控制台(https://console.claudeapi.com)中,可以为每个团队成员创建独立 API Key,结合 Gateway 层的路由规则,将不同 Key 的请求分发到对应的工具子集。
配置示例(Gateway 路由规则,YAML 格式):
# mcp-gateway-config.yaml
routes:
- match:
api_key_prefix: "dev-" # 开发者 Key 前缀
allow_servers:
- github-mcp
- docs-search-mcp
- ci-runner-mcp
deny_servers:
- production-db-mcp
- match:
api_key_prefix: "intern-" # 受限用户 Key 前缀
allow_servers:
- docs-search-mcp
deny_servers:
- "*" # 默认拒绝其余所有
# mcp-gateway-config.yaml
routes:
- match:
api_key_prefix: "dev-" # 开发者 Key 前缀
allow_servers:
- github-mcp
- docs-search-mcp
- ci-runner-mcp
deny_servers:
- production-db-mcp
- match:
api_key_prefix: "intern-" # 受限用户 Key 前缀
allow_servers:
- docs-search-mcp
deny_servers:
- "*" # 默认拒绝其余所有
前置条件:Gateway 需要能够在请求到达 MCP Server 之前解析请求头中的认证信息。主流开源实现(如基于 nginx + lua 或 envoy + filter chain)均支持此能力,具体部署方式见各项目文档。

核心治理维度二:审计日志格式与留存
审计日志的核心要求是事后可查、内容完整、格式统一。一条有效的 MCP 工具调用审计记录应包含:
{
"event_type": "mcp_tool_call",
"timestamp": "2026-07-02T09:12:34Z",
"api_key_id": "key_dev_xxxx",
"member_id": "engineer_alice",
"project_id": "proj_backend_v2",
"mcp_server": "github-mcp",
"tool_name": "create_pull_request",
"input_summary": "repo: acme/api, branch: feat/xxx", // 敏感内容脱敏后记录
"tokens_used": 1240,
"model": "claude-sonnet-4-6",
"latency_ms": 890,
"status": "success"
}
{
"event_type": "mcp_tool_call",
"timestamp": "2026-07-02T09:12:34Z",
"api_key_id": "key_dev_xxxx",
"member_id": "engineer_alice",
"project_id": "proj_backend_v2",
"mcp_server": "github-mcp",
"tool_name": "create_pull_request",
"input_summary": "repo: acme/api, branch: feat/xxx", // 敏感内容脱敏后记录
"tokens_used": 1240,
"model": "claude-sonnet-4-6",
"latency_ms": 890,
"status": "success"
}
几个实践要点:
- input_summary 脱敏:工具调用的实际入参可能包含数据库凭据、代码片段等敏感信息,审计日志只记录摘要,不记录完整 payload
- 日志留存周期:企业合规通常要求 90 天以上,部分行业(金融、医疗)要求更长;日志应落到独立存储,不与应用日志混存
- 告警规则:对高风险工具(如
delete_*、exec_*)设置实时告警,异常访问(同一 Key 在 5 分钟内调用 100 次以上)触发人工审核
核心治理维度三:用量限额策略
Token 消耗的限额应该设在三个粒度上:
成员级限额 < 项目级限额 < 团队总限额
成员级限额 < 项目级限额 < 团队总限额
- 成员级:防止单人无意识超用;例如每人每日不超过 50 万 Token
- 项目级:按业务预算分配;例如某个月度报告项目总量不超过 200 万 Token
- 团队总限额:对应账单上限,超出前发送预警(建议在 80% 时触发通知)
在不增加 Batch API 的前提下(ClaudeAPI 当前不支持 Message Batches API),可通过以下方式控制成本:
- 模型分层调度:路由简单任务(格式转换、摘要提取)到
claude-haiku-4-5-20251001($0.800/$4.000 每M Token),日常大部分场景可用新上线的claude-sonnet-5($1.600/$8.000 每M Token),复杂推理才用claude-opus-4-7($4.000/$20.000 每M Token) - Prompt Caching:对重复的系统提示词和工具定义启用缓存,详见 Claude API Prompt Caching 配置指南
- 流式输出:启用 SSE 流式响应,避免因超时重试导致的重复计费,参考 Claude API Streaming SSE 接入指南
完整的模型定价对比可查阅 Claude API 价格指南(2026)。

Claude Code 接入 MCP Gateway 的配置规范
前置条件
- 已有 ClaudeAPI API Key(可在 ClaudeAPI 控制台 创建)
- 已部署 MCP Gateway 实例,监听本地或内网端口
- Claude Code 版本支持自定义 MCP Server 配置(截至 2026-07-03,官方文档说明可通过
claude mcp add、项目级.mcp.json、用户级~/.claude.json等方式配置,具体以当前安装版本文档为准)
配置步骤
Step 1:配置 ClaudeAPI 作为 LLM 后端
在 Claude Code 或调用侧的环境变量中:
export ANTHROPIC_BASE_URL="https://gw.claudeapi.com"
export ANTHROPIC_API_KEY="your-claudeapi-key"
export ANTHROPIC_BASE_URL="https://gw.claudeapi.com"
export ANTHROPIC_API_KEY="your-claudeapi-key"
或在代码中显式指定:
import anthropic
client = anthropic.Anthropic(
api_key="your-claudeapi-key",
base_url="https://gw.claudeapi.com"
)
import anthropic
client = anthropic.Anthropic(
api_key="your-claudeapi-key",
base_url="https://gw.claudeapi.com"
)
Step 2:在 Claude Code 中注册 MCP Gateway
官方当前文档推荐使用 claude mcp add 添加 MCP Server。团队共享配置建议使用 project scope,把 Gateway endpoint 写入项目根目录 .mcp.json,敏感 Token 通过环境变量展开,不提交明文。
claude mcp add --transport http gateway --scope project \
"http://localhost:8080/mcp" \
--header "Authorization: Bearer ${MCP_GATEWAY_TOKEN}"
claude mcp add --transport http gateway --scope project \
"http://localhost:8080/mcp" \
--header "Authorization: Bearer ${MCP_GATEWAY_TOKEN}"
生成或维护的 .mcp.json 可以采用类似结构:
// .mcp.json
{
"mcpServers": {
"gateway": {
"type": "http",
"url": "${MCP_GATEWAY_URL:-http://localhost:8080}/mcp",
"headers": {
"Authorization": "Bearer ${MCP_GATEWAY_TOKEN}"
}
}
}
}
// .mcp.json
{
"mcpServers": {
"gateway": {
"type": "http",
"url": "${MCP_GATEWAY_URL:-http://localhost:8080}/mcp",
"headers": {
"Authorization": "Bearer ${MCP_GATEWAY_TOKEN}"
}
}
}
}
说明:此处的
GATEWAY_TOKEN是 MCP Gateway 的成员认证凭据,与 ClaudeAPI Key 是两个独立的认证体系,不要混用。 Step 3:验证工具调用链路
# verify_mcp_gateway.py
import anthropic
client = anthropic.Anthropic(
api_key="your-claudeapi-key",
base_url="https://gw.claudeapi.com"
)
# 通过工具调用验证 Gateway 路由是否生效
response = client.messages.create(
model="claude-sonnet-4-6",
max_tokens=256,
tools=[
{
"name": "list_available_tools",
"description": "列出当前身份可用的 MCP 工具",
"input_schema": {
"type": "object",
"properties": {}
}
}
],
messages=[
{"role": "user", "content": "请列出我当前可以使用的工具。"}
]
)
print(response.content)
# verify_mcp_gateway.py
import anthropic
client = anthropic.Anthropic(
api_key="your-claudeapi-key",
base_url="https://gw.claudeapi.com"
)
# 通过工具调用验证 Gateway 路由是否生效
response = client.messages.create(
model="claude-sonnet-4-6",
max_tokens=256,
tools=[
{
"name": "list_available_tools",
"description": "列出当前身份可用的 MCP 工具",
"input_schema": {
"type": "object",
"properties": {}
}
}
],
messages=[
{"role": "user", "content": "请列出我当前可以使用的工具。"}
]
)
print(response.content)
Step 4:常见错误排查
| 错误现象 | 可能原因 | 处理方式 |
|---|---|---|
403 Forbidden on tool call |
Gateway 权限规则拒绝了当前 Key | 检查 Key 前缀与路由规则匹配 |
429 Too Many Requests |
成员级限额触发 | 查看控制台用量,调整限额或等待重置 |
| 工具调用返回空结果 | MCP Server 未注册或 Gateway 路由错误 | 检查 .mcp.json / ~/.claude.json 中的 Server 名称 |
AuthenticationError |
ClaudeAPI Key 无效或未配置 | 参考 Claude API 常见错误码处理方法 |
上线前检查清单
发布团队 MCP 治理配置前,建议逐项确认:
- [ ] 每个成员有独立 API Key,Key 命名包含身份前缀
- [ ] Gateway 路由规则覆盖了所有 MCP Server,无遗漏的
allow-all默认规则 - [ ] 审计日志已落到独立存储,入参脱敏规则已测试
- [ ] 成员级、项目级、团队级限额均已设置,80% 预警通知已验证
- [ ] 高风险工具(
delete_*、exec_*)已配置实时告警 - [ ] Claude Code 配置文件中的
base_url指向https://gw.claudeapi.com - [ ] 已在测试环境模拟一次权限拒绝场景,确认 Gateway 返回正确的错误码
常见问题(FAQ)
Q:MCP Gateway 和直接在代码里写权限检查有什么区别?
直接在应用代码里做权限检查依赖各客户端自律,一旦某个成员绕过客户端直接调用 MCP Server,检查就失效了。Gateway 作为网络层的强制通道点,所有流量必须经过它,权限规则在网络层强制执行,无法被绕过。
Q:审计日志里记录完整的工具调用入参是否合规?
不建议。工具入参可能含有数据库密码、用户隐私数据、代码片段等敏感内容。合规做法是只记录摘要(如工具名称、目标资源 ID、操作类型),完整 payload 若有必要单独加密存储并限制访问权限。
Q:Claude Code 的 MCP 配置文件路径是固定的吗?
不是固定一种。Anthropic Claude Code MCP 文档将 MCP 配置分为 local、project、user 三种 scope:project scope 适合团队共享,配置保存在项目根目录 .mcp.json;local / user scope 会写入用户侧配置(如 ~/.claude.json)。团队治理场景优先使用 project scope,并通过环境变量传入密钥。
Q:团队限额触发后,正在运行的 Claude Code 任务会怎样?
限额触发时,Gateway 会向客户端返回 429 Too Many Requests,Claude Code 会中断当前工具调用并显示错误提示。建议在限额的 80% 处设置预警,留出缓冲时间在触顶前人工干预。
Q:MCP Gateway 部署在哪里合适——本地还是云端?
取决于团队规模和安全策略。小团队(3-5 人)可以本地部署,每人配置相同的 Gateway 地址;中大型团队建议部署在内网服务器或私有云,统一管控所有成员的请求,审计日志也更容易集中存储。
Q:ClaudeAPI 的模型 ID 在 MCP 工具调用里怎么指定?
在请求体的 model 字段中填写,可选值包括 claude-opus-4-7、claude-sonnet-5、claude-sonnet-4-6、claude-haiku-4-5-20251001。MCP 工具调用走的仍然是标准 Messages API 格式,model ID 写法与普通对话请求完全一致。
下一步路径
- 在 ClaudeAPI 控制台 为团队成员创建各自的 API Key,按角色命名前缀
- 参照本文的路由规则示例,搭建 MCP Gateway 实例并配置权限规则
- 验证审计日志格式,确认脱敏规则正确生效
- 设置三级限额和 80% 预警通知
- 完成上线前检查清单后,在 Claude Code 中完成端到端测试
遇到接入报错,可参考 Claude API 常见错误码处理方法;Tool Use 相关的高级配置,可查阅 Claude API Tool Use 开发指南。
参考来源
- Anthropic MCP 发布博客:https://www.anthropic.com/news/model-context-protocol
- Model Context Protocol Transport 规范:https://modelcontextprotocol.io/specification/2025-06-18/basic/transports
- Model Context Protocol Authorization 规范:https://modelcontextprotocol.io/specification/2025-06-18/basic/authorization
- Claude Code MCP 文档:https://code.claude.com/docs/en/mcp
- ClaudeAPI 官网:https://claudeapi.com/zh/
数据与事实声明
- MCP 协议发布时间(2024-11-25):来源为 Anthropic 官方博客
https://www.anthropic.com/news/model-context-protocol - 模型价格(claude-opus-4-7 $4.000/$20.000、claude-sonnet-5 $1.600/$8.000、claude-sonnet-4-6 $2.400/$12.000、claude-haiku-4-5-20251001 $0.800/$4.000,每M Token 输入/输出):来源为 ClaudeAPI 官方定价页,以控制台实际显示为准
- Claude Code MCP 配置 scope、
.mcp.json、~/.claude.json、环境变量展开:来源为 Claude Code MCP 官方文档https://code.claude.com/docs/en/mcp,具体以当前版本文档为准 - 日志留存 90 天要求:基于通行企业合规实践,非特定法规引用,具体合规要求请咨询专业法律顾问
- Gateway 路由规则示例(YAML):为说明性示例,非特定开源项目的完整实现



