MCP-OS · Model Context Protocol Orchestration System について
MCP-OSは、タスクに合うMCPサーバーを検索するオーケストレーションシステムです。LLMに渡すツール情報を絞りたい開発者向けで、現段階ではベクトル検索で候補を選び、その説明だけを追加します。オンデマンド起動・停止などはロードマップ上の機能です。
主な機能
- 01タスクに応じたMCPサーバーのベクトル検索
- 02一致したサーバーの説明だけを追加
- 03交換可能なベクトルバックエンド
- 04HTTPとSSEによる検索サービス
活用シーン
- 01タスクに関連するMCPサーバーの選定
- 02プロンプト内のツール説明の削減
- 03ベクトルストアバックエンドの交換やカスタマイズ
MCP 対応
MCP Retrieverを提供し、MCPサーバーとして設定するかRESTエンドポイントを通じて、タスクに合うMCPサーバーを検索できます。ランタイムでの起動・停止とポリシーサンドボックスは計画中です。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
MCP-OS · Model Context Protocol Orchestration System
LLM にはタスクの解決に集中させ、MCP があふれる海に溺れさせないようにしましょう。
✨ プロジェクトのビジョン
Model Context Protocol(MCP) エコシステムの急速な拡大に伴い、何百もの MCP サーバーによって、よくある 3 つの悩みが生じています。
| 問題点 | 説明 |
|---|---|
| プロンプトの肥大化 | 長大な MCP の説明がコンテキストウィンドウを圧迫し、モデルは 計画/分析 よりもツールの選択に多くのトークンを費やします。 |
| 接続の管理 | どの MCP が稼働しているか、また現在のタスクに対応できるかを常に把握しなければなりません。 |
| リソースとセキュリティ | 常時稼働する MCP サーバーはメモリを消費してインターフェースを公開し、攻撃対象領域を広げます。 |
MCP-OS の目標は次のとおりです。
「オペレーティングシステムがプロセスを管理するように MCP を管理します。必要に応じて読み込み、アイドル時にアンロードします。」
🌟 現在のフェーズ:MCP-Retriever(完了 ✅)
- ベクトル検索 — タスクの説明を埋め込み、ベクトルインデックスから上位 k 件の MCP を検索します。
- 簡潔なプロンプトテンプレート — 上位 k 件の MCP の説明だけを挿入し、平均でプロンプトのトークンを約 70 % 削減します。
- プラグイン可能なバックエンド — デフォルトは
openai/embeddingsです。FAISS、Qdrant、Milvus などに切り替えられます。
📖 詳細は
/packages/retrieverをご覧ください。
🛣️ ロードマップ
| マイルストーン | 機能 | 状態 |
|---|---|---|
| v0.1 | MCP-Retriever – ベクトル検索 | ✅ リリース済み |
| v0.2 | MCP-Retriever - 軽量版 | ⏳ 進行中 |
| v0.3 | ヘルスチェックデーモン – 自動ハートビートと整理 | ⏳ 進行中 |
| v0.4 | ランタイムマネージャー – MCP のオンデマンド起動/停止 | 🗓 予定 |
| v1.0 | ポリシーサンドボックス – 細かな認証、レート、コスト管理 | 🗓 予定 |
⚙️ クイックスタート
1. クローンとインストール
git clone https://github.com/your-org/mcp-os.git
cd mcp-os
npm install # or npm / yarn
2. ベクトルインデックスを構築
# Scan local / remote MCP metadata and create an index
npm run build:index --src ./mcp_list.json --out ./index
3. Retriever サーバーを起動
npm run start:retriever
# Default listens on 127.0.0.1:5500 (HTTP + SSE)
4. LLM/エージェントに接続
// Example: Claude Desktop
{
"mcpServers": {
"mcp-os": {
"command": "/absolute/path/to/mcp-os/bin/retriever.js"
}
}
}
または、REST エンドポイントを呼び出します。
curl -X POST http://localhost:5500/match \
-H "Content-Type: application/json" \
-d '{"task": "Scrape a web page and extract its title"}'
応答例:
{
"matches": [
{
"id": "web-scraper",
"score": 0.89,
"functions": ["fetchHtml", "querySelector"]
}
]
}
📂 リポジトリの構成
mcp-os/
├─ packages/
│ ├─ retriever/ # Phase 1: vector retrieval
│ ├─ health-check/ # Phase 2: heartbeat daemon (WIP)
│ └─ runtime-manager/ # Phase 3: load/unload (planned)
├─ scripts/ # CLI helpers
├─ examples/ # Usage demos
└─ docs/ # Architecture & deep dives
🧩 MCP リストの形式
mcp_list.json は MCP のメタデータを記述します。
{
"web-scraper": {
"name": "Web Scraper MCP",
"description": "Fetches HTML and parses DOM.",
"functions": ["fetchHtml", "querySelector"]
},
"calc": { ... }
}
❓ よくある質問
検索品質が低い場合、どのように調整できますか?
topKを増やすと、再現率が向上します。- より強力な埋め込みモデルに切り替えます。
- タスクテキストの正規化ルールを改善します。
独自のベクトルストアを接続するにはどうすればよいですか?
VectorStore インターフェースを実装します:src/store/yourStore.ts。
🤝 コントリビュート
- リポジトリを フォーク します
- ブランチ
feature/awesome-stuffを作成します - PR を作成し、関連する課題へのリンクを追加します
- CI とレビューを待ちます 🎉
📜 ライセンス
🙏 謝辞
- オープンな仕様を提供してくださった Model Context Protocol コミュニティ
- デバッグ用の MCP Inspector
- 課題や PR を提出してくださった皆さま、ありがとうございます! ❤️
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。