Skip to main content
Glama
PintaAI

MCP HTTP Proxy

by PintaAI

MCP HTTP プロキシ

stdio ベースのあらゆる MCP サーバー(@browsermcp/mcp など)を HTTP/SSE トランスポート経由でインターネットに公開します。ネットワーク越しに 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. クライアントが /sse に GET リクエスト - サーバーがセッションを作成し、メッセージ URL を含む endpoint イベントを送信します

  2. クライアントが /message?sessionId=xxx に POST リクエスト - サーバーが 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 を推奨します

  4. API キーは定期的にローテーションしてください

  5. /sessions エンドポイント経由でセッションを監視してください

トラブルシューティング

MCP サーバーが起動しない

コンソールログでエラーを確認してください。MCP サーバーの stderr はプロキシのコンソールに転送されます。

接続拒否 (Connection Refused)

  • サーバーが実行中であることを確認してください: curl http://localhost:3000/health

  • Tailscale の接続状態を確認してください: tailscale status

認証失敗

  • .env 内の API キーがリクエストヘッダーと一致しているか確認してください

  • Authorization ヘッダーに "Bearer " プレフィックスが含まれていることを確認してください

SSE が動作しない

  • ベース URL ではなく /sse エンドポイントに接続していることを確認してください

  • 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,786
    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
    -