MCP代理服务

基于Envoy外部处理器的MCP代理服务,用于聚合和路由MCP工具请求。

  • by david-martin
  • Go
  • 混合部署
  • 2 星标
  • 更新于
在 GitHub 查看 david-martin/mcp-gateway-poc

使用说明

MCP助手PoC

MCP助手与Go Envoy外部处理器.

跑

docker-compose up --build

可流式传输的HTTP MCP服务器现在可以在以下位置使用:http://localhost:8080/

使用MCP检查员进行测试

# Start the inspector
DANGEROUSLY_OMIT_AUTH=true npx @modelcontextprotocol/inspector
  1. 打开http://localhost:6274/?transport=streamable-http&serverUrl=http://localhost:8080#resources
  2. 点击 连接
  3. 点击 列出工具

您将看到来自后端MCP服务器(服务器1和服务器2)的联合工具,它们会自动添加前缀以避免冲突:

架构概述

关键部件:

  • MCP初始化/工具列表: main.go - handleInitialization() 创建后端会话, aggregateTools() 从服务器获取和前缀工具
  • 外部处理器: ext-proc/ 目录处理请求/响应处理:
    • request.go - extractMCPToolName() 从JSON正文中提取工具名称, stripServerPrefix() 删除前缀、设置 x-mcp-server 路由标头,映射会话ID
    • response.go - extractHelperSessionFromBackend() 反向将后端会话ID映射到辅助会话
  • 布线规则: envoy.yaml -路线基于 x-mcp-server 头球server1/server2 → 后端集群,默认→ 助手)

流动:客户→ 特使→ Ext Proc(提取工具、去除前缀、设置路由标头)→ 到后端或助手的路由→ 响应(会话反向映射)→ 客户端