Skip to main content
Glama

LangGraph RAG MCP

LangGraph ドキュメントを Model Context Protocol (MCP) を通じて提供する検索拡張生成(RAG)システムです。

概要

このプロジェクトは、次のことを行うドキュメント検索システムを構築します:

  1. 公式ウェブサイトからLangGraph ドキュメントを収集・処理します

  2. セマンティック検索用に、このドキュメントからベクターデータベースを作成します

  3. この知識を Model Context Protocol (MCP) を通じて公開します

  4. VS Code、Cursor、Claude Desktop、Windsurf などの MCP 互換ホストと統合します

Related MCP server: mcp-rag-agent

動作の仕組み

1. ドキュメントの収集と処理(コンテキスト)

  • RecursiveUrlLoader と BeautifulSoup を使用して、複数のウェブサイト URL から LangGraph ドキュメントを再帰的にスクレイピングしてクリーニングします。

  • 正確なトークン数をカウントするために tiktoken を使用し、RecursiveCharacterTextSplitter でテキストを管理しやすいチャンクに分割します。

  • BAAI/bge-large-en-v1.5 エンベディングを使用して、チャンクをベクトル表現に埋め込みます。

  • 効率的な検索のために、ベクトルを SKLearnVectorStore に保存します。

2. 検索システム(ツール)

  • 指定されたクエリに対して最も関連性の高いドキュメントチャンクを見つける検索関数を実装します。

  • この関数を Claude などの言語モデルと統合して、コンテキストを考慮した応答を提供します。

  • 出典情報と関連コンテキストを含む整形された応答を返します。

3. MCP サーバー統合

  • fastmcp ライブラリを使用して、検索ツールを MCP サーバーでラップします。

  • MCP 互換ホストが使用できるツールとして検索関数を公開します。

  • 検索システムと追加リソース(完全なドキュメントファイルなど)の両方へのアクセスを提供します。

要件

  • Python 3.10+

  • Docker と Docker Compose(推奨)

  • Anthropic API キー(Claude モデル用)

インストールとセットアップ

このプロジェクトは、Docker(推奨)またはローカルの Python 環境のどちらでも実行できます。

Docker を使用する場合(推奨)

  1. このリポジトリをクローンします:

    git clone https://github.com/yourusername/langraph-rag-mcp.git
    cd langraph-rag-mcp
  2. .env ファイルに API キーを設定します: プロジェクトのルートに .env ファイルを作成し、Anthropic API キーを追加します:

    echo "ANTHROPIC_API_KEY=your_api_key_here" > .env

    docker-compose.yml ファイルがこの環境変数を自動的に読み込みます。

ローカル環境(Docker なし)

  1. このリポジトリをクローンします:

    git clone https://github.com/yourusername/langraph-rag-mcp.git
    cd langraph-rag-mcp
  2. 仮想環境を作成して有効化します:

    conda create -n mcp python=3.13
    conda activate mcp
  3. 必要なパッケージをインストールします:

    pip install -r requirements.txt
  4. .env ファイルに API キーを設定します:

    echo "ANTHROPIC_API_KEY=your_api_key_here" > .env

使用方法

このプロセスは、最初にベクターストアを生成し、次に MCP サーバーを実行するという 2 つの主要なステップで構成されます。

ステップ 1:ベクターストアを生成する

これは一度だけ、またはドキュメントを更新したいときに行うだけで済みます。

  1. Jupyter 環境で rag-tool.ipynb ノートブックを開いて実行します。

  2. これにより、以下のことが行われます:

    • 最新の LangGraph ドキュメントをダウンロードします。

    • 完全なドキュメントを llms_full.txt に保存します。

    • ドキュメントをチャンクに分割します。

    • sklearn_vectorstore.parquet にベクターストアを作成して永続化します。

ステップ 2:MCP サーバーを実行する

Docker を使用する場合

サーバーを実行する最も簡単な方法は、Docker Compose をラップする付属のシェルスクリプトを使用することです。

bash run-mcp-docker.sh

このスクリプトは、Docker イメージが存在しない場合はビルドし、コンテナを起動して、その内部で MCP サーバーを実行します。MCP 通信のために標準入出力を正しく処理します。

Docker を使用しない場合

Docker を使用しない場合は、次のコマンドで MCP サーバーを開発モードで直接実行できます:

mcp dev langgraph-mcp.py

MCP ホストの設定

この MCP サーバーを互換性のあるエディターで使用するには、設定が必要です。

VS Code

  1. VS Code の settings.json ファイルを開きます。(コマンドパレットから Preferences: Open User Settings (JSON) で見つけることができます)。

  2. 次の設定をファイルに追加します。<path-to-your-project> を、お使いのマシン上の langraph-rag-mcp ディレクトリへの絶対パスに必ず置き換えてください。

"mcp.servers": [
    {
        "name": "langgraph-mcp",
        "command": [
            "/bin/bash",
            "<path-to-your-project>/run-mcp-docker.sh"
        ],
        "env": {
            "ANTHROPIC_API_KEY": "<your-anthropic-api-key>"
        }
    }
]

Docker を使用しない場合は、command を次のように変更します:

"command": [
    "<path-to-your-conda-env>/bin/python",
    "<path-to-your-project>/langgraph-mcp.py"
]

システムアーキテクチャ

(Phase 1: Data Ingestion - Performed once on Host Machine)
┌─────────────┐      ┌──────────────────┐      ┌───────────────────────────────┐
│ LangGraph   │      │ Jupyter Notebook │      │ Vector Store & Full Docs      │
│ Docs (Web)  │───▶  │ (rag-tool.ipynb) │───▶  │ (.parquet & .txt files)       │
└─────────────┘      └──────────────────┘      └───────────────────────────────┘


(Phase 2: Live RAG System - Request/Response Flow)
┌──────────────┐                             ┌─────────────┐
│   VS Code    │                             │  .env file  │
│(User Interface)│                             │ (API KEY)   │
└──────┬───────┘                             └──────┬──────┘
       │ 1. User Query                             │ (provides)
       ▼                                           │
┌──────┴───────────────────────────────────────────┴───────────────────────────────┐
│ Host Machine Boundary                                                            │
│                                                                                  │
│      ┌────────────────────┐          ┌─────────────────────────────────────────┐ │
│      │ run-mcp-docker.sh  │ 2. Execs │  🐳 Docker Container                      │ │
│      │ (Entrypoint Script)│────▶     │                                         │ │
│      └────────────────────┘          │  ┌───────────────────────────────────┐  │ │
│                                      │  │   🐍 Python MCP Server              │  │ │
│      ▲                             ◀─┼──│   (langgraph-mcp.py)              │  │ │
│      │ 7. Final Response             │  └───────────────┬───────────────────┘  │ │
│      │                               │                  │ 3. Reads Data From  │ │
│      └───────────────────────────────│──────────────────│─────────────────────┘ │
│                                      │                  │                       │
│                                      │                  ▼                       │
│                                      │  ┌───────────────────────────────────┐  │
│ (files mounted from Host) ············  │   Mounted Vector Store & Docs     │  │
│                                      │  └───────────────────────────────────┘  │
│                                      └─────────────────────────────────────────┘ │
│                                                                                  │
└──────────────────────────────────────────────────────────────────────────────────┘
                                                        │ 4. API Call
                                                        │    (sends augmented prompt)
                                                        ▼
                                             ┌────────────────────┐
                                             │ ☁️ Anthropic API   │
                                             │   (Claude LLM)     │
                                             └──────────┬─────────┘
                                                        │ 5. Generation
                                                        │
                                                        ◀························
                                                          6. Returns Response
                                                          (to MCP Server)

リソース

MCP From Scratch

Related MCP Connectors

Related MCP Servers