MCP协议转换器

MCP协议转换器是一个适配工具,用于在MCP客户端仅支持STDIO协议而目标MCP服务器使用StreamableHTTP协议时进行协议转换。

  • by post-class
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 post-class/mcp-transcoder

使用说明

概述

这个工具是一个适配器,用于解决以下情况:当您的MCP客户端仅支持STDIO协议,而目标MCP服务器使用的是StreamableHTTP协议时。

用法

安装

添加MCP转码器到UV(或:在UV中添加MCP转码器)

示例 MCP 客户端配置

{
  "mcpServers": {
    "lf-agents": {
      "command": "uvx",
      "args": [
        "mcp-transcoder",
        "--insecure",
        "--timeout",
        "300",
        "--headers",
        "x-api-key",
        "YOUR_API_KEY",
        "https://your_mcp_domain/mcp"
      ]
    }
  }
}

先决条件

  • MCP服务器必须支持StreamableHTTP。
  • 服务器发送事件(SSE)不受支持。

注释

  • 如果服务器需要API密钥,您可以传递 --headers KEY VALUE 多次。
  • 如果需要自定义CA证书,请指定 --ssl-cert-file /path/to/cacert.pem (仅适用于MCP连接)。为了快速测试,您可以设置 --insecure 跳过HTTPS验证。环境变量 SSL_CERT_FILE 也得到了支持,但 --ssl-cert-file 建议这样做,以便设置不会影响整个过程。

超时设置

  • 每个请求(初始化/列出工具/调用工具等)的默认总超时时间为120秒。
  • 要更改它,请指定 --timeout SECONDS。
    • 示例: uvx mcp-transcoder --timeout 300 https://example/mcp
  • 为提高长时间运行操作的稳定性,相同的值也被应用于HTTP客户端(httpx)的超时设置。

命令行选项

选项 描述 默认值 示例
url 目标StreamableHTTP MCP终端(必需) 无(必需) https://your_mcp_streamable_http_endpoint/mcp
-H KEY VALUE / --headers KEY VALUE 添加额外的HTTP头(例如,API密钥) 无 --headers x-api-key YOUR_API_KEY, --headers Authorization "Bearer YOUR_TOKEN"
--insecure / --no-insecure 禁用/启用TLS证书验证 验证已启用 (--no-insecure) 禁用: --insecure / 推荐: SSL_CERT_FILE=/path/to/cacert.pem uvx mcp-transcoder ...
--timeout SECONDS 每个请求的总体超时时间(初始化/列出工具/调用工具等) 120 (或者 MCP_PROXY_TIMEOUT 环境变量) --timeout 300, MCP_PROXY_TIMEOUT=300 uvx mcp-transcoder ...
--ssl-cert-file PATH 仅用于MCP连接的CA证书包 系统/默认信任库 --ssl-cert-file /path/to/cacert.pem
--log-level {DEBUG,INFO,WARNING,ERROR,CRITICAL} 日志详细程度 INFO --log-level DEBUG

TLS验证(企业CA/自签名)

  • 添加 --insecure 禁用对远程服务器的证书验证。
    • 示例: uvx mcp-transcoder --insecure --headers x-api-key YOUR_API_KEY https://example/mcp
  • 建议:保持验证功能开启,并提供CA证书作为替代。
    • 示例: uvx mcp-transcoder --ssl-cert-file /path/to/cacert.pem https://example/mcp
    • 注: --ssl-cert-file 仅应用于用于MCP连接的httpx客户端。它不会影响 uvx 依赖解析(例如,与PyPI的连接)。

测试

uv run pytest -q

UVX缓存预防措施

为避免因过时缓存引起的问题,请传递(或更新) --isolated --no-cache 到 uvx 测试时的命令。

URLs(统一资源定位符)

PyPI(Python Package Index)

https://pypi.org/project/mcp-transcoder/ 的中文翻译为:“https://pypi.org 上的 mcp-transcoder 项目”

GitHub

https://github.com/post-class/mcp-transcoder/ 翻译为中文是:“https://github.com/post-class/mcp-transcoder/(GitHub上的一个项目链接,可译为‘MCP转码器项目’或保持原链接形式,具体根据上下文决定是否需要翻译链接中的内容)”。不过,通常链接本身不需要翻译,保持原样即可,所以更简洁的翻译可能是直接提及它是GitHub上的一个项目链接,并说明其名称或用途。在这里,为了简洁明了,可以翻译为:“GitHub上的MCP转码器项目链接”