项目简介
'document-reader-mcp' 是一个强大的MCP服务器,它能够从各种文档格式中提取纯文本内容,或将它们转换为Markdown格式。无论是处理 PDF、DOCX 还是 XLSX 文件,它都能简化文本获取和文档转换的流程,并将这些能力以标准化的方式提供给LLM客户端。
主要功能点
- 多格式文本提取: 支持从 PDF, DOCX, XLSX, CSV, TXT, JSON, Markdown 等多种文档中提取纯文本内容。
- 文本流式传输: 提供流式传输文本内容的能力,适用于处理大型文档,避免一次性加载过多内容。
- Markdown 格式转换: 将支持的文档格式(包括 PDF、DOCX、XLSX、CSV 等)转换为 Markdown 文件,同时能提取并保存文档中的图片。
- 可配置的输出限制: 提取文本时,支持配置最大页面数(PDF)或最大行数(表格文件),以及整体输出字符上限,以防止上下文溢出。
- 速率限制: 内置简单的速率限制机制,防止滥用。
安装步骤
- 安装 Python: 确保您的系统已安装 Python 3.10 或更高版本。
- 安装服务器: 打开终端或命令行,运行以下命令安装此MCP服务器及其所有依赖:
pip install document-reader-mcp - 可选依赖 (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客户端。
信息
分类
开发者工具