MCP HTTP桥接工具

一个生产就绪的STDIO到HTTP桥接工具,用于连接基于STDIO的MCP客户端到HTTP端点,支持自动JWT认证和会话管理。

  • by arunshenoy99
  • JavaScript
  • 本地部署
  • 更新于
在 GitHub 查看 arunshenoy99/mcp-http-bridge

使用说明

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 <token>)
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)    │
└─────────────┘                  └──────────────────┘                 └─────────────┘
  1. MCP客户端(Cursor、Claude)使用JSON-RPC通过STDIO进行通信
  2. 网桥从stdin读取JSON-RPC消息
  3. 将它们作为HTTP POST请求转发到配置的端点
  4. 通过stdout返回HTTP响应

会话管理流程

使用时 MCP_BEARER_TOKEN:

  1. 初始化请求:

    • 网桥发送 initialize 随着 Authorization: Bearer <JWT> 头球
    • 服务器响应如下 Mcp-Session-Id 在响应标头中
    • 网桥提取并存储会话ID
  2. 后续请求:

    • 桥梁包括两者 Authorization: Bearer <JWT> 和 Mcp-Session-Id 标头
    • 两者都是MCP服务器所必需的
  3. 会话到期时间:

    • 如果服务器返回404(会话已过期),则自动桥接:
      • 清除存储的会话ID
      • 发送新 initialize 请求
      • 检索原始请求

故障排除

启用调试模式

集 MCP_DEBUG=true 要在stderr中查看详细日志,请执行以下操作:

MCP_ENDPOINT="https://example.com/mcp" MCP_DEBUG=true npx @arunshenoy99/mcp-http-bridge

常见问题

  1. “MCP_ENDPOINT环境变量是必需的”

    • 确保您已设置 MCP_ENDPOINT 环境变量
  2. 连接被拒绝

    • 验证终结点URL是否正确以及服务器是否正在运行
    • 检查是否需要使用HTTP与HTTPS
  3. 身份验证错误

    • 验证您的JWT令牌是否有效且未过期
    • 检查是否 MCP_BEARER_TOKEN 设置正确
    • 验证自定义标头的格式是否正确(如果使用 CUSTOM_HEADERS)
  4. 会话ID错误

    • 使用时,网桥会自动处理会话ID MCP_BEARER_TOKEN
    • 如果您看到“缺少Mcp会话Id标头”错误,请确保您正在使用 MCP_BEARER_TOKEN (不只是 CUSTOM_HEADERS)
    • 检查调试日志,查看是否从初始化响应中提取了会话ID

许可证

麻省理工学院