SuperGateway
by coding-alt
SuperGateway is a tool that converts standard input/output (stdio) to Server-Sent Events (SSE). It allows you to run stdio-based MCP servers and access them remotely via SSE.
View on GitHub
Last updated: N/A
SuperGateway 介绍
这是一个将标准输入/输出(stdio)转换为服务器发送事件(SSE)的网关工具。它允许你运行基于 stdio 的 MCP(Model Context Protocol)服务器,并通过 SSE 进行远程访问。
功能特点
- 将基于 stdio 的 MCP 服务器转换为 SSE 服务
- 支持多个客户端同时连接
- 自动识别和转发 JSON 格式的输出
- 支持 CORS
- 支持健康检查端点
- 可配置的日志级别
系统要求
- Java 17 或更高版本
- Maven 3.6 或更高版本
构建和运行
- 构建项目:
cd src/java
mvn clean package
- 运行应用:
java -jar target/supergateway-1.0.0.jar [选项]
命令行选项
--version
: 显示版本号--stdio
: 要运行的 MCP 服务器命令--sse
: SSE URL 连接地址--port
: (stdio→SSE) 服务器监听端口 [默认: 8000]--baseUrl
: (stdio→SSE) SSE 客户端的基础 URL--ssePath
: (stdio→SSE) SSE 订阅路径 [默认: "/sse"]--messagePath
: (stdio→SSE) SSE 消息路径 [默认: "/message"]--logLevel
: 设置日志级别: "info" 或 "none" [默认: "info"]--cors
: 启用 CORS [默认: false]--healthEndpoint
: 添加健康检查端点,多个端点用逗号分隔--help
: 显示帮助信息
使用示例
java -jar target/supergateway-1.0.0.jar \
--stdio "java -jar your-mcp-server.jar" \
--port 8000 \
--baseUrl http://localhost:8000 \
--ssePath /sse \
--messagePath /message
API 接口
1. SSE 连接
- URL:
GET /sse
- 说明:建立 SSE 连接以接收进程输出
- 响应:服务器会返回一个 SSE 事件,包含消息发送端点
2. 发送消息
- URL:
POST /message?sessionId=<session_id>
- Content-Type:
application/json
- 说明:向进程发送 JSON 格式的消息
- 响应:
- 200: 消息发送成功
- 400: 无效的 JSON 消息
- 503: 会话不存在或进程未就绪
3. 健康检查
- URL:
GET /health
(如果配置了健康检查端点) - 说明:检查服务是否正常运行
- 响应:返回 "ok"
注意事项
- 进程输出必须是 JSON 格式才会被转发到 SSE 客户端
- 每个 SSE 客户端会自动获得一个唯一的 sessionId
- 所有消息都必须是有效的 JSON 格式
- 发送消息时必须使用从 SSE 连接获取的正确 sessionId
- MCP 服务器必须支持通过标准输入/输出进行通信