mcpField
M
MCP2HTTP

MCP2HTTP

本地服务
github.com/tekorex开发工具287 周前更新

关于 MCP2HTTP

MCP2HTTP 是一种传输适配器,用于连接使用 stdio 的 MCP 客户端与无状态 HTTP MCP 服务。它转换传输方式并保留协议语义,还支持可选会话跟踪和能力过滤。

主要功能

  1. 01将 stdio 客户端桥接到 HTTP 端点
  2. 02添加客户端生成的 Session-Id UUID
  3. 03过滤不受支持的能力请求
  4. 04丢弃不带 ID 的通知

适用场景

  1. 01将 stdio 客户端连接到 HTTP MCP 端点
  2. 02在无服务器平台上使用 MCP 服务
  3. 03在无状态 HTTP 环境中关联请求

MCP 相关

它将 MCP 通信从 stdio 客户端适配到无状态 HTTP 服务,无需 SSE。适配器可选添加 `Session-Id` 标头,并根据服务公布的能力过滤请求。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

mcp.json · 通用配置
{
"mcpServers": {
"mcp2http": {
"command": "npx",
"args": [
"-y",
"mcp2http"
]
}
}
}
启动命令npx -y mcp2http

本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
npmmcp2http

工具

还没有获取到工具列表

本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。

详细介绍

MCP2HTTP

用于将 stdio MCP 客户端连接到无状态 HTTP MCP 服务的轻量级传输适配器。

概述

MCP2HTTP 可让使用 stdio 传输的 Model Context Protocol 客户端通过无状态 HTTP 与 MCP 服务通信。MCP 通常使用 stdio(用于本地进程)或服务器发送事件(SSE)传输,而此适配器可桥接到常规 HTTP 端点,支持全新的集成方式。

此适配器仅处理基础传输层转换,并通过由客户端生成的 UUID 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"
      ]
    }
  }
}

你还可以将任意数量的 HTTP 标头作为参数传入。例如,添加身份验证令牌:

{
  "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 的请求/响应架构自然契合。在通过无状态 HTTP 实现 MCP 时,丢弃通知是合理的选择,mcp-golang HTTP 传输等其他实现也得出了相同结论。尽管 notifications/initialized 可能会让人犹豫,但一致地处理通知所带来的实际好处更值得优先考虑。不过,HTTP MCP 服务仍可考虑妥善处理通知,以防其他实现转发这些通知。

许可证

MIT

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。