本地优先检索增强生成AI代理——注重隐私并自动索引
本地模型 • 自动索引 • ChromaDB 向量 • 5个 MCP 工具
<a href="https://glama.ai/mcp/servers/@sylphlab/mcp-rag-server"> <img width="380" height="200" src="https://glama.ai/mcp/servers/@sylphlab/mcp-rag-server/badge" alt="RAG Server MCP" /> </a> </div>使用本地模型为您的AI代理启用强大的检索增强生成(RAG)功能。此模型上下文协议(MCP)服务器会自动索引您的项目文档,并提供相关上下文以增强LLM响应。
问题:
传统RAG解决方案:
- 基于云(隐私问题)❌
- 复杂设置(多个服务)❌
- 手动索引(耗时)❌
- 贵的API费用(每次查询)❌
解决方案:
RAG Server MCP:
- 本地优先(Ollama + ChromaDB)✅
- Docker Compose(一条命令)✅
- 自动索引(启动时)✅
- 免费本地模型(零API费用)✅
结果:注重隐私、零成本的RAG,具有自动上下文检索功能的AI代理。
| 功能 | 云端RAG | RAG Server MCP |
|---|---|---|
| 数据隐私 | ❌ 发送到云端 | ✅ 100%本地 |
| 模型控制 | ❌ 固定模型 | ✅ 任何Ollama模型 |
| 向量存储 | ❌ 云端服务 | ✅ 本地ChromaDB |
| 成本 | ❌ 按查询付费 | ✅ 免费(本地) |
| 定制化 | ⚠️ 有限 | ✅ 完全控制 |
.txt,.md,代码文件,.json,.csvnomic-embed-text(无API调用)运行服务器及其所有依赖项(ChromaDB,Ollama)在隔离容器中。
前提条件:
8000(ChromaDB)和 11434(Ollama)可用设置:
# 克隆仓库
git clone https://github.com/SylphxAI/rag-server-mcp.git
cd rag-server-mcp
# 启动所有服务
docker-compose up -d --build
# 拉取嵌入模型(首次运行)
docker exec ollama ollama pull nomic-embed-text
如果您已经运行了ChromaDB和Ollama:
# 设置环境变量
export CHROMA_URL=http://localhost:8000
export OLLAMA_HOST=http://localhost:11434
# 通过npx运行
npx @sylphlab/mcp-rag-server
# 克隆并安装
git clone https://github.com/SylphxAI/rag-server-mcp.git
cd rag-server-mcp
npm install
# 构建
npm run build
# 启动(需要ChromaDB + Ollama)
npm start
添加到您的MCP客户端配置(例如,Claude Desktop,Cline):
{
"mcpServers": {
"rag-server": {
"command": "npx",
"args": ["@sylphlab/mcp-rag-server"],
"env": {
"CHROMA_URL": "http://localhost:8000",
"OLLAMA_HOST": "http://localhost:11434",
"INDEX_PROJECT_ON_STARTUP": "true"
}
}
}
}
注意: 使用Docker Compose时,服务器在容器中运行。您可能需要暴露MCP端口或配置网络设置以供外部客户端访问。
配置完成后,您的AI代理可以使用RAG工具:
<!-- 索引项目文档 -->
<use_mcp_tool>
<server_name>rag-server</server_name>
<tool_name>indexDocuments</tool_name>
<arguments>{"path": "./docs"}</arguments>
</use_mcp_tool>
<!-- 查询相关上下文 -->
<use_mcp_tool>
<server_name>rag-server</server_name>
<tool_name>queryDocuments</tool_name>
<arguments>{"query": "如何配置嵌入", "topK": 5}</arguments>
</use_mcp_tool>
<!-- 列出已索引文档 -->
<use_mcp_tool>
<server_name>rag-server</server_name>
<tool_name>listDocuments</tool_name>
</use_mcp_tool>
| 工具 | 描述 | 参数 |
|---|---|---|
| indexDocuments | 索引文件或目录 | path,forceReindex? |
| queryDocuments | 检索相关片段 | query,topK?,filter? |
| listDocuments | 列出所有已索引来源 | 无 |
| removeDocument | 根据路径删除文档 | sourcePath |
| removeAllDocuments | 清除整个索引 | 无 |
indexDocuments
{
path: string; // 文件或目录路径
forceReindex?: boolean; // 如果已索引则重新索引
}
queryDocuments
{
query: string; // 搜索查询
topK?: number; // 结果数量(默认:5)
filter?: object; // 元数据过滤器
}
支持的文件类型:
.txt,.md.ts,.js,.py,.java,.go等.json,.jsonl,.csv通过环境变量进行配置(在docker-compose.yml或CLI中设置):
| 变量 | 默认值 | 描述 |
|---|---|---|
| CHROMA_URL | http://chromadb:8000 | ChromaDB服务URL |
| OLLAMA_HOST | http://ollama:11434 | Ollama服务URL |
| INDEX_PROJECT_ON_STARTUP | true | 服务器启动时自动索引 |
| GENKIT_ENV | production | 环境模式 |
| LOG_LEVEL | info | 日志级别 |
| 变量 | 默认值 | 描述 |
|---|---|---|
| INDEXING_EXCLUDE_PATTERNS | **/node_modules/**,**/.git/** | 排除的全局模式 |
示例自定义配置:
# docker-compose.yml
services:
rag-server:
environment:
- INDEX_PROJECT_ON_STARTUP=true
- INDEXING_EXCLUDE_PATTERNS=**/node_modules/**,**/.git/**,**/dist/**
- LOG_LEVEL=debug
| 组件 | 技术 | 目的 |
|---|---|---|
| 框架 | Google Genkit | RAG编排 |
| 向量存储 | ChromaDB | 持久嵌入 |
| 嵌入 | Ollama | 本地嵌入模型 |
| 协议 | 模型上下文协议 | AI代理集成 |
| 语言 | TypeScript | 类型安全开发 |
┌─────────────────────────────────────────────────────────┐
│ 1. 文档索引(启动或手动) │
│ • 扫描项目目录 │
│ • 层次分块文档 │
│ • 通过Ollama生成嵌入 │
│ • 在ChromaDB中存储向量 │
└─────────────────┬───────────────────────────────────────┘
│
▼
┌─────────────────────────────────────────────────────────┐
│ 2. 查询处理(AI代理请求) │
│ • 从MCP客户端接收查询 │
│ • 生成查询嵌入 │
│ • 在ChromaDB中搜索相似向量 │
│ • 返回前K个相关片段 │
└─────────────────┬───────────────────────────────────────┘
│
▼
┌─────────────────────────────────────────────────────────┐
│ 3. 上下文增强(AI代理使用结果) │
│ • 将相关上下文注入提示中 │
│ • LLM生成知情响应 │
└─────────────────────────────────────────────────────────┘
1. 本地优先
2. 简单性
3. 模块化
4. 隐私
# 安装依赖
npm install
# 构建
npm run build
# 监视模式
npm run watch
# 代码检查
npm run lint
# 格式化代码
npm run format
# 运行测试
npm test
# 测试覆盖率
npm run test:cov
# 验证所有内容(格式化+检查+测试)
npm run validate
# 开发服务器
npm run docs:dev
# 构建文档
npm run docs:build
# 预览文档
npm run docs:preview
✅ 已完成
🚀 计划
欢迎贡献!请遵循以下指南:
git checkout -b feature/my-featurenpm run validate

展示您的支持: ⭐ 星标 • 👀 观看 • 🐛 报告错误 • 💡 提建议 • 🔀 贡献
MIT © Sylphx
构建于: