MCP-RAG: Modular RAG Pipeline using MCP & GroundX について
MCP-RAG は GroundX と OpenAI GPT-4 を使うモジュール型 RAG 実装で、AI アプリを構築するチーム向けです。文書取り込み、セマンティック検索、回答生成を、発見・呼び出し可能なツールに分けています。
主な機能
- 01PDF を GroundX に取り込み
- 02GroundX によるセマンティック検索
- 03OpenAI GPT-4 による回答生成
- 04Jinja2 による YAML プロンプトの描画
- 05モジュール型ツールの設計と検出
活用シーン
- 01PDF 文書をベクトルストアに追加
- 02文書の内容に基づいて質問に回答
MCP 対応
MCP サーバーは文書取り込みと検索のツールを提供し、クライアントから検出・呼び出しできます。検索は GroundX が行い、回答は OpenAI API が生成します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
MCP-RAG:MCP と GroundX を使用したモジュール型 RAG パイプライン
本番環境に対応した検索拡張生成のセットアップ
🚀 概要
MCP-RAG は、次の技術を活用した、モジュール型の本番品質の検索拡張生成(RAG)システムの実装です。
- 🧠 標準化されたツールオーケストレーションを実現する MCP(Model Context Protocol)
- 🔍 セマンティック検索、取り込み、ベクトルストア操作を担う GroundX
- 🤖 LLM を活用したコンテキストに応じた応答生成を行う OpenAI GPT-4
取り込み、検索、生成、ツールの検出を明確に分離できるため、スケーラブルで柔軟性が高く、エンタープライズにも対応できます。
📌 再利用可能なコンポーネントを使用して AI 駆動型アプリケーションを構築するチーム向けに、Sujith Somanunnithan が開発しました。
📦 機能
- 🔧 MCP サーバーインターフェースを使用したモジュール型のツール設計
- 🧩 Jinja2 によるレンダリングに対応した YAML ベースのプロンプトテンプレート
- 📂 PDF ファイルを GroundX ベクトルストアに取り込み
- 🔍 GroundX 検索ツールによるリアルタイムのセマンティック検索
- 🤝 新しいツールやサービスとのプラグアンドプレイの API 統合
📁 プロジェクト構成
mcp-rag/
├── server.py # MCP Server initialization
├── config.py # Environment and config management
├── ingestion.py # File ingestion tool logic
├── search.py # Search + LLM generation logic
├── prompts.yaml # Prompt template in Jinja2
├── models.py # Pydantic models for configs
├── .env # API keys (excluded from version control)
├── pyproject.toml # Project config for uv / MCP
├── README.md # This file
🧠 アーキテクチャの流れ
- ユーザーのクエリが MCP サーバーに届きます
- サーバーがクエリを検索ツールにルーティングします
- 検索ツールが GroundX API にクエリを送信します
- スニペットが YAML プロンプトを使用してレンダリングされます
- OpenAI API が最終的な LLM 応答を生成します
🔄 すべてのツールは、MCP を介して動的に検出および呼び出し可能です。
🔑 環境のセットアップ
キーを設定した .env を作成します。
OPENAI_API_KEY=your-openai-key
GROUNDEX_API_KEY=your-groundx-key
uv を使用してインストールします。
uv pip install -r pyproject.toml
⚙️ 使用方法
サーバーを起動します。
mcp dev server.py
PDF を取り込みます。
mcp call ingest_documents --args '{"file_path": "data/sample.pdf"}'
クエリで検索します。
mcp call process_search_query --args '{"query": "What is explained in section 3?"}'
📌 関心事の明確な分離
| 役割 | コンポーネント |
|---|---|
| ツールの検出/呼び出し | MCP サーバー |
| 検索の実行 | GroundX API |
| 応答の生成 | OpenAI API |
| ファイルのアップロード | 取り込みツール(MCP) |
📚 ライセンス
このプロジェクトは MIT License の下でライセンスされています。
👨💻 作者
Sujith Somanunnithan
クラウド&AI アーキテクト | sujith.de
💬 フィードバックとコントリビューション
改善や拡張(複数ファイルの取り込み、RAG フォールバックチェーンなど)について、気軽にイシューやプルリクエストを作成するか、作者にご連絡ください。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。