Mcp2http

Mcp2http

🚀 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  ["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许可证。

  • 0 关注
  • 0 收藏,28 浏览
  • system 提出于 2025-10-05 21:03

相似服务问题

相关AI产品