mcp-rag-server について
mcp-rag-server は、検索拡張生成(RAG)機能を提供する MCP サーバーです。ドキュメントにインデックスを作成し、MCP を通じて関連情報を LLM に渡します。ベクターストアにはローカルの SQLite を使用し、複数の埋め込みプロバイダーに対応しています。
主な機能
- 01txt、md、json、jsonl、csv 形式のドキュメントのインデックス化
- 02テキスト分割に使うチャンクサイズの設定
- 03SQLite を用いたローカルのベクターストア
- 04OpenAI、Ollama、Granite、Nomic の埋め込みに対応
- 05stdio 経由の MCP ツールとリソースの公開
活用シーン
- 01ローカルのドキュメントを元に LLM が質問に答える
- 02プロジェクトドキュメントの検索可能なインデックス作成
- 03Ollama の埋め込みモデルを用いたローカルでの検索
MCP 対応
MCP サーバーとして、embedding_documents や query_documents などのツールと、rag:// で始まるリソースを MCP クライアントに公開します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
ツール
5掲載時のツール一覧 · 3 週間前に更新
| パラメーター | 型 | 必須 | 説明 |
|---|---|---|---|
| path | string | はい | インデックスに登録する .json、.jsonl、.txt、.md、.csv ファイルを含むパス |
詳細
mcp-rag-server
Retrieval Augmented Generation(RAG)を可能にする Model Context Protocol(MCP)サーバーです。ドキュメントをインデックス化し、MCP プロトコルを介して大規模言語モデルに関連するコンテキストを提供します。
統合例
汎用 MCP クライアントの設定
{
"mcpServers": {
"rag": {
"command": "npx",
"args": ["-y", "mcp-rag-server"],
"env": {
"BASE_LLM_API": "http://localhost:11434/v1",
"EMBEDDING_MODEL": "nomic-embed-text",
"VECTOR_STORE_PATH": "./vector_store",
"CHUNK_SIZE": "500"
}
}
}
}
対話例
# Index documents
>> tool:embedding_documents {"path":"./docs"}
# Check status
>> resource:embedding-status
<< rag://embedding/status
Current Path: ./docs/file1.md
Completed: 10
Failed: 0
Total chunks: 15
Failed Reason:
目次
機能
.txt、.md、.json、.jsonl、.csv形式のドキュメントをインデックス化- テキスト分割に使用するチャンクサイズをカスタマイズ可能
- SQLite を利用したローカルベクトルストア(LangChain の LibSQLVectorStore 経由)
- 複数の埋め込みプロバイダーに対応(OpenAI、Ollama、Granite、Nomic)
- stdio 経由で MCP ツールとリソースを公開し、MCP クライアントとシームレスに統合
インストール
npm から
npm install -g mcp-rag-server
ソースから
git clone https://github.com/kwanLeeFrmVi/mcp-rag-server.git
cd mcp-rag-server
npm install
npm run build
npm start
クイックスタート
export BASE_LLM_API=http://localhost:11434/v1
export EMBEDDING_MODEL=granite-embedding-278m-multilingual-Q6_K-1743674737397:latest
export VECTOR_STORE_PATH=./vector_store
export CHUNK_SIZE=500
# Run (global install)
mcp-rag-server
# Or via npx
npx mcp-rag-server
💡 ヒント: 埋め込みには Ollama の使用をおすすめします。
nomic-embed-textモデルをインストールして取得してください。
ollama pull nomic-embed-text
export EMBEDDING_MODEL=nomic-embed-text
設定
| 変数 | 説明 | デフォルト |
|---|---|---|
BASE_LLM_API | 埋め込み API のベース URL | http://localhost:11434/v1 |
LLM_API_KEY | LLM プロバイダーの API キー | (empty) |
EMBEDDING_MODEL | 埋め込みモデルの識別子 | nomic-embed-text |
VECTOR_STORE_PATH | ローカルベクトルストアのディレクトリ | ./vector_store |
CHUNK_SIZE | テキストチャンクあたりの文字数(数値) | 500 |
💡 推奨: 最適なパフォーマンスを得るには、
nomic-embed-textなどの Ollama 埋め込みモデルを使用してください。
使用方法
MCP ツール
起動すると、サーバーは MCP 経由で次のツールを公開します。
embedding_documents(path: string):指定したパス以下のドキュメントをインデックス化query_documents(query: string, k?: number):上位k個のチャンクを取得(デフォルトは 15)remove_document(path: string):特定のドキュメントを削除remove_all_documents(confirm: boolean):インデックス全体を消去(confirm=true)list_documents():インデックス化されたすべてのドキュメントパスを一覧表示
MCP リソース
クライアントは URI を使ってリソースを読み取ることもできます。
rag://documents— すべてのドキュメント URI を一覧表示rag://document/{path}— ドキュメントの全文を取得rag://query-document/{numberOfChunks}/{query}— リソースとしてドキュメントを検索rag://embedding/status— 現在のインデックス作成状況を確認(完了、失敗、合計)
RAG の仕組み
- インデックス作成:ファイルを読み込み、
CHUNK_SIZEに基づいてテキストをチャンクに分割し、埋め込み処理のキューに追加します。 - 埋め込み:各チャンクを埋め込み API で順次処理し、ベクトルを SQLite に保存します。
- 検索:クエリを埋め込み、ベクトルストアから最も近いテキストチャンクを取得して、クライアントに返します。
開発
npm install
npm run build # Compile TypeScript
npm start # Run server
npm run watch # Watch for changes
コントリビューション
コントリビューションを歓迎します。GitHub でイシューを作成するか、プルリクエストをお送りください。
ライセンス
MIT 2025 Quan Le
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。