返回 MCP 目录
public公开dns本地运行

mcp2http

MCP2HTTP是一个最小化的传输适配器,用于将使用stdio的MCP客户端连接到无状态HTTP MCP服务器。

article

README

🚀 MCP2HTTP

MCP2HTTP是一个最小化的传输适配器,它能让使用标准输入输出(stdio)的MCP客户端与无状态的HTTP MCP服务器建立连接,为MCP的应用拓展了新的可能。

🚀 快速开始

MCP2HTTP可使模型上下文协议客户端,借助stdio传输与采用HTTP通信的MCP服务器进行连接。尽管MCP一般采用stdio(用于本地进程)或Server - Sent Events(SSE)传输,但此适配器能将其与常规的HTTP端点相连接,实现全新的集成。

该适配器仅处理基础的传输层转换,并通过客户端生成的唯一标识符Session - Id头,提供可选的状态跟踪功能。它保留了协议语义,让客户端和服务器可直接交互,无需使用SSE,能与无服务器平台和遗留系统无缝协作。

💻 使用示例

基础用法

配置您的MCP客户端,按以下格式调用此命令:

npx -y mcp2http <endpoint-url> ["Header: Value"...]

高级用法

在Claude Desktop配置文件(claude_desktop_config.json)中使用示例:

{
  "mcpServers": {
    "my-mcp-server": {
      "command": "npx",
      "args": [
        "-y",
        "mcp2http",
        "http://localhost:3000/mcp"
      ]
    }
  }
}

添加身份验证令牌示例:

{
  "mcpServers": {
    "my-mcp-server": {
      "command": "npx",
      "args": [
        "-y",
        "mcp2http",
        "https://example.com/mcp",
        "Authorization: Bearer token123"
      ]
    }
  }
}

⚠️ 重要提示

您需要一个功能正常的MCP HTTP端点。很快将提供一个示例服务器。

✨ 主要特性

客户端生成的会话跟踪

适配器会自动生成唯一标识符(UUID),并将其作为Session - Id头添加到每个请求中。虽然客户端生成会话ID看似有些特别,但这种方式类似于1996年提出的Session - Id提案(该提案从未正式纳入HTTP标准)。此机制极为简单,旨在补充(而非替代)适当的身份验证。

128位十六进制UUID格式具备抗碰撞性,且采用了通用的标识符标准,非常适合在无状态的HTTP环境中关联请求。为防止碎片化并确保行为一致,符合此设计的服务器实现应拒绝非128位十六进制的Session - Id值(带或不带破折号)。如果不需要会话跟踪,服务器可完全忽略Session - Id头。此功能为可选功能,方便那些仅需请求间相关性而不想增加额外复杂性的实现。

能力过滤

适配器会从initialize响应中记录服务器的功能,并阻止对未声明能力的请求。此功能解决了某些MCP客户端每分钟多次重复轮询未广告能力的问题。通过在请求到达服务器之前进行筛选,当服务器仅支持特定功能(如tools),而客户端仍继续静默轮询时,该适配器可减少不必要的负载。

通知处理

无ID的消息(通知)会被默默丢弃。这种处理方式与HTTP的请求/响应架构自然契合。在MCP通过无状态HTTP实现时,丢弃通知是合理的选择,这也是像[mcp - golang](https://github.com/metoro - io/mcp - golang) HTTP传输等其他实现得出的结论。尽管notifications/initialized可能会引人关注,但处理通知的一致性带来的实际好处更为重要。不过,HTTP MCP服务器可能仍需优雅地处理通知,以防其他实现确实会转发它们。

📄 许可证

本项目采用MIT许可证。

help

运行方式说明

cloud

托管运行

托管运行通常表示这个 MCP Server 由服务方环境承载,用户一般按页面提供的连接方式或授权流程接入,不需要在本地长期启动一个 MCP 进程

  1. 打开服务方连接页
  2. 完成授权或复制端点
  3. 在 MCP 客户端中连接
terminal

本地运行 / 其它方式

本地运行通常需要用户在自己的电脑或服务器上安装依赖,把 server_config 复制到 MCP 客户端,并按 env_schema 补齐环境变量、密钥或其它配置

  1. 复制 server_config
  2. 安装所需依赖
  3. 补齐环境变量后重启客户端