rag_mcp
by mmer547
README.md
# RAG MCP サーバー
Docs フォルダに配置した文書をベクトル検索し、LLM が回答生成時に参照できるコンテキストを提供する MCP サーバーです。
ローカル LLM からの呼び出しを想定しています。
## 必要条件
- Python 3.10 以上
- [uv](https://docs.astral.sh/uv/) (パッケージマネージャー)
## セットアップ
```powershell
# 依存関係のインストール
uv sync
```
初回起動時に sentence-transformers (`all-MiniLM-L6-v2`) のモデルが自動ダウンロードされます (~80MB)。
## 使い方
### 1. 文書を配置する
プロジェクトルートの `Docs/` フォルダに文書を入れます。対応形式:
| 形式 | 拡張子 |
|---|---|
| プレーンテキスト | `.txt` |
| Markdown | `.md` |
| CSV | `.csv` |
| JSON | `.json` |
| YAML | `.yaml` / `.yml` |
| PDF | `.pdf` |
### 2. サーバーを起動する
```powershell
uv run python -m rag_mcp.server
```
起動時に `Docs/` 内の全ファイルが読み込まれ、ベクトルインデックスが作成されます。
インデックスは `.chromadb/` に永続化されます。
### 3. MCP ツールを使う
MCP クライアント経由で以下のツールが利用できます。
#### search_docs
文書からクエリに関連する内容を検索します。
```
パラメータ:
query (string, 必須) — 検索クエリ
top_k (integer, 省略可) — 返却件数 (デフォルト: 5)
```
#### reindex
`Docs/` フォルダの全ファイルを再インデックスします。
```
パラメータ: なし
```
#### list_sources
インデックス済みのファイル一覧を表示します。
```
パラメータ: なし
```
## LLM クライアント設定
### Claude Desktop
`claude_desktop_config.json` に追加:
```json
{
"mcpServers": {
"rag-mcp": {
"command": "uv",
"args": [
"run",
"--directory",
"C:\\path\\to\\rag_mcp",
"python",
"-m",
"rag_mcp.server"
]
}
}
}
```
### Cursor
プロジェクトルートに `.cursor/mcp.json` を作成:
```json
{
"mcpServers": {
"rag-mcp": {
"command": "uv",
"args": [
"run",
"--directory",
"C:\\path\\to\\rag_mcp",
"python",
"-m",
"rag_mcp.server"
]
}
}
}
```
## 設定
`src/rag_mcp/config.py` で動作をカスタマイズできます。
| 項目 | デフォルト | 説明 |
|---|---|---|
| `CHUNK_SIZE` | 1000 | チャンク分割サイズ (文字数) |
| `CHUNK_OVERLAP` | 200 | チャンク間のオーバーラップ (文字数) |
| `EMBEDDING_MODEL` | `all-MiniLM-L6-v2` | 埋め込みモデル |
| `TOP_K` | 5 | 検索のデフォルト取得件数 |
| `COLLECTION_NAME` | `rag_docs` | ChromaDB コレクション名 |
## アーキテクチャ
```
Docs/ の文書
↓ 読み込み (txt / md / csv / json / yaml / pdf)
↓ チャンク分割 (1000文字 / 200文字オーバーラップ)
↓ 埋め込み (sentence-transformers)
↓ 保存
ChromaDB (ベクトルストア)
↑ 類似検索
MCP サーバー (search_docs ツール)
↑ MCP プロトコル (stdio)
LLM クライアント (Claude Desktop, Cursor など)
```
## 開発
```powershell
# テスト実行
uv run python -m pytest tests/ # 全テスト
uv run python tests/test_rag.py # RAG エンジンの単体テスト
uv run python tests/test_mcp.py # MCP サーバーの結合テスト
```
This server cannot be deployed
Maintenance
ActivityInactive
ResponsivenessNo issues