关于 One MCP, many parsers
parse-mcp 是文档解析 MCP 服务,可在 markitdown、Docling 和 LlamaParse 之间路由文件与 URL。它还可将解析结果保存为笔记、按检索需求分块,或交给 Claude 解读。
主要功能
- 01在三个后端之间路由解析
- 02失败或结果为空时回退
- 03将解析结果保存为 Vault 笔记
- 04用 Claude 解读解析文本
- 05按文档类型切分文本
- 06比较后端输出与耗时
适用场景
- 01将扫描版 PDF 转由 Docling 处理
- 02把文档转换为 Markdown 笔记
- 03为检索准备文档文本分块
- 04用同一输入比较不同解析器
MCP 相关
它向 MCP 客户端提供解析、转换、解读、分块和诊断工具。路由器会选择或切换可选后端,并跳过不可用的后端。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
我们还没有获取到这个服务的安装包或远程地址,请按项目 README 中的说明安装。
工具
本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。
详细介绍
parse-mcp
一个 MCP,支持多种解析器。默认使用 markitdown(免费、快速、MIT)。当 markitdown 的质量不够时,可升级为 Docling(适合表格较多的文档和扫描版 PDF)或 LlamaParse(云端、BYOK)。此外,还提供一个 interpret 工具,可将解析后的 Markdown 传给 Claude 来执行“总结/提取 X”等操作,让你不再需要在解析器和 anthropic 技能之间来回切换。
安装
打开 Claude Code,然后粘贴:
/plugin marketplace add adelaidasofia/parse-mcp
/plugin install parse-mcp@parse-mcp
旧版安装
手动安装(适用于插件市场推出之前)。完整详情请参阅 SETUP.md。
pip3 install --break-system-packages -r requirements.txt
pip3 install --break-system-packages 'markitdown[pdf,docx,pptx,xlsx]'
然后在客户端的 .mcp.json 中注册该服务:
{
"mcpServers": {
"parse": {
"command": "python3",
"args": ["/absolute/path/to/parse-mcp/server.py"]
}
}
}
工具
| 工具 | 功能 |
|---|---|
parse(source, backend?, hints?) | 将文件路径或 http(s) URL 转换为 Markdown。路由器会选择后端,在结果为空或出错时进行回退。返回 Markdown,以及所有已尝试后端构成的链。 |
parse_url(url, backend?) | 处理 HTTP(S) 输入的快捷方式。返回格式与 parse 相同。 |
parse_to_vault(source, vault_folder?, backend?, overwrite?) | 解析内容,并将结果作为 Markdown 笔记写入知识库。默认文件夹:<VAULT_ROOT>/📥 Inbox/Converted/。Frontmatter 会记录 source、format、backend、latency、bytes_in。取代独立的 markitdown_to_vault.py shell 脚本。 |
interpret(source, instruction, backend?, model?, max_tokens?) | 先解析,再让 Claude 根据解析后的 Markdown 作答。命中缓存时会复用已解析文本,不消耗输入 token。 |
list_backends() | 列出已安装和缺失的后端。用于诊断。 |
benchmark(source) | 使用每个可用后端处理相同输入,并排对比延迟和输出。 |
chunk_text(text, doc_type?, target_tokens?, max_tokens?, min_tokens?) | 使用感知文档类型的分块器,将解析后的 Markdown 切分为适合检索的片段。doc_type="auto"(默认)会进行结构检测,并从 paper / book / manual / qa / resume / table / default 中选择一种类型。每种分块器都会遵循文档结构(例如,paper 会保留完整摘要;manual 不会跨编号章节合并;qa 会将每个问题与其答案配对)。返回分块结果和解析出的 doc_type。请参阅 chunkers/ 包。 |
detect_doc_type(text) | 用于诊断。对 Markdown 进行结构启发式检测,并返回 chunk_text 会选择的 doc_type。 |
后端(按优先级排序)
- markitdown(默认,MIT,基础安装)。支持 PDF、DOCX、PPTX、XLSX、HTML、CSV、JSON、XML、EPub、ZIP。快速且结果确定。
- docling(可选,
pip install docling)。适合复杂表格(基准测试成绩为 97.9%)和扫描版 PDF。首次运行时会下载模型权重。 - llamaparse(可选,BYOK,需运行
pip install llama-cloud-services并设置LLAMA_CLOUD_API_KEY)。云端服务,对视觉结构复杂的 PDF 输出效果最佳。
路由策略
- 不带
backend参数调用parse(source):路由器根据文件格式选择后端;如果后端出错或返回空结果,则回退。 - 调用
parse(source, backend="docling"):强制使用指定后端,不回退。诊断模式。 - 不可用的后端会被跳过(并记录在链路日志中),不会报错。
解析保真度评估
上面的路由表过去只是猜测。tests/eval/ 将其转化为数据:一个合成样例语料库(包含 16 份文档,涵盖数字 PDF、扫描版/纯图像 PDF、表格密集型、多栏布局和栅格图像类别),并附有推导得出的基准 Markdown;通过三项 OmniDocBench / PubTabNet 指标,将每个后端的输出与其进行评分——文本编辑距离、表格 TEDS(树编辑距离相似度)和阅读顺序。所有分数表示质量,范围为 [0, 1],越高越好。
主要结果(完整表格:tests/eval/parse_fidelity_matrix.md):
| 文档类别 | markitdown(文本) | docling(文本) |
|---|---|---|
| digital_pdf | 0.95 | 0.97 |
| table_heavy | 0.93 | 0.89 |
| scanned_pdf | 0.00 | 0.87 |
| image | 0.00 | 0.90 |
| multicolumn | 0.35 | 1.00 |
markitdown 擅长处理干净的数字文本和数字表格(免费、快速、结果确定),但不具备 OCR——在扫描版 PDF 和图像上的得分为零——而且会打乱多栏布局。docling 凭借 OCR 和布局分析,在所有类别中都表现更好,但需要下载模型权重。这就是格式优先链的依据(图像/扫描件/多栏文档优先升级到 docling)。
运行:
pip install docling # the escalation backend under test
python tests/eval/generate_fixtures.py # rebuild the corpus (needs fpdf2 + Pillow)
make eval # -> parse_fidelity_matrix.{md,json}
该矩阵会记录其来源信息(后端 + Python 版本 + 样例集哈希),因此可以发现过时结果——每当升级或重新调整解析后端时,使用 make eval 重新生成。矩阵还会报告各后端的延迟中位数(成本维度):保真度最高的后端(docling)比默认后端慢得多,因此路由器会升级到它,而不是默认使用它。
评分器的指标测试仅使用纯 Python,不依赖后端,因此 CI 中的 pytest tests/ 只需安装基础版本(markitdown)即可运行。如果路由回归导致“markitdown 不具备 OCR”这一假设被破坏,构建就会失败。
架构
FastMCP v3.2.3+,stdio 传输,Python 3.13+。在 [VAULT_ROOT]/.mcp.json 中注册。默认不运行守护进程、不启动监听器,也不下载模型权重。
安装和各后端的选择性启用方式请参阅 SETUP.md。
相关 MCP
同一作者,采用相同的架构模式(FastMCP、写入操作采用草稿 + 确认、适用时自动导出到知识库):
- slack-mcp — 多工作区 Slack
- imessage-mcp — macOS iMessage
- whatsapp-mcp — 通过 whatsmeow 使用 WhatsApp
- apollo-mcp — Apollo.io CRM + 序列
- google-workspace-mcp — Gmail / Calendar / Drive / Docs / Sheets
- substack-mcp — Substack 写作 + 分析
遥测
此插件会在某台设备上的 Claude Code 会话中首次加载时,向 myceliumai.co 发送一次匿名安装信号。
发送内容:
- 插件名称(例如
slack-mcp) - 插件版本(例如
0.1.0)
不会发送的内容:
- 不发送用户标识符、姓名、电子邮件、令牌或 API 密钥
- 不发送文件路径、消息内容或任何工作相关内容
- 去重处理后不保存 IP 地址
原因: 帮助维护者了解大家实际安装了哪些插件,以便将精力投入到有人使用的插件上。
选择退出: 启动 Claude Code 前设置环境变量 MYCELIUM_NO_PING=1。此钩子将完全跳过网络调用。已发送过信号的安装会在 ~/.mycelium/onboarded-<plugin> 留下一个标记文件——如果要重置状态,请将其删除。
许可证
MIT。请参阅 LICENSE。
完整安装或团队版本请访问 diazroa.com。
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。