RAG MCP Server
by sglwsjxh
README.md
# RAG MCP Server
一个 RAG 知识库的 MCP server,给 opencode 加上**向量检索**和**重排**能力
> 本项目开发目的是为了在 opencode 中使用 rag 文档检索功能,但是使用的是标准的 mcp 格式,理论上在任何支持 mcp 的平台上都能用
## 设计架构
- **多模态支持**:可以采用 VL 的向量和重排模型
- **多知识库**:可以建多个知识库,分类存放不同类型的文档
- **本地存储**:向量数据和源文件都保存在本地
- **图片 URL 支持**:得益于 `openai` 统一接口,base64 和 url 都支持且可以混用
```txt
┌──────────┐ ┌──────────────────────────────────────────────────┐
│ Opencode │ ──────> │ RAG MCP Server │
│ (Client) │ │ │
└──────────┘ │ ┌────────┐ ┌──────────┐ ┌───────────┐ │
│ │ Router │ ───> │ Embedder │ ──> │ Chroma DB │ │
│ └────────┘ └──────────┘ └───────────┘ │
│ │ │ │ │
│ │ └─────────────────┘ │
│ │ │ │
│ │ ┌──────────┐ │
│ └──────────────────> │ Search │ │
│ └──────────┘ │
│ │ │
│ ┌──────────┐ │
│ │ Rerank │ │
│ └──────────┘ │
└────────────────────────────────┼─────────────────┘
│
┌─────────────────────┐
│ Matched Docs │
│ + Context + Answer │
└─────────────────────┘
```
## 安装
```bash
git clone https://github.com/sglwsjxh/rag-mcp.git
cd rag-mcp
python -m venv venv
.\venv\Scripts\activate
pip install -e .
```
## 配置
复制 `.env.example` 到 `.env`
```bash
cp .env.example .env
```
填上 API key:
```txt
EMBEDDING_BASEURL=https://openrouter.ai/api/v1
EMBEDDING_MODEL=nvidia/llama-nemotron-embed-vl-1b-v2:free
EMBEDDING_API_KEY=sk-or-...
RERANK_BASEURL=https://ai.api.nvidia.com/v1
RERANK_MODEL=nvidia/llama-nemotron-rerank-vl-1b-v2
RERANK_API_KEY=nvapi-...
DATABASE_PATH=./database
```
> 推荐使用 `OpenRouter` 和 `NVIDIA` 的免费模型,但是任何 `openai` 兼容的模型都可使用
## 注册到 opencode
在 `~/.config/opencode/opencode.json` 里加这段:
```json
{
"mcp": {
"rag": {
"enabled": true,
"type": "local",
"command": [
"C:/path/to/rag-mcp/venv/Scripts/python.exe",
"-m",
"rag_mcp"
]
}
}
}
```
重启 opencode,就能直接调这六个工具:
- `list_knowledge_bases` - 列出所有知识库
- `add_database` - 新建知识库
- `add_file` - 往知识库里加文件
- `search` - 搜索知识库
- `delete_file` - 删除某个文件
- `delete_database` - 删除整个知识库
## 数据目录结构
```
database/
├── index.json # 知识库列表和元信息
├── python/ # 单文件夹知识库
│ ├── chroma_db/
│ └── assets/
├── cpp/
│ ├── chroma_db/
│ └── assets/
└── ...
```
## 许可证
[MIT License](LICENSE)
This server cannot be deployed
Maintenance
ActivityInactive
ResponsivenessNo issues