MCP Server Runner について
MCP Server Runner は、Model Context Protocol(MCP)サーバーを実行し、WebSocket 接続経由で利用できるようにするサーバーです。MCP サーバーを Web アプリケーションやネットワーク接続されたクライアントから利用したい開発者向けです。現在は開発中のため、API が変更される可能性があります。
主な機能
- 01WebSocket 経由での MCP サーバーへのアクセス
- 02MCP サーバープロセスの起動と管理
- 03クライアントとサーバー間の双方向メッセージ転送
- 04グレースフルシャットダウンとエラーログ
- 05JSON 設定による複数サーバー定義
- 06Docker によるデプロイ対応
活用シーン
- 01ローカルの MCP サーバーを Web アプリケーションに接続
- 02ネットワーク上のクライアントから MCP サーバーを利用
- 03コンテナ内での MCP サーバーのデプロイ
MCP 対応
WebSocket クライアントと MCP サーバー実装の間を橋渡しし、MCP サーバープロセスを起動して双方向にメッセージを転送します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
MCP Server Runner
Note:このプロジェクトは現在、活発に開発中であり、WIP(作業中)の状態です。機能や API は大幅に変更される可能性があります。
Model Context Protocol(MCP)サーバーを実行するための WebSocket サーバー実装です。このアプリケーションにより、WebSocket 接続を介して MCP サーバーにアクセスでき、Web アプリケーションやその他のネットワーク対応クライアントとの統合が容易になります。
開発状況
- 🚧 作業中:このソフトウェアは活発に開発されています
- ⚠️ API の安定性:API や機能は予告なく変更される可能性があります
- 🧪 テスト:現在、テストと改善を進めています
- 📝 ドキュメント:ドキュメントは継続的に更新されています
概要
MCP Server Runner は、WebSocket クライアントと MCP サーバー実装の間をつなぐブリッジとして機能します。次のことを行います。
- MCP サーバーのプロセスを起動します
- WebSocket 接続を管理します
- クライアントと MCP サーバー間の双方向通信を処理します
- グレースフルシャットダウンとエラー処理に対応します
機能
- 単一クライアントに対応した WebSocket サーバー実装
- MCP サーバーインスタンスのプロセス管理
- クライアントとサーバー間の双方向メッセージ通信
- グレースフルシャットダウン処理
- 包括的なエラーログ記録
- クロスプラットフォーム対応(Unix/Windows)
前提条件
- Rust 1.70 以降
- MCP サーバー実装の実行可能ファイル
設定
環境変数
環境変数を使ってアプリケーションを設定できます。
PROGRAM= # Path to the MCP server executable (required if no config file)
ARGS= # Comma-separated list of arguments for the MCP server
HOST=0.0.0.0 # Host address to bind to (default: 0.0.0.0)
PORT=8080 # Port to listen on (default: 8080)
CONFIG_FILE= # Path to JSON configuration file
追加の環境変数は MCP サーバープロセスに引き継がれます。
JSON 設定
または、JSON 設定ファイルを指定できます。
{
"servers": {
"filesystem": {
"command": "npx",
"args": [
"-y",
"@modelcontextprotocol/server-filesystem",
"/path/to/workspace"
]
},
"github": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-github"],
"env": {
"GITHUB_PERSONAL_ACCESS_TOKEN": "your_token_here"
}
}
},
"default_server": "filesystem",
"host": "0.0.0.0",
"port": 8080
}
設定ファイルは、次の 2 つの方法で指定できます。
- コマンドライン引数として指定:
mcp-server-runner config.json CONFIG_FILE環境変数を使って指定:CONFIG_FILE=config.json mcp-server-runner
JSON 設定では、複数のサーバー設定を定義し、そのうち 1 つをデフォルトとして選択できます。
設定の優先順位
- コマンドラインで指定された設定ファイル
CONFIG_FILE環境変数- 環境変数(
PROGRAM、ARGSなど) - デフォルト値
使用方法
-
環境変数を使用する場合:
export PROGRAM=npx export ARGS=-y,@modelcontextprotocol/server-github export PORT=8080 export GITHUB_PERSONAL_ACCESS_TOKEN=github_pat_*** cargo run -
設定ファイルを使用する場合:
# Either specify the config file as an argument cargo run config.json # Or use the CONFIG_FILE environment variable CONFIG_FILE=config.json cargo run -
WebSocket サーバーに接続します:
const ws = new WebSocket("ws://localhost:8080");
Docker 対応
コンテナ環境へのデプロイ用に、Dockerfile と docker-compose.yml が用意されています。
docker-compose up --build
開発
プロジェクトをビルドします。
cargo build
テストを実行します。
cargo test
デバッグログを有効にして実行します。
RUST_LOG=debug cargo run
アーキテクチャ
このアプリケーションはモジュール型アーキテクチャを採用しています。
main.rs:アプリケーションのエントリーポイントとサーバーのセットアップconfig/:設定の読み込みと管理process/:プロセス管理と I/O 処理websocket/:WebSocket 接続の管理state.rs:グローバル状態の管理shutdown.rs:グレースフルシャットダウン処理
エラー処理
- MCP サーバーの標準エラー出力はログに記録されますが、クライアントには転送されません
- WebSocket 接続エラーは適切に処理されます
- プロセスエラーは詳細情報とともにログに記録されます
制限事項
- 同時に接続できるクライアントは 1 つのみです
- WebSocket SSL/TLS には対応していません(安全な接続にはリバースプロキシを使用してください)
- 認証機能は組み込まれていません
コントリビューション
- リポジトリをフォークします
- フィーチャーブランチを作成します(
git checkout -b feature/amazing-feature) - 変更をコミットします(
git commit -m 'Add amazing feature') - ブランチにプッシュします(
git push origin feature/amazing-feature) - プルリクエストを作成します
ライセンス
このプロジェクトは MIT License のもとでライセンスされています。詳細は LICENSE ファイルを参照してください。
参考資料
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。