Skip to main content
Glama
PintaAI

MCP HTTP Proxy

by PintaAI

MCP HTTP 代理

通过 HTTP/SSE 传输将任何基于 stdio 的 MCP 服务器(如 @browsermcp/mcp)暴露到互联网。非常适合需要通过网络访问 MCP 工具的远程代理。

功能特性

  • 🌐 标准 MCP SSE 传输 - 遵循 MCP HTTP 传输规范

  • 🔐 API 密钥认证 - 使用 Bearer 令牌进行安全访问

  • 🚀 多种暴露选项 - Tailscale、ngrok、Cloudflare Tunnel

  • 🔄 会话管理 - 支持多个并发会话

  • 📦 适用于任何 MCP 服务器 - 默认为 @browsermcp/mcp

Related MCP server: MCP SSE Proxy

快速入门

1. 安装依赖

npm install

2. 配置(可选)

cp .env.example .env
# Edit .env to set your API key

生成一个安全的 API 密钥:

node -e "console.log(require('crypto').randomBytes(32).toString('hex'))"

3. 构建并运行

npm run build
npm start

或者用于开发:

npm run dev

API 端点(标准 MCP SSE 传输)

端点

方法

描述

/sse

GET

建立 SSE 连接(返回端点 URL)

/message?sessionId=xxx

POST

发送 JSON-RPC 消息

/health

GET

健康检查(无需认证)

/sessions

GET

列出活动会话(需要认证)

暴露到互联网

选项 1:Tailscale(推荐用于私有访问)

Tailscale 提供安全、私有的访问,无需暴露到公共互联网。

# Install Tailscale if not already installed
# Then serve via Tailscale
tailscale serve --bg --http 3000

或者直接使用您的 Tailscale IP:

tailscale status  # Find your Tailscale IP

您的 MCP 服务器将可以通过以下方式访问:

  • https://your-machine.tailnet-name.ts.net (通过 serve)

  • http://your-tailscale-ip:3000 (直接 IP)

从您的代理中使用:

{
  "mcpServers": {
    "browser-remote": {
      "url": "http://your-tailscale-ip:3000/sse",
      "headers": {
        "Authorization": "Bearer your-api-key"
      }
    }
  }
}

选项 2:ngrok(公共 URL)

# Install ngrok if not already installed
ngrok http 3000

ngrok 将提供一个类似 https://abc123.ngrok.io 的公共 URL。

选项 3:Cloudflare Tunnel

# Install cloudflared if not already installed
cloudflared tunnel --url http://localhost:3000

SSE 传输的工作原理

  1. 客户端 GET /sse - 服务器创建会话,发送带有消息 URL 的 endpoint 事件

  2. 客户端 POST 到 /message?sessionId=xxx - 服务器将 JSON-RPC 转发给 MCP 进程

  3. 服务器流式传输响应 - MCP 响应作为 SSE message 事件发送

使用示例

测试健康检查

curl http://localhost:3000/health

响应:

{
  "status": "healthy",
  "sessions": 0,
  "uptime": 10.5,
  "transport": "sse",
  "endpoints": {
    "sse": "/sse (GET - establishes SSE connection)",
    "message": "/message?sessionId=xxx (POST - send JSON-RPC messages)"
  }
}

通过 SSE 连接(JavaScript)

const eventSource = new EventSource('http://localhost:3000/sse', {
  headers: { 'Authorization': 'Bearer your-api-key' }
});

eventSource.addEventListener('endpoint', (e) => {
  console.log('Message endpoint:', e.data);
  // e.data = "/message?sessionId=xxx"
});

eventSource.addEventListener('message', (e) => {
  console.log('MCP response:', JSON.parse(e.data));
});

发送 MCP 请求

curl -X POST "http://localhost:3000/message?sessionId=your-session-id" \
  -H "Authorization: Bearer your-api-key" \
  -H "Content-Type: application/json" \
  -d '{"jsonrpc":"2.0","id":1,"method":"tools/list"}'

配置

环境变量

描述

默认值

PORT

服务器端口

3000

HOST

绑定的主机

0.0.0.0

MCP_API_KEY

用于认证的 API 密钥

(无)

MCP_COMMAND

运行 MCP 服务器的命令

npx

MCP_ARGS

参数的 JSON 数组

["@browsermcp/mcp@latest"]

使用不同的 MCP 服务器

您可以将此代理与任何基于 stdio 的 MCP 服务器一起使用:

# Example: Use a custom MCP server
MCP_COMMAND=node
MCP_ARGS=["/path/to/your/mcp-server/dist/index.js"]

# Example: Use Python MCP server
MCP_COMMAND=python
MCP_ARGS=["-m", "your_mcp_server"]

安全注意事项

  1. 暴露到互联网时务必使用 API 密钥认证

  2. 使用 HTTPS(Tailscale、ngrok 和 Cloudflare 都提供此功能)

  3. 推荐使用 Tailscale 进行 tailnet 内的私有访问

  4. 定期轮换 API 密钥

  5. 通过 /sessions 端点监控会话

故障排除

MCP 服务器无法启动

检查控制台日志以获取错误信息。MCP 服务器的 stderr 会转发到代理的控制台。

连接被拒绝

  • 确保服务器正在运行:curl http://localhost:3000/health

  • 检查 Tailscale 连接状态:tailscale status

认证失败

  • 检查 .env 中的 API 密钥是否与您的请求头匹配

  • 确保 Authorization 请求头中包含 "Bearer " 前缀

SSE 不工作

  • 确保您连接的是 /sse 端点(而不是基础 URL)

  • 检查 GET 请求中是否也发送了 Authorization 请求头

许可证

MIT

Maintenance

ActivityInactive
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    B
    maintenance
    Enables interaction with remote MCP servers using SSE transport instead of STDIO for enhanced communication capabilities.
    1
    200,973 PyPI
    2,779
    Python
    MIT
  • F
    license
    Not graded
    quality
    Not graded
    maintenance
    Bridges STDIO-based MCP clients with SSE-based MCP servers, allowing applications like Claude Desktop to connect to remote MCP servers that use SSE transport.
    9
    -