文档分析服务器

一个基于MCP协议的文档分析服务器,支持多格式文档的搜索、读取和信息提取。

  • by danielitus
  • JavaScript
  • 本地部署
  • 更新于
在 GitHub 查看 danielitus/mcp-document-server

使用说明

MCP文档服务器

一种模型上下文协议(MCP)服务器,使Claude能够与文档集合进行交互和分析。此服务器提供用于从各种文档格式中搜索、读取和提取信息的工具。

目录

特性

  • 多格式支持:读取和处理各种文档格式,包括纯文本、Markdown、PDF和JSON
  • 全文搜索:使用可配置的区分大小写功能搜索所有文档
  • 文档管理:列出所有包含元数据的文档(大小、修改日期、类型)
  • 内容提取:使用正则表达式模式从文档中提取特定部分
  • 资源访问:通过MCP资源URI直接访问文档内容
  • 实时更新:自动检测添加到受监视目录的新文档

先决条件

  • Node.js 18.0或更高版本
  • npm或yarn包管理器
  • Claude桌面应用程序

安装

  1. 克隆或下载此存储库:
git clone <repository-url>
cd mcp-document-server
  1. 安装依赖项:
npm install
  1. 创建文档目录(或准备现有目录):
mkdir documents

配置

Claude桌面配置

  1. 打开克劳德桌面设置
  2. 导航到“开发人员”设置
  3. 将以下内容添加到MCP服务器配置中:
{
  "mcpServers": {
    "document-server": {
      "command": "node",
      "args": ["/absolute/path/to/mcp-document-server/src/index.js"],
      "env": {
        "DOCUMENTS_PATH": "/absolute/path/to/your/documents"
      }
    }
  }
}

备注:替换 /absolute/path/to/ 使用系统上的实际路径。

配置选项

  • DOCUMENTS_PATH:环境变量,用于指定包含文档的目录(默认为 ./documents)

用法

启动服务器

如果配置正确,当Claude Desktop启动时,服务器会自动启动。要手动测试,请执行以下操作:

# Using default documents directory
node src/index.js

# Using custom documents directory
DOCUMENTS_PATH=/path/to/docs node src/index.js

添加文档

只需将文档放置在配置的文档目录中即可。在以下情况下,服务器将自动检测到它们:

  • 列出文档
  • 执行搜索
  • 访问资源

通过克劳德互动

配置后,您可以要求Claude:

  1. 列出所有文件:

    • “显示所有可用文档”
    • “您可以访问哪些文件?”
  2. 跨文档搜索:

    • “在所有文档中搜索‘机器学习’”
    • “查找所有提到的‘API’(区分大小写)”
  3. 阅读特定文档:

    • “阅读example.txt的内容”
    • “显示README文件中的内容”
  4. 提取部分:

    • “从markdown文件中提取所有标题”
    • “在documents.md中查找以'##'开头的所有部分”

可用工具

1. list_documents

列出所有具有元数据的可用文档。

参数:无

退货:

{
  "documents": [
    {
      "name": "example.txt",
      "path": "/full/path/to/example.txt",
      "size": 1234,
      "modified": "2024-01-15T10:30:00.000Z",
      "type": "txt"
    }
  ]
}

2. search_documents

在所有文档中搜索文本。

参数:

  • query (必填):要搜索的文本
  • case_sensitive (可选):用于区分大小写搜索的布尔值(默认值:false)

退货:

{
  "results": [
    {
      "file": "example.txt",
      "path": "/full/path/to/example.txt",
      "matches": [
        {
          "line": 5,
          "text": "This line contains the search term"
        }
      ],
      "total_matches": 3
    }
  ]
}

3. extract_sections

根据正则表达式模式从文档中提取部分。

参数:

  • file_path (必填):文档路径
  • pattern (必需):正则表达式模式以匹配部分

退货:

{
  "sections": [
    {
      "heading": "## Section Title",
      "line_start": 10,
      "line_end": 25,
      "content": "Section content..."
    }
  ]
}

支持的文件格式

  • 纯文本 (.txt):直接阅读文本
  • 降价 (.md):作为纯文本处理,保留完整的markdown语法
  • 可移植文档格式 (.pdf):从PDF文档中提取文本
  • 对象符号 (.json):打印精美的JSON内容

例子

示例1:文档研究工作流程

User: "I need to find all mentions of authentication in my documentation"

Claude will:
1. Use search_documents tool with query "authentication"
2. Present all matches with file names and line numbers
3. Offer to read specific documents for more context

示例2:提取API文档

User: "Extract all API endpoints from my API.md file"

Claude will:
1. Use extract_sections with pattern "^###.*endpoint|^###.*api"
2. Return all matching sections with their content

示例3:文档概述

User: "Give me an overview of all technical documents"

Claude will:
1. Use list_documents to get all files
2. Filter for technical documentation
3. Provide summary with file sizes and last modified dates

环境变量

变量 描述 默认值
DOCUMENTS_PATH 文档目录的路径 ./documents

故障排除

常见问题

  1. 服务器未出现在Claude中:

    • 验证配置路径是绝对的,而不是相对的
    • 检查Node.js是否在您的系统PATH中
    • 配置更改后重新启动Claude Desktop
  2. 未找到文档:

    • 确保DOCUMENT_PATH设置正确
    • 检查文档目录上的文件权限
    • 验证文档是否位于目录的根目录中(而不是子目录)
  3. PDF阅读错误:

    • 某些PDF可能存在文本提取问题
    • 如果问题仍然存在,请尝试转换为文本格式

调试模式

要查看服务器日志,请执行以下操作:

node src/index.js 2> server.log

发展

项目结构

mcp-document-server/
├── src/
│   └── index.js        # Main server implementation
├── documents/          # Default documents directory
├── package.json        # Project dependencies
└── README.md          # This file

添加新功能

要添加对新文件格式的支持,请执行以下操作:

  1. 将文件扩展名添加到 getMimeType() 方法
  2. 在中添加解析逻辑 loadDocument() 方法
  3. 安装任何必要的解析库

贡献

请随时提交问题或拉取请求:

  • 新的文件格式支持
  • 附加搜索功能
  • 性能改进
  • 错误修正

许可证

[您选择的许可证]

致谢

使用Anthropic的模型上下文协议SDK构建。