关于 🚀 MCP Server for Document Processing
这是一个通过 MCP 为 AI 助手提供私有文档与技术资料检索的服务。它将文档切分、生成向量并存入数据库,支持本地免费嵌入模型或 OpenAI 嵌入模型。
主要功能
- 01处理 Markdown、文本、PDF 和 Word 文档
- 02切分内容并生成嵌入
- 03向量数据库存储与检索
- 04支持本地及 OpenAI 嵌入模型
- 05提供上下文检索与实现建议工具
适用场景
- 01查询最新框架文档
- 02检索私有代码库资料
- 03根据技术文档获取上下文
- 04获取实现建议
MCP 相关
MCP 服务向客户端提供文档读取、内容搜索、上下文获取、项目结构查询和实现建议等工具。客户端可使用自动查询或显式调用工具的方式检索已处理内容。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
我们还没有获取到这个服务的安装包或远程地址,请按项目 README 中的说明安装。
工具
本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。
详细介绍
🚀 文档处理 MCP 服务
🔗 关于模型上下文协议(MCP)
模型上下文协议(MCP) 是 Anthropic 创建的一项新标准,旨在让 AI 助手能够访问外部工具和数据源。通过连接到此类 MCP 服务等专用服务,该协议可以让 AI 模型扩展训练数据之外的能力。
通过实现 MCP 标准,此服务可让 AI 助手查询和检索自定义文档集合中的信息,从而利用你的特定内容扩展其知识库。
🧠 使用最新信息扩展大模型的知识
此模型上下文协议(MCP)服务可帮助你克服大模型最显著的局限之一:知识截止时间。通过创建自己的 MCP 服务,你可以为 AI 助手提供以下方面的最新信息:
- 最新框架文档:使用未包含在大模型训练数据中的内容(React 19、Angular 17、Vue 3.4+ 等)
- 私有代码库:帮助 AI 助手理解专有代码模式和结构
- 技术规范:导入新 API、协议或工具的文档
推荐的数据来源:
- FireCrawl.dev:用于抓取文档网站的强大工具
- 官方 GitHub 仓库:下载 README 和文档
- 技术博客和教程:将重要文章保存为 Markdown 文件
🏗️ 架构
系统由两个主要组件构成:
- 📝 处理管道:读取 Markdown 和文本文件,对其进行分块、生成嵌入,并将其存储在向量数据库中。
- 🔌 MCP 服务:通过 MCP 工具提供处理后的内容,让 AI 助手能够搜索和检索相关信息。
💡 使用示例
使用最新框架文档更新 AI 的知识
# Scrape latest React 19 docs using FireCrawl.dev
# Place the saved markdown files in the data/ directory
# Run the pipeline to process the documentation
# Now ask your AI assistant about React 19 features!
使用私有代码库文档
# Export your API documentation as markdown
# Place the markdown files in the data/ directory
# Run the pipeline to process
# Now your AI assistant can help debug issues with your specific APIs!
✅ 先决条件
- Docker:适用于 Windows 或 Mac 的 Docker Desktop,或适用于 Linux 的 Docker Engine
- OpenAI API 密钥(可选):也可以改用免费的本地嵌入模型
- 支持 MCP 的 AI 助手:例如 Roo 或其他兼容的助手
🛠️ 设置
-
克隆此仓库:
git clone https://github.com/donphi/mcp-server.git cd mcp-server -
创建
.env文件并填写配置:# Copy the example file cp .env.example .env # Edit the file with your settings nano .env在 Windows 上,你可以使用记事本编辑 .env 文件。
-
将 Markdown(.md)和文本(.txt)文件放入
data/目录。
⚙️ 配置
你可以在 .env 文件中使用环境变量配置 MCP 服务:
# API Keys
OPENAI_API_KEY=your_openai_api_key_here # Optional - can use free local embeddings instead
ANTHROPIC_API_KEY=your_anthropic_api_key_here # Optional
# Pipeline Configuration
CHUNK_SIZE=800 # Size of text chunks
CHUNK_OVERLAP=120 # Overlap between chunks (in tokens)
BATCH_SIZE=10 # Batch size for embedding generation
EMBEDDING_MODEL=sentence-transformers/all-MiniLM-L6-v2 # Model to use (see options below)
SUPPORTED_EXTENSIONS=.md,.txt,.pdf,.docx,.doc # Comma-separated list of supported file extensions
# Server Configuration
CLAUDE_MODEL=claude-3-7-sonnet-20240307 # Claude model to use
MAX_RESULTS=10 # Maximum number of results to return
USE_ANTHROPIC=true # Whether to use Anthropic API for responses
# Paths
DATA_DIR=/data # Directory containing input files
OUTPUT_DIR=/output # Directory for output files
DB_PATH=/db # Directory for vector database
CONFIG_PATH=/config/server_config.json # Path to server configuration file
📊 嵌入模型
系统支持多种嵌入模型,可将文本转换为向量表示:
免费模型(无需 API 密钥)
这些模型在 Docker 容器内本地运行,无需任何 API 密钥:
-
sentence-transformers/all-MiniLM-L6-v2:专为句子和短段落编码设计的紧凑型模型,可高效生成嵌入,适用于快速检索任务。
-
BAAI/bge-m3:多用途模型,支持多种检索功能、100 多种语言以及最长 8192 个词元的输入,非常适合全面的检索任务。
-
Snowflake/snowflake-arctic-embed-m:针对高质量检索性能进行了优化,能够有效平衡准确性和推理速度。
付费模型(需要 OpenAI API 密钥)
- text-embedding-3-small:针对速度和成本效益进行了优化,同时保持良好的质量
- text-embedding-3-large:质量最高的嵌入(价格较高)
运行管道时,系统会提示你选择要使用的模型。如果你没有 OpenAI API 密钥,系统会自动使用一种免费的本地模型。
🚀 使用
🔄 处理文件
要处理文件并生成嵌入:
docker-compose build pipeline
docker-compose run pipeline
在 Windows 上安装 Docker Desktop 后,可以在命令提示符或 PowerShell 中运行这些命令。
此操作将:
- 提示你选择一个嵌入模型
- 在需要时安装必要的软件包
- 读取
data/目录中的所有受支持文件 - 处理内容并将其分块
- 生成嵌入
- 将嵌入存储在向量数据库中(在
db/目录中创建chroma.sqlite3文件)
**⚠️ 重要后续步骤:**处理完文件后,运行服务前必须先构建服务。请参阅下一节。
🔧 构建 MCP 服务
**必需步骤:**处理完文档后,运行服务前需要先构建服务组件:
docker-compose build server
Windows 用户须知:在运行 MCP 服务前,此步骤至关重要。如果不构建服务镜像,运行服务时会遇到“invalid reference format”错误。
适用于 Linux/macOS 的更新版运行脚本会在服务镜像不存在时自动构建,但仍建议手动构建,以获得更好的性能,并避免首次运行服务时出现意外延迟。
🔌 连接到兼容 MCP 的 AI 助手
⚠️ 提醒:配置 MCP 服务连接前,请确保已完成以下步骤:
- 构建流水线(
docker-compose build pipeline) - 运行流水线(
docker-compose run pipeline) - 构建服务(
docker-compose build server)——此步骤至关重要,且经常被遗漏!
需要为 AI 助手配置 MCP 服务。我们提供了用于生成配置的脚本:
适用于 macOS/Linux:
-
使设置脚本可执行并运行:
chmod +x setup-mcpServer-json.sh ./setup-mcpServer-json.sh -
此操作将创建配置正确的
mcp-config.json文件。 -
将配置添加到 AI 助手中。
适用于 Windows:
-
双击
setup-mcpServer-json.bat文件,或在命令提示符中运行:setup-mcpServer-json.bat -
此操作将创建配置正确的
mcp-config.json文件。 -
将配置添加到 AI 助手中。
给 Windows 用户的重要提示:
run-mcp-server.bat文件已更新为统一使用 Docker Compose,从而解决部分 Windows 用户遇到的“invalid reference format”错误。如果仍遇到此问题,请确保使用此仓库中的最新批处理文件。
示例:使用 Roo 配置
如果你将 Roo 用作 AI 助手:
- 运行适用于你平台的设置脚本,生成配置文件
- 在 Roo 中,点击侧边栏中的“MCP Server”按钮/选项卡
- 启用“Enable MCP Servers”开关
- 点击“Edit MCP Settings”
- 复制并粘贴
mcp-config.json文件的全部内容 - 保存设置
🧩 使用 MCP 服务
配置完成后,你可以将 MCP 服务与支持 MCP 的 AI 助手搭配使用。使用 Roo 等兼容助手时,可以通过两种方式使用:
-
自动模式(设置
autoQuery: true):像平常一样提问,AI 会自动检查向量数据库,查找相关信息。示例:“React 19 的主要功能有哪些?”
-
显式使用工具:直接要求 AI 使用特定工具。
示例:“使用 search_content 工具查找有关 React 19 Compiler 的信息。”
🧰 MCP 工具
MCP 服务提供以下工具:
- 📚 read_md_files:处理并检索文件。参数:
file_path(可选,指定文件或目录的路径) - 🔍 search_content:搜索已处理的内容。参数:
query(必填,搜索查询) - 📋 get_context:检索上下文信息。参数:
query(必填,上下文查询)、window_size(可选,要检索的上下文项数量) - 🏗️ project_structure:提供项目信息结构。无参数。
- 💡 suggest_implementation:生成实现建议。参数:
description(必填,要实现内容的描述)
📄 支持的文件类型
默认支持以下文件类型:
- Markdown 文件(.md)
- 文本文件(.txt)
- PDF 文件(.pdf)
- Word 文档(.docx、.doc)
你可以在 .env 文件中设置 SUPPORTED_EXTENSIONS 环境变量,以配置其他文件扩展名。
🔄 运行模式
MCP 服务可在以下两种模式下运行:
-
🤖 完整处理模式:提供 Anthropic API 密钥并将
USE_ANTHROPIC设置为true时,服务将使用 Claude 根据检索到的上下文生成回复。 -
📋 上下文检索模式:未提供 Anthropic API 密钥或将
USE_ANTHROPIC设置为false时,服务只会检索并返回相关上下文,以便客户端(例如,AI 助手)使用自己的大模型进行处理。
📁 项目结构
mcp-server/
├── Dockerfile.pipeline
├── Dockerfile.server
├── docker-compose.yml
├── requirements.pipeline.txt
├── requirements.server.txt
├── README.md
├── .env.example
├── run-mcp-server.sh # For macOS/Linux
├── run-mcp-server.bat # For Windows
├── setup-mcpServer-json.sh # Setup script for macOS/Linux
├── setup-mcpServer-json.bat # Setup script for Windows
├── enhanced_chunking.py
├── inspect_chunks.py
├── run_chunk_analysis.sh
├── setup_enhanced_chunking.sh
├── visualize_chunks.py
├── restart_server.sh
├── chunk_analysis/ # Tools for analyzing chunking methods
│ ├── docker_entrypoint.sh
│ ├── docker-compose.yml
│ ├── Dockerfile
│ ├── inspect_chunks.py
│ ├── README.md
│ ├── run_tests.sh
│ ├── semi_interactive_chunking.py
│ └── test_chunking.py
├── src/
│ ├── pipeline.py
│ ├── server.py
│ └── utils/
│ ├── __init__.py
│ ├── chunking.py
│ ├── embedding.py
│ └── vector_db.py
├── config/
│ ├── pipeline_config.json
│ └── server_config.json
├── data/
│ └── README.md
├── output/
│ └── .gitkeep
└── db/
└── .gitkeep
❓ 故障排除
- 未找到 Docker:确保已安装并运行 Docker。使用
docker --version检查。 - “Invalid reference format”错误:此常见错误可能由以下两种原因导致:
- 缺少构建步骤:你尝试在构建服务镜像之前运行 MCP 服务。运行服务前,务必先执行
docker-compose build server。 - 混用 Docker 和 Docker Compose:Windows 批处理文件已更新为统一使用 Docker Compose。如果仍然遇到此错误,请确保使用的是此仓库中的最新版本批处理文件。
- 缺少构建步骤:你尝试在构建服务镜像之前运行 MCP 服务。运行服务前,务必先执行
- API 密钥问题:别担心!你可以使用免费的本地嵌入模型,无需任何 API 密钥。
- 缺少 sentence-transformers 包:如果你选择免费模型,系统会自动安装所需的包。
- 未找到 Chroma 数据库:确保已先运行处理文档的流水线。
- 连接问题:确认 MCP 配置中的路径指向正确的运行脚本位置。
- Windows 路径问题:如果在 Windows 上遇到路径问题,请确保 JSON 配置中的路径使用双反斜杠(\\)。
- 嵌入模型不匹配:服务会自动检测创建数据库时使用的模型,并使用相同的模型进行检索。
文档分块问题
分块不一致
如果发现文件之间的分块不一致,可能是由以下原因导致的:
- 文档类型检测系统记住了之前的判定
- 缺少 spaCy 依赖项
- 配置文件与环境变量冲突
解决方案:
- 流水线会在每次运行之间自动重置文档类型记忆
- 确保已安装 spaCy:
pip install spacy && python -m spacy download en_core_web_md - 确认 .env 和配置文件保持一致
PDF 处理
出现以下情况时,PDF 可能无法正确分块:
- PDF 包含扫描图像而非文本
- PDF 格式复杂
- 缺少所需依赖项
解决方案:
- 流水线已改进 PDF 处理,并提供更完善的诊断信息
- 对于扫描版 PDF,可考虑先使用 OCR 进行预处理
- 安装 PyPDF:
pip install pypdf
🔬 高级配置
对于高级用例,可以自定义管线和服务:
- 自定义嵌入函数:创建自定义嵌入逻辑
- 文档类型分类:修改文档类型检测方式
- 分块行为:根据特定需求调整分块参数
- 分块分析:使用
/chunk_analysis中的测试工具比较标准分块方法和增强分块方法:# First build the Docker container cd chunk_analysis docker-compose build # Then run the tests ./run_tests.sh
分块策略
管线针对不同文档采用以下分块策略:
- 科学论文:按章节拆分,保留参考文献
- 金融文档:保留表格和数字内容章节
- 技术文档:保留代码块和示例
- 叙述文本:通过 spaCy NLP 使用语义边界
- 通用文档:结合章节标题和语义断点,采取均衡方案
如果可用,所有文档类型均优先使用 SpaCy 进行分块。
📄 许可证
MIT
由 donphi 倾情打造 ❤️
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。