Unified MCP Tool Graph: A Intelligence Layer for Dynamic Tool Retrieval について
Unified MCP Tool Graph は、複数の MCP サーバーのツール API を Neo4j グラフデータベースに集約し、タスクに関連するツールだけを LLM やエージェントが動的に取得できるようにする研究プロジェクトです。多数のツールを扱うエージェントを開発する人を対象としています。
主な機能
- 01複数の MCP サーバーのツールを Neo4j に格納
- 02クエリごとに関連するツールを検索
- 03ツール間の重複と依存関係を表現
- 04MCP サーバーを必要時に起動し、未使用時に停止
- 05A2A と LangGraph のサンプルエージェントを収録
活用シーン
- 01エージェントのコンテキストに関連ツールだけを読み込む
- 02企業内で権限に応じて利用可能な内部ツールを絞り込む
- 03タグと依存関係に基づくツール推薦エージェントの構築
MCP 対応
Dynamic Tool Retriever MCP が関連ツールと MCP サーバーの設定を返し、サーバーマネージャーが必要な MCP サーバーへ必要時に接続します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
Unified MCP Tool Graph: 動的ツール検索のためのインテリジェンス層
Unified MCP Tool Graph は、多様な Model Context Protocol (MCP) サーバーのツール API を集約し、集中型の Neo4j グラフデータベースに構造化する研究主導のプロジェクトです。このグラフは、大規模言語モデル (LLM) と エージェント型 AI システムが、冗長または混乱を招く選択肢に圧倒されることなく、あらゆるタスクに最も関連するツールを動的に検索できるようにするインテリジェントなインフラストラクチャ層として機能します。
🚀 最近のアップデート: これはプレビューモードで SmarterMCP に統合されました。
動的な MCP サーバーの起動と最小限のツールコンテキスト
🟢 動的な MCP サーバーオーケストレーション
- システムは特定のユーザークエリに必要な MCP サーバーのみを起動するようになりました。5 つの人気のある MCP サーバー (Dynamic Tool Retriever MCP を含む) はデフォルトでウォーム状態に保たれ、それ以外はオンデマンドで起動され、最後の使用から 10 分間は維持されます。
- Dynamic Tool Retriever MCP は、ツールのメタデータだけでなく、各ツールの MCP サーバーを実行/接続するために必要な設定 (ベンダーの GitHub README から自動的に取得) も返します。
- 自動 MCP 設定抽出: 各ツールの MCP サーバ設定を (README から) 抽出するためにベンダーの GitHub リポジトリを使用するため、エージェントはオンザフライで適切なサーバーを起動/接続できます。
- エラー処理: 設定の抽出が失敗した場合、システムは警告をログに記録して続行し、堅牢なツール検索を保証します。
🟢 LLM/エージェント向けの最小限のツールコンテキスト
- ユーザークエリに必要な正確なツールのみがエージェントのコンテキストにロードされます (すべての MCP サーバーのすべてのツールではありません)。これにより、LLM の混乱と無限のツールループを防ぎます。
- エンドツーエンドのフロー:
- ユーザークエリを受信します。
- Dynamic Tool Retriever MCP が Neo4j グラフをクエリし、上位の関連ツールとその MCP サーバー設定を返します。
- エージェントは (設定を使用して) 必要な MCP サーバーのみを起動/接続し、取得したツールのみをロードします。
- エージェントはワークフローを実行し、回答を返します。
🟢 A2A および LangGraph エージェントのサポート
- A2A エージェントの例: リクエストごとに MCP サーバーとツールをオーケストレーションする完全に動的な A2A エージェントについては、
Example_Agents/A2A_DynamicToolAgent/を参照してください。 - LangGraph の例: 同じ動的で最小限のツールアプローチを使用する LangGraph エージェントについては、
Example_Agents/Langgraph/を参照してください。
🔬 このリポジトリは、Unified Tool Graph Database の作成と進化に焦点を当てています。チャットボットベースの統合 (例: LangChain) は、この基盤層のモジュラー拡張として扱われます。
📢 Cline、IDE のサポートは近日公開予定です..
研究課題
LLM と自律エージェントが外部ツールや API と対話するように進化するにつれて、重大なボトルネックが生じています:
モデルは、無限ループに陥ったり間違ったものを選んだりすることなく、拡大し続ける API の世界から適切なツールをどのように効率的に選択できるでしょうか?
これが起こる理由:
-
ツールの混乱:
多くのツールが類似した機能を提供する場合 (例:create_post、schedule_post、post_to_social)、LLM は苦戦し、優柔不断や不正確なツール呼び出しにつながります。 -
↺ 無限チェーン:
ツールの違いを構造的に理解していないと、LLM はしばしば非生産的なチェーンに陥り、ツールを繰り返し呼び出したり、最適でないものを選択したりします。 -
非構造化アクセス:
現在のほとんどの実装では、利用可能なすべてのツールを LLM のコンテキストにダンプし、選択肢で圧倒してハルシネーションのリスクを高めています。
このプロジェクトは、構造化されたクエリ可能なソリューションを提案します。それは、MCP サーバー(例: LinkedIn、Google、Facebook、Notion など)から取得したツール/API を格納するベンダーに依存しない Neo4j グラフデータベースです。
🔍 主な機能:
-
ツールインテリジェンスの一元化:
API の説明、メタデータ、パラメータ、およびツール間の関係をグラフ形式で保存します。 -
LLM に適したクエリレイヤー:
エージェントはメタデータと関係を使用して、タスクごとに最も関連性の高い 3~4 個のツールだけを取得でき、混乱を最小限に抑えます。 -
意味的な差別化:
グラフの関係(例:overlaps_with、extends、preferred_for_task)を使用してツール間の類似点と相違点を捉え、意思決定を導きます。
モジュール式拡張
グラフが核心ですが、それは強力な下流のユースケースを可能にします:
動的ツール取得 (DTR):
グラフにクエリを実行し、任意のユーザーインテントに対して最小限で正確なツールセットを提示する、モジュール式の LangChain/Autogen チャットボット拡張です。
これにより、LLM が膨大なツールライブラリを盲目的にスキャンすることを防ぎ、代わりにタスクを完了するために必要なものだけを与えます — それ以上でもそれ以下でもありません。
主な実装:
- MCP サーバーはオンデマンドで起動され(ツールリトリーバー MCP と GitHub の設定を使用)、非アクティブ後にシャットダウンされます。
- 最も人気のある 5 つの MCP のみが常時稼働し、その他は一時的です。
- エージェント(A2A または LangGraph)は、ツールの全領域ではなく、現在のクエリに関連するツールのみを参照します。
コア目標
| 目標 | 説明 |
|---|---|
| ツールの取り込み | パブリック/プライベート MCP サーバーから API とスキーマを取得し、正規化する |
| ツール関係のマッピング | overlaps_with、requires_auth、preferred_for、belongs_to_vendor などのグラフエッジを定義する |
| LLM 指向のクエリ | タスク固有のツールバンドルをリアルタイムで返す |
| スケーラブルなエコシステム | 再トレーニングやハードコーディングなしで、ベンダーとツールを継続的に追加する |
| エージェント対応構造 | メタデータが豊富で検索可能なツール表現で LLM の推論を導く |
主な利点
-
LLM におけるツールの混乱を軽減
タスクに関連するオプションのみを表示することで、ツールの過負荷を防ぎます。無限の呼び出しループや不正確なツール選択を回避します。 -
ベンダーに依存しない統合
異なるプロバイダーの API を単一のインテリジェントシステムに統合します。 -
相互運用性のマッピング
ツールがどのように関連または依存しているかを捉え、ワークフロー内での API のチェーン化に役立ちます。 -
最適化されたエージェント推論
コンテキストウィンドウ内の気を散らすものを減らし、LLM が効率的に推論できるようにします。 -
スケーラブルかつモジュール式
LLM やチャットボットインフラストラクチャとは独立して更新できます。あらゆるエージェントスタックに拡張可能です。
ユースケースの例
-
「LinkedIn で投稿をスケジュールし、それを Slack で共有したい。」
→ グラフは関連するcreate_post、schedule_post、send_messageツールのみを返します。 -
企業向けのカスタム AI アシスタント:
アクセス、スコープ、または機能でフィルタリングされた、グラフからの内部ツールのみを公開します。 -
スマートレコメンダーエージェント:
タグ、人気度、成功率、または依存関係に基づいて、最適にマッチするツールを提案します。
LangGraph および A2A との統合は、Example_Agents ディレクトリで利用可能で、エージェントワークフローの効率化と動的なツールオーケストレーションを実現します。
🏗️ アーキテクチャ
┌─────────────────────────────────────────────────────────────┐
│ MCP Unified Gateway │
│ (Port 8000) │
└─────────────────────┬───────────────────────────────────────┘
│
┌─────────────────────┴───────────────────────────────────────┐
│ MCP Proxy Server │
│ (Port 9000) │
└─┬─────────────┬─────────────┬─────────────┬─────────────────┘
│ │ │ │
┌─▼──────────┐ ┌▼─────────────▼┐ ┌─▼─────────▼┐ ┌─▼─────────────┐
│ Dynamic │ │ Everything │ │Sequential │ │ Time Server │
│ Tool │ │ Server │ │ Thinking │ │ │
│ Retriever │ │ │ │ Server │ │ │
└────────────┘ └──────────────┘ └────────────┘ └───────────────┘
│
┌─────▼─────┐
│ Neo4j │ (Optional)
│ Database │
└───────────┘
🛠️ 仕組み (概要)
- ユーザーがクエリを送信します (例: 「LinkedIn の投稿をスケジュールして Slack で共有する。」)
- Dynamic Tool Retriever MCP が Neo4j グラフにクエリを実行し、最も関連性の高いツールとその MCP サーバー設定 (必要に応じて GitHub から取得) を返します。
- MCP Server Manager が必要な MCP サーバーのみを起動/接続し (設定を使用)、最後の使用から 10 分間それらを維持します。
- エージェント (A2A または LangGraph) が取得されたツールのみを読み込み、ワークフローを実行します。
- 結果がユーザーに返され、ツールの混乱を最小限に抑え、最大限の効率を実現します。
近日公開
- グラフ取り込みスクリプト
- スキーマブループリント + Cypher クエリ
- ツール可視化プレイグラウンド
- LangChain DTR チャットボットプラグイン
- ハウツーチュートリアル & ユースケース
はじめに
👉 uv を使用した完全なセットアップ手順については、GETTING_STARTED.md を参照してください。
クイックスタート
# Clone the repository
git clone https://github.com/your-username/unified-mcp-tool-graph.git
cd unified-mcp-tool-graph
# Install dependencies with uv
uv sync
# Start the unified gateway
uv run python start_unified_gateway.py
ゲートウェイは http://localhost:8000 で利用可能になり、すべての MCP サーバーのすべてのツールに単一のエンドポイントからアクセスできます。
詳細なセットアップ手順、トラブルシューティング、および設定オプションについては、GETTING_STARTED.md を参照してください。
コントリビューション
エージェント AI、グラフデータベース、または LLM 統合に情熱をお持ちの方 — ぜひご協力ください!
- アイデアやベンダーソースの提出
- スキーマ/設計の改善のための PR の作成
- この研究を支援するためのリポジトリへのスター
ライセンス
MIT License — 学術、個人、および商用利用は無料です。
まとめ
100 以上のツールをモデルのプロンプトに投入して賢く選択することを期待する代わりに、Unified MCP Tool Graph は LLM に構造、明確さ、および関連性を提供します。
それはツールの混乱を修正し、無限ループを防ぎ、モジュール式でインテリジェントなエージェントワークフローを可能にします。
よりスマートなシステムを構築しましょう — 一度に 1 つのツールグラフから。
リポジトリにスターを付けて旅をフォローし、ツールを真に インテリジェントで、検索可能で、モジュール式 にしましょう。
開発に関する更新
マルチラベルのオープンエンドユースケースにおけるクラスタリング。
ベンダーとツールを持つ GraphDB を、ベクトル検索用の埋め込みとともに作成しました。 ベンダーを分類し、同じカテゴリのベンダーを接続する方法が必要です。例 (Web 検索、ファイルシステム、ソーシャルメディアなど) サポートされているツールの数 11066 MCP サーバーの数 (公式 + コミュニティ) 4161
クエリ = AI の最新トレンドについて LinkedIn の投稿をしたい。
Here are the top 5 tools recommended based on your task of creating a LinkedIn post about AI trends, along with brief explanations to help you choose:
---
### 1. **linkedin_post_generator** (Likely the Most Relevant)
**Description**: Generates optimized LinkedIn posts with engaging headlines, content structure, and hashtags tailored for professional audiences.
**Why Use**: Directly creates polished posts while suggesting multimedia (images, videos) and tone adjustments for maximum engagement.
---
### 2. **ai_search** (Top Search Tool)
**Vendor**: Higress AI-Search
**Key Feature**: Aggregates **real-time data** from Google/Bing/Quark and academic sources like ArXiv for cutting-edge AI research and industry trends.
**How to Use**:
- Query: `Latest AI trends 2024` → Get recent news, research papers, and opinion pieces.
- Useful for ensuring your post cites fresh, credible sources.
---
### 3. **tavily-search** (Comprehensive Web Research)
**Vendor**: Tavily
**Key Feature**: AI-powered search with advanced filters (e.g., `time_range`, `exclude_domains`) to curate content from trusted sources.
**How to Use**:
- Example: Search for "recent AI breakthroughs 2024" → Pull articles from tech blogs, IEEE, or MIT Tech Review to highlight in your post.
---
### 4. **query_repository** (If Curating Open-Source or GitHub Content)
**Vendor**: GitHub Chat
**Use Case**:
- If your post references open-source projects (e.g., "Top AI tools from GitHub 2024"), use this to query repositories for trending AI-related code/repos.
---
### 5. **social_media_analytics** (Post-Creation Optimization)
**Use Case**:
- After drafting your post, analyze engagement metrics (e.g., "Which AI topics are trending this week?") to refine your draft based on what performs well on LinkedIn.
---
### Recommended Workflow:
1. **Research** using **ai_search** or **tavily-search** to gather the latest AI news and data (e.g., LLM progress, ethical AI debates).
2. **Craft the Post** with **linkedin_post_generator** to ensure professional formatting and engagement hooks.
3. **Validate** with quick checks via **query_repository** (if citing open-source tools) or **social_media_analytics** for topic popularity.
Let me know if you'd like step-by-step instructions for any specific tool!
mcp-proxy による MCP サーバープロキシ
このプロジェクトは mcp-proxy を使用して、stdio ベースの MCP サーバーを HTTP エンドポイントとして公開します。mcp-proxy は stdio MCP サーバーと HTTP クライアントの間のブリッジとして機能し、Streamable HTTP と SSE の両方のトランスポートをサポートします。
仕組み
- MCP サーバーはサブプロセス (stdio) として起動され、
mcp-proxyに登録されます。 - 各サーバーは以下で公開されます:
http://localhost:<port>/servers/<name>/(Streamable HTTP、POST)http://localhost:<port>/servers/<name>/sse(SSE、GET)
- 公式 MCP Python SDK は
sse_clientを使用して/sseエンドポイントに接続できます:
from mcp.client.sse import sse_client
from mcp.client.session import ClientSession
import asyncio
async def main():
mcp_url = "http://localhost:9000/servers/time/sse"
async with sse_client(mcp_url) as (read, write):
async with ClientSession(read, write) as session:
await session.initialize()
# ... interact with the server ...
if __name__ == "__main__":
asyncio.run(main())
設定と高度な使用方法の詳細については、mcp-proxy のドキュメントを参照してください。
📚 ドキュメント
- GETTING_STARTED.md -
uvを使用した完全なセットアップガイド - CONTRIBUTING.md - コントリビューションのガイドライン
- CODE_OF_CONDUCT.md - コミュニティ行動規範
📄 ライセンス
このプロジェクトは MIT License の下でライセンスされています - 詳細については LICENSE ファイルを参照してください。
リポジトリにスターを付けて旅をフォローし、ツールを真に インテリジェントで、検索可能で、モジュール式 にしましょう。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。
