项目简介
MCP RAG 服务器是一个基于 Model Context Protocol (MCP) 实现的后端应用,专注于为大型语言模型 (LLM) 客户端提供检索增强生成 (RAG) 功能。它能够索引多种格式的文档(如 Markdown、文本、PowerPoint、PDF 等),构建向量数据库,并允许LLM通过标准化的MCP工具调用进行向量搜索,从而获取相关上下文信息。
主要功能点
- MCP协议支持: 实现了基于 JSON-RPC over stdio 的 MCP 服务器基本功能,能够处理来自LLM客户端的标准请求。
- RAG能力: 核心功能是实现RAG,通过索引私有或指定文档库,为LLM提供外部知识。
- 多格式文档处理: 支持自动读取、解析和转换为文本(或 Markdown)以便索引,包括常见的文本、Office文档和PDF。
- 向量嵌入: 使用 'multilingual-e5-large' 等模型生成文档内容的向量表示。
- 向量数据库: 使用 PostgreSQL 及其 pgvector 扩展存储和管理向量数据。
- 向量搜索: 提供高效的向量相似度搜索功能,根据自然语言查询查找最相关的文档片段。
- 上下文增强: 在搜索结果中可选地包含命中片段的前后上下文或文档全文,提供更完整的语境。
- 工具接口: 通过MCP工具 ('search', 'get_document_count') 向LLM客户端暴露RAG功能。
- 索引管理: 提供命令行工具进行索引的清除、完整构建或增量更新。
安装步骤
-
前提条件:
- Python 3.10 或更高版本。
- PostgreSQL 14 或更高版本,需安装 'pgvector' 扩展。可以使用提供的 Docker 命令快速启动一个包含 'pgvector' 的 PostgreSQL 容器。
-
获取代码: 克隆 GitHub 仓库到本地。
git clone https://github.com/karaage0703/mcp-rag-server.git cd mcp-rag-server -
安装依赖: 使用 'uv' 工具安装项目依赖(如果未安装 'uv',请先 'pip install uv')。
uv sync -
设置PostgreSQL:
- 如果使用Docker,运行:'docker run --name postgres-pgvector -e POSTGRES_PASSWORD=password -p 5432:5432 -d pgvector/pgvector:pg14'
- 创建数据库:'docker exec -it postgres-pgvector psql -U postgres -c "CREATE DATABASE ragdb;"'
- 如果使用现有PostgreSQL,确保已安装 'pgvector' 扩展 ('CREATE EXTENSION vector;') 并创建数据库。
-
配置环境: 在项目根目录创建 '.env' 文件,填写数据库连接信息、文档源目录和处理目录:
# PostgreSQL连接信息 POSTGRES_HOST=localhost POSTGRES_PORT=5432 POSTGRES_USER=postgres POSTGRES_PASSWORD=password POSTGRES_DB=ragdb # 文档目录 SOURCE_DIR=./data/source PROCESSED_DIR=./data/processed # エンベディングモデル EMBEDDING_MODEL=intfloat/multilingual-e5-large请根据您的PostgreSQL设置修改连接信息,并指定您的文档源目录(默认 './data/source')。
服务器配置 (用于MCP客户端)
要将此RAG服务器连接到支持MCP协议的LLM客户端(如 Cline/Cursor),您需要在客户端的MCP配置中添加以下信息。配置通常是一个JSON格式的文件(例如 'mcp_settings.json'),您需要指定服务器的启动命令和参数。
配置示例的关键信息:
- 'command': 指定用于运行服务器的命令。推荐使用 'uv',例如 '"uv"'。
- 'args': 指定传递给命令的参数列表。例如,运行服务器主程序 'python -m src.main',并且可能需要指定项目根目录,如 '"--directory", "/path/to/mcp-rag-server", "python", "-m", "src.main"'。请将 '/path/to/mcp-rag-server' 替换为您克隆此仓库的实际路径。
- 其他可选参数:如 'name', 'version', 'description' 可以通过 'args' 传递给服务器主程序。
具体的配置格式请参考您的MCP客户端文档。核心是提供一个能够启动服务器并使其监听标准输入输出的命令。
基本使用方法
- 放置文档: 将您想要索引的文档文件(支持 .md, .txt, .ppt, .pptx, .doc, .docx, .pdf)放入 '.env' 文件中配置的 'SOURCE_DIR' 目录下(默认 './data/source')。可以包含子目录。
- インデックス化: 使用命令行工具对文档进行索引。这是在使用MCP服务器进行搜索之前必须执行的步骤。
- 初次索引所有文件:
python -m src.cli index - 仅索引新增或修改的文件(增量更新):
python -m src.cli index --incremental
- 初次索引所有文件:
- 起動: 启动MCP服务器。通常通过您的MCP客户端自动完成,根据您在客户端中配置的启动命令执行。如果手动启动,可以使用:
uv run python -m src.main # 或 python -m src.main - 検索: 启动服务器后,您的LLM客户端即可通过调用注册的MCP工具(特别是 'search' 工具)来执行RAG搜索。客户端会以JSON-RPC请求的形式发送搜索查询,服务器处理后返回结果。
信息
分类
AI与计算