MCP Connect について
MCP Connect は、ローカルの stdio ベース MCP サーバーを Streamable HTTP または従来型のリクエスト/レスポンスブリッジ経由で HTTP として公開する軽量ゲートウェイです。クラウド上の AI サービスからローカルの MCP サーバーを利用したい開発者に向けたものです。
主な機能
- 01Streamable HTTP と従来型 HTTP ブリッジの二つのモード
- 02Bearer トークンによる認証と CORS 許可リスト
- 03会話の継続性を保つセッション管理
- 04外部公開用の Ngrok トンネル機能
- 05E2B サンドボックスへのクイックデプロイ
活用シーン
- 01クラウドの AI ツールからローカルの MCP サーバーを呼び出す
- 02信頼されていない MCP サーバーを E2B サンドボックスで実行する
- 03Ngrok を使ってローカルの MCP サーバーを一時的に外部公開する
MCP 対応
MCP Connect はゲートウェイとして動作し、ローカルの stdio MCP サーバーを /mcp/:serverId の HTTP エンドポイントとして公開します。サーバーは mcp-servers.json で定義します。
詳細
MCP Connect
███╗ ███╗ ██████╗██████╗ ██████╗ ██████╗ ███╗ ██╗███╗ ██╗███████╗ ██████╗████████╗
████╗ ████║██╔════╝██╔══██╗ ██╔════╝██╔═══██╗████╗ ██║████╗ ██║██╔════╝██╔════╝╚══██╔══╝
██╔████╔██║██║ ██████╔╝ ██║ ██║ ██║██╔██╗ ██║██╔██╗ ██║█████╗ ██║ ██║
██║╚██╔╝██║██║ ██╔═══╝ ██║ ██║ ██║██║╚██╗██║██║╚██╗██║██╔══╝ ██║ ██║
██║ ╚═╝ ██║╚██████╗██║ ╚██████╗╚██████╔╝██║ ╚████║██║ ╚████║███████╗╚██████╗ ██║
╚═╝ ╚═╝ ╚═════╝╚═╝ ╚═════╝ ╚═════╝ ╚═╝ ╚═══╝╚═╝ ╚═══╝╚══════╝ ╚═════╝ ╚═╝
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/callprompts/list、prompts/getresources/list、resources/readresources/subscribe、resources/unsubscribecompletion/completelogging/setLevel
Ngrok 経由で公開する
-
トークンを取得します:https://dashboard.ngrok.com/get-started/your-authtoken
-
.envに追加します:NGROK_AUTH_TOKEN=your-token-here -
サービスを起動します:
npm run start:tunnel -
コンソールに公開 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 を付けてください!
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。