使用说明
MCP SSE代理
一种灵活的代理服务器,可以在不同的MCP(模型上下文协议)传输类型之间进行转换:
- SSE转换为流式HTTP(默认)
- SSE到SSE
特性
- 支持两种代理模式:流式HTTP和SSE到SSE
- 具有可配置级别和颜色的全面日志记录
- 并发连接的会话管理
- 对连接维护的心跳支持
- 错误处理和优雅关机
先决条件
- Node.js 18+
- npm
- 正在运行的MCP服务器(可流式传输HTTP或基于SSE)
安装
npm install
用法
默认模式(SSE到流式HTTP)
# Development
npm run dev
# Production
npm run build
npm start
SSE转SSE模式
# Development
npm run dev:sse
# Production
npm run build
npm run start:sse
命令行选项
# General usage
node dist/proxy.js [options]
Options:
--mode Proxy mode: streamable (HTTP) or sse (SSE-to-SSE)
[choices: "streamable", "sse"] [default: "streamable"]
--port Port to listen on [number] [default: 3000]
--endpoint Upstream endpoint URL [string]
Default: http://localhost:8080/mcp (streamable)
http://localhost:3001/sse (sse)
--sse-endpoint SSE endpoint path [string] [default: "/sse"]
--help Show help [boolean]
Examples:
# SSE to HTTP proxy on custom port
node dist/proxy.js --mode streamable --port 3500 --endpoint http://localhost:9000/mcp
# SSE to SSE proxy
node dist/proxy.js --mode sse --endpoint http://another-server.com/sse
配置
日志记录配置
代理使用灵活的日志记录系统,可以通过以下方式配置 logging.config.json 或环境变量。
默认logging.config.json:
{
"levels": {
"CONNECTION": { "enabled": true, "color": "green", "showPayload": true },
"REQUEST": { "enabled": true, "color": "cyan", "showPayload": true },
"FORWARD": { "enabled": true, "color": "yellow", "showPayload": true },
"RESPONSE": { "enabled": true, "color": "magenta", "showPayload": true },
"SSE": { "enabled": true, "color": "blue", "showPayload": false },
"ERROR": { "enabled": true, "color": "red", "showPayload": true },
"DEBUG": { "enabled": false, "color": "gray", "showPayload": true },
"SYSTEM": { "enabled": true, "color": "white", "showPayload": false }
},
"showTimestamps": true,
"showPayloads": false
}
环境变量
LOG_LEVELS:启用日志级别的逗号分隔列表(例如。,CONNECTION,REQUEST,ERROR)LOG_COLORS:逗号分隔的级别列表:颜色对(例如。,CONNECTION:blue,ERROR:red)LOG_SHOW_PAYLOADS:全局有效载荷显示设置(true或false)LOG_PAYLOADS:每级有效载荷设置(例如。,REQUEST:true,RESPONSE:false)LOG_SHOW_TIMESTAMPS:是否显示时间戳(true或false)
环境变量使用示例
# Show payloads only for REQUEST and FORWARD categories
LOG_PAYLOADS=REQUEST:true,FORWARD:true,RESPONSE:false npm run dev
# Enable all logs with payloads for debugging
LOG_LEVELS=CONNECTION,REQUEST,FORWARD,RESPONSE,SSE,DEBUG LOG_SHOW_PAYLOADS=true npm run dev
# Custom configuration with selective payloads
LOG_PAYLOADS=REQUEST:true,ERROR:true LOG_LEVELS=CONNECTION,REQUEST,ERROR,SYSTEM npm run dev
建筑
流模式(SSE→ HTTP)
- SSE客户端连接到
/sse端点 - 服务器创建会话并发送
endpoint带路径的事件 - 客户端将JSON-RPC消息POST到
/messages/{sessionId} - 代理将请求转发到可流式传输的HTTP MCP服务器
- 流式响应通过SSE连接发回
SSE 模式 (SSE → SSE)
- SSE客户端连接到
/sse端点 - 服务器创建会话和上游SSE连接
- 消息在客户端和上游之间双向中继
- 为双方管理连接生命周期
[SSE Client] <--SSE--> [This Proxy] <--HTTP Stream or SSE--> [MCP Server]
代理处理:
- SSE连接管理
- 会话跟踪
- 请求/响应转发
- 错误处理
- 连接心跳
API终点
GET /sse-SSE连接端点POST /messages/:sessionId-消息转发端点GET /health-健康检查端点(返回状态、模式和连接计数)
连接客户
启动代理后,您可以将MCP SSE客户端连接到它:
- SSE端点将在以下位置可用:
http://localhost:3000/sse - 当客户端连接时,他们将收到
endpoint带有发送消息的URL的事件 - 然后,客户端应将JSON-RPC消息POST到提供的端点
Claude.ai示例
- 启动MCP服务器(可流式传输HTTP或SSE)
- 以适当的模式启动此代理服务器
- 在Claude.ai中,转到集成
- 添加SSE端点URL:
http://localhost:3000/sse
错误处理
代理处理各种错误情况:
- 与上游服务器的连接失败
- JSON-RPC消息无效
- 流错误
- 客户端断开连接
- 会话未找到错误
所有错误都会记录到控制台,并将相应的错误响应发送回客户端。
发展
# Install dependencies
npm install
# Run in development mode (default: streamable)
npm run dev
# Run in SSE mode
npm run dev:sse
# Build TypeScript
npm run build
# Run built version
npm start
故障排除
- 检查控制台日志以获取详细的连接和消息信息
- 验证您的MCP服务器是否正在运行且可访问
- 如果在不同的机器上运行,请确保正确的防火墙/网络访问
- 检查SSE客户端是否正在发送有效的JSON-RPC请求
- 使用健康终结点检查状态和连接计数
许可证
国际协调委员会
