
MCP Proxy

2025.03.25
90
TypeScriptSSE代理实时通信开发工具开发效率
MCP Proxy 是一个基于 TypeScript 的 SSE(Server-Sent Events)代理,专为使用 `stdio` 传输的 MCP(Model Context Protocol)服务器设计。它允许通过 SSE 协议在服务器和客户端之间建立高效的通信通道,支持跨域资源共享(CORS)。
View on GitHub
Overview
基本能力
产品定位
MCP Proxy 是一个轻量级的代理工具,旨在为 MCP 服务器提供 SSE 支持,简化服务器与客户端之间的实时通信。
核心功能
- SSE 代理:通过 SSE 协议在服务器和客户端之间转发消息。
- 跨域支持:默认启用 CORS,方便跨域通信。
- 多种传输方式:支持
stdio
和SSEServerTransport
两种传输方式。 - 日志记录:通过
tapTransport
工具可以记录传输事件。
适用场景
- 实时通信:适用于需要服务器向客户端推送实时数据的场景。
- 开发调试:帮助开发者快速搭建和调试 MCP 服务器的通信链路。
- 跨域支持:适用于需要在不同域之间进行通信的应用。
工具列表
- proxyServer:在服务器和客户端之间建立代理,双向转发请求。
- startSSEServer:启动一个 SSE 服务器,监听指定端口和端点,并通过
SSEServerTransport
发送消息。 - tapTransport:拦截传输事件并记录日志,便于调试。
常见问题解答
- CORS 是否默认启用?:是的,CORS 默认启用。
- 是否有 Python 实现?:是的,可以参考 mcp-proxy。
- FastMCP 是否使用 MCP Proxy?:是的,FastMCP 使用 MCP Proxy 来启用 SSE。
使用教程
使用依赖
安装 Node.js 和 npm。
安装教程
npm install mcp-proxy
调试方式
命令行启动
npx mcp-proxy --port 8080 --endpoint /sse tsx server.js
此命令会启动一个 SSE 服务器和一个 stdio
服务器,SSE 服务器监听端口 8080 和端点 /sse
,并将消息转发到 stdio
服务器。
Node.js SDK 示例
const transport = new StdioClientTransport();
const client = new Client();
const server = new Server(serverVersion, {
capabilities: {},
});
proxyServer({
server,
client,
capabilities: {},
});
此示例展示了如何在服务器和客户端之间建立代理。
启动 SSE 服务器
import { Server } from "@modelcontextprotocol/sdk/server/index.js";
import { startSSEServer } from "mcp-proxy";
const { close } = await startSSEServer({
port: 8080,
endpoint: "/sse",
createServer: async () => {
return new Server();
},
});
close();
此代码启动一个 SSE 服务器,监听端口 8080 和端点 /sse
。
记录传输事件
import { tapTransport } from "mcp-proxy";
const transport = tapTransport(new StdioClientTransport(), (event) => {
console.log(event);
});
此代码拦截传输事件并记录到控制台。