mcp-rag MCP 服务器
使用说明(Markdown格式)
-
项目简介
- mcp-rag 是一个基于 MCP 协议的服务器端实现,核心功能是从本地代码库与数据库中构建可检索的上下文资源,向 MCP 客户端提供两类工具:语义搜索(基于向量嵌入的相似度检索)和基于文本的类型/名称查找。服务器支持将查询结果以结构化文本返回给客户端,便于集成到 AI 编码助手、代码搜索等场景。
- 关键组件包括:数据管道(pipeline.py)将源码分块、生成向量嵌入并存储在 SQLite 数据库中;MCP 服务器端(server.py)实现语义检索与关键字查找工具,并通过 FastMCP 将其暴露给客户端。
-
主要功能点
- 资源与工具注册:服务器以配置化方式暴露两种 MCP 工具,分别用于搜索(语义相似性检索)与查找(按名称/类型的精确与模糊匹配)。
- 本地向量检索:加载嵌入到内存的向量矩阵,对查询进行向量化后计算余弦相似度并排序返回结果。
- 关键字查找:在元数据字段中执行严格/模糊匹配,以及 FTS5 的全文检索作为回退。
- 混合检索与再排序:支持在需要时对候选集进行 BM25 检索并使用 Reciprocal Rank Fusion 进行融合排序,必要时可启用跨编码器再排序。
- 面向 MCP 客户端:通过 MCP 的 JSON-RPC 形式进行请求/响应,兼容多传输协议(如 Stdio)。
-
安装步骤
-
- 克隆代码并安装依赖:请确保使用 Python 3.11 及以上,并安装项目中列出的依赖。
-
- 准备本地向量数据库和嵌入模型:使用 Ollama 本地部署的 nomic-embed-text 模型等进行嵌入生成,并确保 Ollama 服务可用。
-
- 构建或加载数据库:使用 pipeline.py 提供的流程对代码进行分块、嵌入和数据库构建,生成 data/rag.db 等数据库文件。
-
- 启动 MCP 服务器:在项目目录下运行 server.py(默认通过标准输入输出进行 MCP 通信)。
-
- 使用 MCP 客户端(如 Claude Code)注册服务器:通过客户端配置,将服务器名称、启动命令及参数等信息映射到 MCP 客户端,以便与 MCP 服务器建立连接并调用 search/lookup 等工具。
-
-
服务器配置(MCP 客户端必须提供的配置信息)
- 服务器名称:mcp-rag
- 启动作业命令(command):python3
- 参数(args):server.py
- 传输方式:MCP 客户端与 MCP 服务器通过标准输入输出进行通信(stdio),需在客户端配置中指定服务器的启动命令和参数,并确保工作目录指向包含 server.py 的仓库根目录。
- 说明:服务器启动后将加载配置中的数据库和向量嵌入信息,提供语义搜索和关键字查找这两项 MCP Tools,客户端通过 MCP 调用来获取文本结果。
- 额外说明(可选):在运行前,请确保 Ollama 服务可用、嵌入模型已下载、以及 data/rag.db 数据库已经就绪;若进行增量更新或再索引,请按项目文档使用 pipeline.py 进行 rebuild/rechunk/embed。
-
基本使用方法
- 启动服务器后,MCP 客户端即可通过调用 search 和 lookup 工具来获取结果。语义查询输入自然语言的描述,服务器返回排序后的代码片段或类型信息以及元数据;查找则返回与指定名称匹配的类型或成员信息,并可通过配置进行精确与模糊匹配的混合检索。
- 用法要点:确保 Ollama、SQLite 数据库和嵌入模型准备就绪;在 Claude Code 等 MCP 客户端上注册服务器后即可发起请求,服务器会按照配置的逻辑返回可读的文本结果及必要的置信等级信息。