mcpField
M
MCP Connect

MCP Connect

おすすめ
github.com/EvalsOneフレームワーク・SDK24032 週間前に更新

MCP Connect について

MCP Connect は、ローカルの stdio ベース MCP サーバーを Streamable HTTP または従来型のリクエスト/レスポンスブリッジ経由で HTTP として公開する軽量ゲートウェイです。クラウド上の AI サービスからローカルの MCP サーバーを利用したい開発者に向けたものです。

主な機能

  1. 01Streamable HTTP と従来型 HTTP ブリッジの二つのモード
  2. 02Bearer トークンによる認証と CORS 許可リスト
  3. 03会話の継続性を保つセッション管理
  4. 04外部公開用の Ngrok トンネル機能
  5. 05E2B サンドボックスへのクイックデプロイ

活用シーン

  1. 01クラウドの AI ツールからローカルの MCP サーバーを呼び出す
  2. 02信頼されていない MCP サーバーを E2B サンドボックスで実行する
  3. 03Ngrok を使ってローカルの MCP サーバーを一時的に外部公開する

MCP 対応

MCP Connect はゲートウェイとして動作し、ローカルの stdio MCP サーバーを /mcp/:serverId の HTTP エンドポイントとして公開します。サーバーは mcp-servers.json で定義します。

詳細

MCP Connect

███╗   ███╗ ██████╗██████╗      ██████╗ ██████╗ ███╗   ██╗███╗   ██╗███████╗ ██████╗████████╗
████╗ ████║██╔════╝██╔══██╗    ██╔════╝██╔═══██╗████╗  ██║████╗  ██║██╔════╝██╔════╝╚══██╔══╝
██╔████╔██║██║     ██████╔╝    ██║     ██║   ██║██╔██╗ ██║██╔██╗ ██║█████╗  ██║        ██║   
██║╚██╔╝██║██║     ██╔═══╝     ██║     ██║   ██║██║╚██╗██║██║╚██╗██║██╔══╝  ██║        ██║   
██║ ╚═╝ ██║╚██████╗██║         ╚██████╗╚██████╔╝██║ ╚████║██║ ╚████║███████╗╚██████╗   ██║   
╚═╝     ╚═╝ ╚═════╝╚═╝          ╚═════╝ ╚═════╝ ╚═╝  ╚═══╝╚═╝  ╚═══╝╚══════╝ ╚═════╝   ╚═╝   

License: MIT Node.js Version TypeScript

ローカル MCP サーバーを HTTP API として公開する軽量ブリッジ


MCP Connect とは?

MCP Connect は、Streamable HTTP または従来型のリクエスト/レスポンスブリッジを介して、stdio で通信するローカル MCP サーバーを呼び出せる HTTP ゲートウェイです。

新機能
  • 従来型のリクエスト/レスポンスブリッジに加え、Streamable HTTP モードを追加
  • E2B サンドボックスで起動するためのクイックデプロイスクリプトと設定を deploy/e2b に追加

仕組み

+-----------------+   HTTP (JSON)               +------------------+      stdio      +------------------+
|                 |   /bridge                   |                  |                 |                  |
|  Cloud AI tools | <------------------------>  |  Node.js Bridge  | <------------>  |    MCP Server    |
|   (Remote)      |                             |    (Local)       |                 |     (Local)      |
|                 |   HTTP (SSE stream)         |                  |                 |                  |
|                 |   /mcp/:serverId            |                  |                 |                  |
+-----------------+         Tunnels (optional)  +------------------+                 +------------------+

主な機能

機能説明
🚀 2 つのモードStreamable HTTP または従来型の HTTP ブリッジを介して、ローカルの stdio MCP サーバーを呼び出します
🔄 セッション管理セッションを使って会話の継続性を維持します
🔐 セキュリティBearer トークン認証 + CORS 許可リスト
🌐 パブリックアクセスエンドポイントを外部に公開する Ngrok トンネルを内蔵
☁️ クラウドデプロイE2B クラウドサンドボックスにワンクリックでデプロイ

クイックスタート

前提条件
  • Node.js >= 22.0.0(推奨)
  • npm または yarn
1) インストール
git clone https://github.com/EvalsOne/MCP-connect.git
cd mcp-connect
npm install
2) 準備

A. 初期環境変数を設定する

cp .env.example .env

サーバーを起動する前に、.env で ACCESS_TOKEN を設定してください。空の場合、起動に失敗します。

B. MCP サーバーを設定する

Streamable HTTP 方式では、各 MCP サーバーを個別に設定する必要があります。ファイルを編集して、既存のサンプルサーバー以外の設定を追加してください。

vim mcp-servers.json  
3) 実行
# Build and start
npm run build
npm start

# Or use dev mode (hot reload)
npm run dev

# Enable Ngrok tunnel
npm run start:tunnel

起動バナーが表示されたら、http://localhost:3000/health にアクセスしてサーバーの状態を確認してください。


使い方

モード 1:Streamable HTTP ブリッジ

汎用的で、Streamable HTTP をサポートするあらゆる MCP クライアントと互換性があります。

Streamable HTTP モードでは、各 MCP サーバーに固有のルートが割り当てられます。例として、mcp-servers.json に fetch MCP サーバーを追加します。

{
  "mcpServers": {
    "fetch": {
      "command": "uvx",
      "args": ["mcp-server-fetch"],
      "description": "HTTP/HTTPS content fetcher"
    }
  }
}

起動後、お好みの MCP クライアント(例:Claude Code、Cursor、Codex、GitHub Copilot...)で fetch MCP サーバーにアクセスします。

http://localhost:3000/mcp/fetch

注:サービスを起動する前に mcp-servers.json を設定する必要があります。設定しない場合、サーバーを利用できません。


モード 2:従来型のリクエスト/レスポンスブリッジ

tools/list、tools/call などのメソッドを実装する、標準外の呼び出し方式です。

すべてのリクエストヘッダーに Authorization: Bearer <token> を含めてください。起動時に ACCESS_TOKEN が必要です。

例 1:利用可能なツールを一覧表示する
curl -X POST http://localhost:3000/bridge \
  -H "Authorization: Bearer your-secret-token-here" \
  -H "Content-Type: application/json" \
  -d '{
    "serverPath": "uvx",
    "args": ["mcp-server-fetch"],
    "method": "tools/list",
    "params": {}
  }'
例 2:ツールを呼び出す
curl -X POST http://localhost:3000/bridge \
  -H "Authorization: Bearer your-secret-token-here" \
  -H "Content-Type: application/json" \
  -d '{
    "serverPath": "uvx",
    "args": ["mcp-server-fetch"],
    "method": "tools/call",
    "params": {
      "name": "fetch",
      "arguments": {
        "url": "https://example.com"
      }
    }
  }'
セキュリティ
認証

MCP Connect はトークンベースの認証システムを必要とします。起動前に .env で ACCESS_TOKEN を設定してください。空の場合、サーバーは設定エラーで終了します。

Authorization: Bearer <your_auth_token>
許可されたオリジン

本番環境では、クロスオリジンリクエストを制限するために ALLOWED_ORIGINS を設定してください。

ALLOWED_ORIGINS=https://yourdomain.com,https://app.yourdomain.com

ALLOWED_ORIGINS が設定されている場合、一致しないオリジンからのリクエストは拒否されます。


API リファレンス

GET /health

ヘルスチェックエンドポイント(認証不要)

レスポンス:

{"status": "ok"}

POST /mcp/:serverId

ストリーミング HTTP モード

パスパラメーター:

  • serverId:MCP_SERVERS で定義されたサーバー ID

ヘッダー:

  • Authorization: Bearer <token>(必須)
  • Accept: application/json, text/event-stream(必須)
  • mcp-session-id: <session-id>(任意。既存のセッションを再利用します)

本文:

[
  {"jsonrpc":"2.0","id":"1","method":"tools/list","params":{}},
  {"jsonrpc":"2.0","method":"notifications/initialized"}
]

POST /bridge

従来のリクエスト/レスポンスブリッジモード

ヘッダー:

  • Authorization: Bearer <token>(必須)
  • Content-Type: application/json

本文:

{
  "serverPath": "Executable command or URL (http/https/ws/wss)",
  "method": "JSON-RPC method name",
  "params": {},
  "args": ["optional command-line args"],
  "env": {"OPTIONAL_ENV_VAR": "value"}
}

対応メソッド:

  • tools/list、tools/call
  • prompts/list、prompts/get
  • resources/list、resources/read
  • resources/subscribe、resources/unsubscribe
  • completion/complete
  • logging/setLevel

Ngrok 経由で公開する

  1. トークンを取得します:https://dashboard.ngrok.com/get-started/your-authtoken

  2. .env に追加します:

    NGROK_AUTH_TOKEN=your-token-here
    
  3. サービスを起動します:

    npm run start:tunnel
    
  4. コンソールに公開 URL が表示されます:

    Tunnel URL: https://abc123.ngrok.io
    MCP Bridge URL: https://abc123.ngrok.io/bridge
    

E2B サンドボックスにすばやくデプロイする

E2B は隔離されたクラウドサンドボックスを提供しており、信頼できない MCP サーバーを安全に実行するのに適しています。

ステップ 1:E2B 環境を準備する
# Sign up at https://e2b.dev and get an API key
pip install e2b
export E2B_API_KEY=your-e2b-api-key

ブリッジ用のベアラートークンを設定することもできます(E2B のデプロイではこの環境変数が推奨されます):

export E2B_MCP_AUTH_TOKEN=your-secure-token
ステップ 2:サンドボックステンプレートをビルドする
cd deploy/e2b
python build.py
ステップ 3:テンプレートから起動する
python sandbox_deploy.py --template-id mcp-dev-gui

詳しくは:E2B デプロイガイドをご覧ください。


ログとモニタリング

ログファイル
  • combined.log:すべてのレベル
  • error.log:エラーレベルのみ
レベル

LOG_LEVEL で詳細度を制御します:

LOG_LEVEL=DEBUG  # development
LOG_LEVEL=INFO   # production (default)
LOG_LEVEL=WARN   # warnings + errors

開発

プロジェクト構成
src/
├── server/
│   └── http-server.ts      # HTTP server and routes
├── client/
│   └── mcp-client-manager.ts  # MCP client manager
├── stream/
│   ├── session-manager.ts   # session lifecycle
│   └── stream-session.ts    # SSE session implementation
├── config/
│   └── config.ts            # config loading & validation
├── utils/
│   ├── logger.ts            # Winston logger
│   └── tunnel.ts            # Ngrok tunnel management
└── index.ts                 # entry point

コントリビューション

イシューや PR を歓迎します!


このプロジェクトがお役に立ったら、ぜひ ⭐️ Star を付けてください!

コメント

MCP は初めてですか?

プロトコルの概要から最初のサーバーの導入まで、よくある疑問にまとめて答えます。

AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。