rag-tool-agent
RAG Tool Agent — MCP サーバー
rag-tool-agent-demo プロジェクトの背後にある 2 つのツール(FordA データセットのメモを対象とした検索結果に基づく Q&A と、安全な算術計算機)を、本格的な Model Context Protocol サーバーとして公開します。これにより、MCP 互換の任意のクライアント(Claude Desktop、MCP 対応エージェントハーネス、カスタムホストなど)は、そのプロジェクト独自の CLI や rag-tool-api-docker 内の Flask HTTP ラッパー経由だけでなく、これらのツールを直接呼び出せます。
明確に特定された具体的なギャップを埋めるために構築されました。現在の AI エンジニア/エージェント型アプリケーションの求人情報のいくつかは、MCP(および関連するエージェント間/エージェントと UI 間のプロトコル)に関する実践的な経験を明示的に求めています。これは小規模で、実際に動作するテスト済みの実装であり、裏付けのないプロトコル経験の主張ではありません。
このような構成にした理由
元のエージェントは内部で独自のルーティングを行います。受信した各質問に対して「calculator」か「retrieval」か「direct answer」かを判断する、手作りの if/else です。MCP はこれを逆転させます。ルーティングを行うのは クライアント(LLM/エージェントホスト)であり、各ツールの名前、説明、JSON スキーマのパラメータを読み取って、どれを呼び出すかを決定します。したがって、このサーバーは元のルーティングロジックを再実装するのではなく、基盤となる 2 つの機能をスタンドアロンで独立して呼び出し可能な MCP ツールとして公開し、任意の MCP クライアントがそれらへのルーティングを自身で行えるようにします。これこそがこのプロトコルの本質です。ツールは 1 つのエージェントのディスパッチロジックに組み込まれるのではなく、ホスト非依存になるのです。
search_notes(query: str) -> str— FordA データセットに関する小さなインライン化されたメモコーパスに対する検索型ルックアップです。元のエージェントと同じ[Grounded in N retrieved chunk(s) from ...]出典サフィックス付きで返されるため、クライアントは根拠のある回答と根拠のない回答を区別できます。元のプロジェクトの FAISS/埋め込みインデックスを再構築するのではなく、小さなキーワード重複ランカーを使用します。このプロジェクトの目的は MCP 公開レイヤーであり、その作業を複製することではありません。calculate(expression: str) -> str— 算術ツールです。astベースの安全な評価器により、+ - * / ()と数値リテラルに制限されています(任意の入力に対する生のeval()ではありません)。非算術入力と、__import__('os').system(...)のようなインジェクション試行の両方を拒否することが検証されています。公式の
mcpPython SDK(FastMCP)で構築されています。これは Anthropic が MCP サーバー構築用に公開している SDK と同じものです。
Related MCP server: rag-mcp
実行方法
pip install -r requirements.txt
python server.pystdio 経由で動作します。これは、Claude Desktop のような MCP クライアントがサーバーをサブプロセスとして起動して通信するために使用する、標準的なローカルトランスポートです。Claude Desktop でこのサーバーを使用するには、その MCP サーバー設定に以下を追加します:
{
"mcpServers": {
"rag-tool-agent": {
"command": "python",
"args": ["/absolute/path/to/server.py"]
}
}
}テストの実行
pytest tests/ -v11 件のテストがすべて成功しています。ツール関数を直接呼び出すため、ツールロジック自体のユニットレベルカバレッジには MCP トランスポートは不要です:根拠付き検索の回答、グラウンディング件数の契約、算術の正確性(元のエージェント自身が文書化した例と一致する除算の例を含む)、非算術入力とインジェクション入力の拒否、ゼロ除算の処理、説明付きツールの自己登録。
単なる関数としてではなく、実際の MCP サーバーとして検証済み
ユニットテストに加えて、実際の mcp クライアント SDK(ClientSession + stdio_client)を使用したエンドツーエンドの検証も行いました。server.py を実際のサブプロセスとして起動し、MCP の initialize ハンドシェイクを完了し、list_tools() を呼び出し、実際のプロトコル上で両方のツールを呼び出しています:
TOOLS: ['search_notes', 'calculate']
calculate -> 1320 / (3601 + 1320) = 0.2682381629750051
search_notes -> The FordA dataset is a univariate time-series
classification dataset... [Grounded in 3 retrieved chunk(s) from
forda_dataset_notes.md]
calculate(injection) -> Error: could not evaluate "__import__('os')" ...これにより、このサーバーが実際の MCP(ハンドシェイク、ツール検出、ツール呼び出し)を話せること、そして基盤となる Python 関数が単独で動作するだけではないことが確認されます。
他の 2 つのプロジェクトとの関係
rag-tool-agent-demo— 元の CLI エージェントです。LangChain、FAISS、Ollama、LCEL 検索チェーン、計算ツール、LLM 駆動のルーティングを備えています。rag-tool-api-docker— そのエージェントを Flask HTTP API としてラップし、コンテナ化したものです(Docker、マルチステージビルド、非 root ユーザー、ヘルスチェック)。稼働中のコンテナに対して実際の HTTP リクエストを送信して検証済みです。本プロジェクト — 同じ基盤機能(検索、計算)を HTTP ではなく MCP 経由で公開します。これにより、REST クライアントだけでなく、任意の MCP ホストから呼び出せるようになります。
This server cannot be deployed
Maintenance
Related MCP Connectors
Salesforce-grounded retrieval, diagnoses, and a vetted-Force marketplace for MCP clients.
Free OpenAI-compatible inference with signed provenance receipts and 3 focused MCP tools.
Find, vet, and run MCP tools through a secure audited gateway with prompt-injection risk scoring
Agentic search over your Dewey document collections from any MCP-compatible client.
Related MCP Servers
- FlicenseNot gradedqualityCmaintenanceEnables document search, read-only SQL querying, arithmetic calculation, and corpus introspection through MCP tools, allowing Claude to dynamically discover and chain these tools together to answer multi-step questions.-
- FlicenseNot gradedqualityCmaintenanceEnables querying local documents via retrieval-augmented generation, along with current UTC datetime and safe arithmetic evaluation through MCP tools over HTTP.-
- AlicenseAqualityCmaintenanceProvides a document store, web search, and safe calculator as MCP tools, enabling both offline and LLM-driven clients to discover and call them over the Model Context Protocol.6MIT
- FlicenseNot gradedqualityCmaintenanceEnables an LLM to perform safe arithmetic calculations and web searches through a standardized MCP interface, returning results to generate informed responses.-