返回市场
拉格服务器-MCP

拉格服务器-MCP

作者:SylphxAI20 星标更新:2025-11-18

项目介绍

<div align="center">

RAG Server MCP 📚

本地优先检索增强生成AI代理——注重隐私并自动索引

npm 版本 CI 状态 许可证

本地模型自动索引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代理。


⚡ 关键优势

隐私与控制

功能云端RAGRAG Server MCP
数据隐私❌ 发送到云端✅ 100%本地
模型控制❌ 固定模型✅ 任何Ollama模型
向量存储❌ 云端服务✅ 本地ChromaDB
成本❌ 按查询付费✅ 免费(本地)
定制化⚠️ 有限✅ 完全控制

性能与效率

  • 自动索引 - 启动时扫描项目,无需手动操作
  • 持久向量 - ChromaDB在会话之间存储嵌入
  • 层次分块 - 智能Markdown拆分(文本+代码块)
  • 多种文件类型 - .txt.md,代码文件,.json.csv
  • 本地嵌入 - Ollama nomic-embed-text(无API调用)

📦 安装

方法1:Docker Compose(推荐)

运行服务器及其所有依赖项(ChromaDB,Ollama)在隔离容器中。

前提条件:

  • Docker Desktop 或 Docker 引擎
  • 端口 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

方法2:npx(需要外部服务)

如果您已经运行了ChromaDB和Ollama:

# 设置环境变量
export CHROMA_URL=http://localhost:8000
export OLLAMA_HOST=http://localhost:11434

# 通过npx运行
npx @sylphlab/mcp-rag-server

方法3:本地开发

# 克隆并安装
git clone https://github.com/SylphxAI/rag-server-mcp.git
cd rag-server-mcp
npm install

# 构建
npm run build

# 启动(需要ChromaDB + Ollama)
npm start

🚀 快速开始

MCP客户端配置

添加到您的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>

🛠️ MCP工具

文档管理

工具描述参数
indexDocuments索引文件或目录pathforceReindex?
queryDocuments检索相关片段querytopK?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_URLhttp://chromadb:8000ChromaDB服务URL
OLLAMA_HOSThttp://ollama:11434Ollama服务URL
INDEX_PROJECT_ON_STARTUPtrue服务器启动时自动索引
GENKIT_ENVproduction环境模式
LOG_LEVELinfo日志级别

索引配置

变量默认值描述
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 GenkitRAG编排
向量存储ChromaDB持久嵌入
嵌入Ollama本地嵌入模型
协议模型上下文协议AI代理集成
语言TypeScript类型安全开发

工作原理

┌─────────────────────────────────────────────────────────┐
│ 1. 文档索引(启动或手动)                               │
│    • 扫描项目目录                                       │
│    • 层次分块文档                                        │
│    • 通过Ollama生成嵌入                                  │
│    • 在ChromaDB中存储向量                                │
└─────────────────┬───────────────────────────────────────┘
                  │
                  ▼
┌─────────────────────────────────────────────────────────┐
│ 2. 查询处理(AI代理请求)                               │
│    • 从MCP客户端接收查询                                 │
│    • 生成查询嵌入                                        │
│    • 在ChromaDB中搜索相似向量                           │
│    • 返回前K个相关片段                                   │
└─────────────────┬───────────────────────────────────────┘
                  │
                  ▼
┌─────────────────────────────────────────────────────────┐
│ 3. 上下文增强(AI代理使用结果)                         │
│    • 将相关上下文注入提示中                             │
│    • LLM生成知情响应                                     │
└─────────────────────────────────────────────────────────┘

🎯 使用案例

AI代码助手

  • 代码库理解 - 查询项目架构
  • API文档 - 查找相关的API文档
  • 代码示例 - 检索类似的代码模式
  • 依赖信息 - 搜索包文档

知识管理

  • 文档搜索 - 即刻找到相关文档
  • 技术笔记 - 索引个人知识库
  • 会议记录 - 搜索过去的讨论
  • 研究论文 - 索引和查询论文

开发工作流

  • 入职培训 - 帮助新开发者理解代码库
  • 代码审查 - 查找相关代码以获取上下文
  • 错误修复 - 搜索类似的问题
  • 功能开发 - 发现现有的模式

📊 设计理念

核心原则

1. 本地优先

  • 所有处理都在您的机器上进行
  • 不将数据发送到云服务
  • 使用自己的硬件和模型

2. 简单性

  • 一键Docker Compose设置
  • 默认自动索引
  • 所有设置都有合理的默认值

3. 模块化

  • Genkit流程组织RAG逻辑
  • 插拔式嵌入模型
  • 可扩展的文件类型支持

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

🗺️ 路线图

✅ 已完成

  • MCP服务器实现
  • ChromaDB集成
  • Ollama本地嵌入
  • 启动时自动索引
  • 层次Markdown分块
  • Docker Compose设置
  • 5个核心MCP工具

🚀 计划

  • 高级代码文件分块(基于AST)
  • 支持PDF文件
  • 增强查询过滤
  • 多种嵌入模型支持
  • 性能基准测试
  • 语义缓存
  • 重新排序以提高相关性
  • 索引管理的Web UI

🤝 贡献

欢迎贡献!请遵循以下指南:

  1. 打开一个议题 - 在实施之前讨论更改
  2. 分叉仓库
  3. 创建功能分支 - git checkout -b feature/my-feature
  4. 遵循编码标准 - 运行npm run validate
  5. 编写测试 - 确保良好的覆盖率
  6. 提交拉取请求

开发指南

  • 遵循TypeScript严格模式
  • 使用ESLint和Prettier(自动配置)
  • 为新功能添加测试
  • 更新文档
  • 遵循提交约定

🤝 支持

npm ![GitHub Issues](https://img.sh[...] 5quare)

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


📄 许可证

MIT © Sylphx


🙏 致谢

构建于: