SSE桥接代理工具

一个将MCP JSON-RPC通过stdio代理到传统SSE后端的Go语言桥接工具,支持自动重连和初始化请求转发。

  • by VinceWangw
  • Go
  • 本地部署
  • 更新于
在 GitHub 查看 VinceWangw/MCP-SSE-BRIDGE

使用说明

mcp-sse大桥

一个小型的Go桥,通过stdio将MCP JSON-RPC代理到传统的SSE后端。它保持 Codex风格的客户端通过短路响应 initialize,将流量转发到 上行SSE端点,并在会话失效时重新连接。

特性

  • 标准JSON-RPC(jsonl或 Content-Length)传统SSE翻译。
  • 上游会话到期时自动重新连接。
  • 上游尽最大努力 initialize 通过响应跟踪进行转发。

需求

  • 转到1.25+(参见 go.mod).
  • 可访问的SSE后端URL。

构建

go build -o mcp-sse-bridge .

跑

REMOTE_SSE_URL="https://host/mcp-servers/example" \
REMOTE_BEARER_TOKEN="..." \
./mcp-sse-bridge

配置

必修的:

  • REMOTE_SSE_URL:发出以下信号的SSE端点 endpoint 和 message 事件。

可选:

  • REMOTE_BEARER_TOKEN:上游身份验证的承载令牌。
  • UPSTREAM_TIMEOUT:JSON-RPC响应等待(默认值:120秒)。
  • UPSTREAM_INIT_TIMEOUT:等待上游 initialize (默认值:8秒)。
  • FORWARD_INITIALIZE:是否转发客户端 initialize 上游(默认值:false)。
  • RECONNECT_POST_DELAY_MS:重新连接后重试前的延迟(默认值:300)。
  • ONE_SHOT_TOOLS:运行每个 tools/call 使用新的SSE会话(默认值:true)。
  • ONE_SHOT_MAX_RETRIES:单次调用的最大尝试次数(默认值:3)。
  • LOCAL_TOOLS_LIST:提供本地硬编码 tools/list 响应(默认值:false)。

备注

  • 网桥记录到stderr并将JSON-RPC发送到stdout。
  • 将交换机重新连接到新的SSE流,并重新发送上游初始化。
  • 随着 LOCAL_TOOLS_LIST=false, tools/list 被转发到上游。

仓库的规划

  • main.go:所有桥接逻辑。
  • go.mod:模块定义。