使用说明

项目简介

MCP Proxy 是一个轻量级的代理服务器,旨在弥合基于 Stdio 传输的 MCP 服务器与 Web 客户端之间的通信 gap。它充当中间层,将来自 Web 客户端的 SSE(Server-Sent Events)连接请求转换为与后端 Stdio MCP 服务器的交互,从而使得 Web 应用程序能够方便地与原本设计为命令行或本地进程的 MCP 服务器进行集成。简单来说,如果你的 MCP 服务器原本只能通过命令行 'stdio' 方式连接,使用 MCP Proxy 后,就可以让你的 Web 应用通过 SSE 协议也能连接上。

主要功能点

  • SSE 代理: 将 Web 客户端的 SSE 请求代理到后端的 Stdio MCP 服务器。
  • CORS 支持: 默认启用 CORS (跨域资源共享),方便 Web 客户端跨域访问。
  • 命令行工具: 提供开箱即用的命令行工具,快速启动代理服务。
  • Node.js SDK: 提供 Node.js SDK,方便在代码中集成和自定义代理服务。
  • 传输协议桥接: 核心功能是将 SSE 协议转换为 Stdio 协议,实现不同传输方式的 MCP 服务器互联互通。
  • 易于集成: 可以与任何基于 '@modelcontextprotocol/sdk' 开发的 MCP 服务器配合使用。

安装步骤

  1. 安装 npm 包: 在你的项目目录下,使用 npm 或 yarn 安装 'mcp-proxy' 包:
    npm install mcp-proxy

服务器配置

MCP Proxy 本身作为一个代理,需要配置它所代理的后端 MCP 服务器的信息。以下是 MCP 客户端连接 MCP Proxy 时需要配置的关键信息,以 JSON 格式描述:

{
  "serverName": "mcp-proxy",
  "command": "npx mcp-proxy",
  "args": [
    "--port", "8080",  //  指定 MCP Proxy 监听的端口,客户端将连接此端口
    "--endpoint", "/sse", // 指定 SSE 端点,客户端SSE连接的路径
    "tsx", "server.js" //  指定后端 stdio MCP 服务器的启动命令及其参数
                         //  这里 "tsx server.js" 假设你的 stdio MCP 服务器启动命令是 tsx server.js,
                         //  你需要替换成你实际的 stdio MCP 服务器启动命令
  ]
}

参数注释:

  • 'serverName': 自定义的服务器名称,用于标识配置。
  • 'command': 启动 MCP Proxy 的命令,通常是 'npx mcp-proxy',前提是你已经全局或在项目本地安装了 'mcp-proxy' 包。
  • 'args': 传递给 'mcp-proxy' 命令的参数数组,用于配置代理行为以及指定后端 Stdio MCP 服务器。
    • '--port': MCP Proxy 监听的端口号,Web 客户端将连接到这个端口的 SSE 服务。
    • '--endpoint': SSE 服务的端点路径,Web 客户端连接 SSE 服务的 URL 路径部分。
    • '"tsx"', '"server.js"': 这部分是传递给 MCP Proxy 的位置参数,用于指定后端 stdio MCP 服务器 的启动命令。
      • '"tsx"': 假设使用 'tsx' (或 'node') 来运行 TypeScript 或 JavaScript 的服务器代码。
      • '"server.js"': 你的 Stdio MCP 服务器的入口文件,例如 'server.js' 或 'index.js'。
      • 请务必根据你的实际 Stdio MCP 服务器的启动方式,替换 '"tsx"' 和 '"server.js"' 为正确的命令和参数。

重要提示:

  • MCP 客户端 (例如,LLM 应用) 不是直接连接到后端的 'stdio' MCP 服务器,而是连接到 MCP Proxy 暴露的 SSE 服务地址 (例如 'http://localhost:8080/sse')。
  • MCP Proxy 需要能够访问到后端的 'stdio' MCP 服务器。如果 'stdio' MCP 服务器运行在不同的机器或环境中,需要确保网络可达。
  • 上述配置中的 'command' 和 'args' 是用于启动 MCP Proxy 进程时,同时启动后端 'stdio' MCP 服务器的。MCP Proxy 内部会管理和代理它们之间的通信。

基本使用方法

  1. 启动 MCP Proxy: 根据上述服务器配置,在命令行中执行 'npx mcp-proxy --port 8080 --endpoint /sse tsx server.js' (请替换 'tsx server.js' 为你实际的 Stdio MCP 服务器启动命令)。

  2. 配置 MCP 客户端: 在你的 MCP 客户端应用中,配置连接到 MCP Proxy 的 SSE 服务地址。例如,如果 MCP Proxy 运行在本地 8080 端口,SSE 端点为 '/sse',则客户端应连接 'http://localhost:8080/sse'。

  3. 进行 MCP 操作: 客户端通过 SSE 连接发送符合 MCP 协议的请求,MCP Proxy 会将这些请求转发到后端的 Stdio MCP 服务器,并将服务器的响应通过 SSE 连接返回给客户端。

示例 (Web 客户端连接):

假设 MCP Proxy 运行在 'http://localhost:8080',端点为 '/sse'。在 Web 客户端中,你可以使用 'EventSource' 或其他 SSE 客户端库连接到 'http://localhost:8080/sse',并按照 MCP 协议发送和接收消息。

const eventSource = new EventSource('http://localhost:8080/sse');

eventSource.onopen = () => {
  console.log('SSE connection opened');
};

eventSource.onmessage = (event) => {
  console.log('Received SSE message:', event.data);
  // 处理 MCP 消息 (JSON-RPC 格式)
  try {
    const message = JSON.parse(event.data);
    // ... 处理 message ...
  } catch (error) {
    console.error('Error parsing JSON message:', error);
  }
};

eventSource.onerror = (error) => {
  console.error('SSE error:', error);
  eventSource.close();
};

总结: MCP Proxy 作为一个桥梁,简化了 Web 应用与 Stdio MCP 服务器的集成过程,使得开发者可以利用 Web 技术栈构建基于 MCP 协议的应用前端。

信息

分类

网页与API