项目简介
MCP文档智能服务器是一个强大的后端服务,旨在为LLM(大型语言模型)客户端提供结构化的文档上下文和智能功能。它允许您存储、管理和搜索本地文档,利用语义嵌入进行高效检索,并可选地集成Google Gemini AI以实现更深层次的文档理解和高级分析。
主要功能点
- 智能文档分析:通过Google Gemini AI实现对文档内容的上下文理解、关系识别和概念分析。
- 语义搜索与检索:支持传统的基于嵌入的语义搜索和内存中的关键词索引,能够从文档中检索最相关的分块内容。
- 文档管理:提供完整的文档生命周期管理,包括添加、列出、获取、更新和删除文档,以及自动将上传文件夹中的文件转换为可搜索的文档。
- 性能优化:通过O(1)文档查找、LRU嵌入缓存、并行分块处理和流式文件读取,确保大型文档处理和查询的高效性。
- 本地存储:所有数据都安全地存储在本地文件系统,无需外部数据库,提供隐私和控制。
- 上下文窗口检索:在搜索结果周围获取额外的文档分块,为LLM提供更丰富的上下文信息。
安装步骤
本服务器作为NPM包发布,可以直接通过'npx'运行,无需额外安装。 如果您需要进行开发或自定义,可以通过以下步骤克隆仓库并构建:
- 克隆仓库:
git clone https://github.com/andrea9293/mcp-documentation-server.git cd mcp-documentation-server - 安装依赖:
npm install - 构建项目:
npm run build
完成后即可使用NPM命令启动服务器。
服务器配置
MCP服务器通常由MCP客户端(如Claude Desktop等)配置和启动。以下是MCP客户端配置此服务器的示例信息(JSON格式),您只需在客户端界面或配置文件中填写相应字段即可。
{ "mcpServers": { "documentation": { "command": "npx", "args": [ "-y", "@andrea9293/mcp-documentation-server" ], "env": { "GEMINI_API_KEY": "your-google-gemini-api-key-here", // (可选) 启用AI搜索,请替换为您的Google Gemini API Key "MCP_EMBEDDING_MODEL": "Xenova/all-MiniLM-L6-v2", // (可选) 配置嵌入模型,默认使用Xenova/all-MiniLM-L6-v2 "MCP_INDEXING_ENABLED": "true", // (可选) 启用文档索引,默认启用 "MCP_CACHE_SIZE": "1000", // (可选) 配置LRU嵌入缓存大小,默认1000 "MCP_PARALLEL_ENABLED": "true", // (可选) 启用并行处理,默认启用 "MCP_STREAMING_ENABLED": "true" // (可选) 启用文件流式读取,默认启用 } } } }
配置说明:
- 'command': 'npx' (用于执行npm包)
- 'args': '["-y", "@andrea9293/mcp-documentation-server"]' (执行本MCP服务器的命令)
- 'env': 环境变量配置
- 'GEMINI_API_KEY': 如果您希望使用基于Google Gemini AI的智能搜索功能,请在此处填写您的Google Gemini API Key。没有此键,AI搜索功能将无法使用。您可以从Google AI Studio获取。
- 'MCP_EMBEDDING_MODEL': 配置用于生成文档嵌入的模型。默认是'Xenova/all-MiniLM-L6-v2',推荐使用'Xenova/paraphrase-multilingual-mpnet-base-v2'以获得更好的多语言质量。注意:更改模型需要重新添加所有文档,因为嵌入不兼容。
- 其他'MCP_*'环境变量用于微调服务器的性能和行为,如索引、缓存、并行处理和流式读取,可根据需求进行调整。
基本使用方法
一旦MCP客户端配置并启动了MCP文档智能服务器,您就可以通过客户端调用服务器暴露的工具。
1. 添加文档 使用'add_document'工具向知识库添加新文档。
* **参数**: 'title' (文档标题), 'content' (文档内容), 'metadata' (可选,文档元数据) * **示例**: 'add_document({"title": "Python基础", "content": "Python是一种高级编程语言...", "metadata": {"category": "编程", "tags": ["python", "教程"]}})'
2. 自动处理上传文件 您可以将'.txt', '.md', 或 '.pdf' 文件直接放入服务器的上传文件夹,然后调用'process_uploads'工具进行批量处理。
* **工具**: 'get_uploads_path' (获取上传文件夹路径) * **工具**: 'list_uploads_files' (列出上传文件夹中的文件) * **工具**: 'process_uploads' (处理上传文件,自动创建文档和嵌入) * **步骤**: 1. 调用 'get_uploads_path()' 获取上传文件夹的绝对路径。 2. 将您的'.txt', '.md', 或 '.pdf' 文件复制到该路径。 3. 调用 'process_uploads()' 来处理这些文件。服务器会将它们转换为文档,生成嵌入,并复制到数据目录中。
3. 搜索文档 使用'search_documents'工具进行语义搜索,或使用'search_documents_with_ai'工具进行高级AI搜索。
* **工具**: 'search_documents' (语义搜索) * **参数**: 'document_id' (文档ID), 'query' (搜索查询), 'limit' (可选,返回结果数量,默认10) * **示例**: 'search_documents({"document_id": "doc-123", "query": "变量赋值的概念", "limit": 5})' * **工具**: 'search_documents_with_ai' (AI驱动的高级搜索,需要'GEMINI_API_KEY') * **参数**: 'document_id' (文档ID), 'query' (AI分析查询) * **示例**: 'search_documents_with_ai({"document_id": "doc-123", "query": "解释主要概念及其相互关系"})'
4. 获取上下文窗口 在语义搜索后,可以使用'get_context_window'工具获取特定分块前后的内容,以提供更丰富的LLM上下文。
* **工具**: 'get_context_window' * **参数**: 'document_id' (文档ID), 'chunk_index' (中心分块索引), 'before' (前置分块数量,默认1), 'after' (后置分块数量,默认1) * **示例**: 'get_context_window({"document_id": "doc-123", "chunk_index": 5, "before": 2, "after": 2})'
5. 列出和获取文档
- 工具: 'list_documents' (列出所有文档的元数据和预览)
- 工具: 'get_document' (根据ID获取完整文档内容)
6. 删除文档
- 工具: 'delete_document' (根据ID删除文档及其相关文件)
通过这些工具,LLM客户端可以与服务器进行高效交互,实现强大的文档智能应用。
信息
分类
AI与计算