Search Engine with RAG and MCP について
Search Engine with RAG and MCPは、ウェブ検索、ページ取得、RAGを組み合わせて関連情報を返します。検索ワークフローやエージェントシステムの構築向けで、直接実行、エージェント、MCPサーバーの各モードと、ローカルまたはクラウドのLLMに対応します。
主な機能
- 01Exaによるウェブ検索
- 02FireCrawlによるウェブコンテンツ取得
- 03FAISSベクトルストアを使ったRAG
- 04直接実行・エージェント・サーバーモード
- 05OllamaとOpenAIのモデルに対応
活用シーン
- 01ウェブを検索して関連ページを取得
- 02エージェント型検索ワークフローの構築
- 03MCPサーバー経由で検索機能を提供
MCP 対応
サーバーモードでは、接続クライアントにMCPによる標準化されたツール呼び出しを提供します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
RAG と MCP を備えた検索エンジン
LangChain、Model Context Protocol(MCP)、Retrieval-Augmented Generation(RAG)、Ollama を組み合わせ、ウェブ検索や情報の取得、関連性の高い回答の提供が可能なエージェント型 AI システムを実現する、高性能な検索エンジンです。
特徴
- Exa API を使用したウェブ検索機能
- FireCrawl を使用したウェブコンテンツの取得
- より関連性の高い情報を抽出する RAG(Retrieval-Augmented Generation)
- ツールの呼び出しを標準化する MCP(Model Context Protocol)サーバー
- Ollama 経由のローカル LLM と OpenAI 経由のクラウドベース LLM の両方をサポート
- 直接検索、エージェントベースの検索、サーバーモードに対応する柔軟なアーキテクチャ
- 包括的なエラー処理と適切なフォールバック
- 型ヒントを備えた Python 3.13 以降
- ウェブ操作を効率化する非同期処理
アーキテクチャ
このプロジェクトは、次の主要なコンポーネントを統合しています。
- 検索モジュール:Exa API でウェブを検索し、FireCrawl でコンテンツを取得します
- RAG モジュール:ドキュメントを埋め込み、チャンクに分割して、FAISS ベクトルストアに保存します
- MCP サーバー:ツールの呼び出しに標準化されたプロトコルを提供します
- エージェント:検索機能と RAG 機能を使用する LangChain ベースのエージェントです
プロジェクト構成
search-engine-with-rag-and-mcp/
├── LICENSE # MIT License
├── README.md # Project documentation
├── data/ # Data directories
├── docs/ # Documentation
│ └── env_template.md # Environment variables documentation
├── logs/ # Log files directory (auto-created)
├── src/ # Main package (source code)
│ ├── __init__.py
│ ├── core/ # Core functionality
│ │ ├── __init__.py
│ │ ├── main.py # Main entry point
│ │ ├── search.py # Web search module
│ │ ├── rag.py # RAG implementation
│ │ ├── agent.py # LangChain agent
│ │ └── mcp_server.py # MCP server implementation
│ └── utils/ # Utility modules
│ ├── __init__.py
│ ├── env.py # Environment variable loading
│ └── logger.py # Logging configuration
├── pyproject.toml # Poetry configuration
├── requirements.txt # Project dependencies
└── tests/ # Test directory
はじめに
前提条件
- Python 3.13 以降
- Poetry(任意、開発用)
- Exa と FireCrawl の API キー
- (任意)ローカルにインストールした Ollama
- (任意)OpenAI API キー
インストール
- リポジトリをクローンします
git clone https://github.com/yourusername/search-engine-with-rag-and-mcp.git
cd search-engine-with-rag-and-mcp
- 依存関係をインストールします
# Using pip
pip install -r requirements.txt
# Or using poetry
poetry install
.envファイルを作成します(参考として docs/env_template.md を使用してください)
使い方
このアプリケーションには、主に 3 つの動作モードがあります。
1. 直接検索モード(デフォルト)
# Using pip
python -m src.core.main "your search query"
# Or using poetry
poetry run python -m src.core.main "your search query"
2. エージェントモード
python -m src.core.main --agent "your search query"
3. MCP サーバーモード
python -m src.core.main --server
カスタムのホストとポートも指定できます。
python -m src.core.main --server --host 0.0.0.0 --port 8080
Ollama の使用(任意)
ローカルの埋め込みと LLM 機能に Ollama を使用するには、次の手順に従います。
- Ollama をインストールします:https://ollama.ai/
- モデルをプルします:
ollama pull mistral:latest
.envファイルで適切な環境変数を設定します:
OLLAMA_BASE_URL=http://localhost:11434
OLLAMA_MODEL=mistral:latest
開発
このプロジェクトでは、次のベストプラクティスに従っています。
- コードフォーマット:一貫したコードスタイルのために Black と isort を使用
- 型チェック:静的型チェックに mypy を使用
- リンティング:コード品質のチェックに flake8 を使用
- テスト:単体テストと統合テストに pytest を使用
- 環境管理:環境変数の管理に python-dotenv を使用
- ロギング:コンソールとファイルの両方に構造化ログを出力
ライセンス
このプロジェクトは MIT License の下でライセンスされています。詳細については、LICENSE ファイルを参照してください。
謝辞
- エージェントのフレームワークを提供する LangChain
- ツールの呼び出しを標準化する Model Context Protocol
- ローカル LLM 機能を提供する Ollama
- ウェブ検索機能を提供する Exa
- ウェブコンテンツの取得に使用する FireCrawl
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。