检索增强生成服务器

一个基于LangChain和ChromaDB的检索增强生成(RAG)服务器,用于与Claude Desktop和Cursor IDE集成,提供智能文档检索和上下文增强功能。

  • by NSANTRA
  • Python
  • 本地部署
  • 4 星标
  • 更新于
在 GitHub 查看 NSANTRA/RAG-MCP-Server

使用说明


太长,读不下去了

  • 该项目实现了 检索增强生成(RAG) MCP服务器使用 LangChain包装纸 为了 ChromaDB 和 拥抱脸 模型。
  • 专为无缝集成而设计 克劳德桌面 和 光标IDE 作为MCP客户端。
  • 使用单个持久 色度矢量数据库 具有多个集合(域)。
  • 自动检索Claude最相关的上下文并对其进行排名,从而启用 领域感知推理 和 基于引文的回应.


该项目实现了 基于LangChain的检索增强生成(RAG) 管道托管为 FastMCP服务器 用于与Claude Desktop和Cursor IDE集成。

它使用:

  • langchain_chroma.Chroma 用于持久的、基于域的矢量存储。
  • langchain_huggingface.HuggingFaceEmbeddings 用于本地或HuggingFace嵌入模型。
  • langchain_community.cross_encoders.HuggingFaceCrossEncoder 用于本地或HuggingFace重新排序模型,以更好地进行相关性跟踪。
  • FastMCP --轻量级Python接口(基于FastAPI构建),将基于LangChain的检索工具暴露给任何MCP客户端,如Claude Desktop或Cursor IDE。

每个Chroma系列代表一个不同的知识领域或文档。 Claude查询被路由到适当的集合,该集合检索前k个结果并返回相关的上下文和引用。

⚡工作流程:

flowchart TD
  Claude[Claude Desktop]
  MCP[MCP Server: FastMCP + LangChain]
  LangChain[LangChain Wrappers → ChromaDB + HuggingFace]
  Claude --> MCP --> LangChain --> Claude
 
 🡅 Back to Top
 

  • PDF嵌入: 在本地或通过URL直接将PDF添加到所选集合中。
  • 智能检索: 检索每个集合或跨多个集合的上下文块。
  • 重新排名支持: 使用拥抱脸 交叉编码器重排器 以获得更好的文档相关性。
  • 文件管理: 列出、重命名和检查本地存储文档的元数据。
  • 收款管理: 动态创建、列出和删除ChromaDB集合。
  • 引文提供者: 引用是从文档元数据(例如页码、源文档和路径等)生成的。
  • 自我描述工具: describeTools() 动态列出所有可用的MCP工具以进行自检。
 
 🡅 Back to Top
 

此MCP服务器公开了一组工具,MCP客户端可以调用这些工具来执行文档和收集操作,包括嵌入、检索、元数据管理和引文生成。

有关可用工具、参数和示例用法的完整列表,请参阅专用文档:
查看所有工具→ TOOLS.md

 
 🡅 Back to Top
 

🔧 先决条件

[!重要]

  • 确保Anaconda已安装,如果没有,您可以从下载 蟒蛇 以及Git(如果不可用,请从下载 GitHub).

⚙️ 安装

  1. 创建和激活Conda环境
conda create -n MCP python=3.11.13 -y
conda activate MCP
  1. 克隆存储库
git clone https://github.com/NSANTRA/RAG-MCP-Server.git
cd RAG-MCP-Server
  1. 再进行
pip install -r requirements.txt
  1. 配置.env
# Example:

# If your system has Nvidia GPU CUDA Toolkit setup, you can set the device to cuda, otherwise set it to cpu
DEVICE = "cuda"

DOCUMENT_DIR = "C:/Users/<yourusername>/Projects/RAG-MCP-Server/Documents"
CHROMA_DB_PERSIST_DIR = "C:/Users/<yourusername>/Projects/RAG-MCP-Server/Databases"

EMBEDDING_MODEL = "C:/Users/<yourusername>/Projects/RAG-MCP-Server/Models/MiniLM"
RERANKER_MODEL = "C:/Users/<yourusername>/Projects/RAG-MCP-Server/Models/MiniLM-Reranker"

[!小心] 你需要在需要的地方提到绝对路径。

[!提示]

  • 上述配置使用本地下载的模型。您可以使用下载模型 下载Model py python脚本。如有需要,更换型号。
  • 您可以为任何HuggingFace模型交换嵌入或重新链接路径。
 
 🡅 Back to Top
 

[!重要] 您需要下载 克劳德桌面 应用程序或 光标IDE 以便在需要MCP客户端时运行MCP服务器。 您可以下载:

当RAG MCP服务器在MCP配置文件中注册时,上述MCP客户端会自动启动它。
你 不需要手动运行Python脚本.

Claude桌面集成

🛠️ 安装说明

  • 将以下条目添加到Claude MCP配置文件中(通常位于Claude Desktop设置文件夹中)。
  • 你可以找到 mcp配置文件 在这里: 设置→ 开发者→ 编辑配置 打开文件。
  • 然后,添加以下JSON配置:
{
  "mcpServers": {
    "RAG": {
      "command": "C:/Users/<yourusername>/anaconda3/envs/MCP/python.exe",
      "args": ["<absolute to the Main.py>"],
      "options": {
        "cwd": "absolute project root directory path"
      }
    }
  }
}

⚠️ 常见问题: 如果Claude未能启动MCP服务器,请确保:

  • Python路径指向Conda环境的可执行文件。
  • Main.py 没有语法错误,并且安装了依赖项。
  • 这 cwd 选项与您的项目根目录匹配。

游标IDE集成

🛠️ 安装说明

  • 在Cursor IDE中打开项目,然后转到 File → 偏好设置→ 光标设置→ 工具和MCP→ 新建MCP服务器 打开MCP配置文件。
  • 在“mcpServers”部分添加以下JSON条目(根据需要调整路径):
{
  "mcpServers": {
    "RAG": {
      "command": "C:/Users/<yourusername>/anaconda3/envs/MCP/python.exe",
      "args": ["<absolute to the Main.py>"],
      "options": {
        "cwd": "absolute project root directory path"
      }
    }
  }
}
 
 🡅 Back to Top
 

[!提示] MCP Inspector是Anthropic的官方开发工具,它允许您测试、调试和检查任何模型上下文协议(MCP)服务器,包括自定义RAG MCP服务器,而不需要Claude Desktop或Cursor IDE。

[!重要]

  • 使用 MCP检查员,你一定有 Node.js 安装。
  • 在安装期间, 启用“添加到PATH”
  • 使用验证您的安装 node -v, npm -v 和 npx -v.

它做什么

  • 允许您以交互方式调用工具并查看原始JSON输入/输出。
  • 显示系统日志、服务器元数据和协议消息。
  • 非常适合测试新的工具定义或调试检索工作流。

安装

您可以使用npm全局安装MCP Inspector:

npm install -g @modelcontextprotocol/inspector

或者直接使用npx运行(无需安装):

npx @modelcontextprotocol/inspector

用法

  1. 导航到Main.py所在的项目根目录。
  2. 通过检查器启动MCP服务器:
npx @modelcontextprotocol/inspector python Main.py

[!提示] (如果使用Conda环境,请将python替换为其完整路径。或者,首先激活环境,然后按原样使用上述命令。)

  1. 检查员将打开一个本地web界面(通常在http://localhost:6274 )显示:
    • 输入/输出模式
    • 实时日志和响应跟踪
 
 🡅 Back to Top
 

├── Main.py                 # Entry point - starts the FastMCP server
│
├── Modules/
│ ├── Config.py             # Loads env vars, sets up embeddings & reranker
│ ├── Core.py               # Document-level utilities (metadata, citation, rename)
│ ├── Database.py           # ChromaDB logic for embedding/retrieval
│ ├── Utils.py              # Helper functions (file ops, reranking)
│ └── ToolDefinition.py     # MCP tool manifests and argument schemas
│
├── .env                    # Environment configuration
├── requirements.txt        # Dependencies
└── README.md
 
 🡅 Back to Top
 

  1. LangChain RAG工作流程
    LangChain文档——RAG

  2. 色度矢量数据库
    Chroma文档

  3. 拥抱人脸嵌入和交叉编码器
    句子转换器
    交叉编码器型号

  4. 拟人化MCP和克劳德桌面
    模型上下文协议官方网站
    Claude桌面概述

 
 🡅 Back to Top
 

MIT许可证

版权所有(c)2025尼洛帕尔·桑特拉

特此免费向任何获得副本的人授予许可 本软件和相关文档文件(“软件”),以处理 在软件中不受限制,包括但不限于权利 使用、复制、修改、合并、发布、分发、再许可和/或销售 软件的副本,并允许软件的接收者 根据以下条件提供:

上述版权声明和本许可声明应包含在所有 软件的副本或实质性部分。

软件按“原样”提供,不提供任何形式的明示或明示担保 隐含的,包括但不限于适销性保证, 适用于特定目的且不造成伤害。在任何情况下 作者或版权持有人对任何索赔、损害赔偿或其他 因以下原因产生的责任,无论是在合同、侵权或其他诉讼中, 出于或与软件、使用或其他交易有关 软件。

 
 🡅 Back to Top