MCP Proxy

MCP Proxy 是一款支持 SSE 与 stdio 协议转换的代理工具,用于在不同客户端与服务器之间实现无缝通信,适用于本地开发、远程调试和跨协议通信场景。

150 浏览
2025-12-15 发布

详细介绍

MCP Proxy 是一个灵活的代理工具,支持在 Server-Sent Events (SSE) 和标准输入输出 (stdio) 两种通信协议之间进行转换。它允许本地客户端与远程服务器之间建立连接,或在本地开发环境中模拟远程服务行为,从而提升模型交互效率和开发调试的便捷性。

核心功能

MCP Proxy 的核心功能在于其协议转换能力,具体包括:

  • stdio 到 SSE 模式:将标准输入输出流转换为 SSE 协议,使客户端能够通过 SSE 连接到远程服务器。
  • SSE 到 stdio 模式:将 SSE 协议转换为标准输入输出流,便于本地开发和调试。
  • 可扩展性:支持通过 Docker 容器扩展功能,如添加自定义工具和依赖。

此外,MCP Proxy 还支持负载均衡、故障转移、环境变量传递等高级功能,适用于多种部署场景。

安装方法

MCP Proxy 可通过多种方式安装,包括使用 pip、GitHub 或 Docker。以下是几种常见的安装方式:

python -m pip install --user mcpy

安装完成后,将 `mcpy` 脚本添加到 PATH 环境变量中,以便在终端中直接使用。

您也可以通过 Docker 构建镜像进行部署,以下是 Dockerfile 示例:

FROM python:3.9-slim

WORKDIR /app

COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt

COPY . .

CMD ["mcp-proxy"]

使用方法

MCP Proxy 提供了丰富的命令行选项和配置方式,支持通过命令行参数或环境变量进行配置。

SSE 模式

启动一个本地服务器并运行代理:

mcp-proxy --mode sse --port 8096 uvx mcp-server-fetch > server.log &

在另一个终端中启动代理以连接到 SSE 服务器:

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

Stdio 模式

启动一个本地服务器并运行代理:

mcp-proxy --mode stdio --port 8096 uvx mcp-server-fetch > server.log &

在另一个终端中启动代理以连接到 Stdio 服务器:

mcp-proxy http://localhost:8096/stdio

负载均衡

使用负载均衡模式启动多个代理实例:

mcp-proxy --mode sse --port 8096 --balance round-robin uvx1 mcp-server-fetch
mcp-proxy --mode sse --port 8097 --balance least-connections uvx2 mcp-server-fetch

环境变量传递

启用环境变量传递功能:

MCP_PASS_ENVIR mcp-proxy --mode sse --port 8096 uvx mcp-server-fetch

使用场景

MCP Proxy 适用于多种场景,包括但不限于:

  • 本地开发与调试:通过 stdio 模式模拟远程服务行为,便于本地开发。
  • 远程服务连接:通过 SSE 模式连接到远程服务器,实现数据双向流动。
  • API 网关实现:结合 Flask 等框架,构建 API 网关,实现请求转发和响应处理。
  • 高可用部署:通过负载均衡和故障转移配置,提升服务的可用性和稳定性。

配置说明

MCP Proxy 支持通过命令行参数、环境变量和 JSON 配置文件进行配置。

JSON 配置文件示例

{
  "proxy": {
    "command": "mcp-proxy",
    "args": [
      "--mode",
      "sse",
      "--port",
      "8096"
    ],
    "passEnvironment": true
  },
  "fetch": {
    "command": "uvx",
    "args": [
      "mcp-server-fetch"
    ]
  }
}

环境变量配置

以下是 MCP Proxy 支持的环境变量及其说明:

  • MCP_PROXY_MODE:设置代理模式,可选值为 `sse` 或 `stdio`。
  • MCP_PROXY_PORT:设置代理服务器的监听端口。
  • MCP_PROXY_HOST:设置代理服务器的绑定地址。
  • MCP_PROXY_ARGS:传递给代理命令的额外参数。
  • MCP_PASS_ENV:是否传递所有环境变量到子进程。

错误处理

以下是 MCP Proxy 中常见的错误及其解决方法:

无法绑定到指定端口

问题描述:提示信息显示代理服务器无法绑定到指定的端口。

可能原因

  • 端口已被其他进程占用。
  • 没有权限绑定到高 privileged 端口(<1024)。

解决方法

  • 检查并释放被占用的端口。
  • 使用具有足够权限的用户运行代理。

无法连接到目标服务器

问题描述:提示信息显示代理无法连接到目标服务器。

可能原因

  • 目标服务器未运行。
  • 网络连接不可用。
  • 配置错误。

解决方法

  • 检查目标服务器是否正常运行。
  • 确保网络连接正常。
  • 核对配置文件是否正确。

使用示例

以下是 MCP Proxy 的几个典型使用示例:

案例1:stdio 到 SSE 模式

将本地客户端与远程 SSE 服务器连接。

mcp-proxy http://example.io/sse

预期结果:成功建立连接,数据双向流动。

案例2:SSE 到 stdio 模式

将远程请求转发到本地服务器。

mcp-proxy --sse-port=8080 uvx mcp-server-fetch

预期结果:远程客户端能够访问本地服务器功能。

高级功能

MCP Proxy 提供了多种高级功能,包括:

  • 代理链配置:支持嵌套代理链,实现多层代理。
  • 高可用性配置:通过负载均衡和故障转移提升服务可用性。
  • 环境变量传递:支持通过 `--pass-environment` 参数传递环境变量。

例如,使用负载均衡模式启动多个代理实例:

mcp-proxy --mode sse --port 8096 --balance round-robin uvx1 mcp-server-fetch
mcp-proxy --mode sse --port 8097 --balance least-connections uvx2 mcp-server-fetch

使用故障转移模式:

mcp-proxy --mode sse --port 8096 --failover active-passive uvx1 mcp-server-fetch

总结

MCP Proxy 是一款功能强大且灵活的代理工具,支持在 SSE 和 stdio 两种协议之间进行转换,适用于本地开发、远程调试和跨协议通信等多种场景。通过丰富的配置选项和高级功能,用户可以轻松实现高可用、可扩展的代理服务。

协议转换 代理工具 本地开发

相关服务推荐

查看更多