使用说明
🚀 文档处理MCP服务器
🔗 关于模型上下文协议(MCP)
这 模型上下文协议(MCP) 是Anthropic创建的一项新标准,使人工智能助手能够访问外部工具和数据源。该协议允许AI模型通过连接到像MCP服务器这样的专门服务,将其功能扩展到训练数据之外。
通过实施MCP标准,该服务器使AI助手能够从您的自定义文档集合中查询和检索信息,从而有效地用您的特定内容扩展他们的知识库。
🧠 用最新信息扩展法学硕士知识
此模型上下文协议(MCP)服务器允许您克服大型语言模型的最大限制之一:知识截断。通过创建自己的MCP服务器,您可以向AI助手提供有关以下内容的最新信息:
- 最新框架文档:使用不在LLM训练数据中的内容(React 19、Angular 17、Vue 3.4+等)
- 私有代码库:帮助AI助手理解您的专有代码模式和结构
- 技术规格:导入有关新API、协议或工具的文档
推荐数据来源:
- FireCrawl.dev:抓取文档网站的强大工具
- GitHub官方存储库:下载README和文档
- 技术博客和教程:将关键文章另存为Markdown文件
🏗️ 建筑
该系统由两个主要部分组成:
- 📝 处理管线:读取Markdown和文本文件,将其分块,生成嵌入,并将其存储在向量数据库中。
- 🔌 MCP服务器:通过MCP工具公开处理后的内容,允许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!
✅ 先决条件
🛠️ 设置
-
克隆此存储库:
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/目录。
⚙️ 配置
您可以使用中的环境变量配置MCP服务器 .env 文件:
# 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密钥:
-
句子转换器/全MiniLM-L6-v2:为句子和短段落编码设计的紧凑模型,提供适用于快速检索任务的高效嵌入。
-
BAAI/bge-m3:一个支持多种检索功能、100多种语言和多达8192个令牌输入的多功能模型,使其成为全面检索任务的理想选择。
-
雪花/雪花实际嵌入-m:该模型针对高质量检索性能进行了优化,有效地平衡了准确性和推理速度。
付费模型(需要OpenAI API密钥)
- text-embedding-3-small:针对速度和成本效益进行了优化,质量良好
- 文本嵌入-3大:最高质量的嵌入物(更贵)
运行管道时,系统会提示您选择要使用的模型。如果您没有OpenAI API密钥,系统将自动使用其中一个免费的本地模型。
🚀 用法
🔄 处理文件
要处理文件并生成嵌入:
docker-compose build pipeline
docker-compose run pipeline
在Windows上,安装Docker Desktop后,您可以在命令提示符或PowerShell中运行这些命令。
这将:
- 提示您选择嵌入模型
- 如果需要,安装必要的软件包
- 读取中所有支持的文件
data/目录 - 处理并分块内容
- 生成嵌入
- 将嵌入存储在向量数据库中(创建
chroma.sqlite3文件在db/目录)
⚠️ 重要的下一步: 处理完文件后,您必须在运行服务器之前构建它。请参阅下一节。
🔧 构建MCP服务器
所需步骤: 处理完文档后,您需要在运行服务器组件之前构建它:
docker-compose build server
Windows用户注意事项:在运行MCP服务器之前,此步骤至关重要。如果不构建服务器映像,在尝试运行服务器时将遇到“无效引用格式”错误。
如果缺少服务器映像,Linux/macOS的更新运行脚本将自动构建服务器映像,但仍建议手动构建,以获得更好的性能,并避免首次运行服务器时出现意外延迟。
🔌 连接到MCP兼容的AI助手
⚠️ 提醒:在配置MCP服务器连接之前,请确保已完成以下步骤:
- 建造管道(
docker-compose build pipeline) - 运行管道(
docker-compose run pipeline) - 构建服务器(
docker-compose build server) - 这一步至关重要,经常被错过!
MCP服务器需要配置您的AI助手。我们提供脚本来生成配置:
对于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用户很重要:The
run-mcp-server.bat该文件已更新为一致使用Docker Compose,解决了一些Windows用户遇到的“无效引用格式”错误。如果您仍然遇到此问题,请确保您使用的是此存储库中批处理文件的最新版本。
示例:使用Roo进行配置
如果你使用Roo作为你的人工智能助手:
- 为您的平台运行相应的安装脚本以生成配置文件
- 在Roo中,单击侧栏中的“MCP服务器”按钮/选项卡
- 启用“启用MCP服务器”切换
- 点击“编辑MCP设置”
- 复制并粘贴mcp-config.json文件的全部内容
- 保存设置
🧩 使用MCP服务器
配置后,您可以将MCP服务器与支持MCP的AI助手一起使用。使用Roo等兼容助手,您可以通过两种方式使用它:
-
自动模式 (与
autoQuery: true):正常提问,AI会自动检查您的矢量数据库以获取相关信息。示例:“React 19的主要特性是什么?”
-
明确的工具使用:直接要求AI使用特定的工具。
示例:“使用search_content工具查找有关React 19编译器的信息。”
🧰 MCP工具
MCP服务器公开了以下工具:
- 📚 read_md_文件:处理和检索文件。参数:
file_path(特定文件或目录的可选路径) - 🔍 搜索内容:在已处理的内容中搜索。参数:
query(必填搜索查询) - 📋 get_text:检索上下文信息。参数:
query(所需的上下文查询),window_size(要检索的上下文项的可选数量) - 🏗️ 工程结构:提供项目结构信息。没有参数。
- 💡 建议实施:提出实施建议。参数:
description(需要说明要实施什么)
📄 支持的文件类型
默认情况下,支持以下文件类型:
- Markdown文件(.md)
- 文本文件(.txt)
- PDF文件(.PDF)
- Word文档(.docx、.doc)
您可以通过设置来配置其他文件扩展名 SUPPORTED_EXTENSIONS 您的环境变量 .env 文件。
🔄 操作模式
MCP服务器可以在两种模式下运行:
-
🤖 全处理模式:提供Anthropic API密钥时,以及
USE_ANTHROPIC设置为true,服务器将使用Claude根据检索到的上下文生成响应。 -
📋 上下文检索模式:未提供Anthropic API密钥或
USE_ANTHROPIC设置为false,服务器将仅检索并返回相关上下文,允许客户端(例如AI助手)使用其自己的LLM对其进行处理。
📁 项目结构
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. - “引用格式无效”错误:出现这种常见错误的原因有两个:
- 缺少构建步骤:您试图在不首先构建服务器映像的情况下运行MCP服务器。始终运行
docker-compose build server在尝试运行服务器之前。 - Docker与Docker Compose的融合:Windows批处理文件已更新为一致使用Docker Compose。如果您仍然遇到此错误,请确保您使用的是此存储库中批处理文件的最新版本。
- 缺少构建步骤:您试图在不首先构建服务器映像的情况下运行MCP服务器。始终运行
- API关键问题:别担心!您可以在没有任何API密钥的情况下使用免费的本地嵌入模型。
- 缺少句子转换包:如果您选择免费型号,系统将自动安装所需的软件包。
- 找不到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被用作所有文档类型的首选分块方法。
📄 许可证
麻省理工学院
创建于❤️ 靠近 唐菲