项目简介

'document-reader-mcp' 是一个强大的MCP服务器,它能够从各种文档格式中提取纯文本内容,或将它们转换为Markdown格式。无论是处理 PDF、DOCX 还是 XLSX 文件,它都能简化文本获取和文档转换的流程,并将这些能力以标准化的方式提供给LLM客户端。

主要功能点

  • 多格式文本提取: 支持从 PDF, DOCX, XLSX, CSV, TXT, JSON, Markdown 等多种文档中提取纯文本内容。
  • 文本流式传输: 提供流式传输文本内容的能力,适用于处理大型文档,避免一次性加载过多内容。
  • Markdown 格式转换: 将支持的文档格式(包括 PDF、DOCX、XLSX、CSV 等)转换为 Markdown 文件,同时能提取并保存文档中的图片。
  • 可配置的输出限制: 提取文本时,支持配置最大页面数(PDF)或最大行数(表格文件),以及整体输出字符上限,以防止上下文溢出。
  • 速率限制: 内置简单的速率限制机制,防止滥用。

安装步骤

  1. 安装 Python: 确保您的系统已安装 Python 3.10 或更高版本。
  2. 安装服务器: 打开终端或命令行,运行以下命令安装此MCP服务器及其所有依赖:
    pip install document-reader-mcp
  3. 可选依赖 (PyMuPDF): 如果需要从PDF中提取图片,您可能需要额外安装 PyMuPDF:
    pip install pymupdf

服务器配置 (用于MCP客户端)

以下是一个示例 JSON 配置,用于 MCP 客户端连接此服务器。请将此配置添加到您的 MCP 客户端的服务器列表中。此配置包含了服务器的启动信息及其提供的工具描述,LLM客户端将根据这些描述来理解和调用服务器功能。

{
  "server_name": "document-reader-mcp",
  "description": "通用文档文本提取和Markdown转换MCP服务器",
  "command": ["python", "-m", "server.main"],
  "args": [],
  "capabilities": {
    "tools": [
      {
        "name": "extract_text_from_file",
        "description": "从本地文档文件中提取纯文本内容。支持PDF、Excel、Word、CSV、TXT、JSON、Markdown等格式。",
        "parameters": {
          "type": "object",
          "properties": {
            "path": {
              "type": "string",
              "description": "本地机器上的绝对或相对文件路径。"
            },
            "max_pages": {
              "type": ["integer", "null"],
              "description": "对于PDF文件,只解析前N页。未指定时默认为50页。设置为0禁用页面限制(不推荐用于大文件)。"
            },
            "max_rows": {
              "type": ["integer", "null"],
              "description": "对于电子表格和CSV,解析所有工作表中的N行数据。未指定时默认为500行。设置为0禁用行限制(不推荐用于大文件)。"
            }
          },
          "required": ["path"]
        }
      },
      {
        "name": "extract_text_from_file_stream",
        "description": "从本地文档文件中流式传输纯文本块。支持PDF、Excel、Word、CSV、TXT、JSON、Markdown等格式。",
        "parameters": {
          "type": "object",
          "properties": {
            "path": {
              "type": "string",
              "description": "本地机器上的绝对或相对文件路径。"
            },
            "max_pages": {
              "type": ["integer", "null"],
              "description": "对于PDF文件,只解析前N页。未指定时默认为50页。设置为0禁用页面限制(不推荐用于大文件)。"
            },
            "max_rows": {
              "type": ["integer", "null"],
              "description": "对于电子表格和CSV,解析所有工作表中的N行数据。未指定时默认为500行。设置为0禁用行限制(不推荐用于大文件)。"
            },
            "chunk_size": {
              "type": "integer",
              "description": "每个流式传输块的大致最大字符数。实际块大小可能略有不同。默认为4096。",
              "default": 4096
            }
          },
          "required": ["path"]
        }
      },
      {
        "name": "convert_to_markdown",
        "description": "将各种文档格式转换为Markdown,并在适用时提取图像。此工具将转换整个文档并保存到文件,不进行截断。",
        "parameters": {
          "type": "object",
          "properties": {
            "path": {
              "type": "string",
              "description": "要转换的文件的绝对或相对路径。"
            },
            "output_dir": {
              "type": ["string", "null"],
              "description": "保存Markdown文件和图像的目录。如果未指定,则保存到源文件所在的目录。"
            },
            "output_filename": {
              "type": ["string", "null"],
              "description": "输出Markdown文件的名称(不带扩展名)。如果未指定,则使用源文件名加.md扩展名。"
            }
          },
          "required": ["path"]
        }
      }
    ]
  }
}

基本使用方法

安装完成后,可以通过运行 'python -m server.main' 命令来启动此MCP服务器。一旦服务器启动,您的MCP客户端就可以连接并利用其提供的工具。 例如,LLM客户端可以通过JSON-RPC协议调用 'extract_text_from_file' 工具,传入一个文件路径,服务器将执行文档文本提取操作并返回结果。 示例 (LLM客户端调用 'extract_text_from_file'): 用户可能会向LLM提问:“请从 '/path/to/my_report.pdf' 文件中提取前10页的文本。” LLM客户端接收到这个请求后,会识别需要调用 'document-reader-mcp' 服务器上的 'extract_text_from_file' 工具。它会生成并发送一个JSON-RPC请求到此MCP服务器,请求的参数为 '{"path": "/path/to/my_report.pdf", "max_pages": 10}'。服务器执行该操作后,会将提取到的文本内容作为JSON-RPC响应返回给LLM客户端。

信息

分类

开发者工具