MCP HTTP网桥
一个生产就绪的STDIO到HTTP网桥 模型上下文协议(MCP) 具有自动JWT身份验证和会话管理的服务器。此工具将基于STDIO的MCP客户端(如Cursor、Claude Desktop)连接到基于HTTP的MCP服务器端点。
快速开始
对于具有JWT+会话ID身份验证的WordPress MCP服务器:
{
"mcpServers": {
"wordpress": {
"command": "npx",
"args": ["-y", "@arunshenoy99/mcp-http-bridge"],
"env": {
"MCP_ENDPOINT": "https://your-site.com/wp-json/mcp",
"MCP_BEARER_TOKEN": "your-jwt-token-here"
}
}
}
}就是这样!网桥自动处理JWT身份验证和会话管理。
安装
npm install -g @arunshenoy99/mcp-http-bridge或者直接与npx一起使用:
npx @arunshenoy99/mcp-http-bridge特性
- 将基于STDIO的MCP客户端连接到HTTP端点
- 自动JWT承载令牌身份验证 通过
MCP_BEARER_TOKEN - 自动会话ID管理 -从初始化中提取,包括在后续请求中
- 自动会话重新初始化 过期(404错误)
- 支持自定义标头以进行额外的身份验证/配置
- 适用于HTTP和HTTPS端点
- 故障排除的调试模式
- 零依赖-仅使用Node.js内置
配置
配置是通过环境变量完成的:
| 变量 | 必填 | 描述 |
|---|---|---|
MCP_ENDPOINT | 是 | MCP服务器的HTTP(S)端点URL |
MCP_BEARER_TOKEN | 没有用于身份验证的JWT承载令牌(自动添加为 Authorization: Bearer ) | |
MCP_JWT_TOKEN | 否 | 别名 MCP_BEARER_TOKEN |
CUSTOM_HEADERS | 否 | 所有请求中都要包含其他自定义标头 |
MCP_DEBUG | 否 | 设置为 "true" 启用调试日志记录 |
自定义头
这 CUSTOM_HEADERS 环境变量支持两种格式:
JSON格式(推荐)
CUSTOM_HEADERS='{"Authorization": "Bearer token123", "X-API-Key": "mykey"}'逗号分隔格式
CUSTOM_HEADERS="Authorization:Bearer token123,X-API-Key:mykey"使用游标
添加到光标MCP设置(~/.cursor/mcp.json):
WordPress与JWT+自动会话管理(推荐)
{
"mcpServers": {
"wordpress": {
"command": "npx",
"args": ["-y", "@arunshenoy99/mcp-http-bridge"],
"env": {
"MCP_ENDPOINT": "https://your-site.com/wp-json/mcp",
"MCP_BEARER_TOKEN": "your-jwt-token-here"
}
}
}
}桥将自动:
- 发送JWT令牌
Authorization: Bearer头球 - 从初始化响应中提取会话ID
- 在所有后续请求中包含会话ID
- 会话过期时重新初始化
使用自定义标头(传统)
{
"mcpServers": {
"my-wordpress": {
"command": "npx",
"args": ["-y", "@arunshenoy99/mcp-http-bridge"],
"env": {
"MCP_ENDPOINT": "https://my-site.com/wp-json/mcp",
"CUSTOM_HEADERS": "{\"Authorization\": \"Bearer your-token\"}"
}
}
}
}使用Claude Desktop
添加到您的Claude桌面配置(~/Library/Application Support/Claude/claude_desktop_config.json 在macOS上):
{
"mcpServers": {
"my-server": {
"command": "npx",
"args": ["-y", "@arunshenoy99/mcp-http-bridge"],
"env": {
"MCP_ENDPOINT": "https://api.example.com/mcp",
"CUSTOM_HEADERS": "{\"Authorization\": \"Bearer your-token\"}"
}
}
}
}例子
带有JWT身份验证的WordPress(自动会话管理)
{
"mcpServers": {
"wordpress": {
"command": "npx",
"args": ["-y", "@arunshenoy99/mcp-http-bridge"],
"env": {
"MCP_ENDPOINT": "https://your-site.com/wp-json/mcp",
"MCP_BEARER_TOKEN": "eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9..."
}
}
}
}此配置自动处理:
- 通过JWT身份验证
Authorization: Bearer头球 - 从初始化响应中提取会话ID
- 会话ID包含在所有后续请求中
- 会话过期时重新初始化
使用基本身份验证
{
"mcpServers": {
"my-api": {
"command": "npx",
"args": ["-y", "@arunshenoy99/mcp-http-bridge"],
"env": {
"MCP_ENDPOINT": "https://api.example.com/mcp",
"CUSTOM_HEADERS": "{\"Authorization\": \"Basic dXNlcm5hbWU6cGFzc3dvcmQ=\"}"
}
}
}
}具有调试模式
{
"mcpServers": {
"debug-server": {
"command": "npx",
"args": ["-y", "@arunshenoy99/mcp-http-bridge"],
"env": {
"MCP_ENDPOINT": "https://api.example.com/mcp",
"MCP_DEBUG": "true"
}
}
}
}运作原理
┌─────────────┐ STDIO ┌──────────────────┐ HTTP ┌─────────────┐
│ Cursor │ ◄──────────────► │ MCP HTTP Bridge │ ◄─────────────► │ MCP Server │
│ Claude │ JSON-RPC │ │ JSON-RPC │ (HTTP) │
└─────────────┘ └──────────────────┘ └─────────────┘- MCP客户端(Cursor、Claude)使用JSON-RPC通过STDIO进行通信
- 网桥从stdin读取JSON-RPC消息
- 将它们作为HTTP POST请求转发到配置的端点
- 通过stdout返回HTTP响应
会话管理流程
使用时 MCP_BEARER_TOKEN:
- 初始化请求:
- 网桥发送 initialize 随着 Authorization: Bearer 头球 - 服务器响应如下 Mcp-Session-Id 在响应标头中 - 网桥提取并存储会话ID
- 后续请求:
- 桥梁包括两者 Authorization: Bearer 和 Mcp-Session-Id 标头 - 两者都是MCP服务器所必需的
- 会话到期时间:
- 如果服务器返回404(会话已过期),则自动桥接: - 清除存储的会话ID - 发送新 initialize 请求 - 检索原始请求
故障排除
启用调试模式
集 MCP_DEBUG=true 要在stderr中查看详细日志,请执行以下操作:
MCP_ENDPOINT="https://example.com/mcp" MCP_DEBUG=true npx @arunshenoy99/mcp-http-bridge常见问题
- “MCP_ENDPOINT环境变量是必需的”
- 确保您已设置 MCP_ENDPOINT 环境变量
- 连接被拒绝
- 验证终结点URL是否正确以及服务器是否正在运行 - 检查是否需要使用HTTP与HTTPS
- 身份验证错误
- 验证您的JWT令牌是否有效且未过期 - 检查是否 MCP_BEARER_TOKEN 设置正确 - 验证自定义标头的格式是否正确(如果使用 CUSTOM_HEADERS)
- 会话ID错误
- 使用时,网桥会自动处理会话ID MCP_BEARER_TOKEN - 如果您看到“缺少Mcp会话Id标头”错误,请确保您正在使用 MCP_BEARER_TOKEN (不只是 CUSTOM_HEADERS) - 检查调试日志,查看是否从初始化响应中提取了会话ID
许可证
麻省理工学院
