项目简介

mcp-proxy 是一个用于 Model Context Protocol (MCP) 的代理工具,它允许您在 stdio 和 Server-Sent Events (SSE) 两种传输协议之间建立桥梁。这意味着您可以让一个期望使用 stdio 通信的 MCP 客户端连接到一个仅支持 SSE 的 MCP 服务器,反之亦然。

主要功能点

  • 双向代理: 支持 stdio 到 SSE 以及 SSE 到 stdio 的双向 MCP 协议代理。
  • SSE 客户端模式: 连接远程 SSE MCP 服务器,并将其暴露为 stdio 服务器,允许本地客户端(如 Claude 或 Cursor)连接到远程 SSE 服务器。
  • Stdio 客户端模式: 连接本地 stdio MCP 服务器,并将其暴露为 SSE 服务器,允许远程 SSE 客户端连接到本地 stdio 服务器。
  • 快速启动,低内存占用: 使用 Rust 编写,保证了代理的效率和资源利用率。

安装步骤

  1. 安装 Rust 和 Cargo: 如果您尚未安装 Rust,请访问 https://www.rust-lang.org/tools/install 按照官方指引进行安装。

  2. 安装 mcp-proxy: 打开终端并执行以下命令安装 mcp-proxy:

    cargo install rmcp-proxy

    或者从 Git 仓库安装:

    cargo install --git https://github.com/stephenlacy/mcp-proxy

服务器配置

MCP 客户端需要配置 MCP 服务器的启动命令 (command) 及其参数 (args) 才能与 MCP 服务器建立连接。以下是针对 mcp-proxy 的配置示例,您需要根据您的使用场景选择合适的模式进行配置。

1. SSE 客户端模式配置 (连接远程 SSE 服务器并暴露为 stdio)

如果您需要让一个使用 stdio 的 MCP 客户端连接到一个远程 SSE MCP 服务器,您需要配置客户端的 'mcpServers' 部分如下:

{
  "mcpServers": {
    "mcp-proxy": {
      "command": "mcp-proxy",
      "args": ["<SSE_SERVER_URL>"]
    }
  }
}
  • '<SSE_SERVER_URL>': 替换为您的远程 SSE MCP 服务器的 URL,例如 'http://localhost:8080/sse'。
  • 'command': 固定为 '"mcp-proxy"',表示启动 mcp-proxy 代理程序。
  • 'args': 包含一个参数,即远程 SSE 服务器的 URL。

例如,连接到 'http://example.com/sse' 的远程服务器:

{
  "mcpServers": {
    "mcp-proxy": {
      "command": "mcp-proxy",
      "args": ["http://example.com/sse"]
    }
  }
}

您可以使用 '--headers' 参数添加额外的 HTTP 请求头,例如授权信息:

{
  "mcpServers": {
    "mcp-proxy-with-headers": {
      "command": "mcp-proxy",
      "args": ["--headers", "Authorization", "Bearer YOUR_TOKEN", "http://example.com/sse"]
    }
  }
}

2. Stdio 客户端模式配置 (连接本地 stdio 服务器并暴露为 SSE)

如果您需要让一个使用 SSE 的 MCP 客户端连接到一个本地 stdio MCP 服务器,您需要配置客户端连接到 mcp-proxy 暴露的 SSE 服务。 本地 stdio MCP 服务器的配置在 mcp-proxy 的 'args' 中指定:

{
  "mcpServers": {
    "mcp-proxy-sse-server": {
      "command": "mcp-proxy",
      "args": ["--sse-port", "8080", "--", "<YOUR_STDIO_MCP_SERVER_COMMAND>", "<SERVER_ARGS>"]
    }
  }
}
  • '--sse-port': 指定 mcp-proxy 暴露 SSE 服务的端口,默认为随机端口。您可以设置为 '8080' 或其他未被占用的端口。
  • '--': 分隔 mcp-proxy 的参数和本地 stdio MCP 服务器的命令和参数。
  • '<YOUR_STDIO_MCP_SERVER_COMMAND>': 替换为启动您的本地 stdio MCP 服务器的命令,例如 'python mcp_server.py' 或 'npx -y @modelcontextprotocol/server-everything'。
  • '<SERVER_ARGS>': 本地 stdio MCP 服务器需要的任何参数。

例如,代理一个本地 Python MCP 服务器 'mcp_server.py':

{
  "mcpServers": {
    "mcp-proxy-stdio-to-sse": {
      "command": "mcp-proxy",
      "args": ["--sse-port", "8080", "--", "python", "mcp_server.py"]
    }
  }
}

基本使用方法

1. SSE 客户端模式 (连接远程 SSE 服务器并暴露为 stdio)

在终端中运行以下命令,将 '<SSE_SERVER_URL>' 替换为实际的远程 SSE 服务器 URL:

mcp-proxy <SSE_SERVER_URL>

例如:

mcp-proxy http://localhost:8080/sse

2. Stdio 客户端模式 (连接本地 stdio 服务器并暴露为 SSE)

在终端中运行以下命令,将 '<YOUR_STDIO_MCP_SERVER_COMMAND> <SERVER_ARGS>' 替换为启动本地 stdio 服务器的命令和参数,并指定 '--sse-port' 设置 SSE 服务端口:

mcp-proxy --sse-port 8080 -- <YOUR_STDIO_MCP_SERVER_COMMAND> <SERVER_ARGS>

例如,代理一个本地 Python MCP 服务器 'mcp_server.py':

mcp-proxy --sse-port 8080 -- python mcp_server.py

之后,SSE 客户端可以通过 'http://localhost:8080/sse' (如果 '--sse-host' 为默认值 '127.0.0.1') 连接到代理后的 MCP 服务器。

信息

分类

开发者工具