MCP Proxy

MCP Proxy

site icon
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 支持,简化服务器与客户端之间的实时通信。

核心功能

  1. SSE 代理:通过 SSE 协议在服务器和客户端之间转发消息。
  2. 跨域支持:默认启用 CORS,方便跨域通信。
  3. 多种传输方式:支持 stdioSSEServerTransport 两种传输方式。
  4. 日志记录:通过 tapTransport 工具可以记录传输事件。

适用场景

  1. 实时通信:适用于需要服务器向客户端推送实时数据的场景。
  2. 开发调试:帮助开发者快速搭建和调试 MCP 服务器的通信链路。
  3. 跨域支持:适用于需要在不同域之间进行通信的应用。

工具列表

  1. proxyServer:在服务器和客户端之间建立代理,双向转发请求。
  2. startSSEServer:启动一个 SSE 服务器,监听指定端口和端点,并通过 SSEServerTransport 发送消息。
  3. tapTransport:拦截传输事件并记录日志,便于调试。

常见问题解答

  1. CORS 是否默认启用?:是的,CORS 默认启用。
  2. 是否有 Python 实现?:是的,可以参考 mcp-proxy
  3. 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);
});

此代码拦截传输事件并记录到控制台。

许可证

该项目遵循 BSD-2-Clause 开源许可条款,请参阅 BSD-2-Clause 了解完整条款。