Skip to content

Latest commit

 

History

1 Commit

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

MCP 工具调用网关

Go 实现的 MCP(Model Context Protocol)网关:把多个工具服务器统一到一个执行入口,集中治理鉴权、预算、并发、超时和审计。

功能

  • 统一工具接入:对外暴露标准 MCP 接口(initialize / tools/list / tools/call,JSON-RPC 2.0 over HTTP);工具由独立的 stdio 子进程提供——工单查询(对接租户工单系统)、资产查询,以及用于故障注入的慢工具和恒失败工具。新增工具只需在某个工具服务器里注册,网关核心流程零改动。
  • 可组合执行链:鉴权 → 工具范围 → 请求预算(速率/身份并发) → 并发准入(全局+工具级,满员即拒) → 执行 → 运行记录,每条拒绝路径都有稳定的错误码。
  • Deadline 传递:客户端请求的截止时间与网关调用上限取小后传到下游调用;超时、取消后立即释放全部并发槽位。
  • 可观测性:Prometheus 指标按工具×结局分类;运行事件走有界异步队列(满员丢弃可观测)落 JSONL 并可在线查询;OpenTelemetry 追踪,事件携带 trace_id。
  • 进程治理:工具服务器崩溃后有界退避自动重启,期间调用快速失败,不悬挂。

设计目的

验证"执行治理"的工程问题:慢工具或故障工具只影响它自己的并发槽位,不拖垮其他工具(隔离);工具业务失败与协议失败严格区分(isError=true 不是 JSON-RPC error);所有拒绝、超时、上游失败都有事件可回查。网关自身无状态、无数据库,单进程即完整运行。

启动

make build && make seed                        # 编译并生成网关 Token(data/gateway-tokens.json)
echo "<租户系统 alice token>" > data/tenant-token.txt   # ticket 工具用
bash scripts/demo.sh                           # 起网关(:8081) + 客户端演示 + 指标/事件

也可以 docker compose up --build -d 部署(TENANT_TOKEN 写入 .env)。


详细设计(调用链错误契约、配置表、MCP 子集边界):docs/DESIGN.md

About

MCP 工具调用网关:统一工具接入,鉴权/预算/并发准入/Deadline 传递/运行事件 | Go

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages