mcpField
P
pdf-mcp

pdf-mcp

本地服务
github.com/jztan记忆与知识1621 天前更新

关于 pdf-mcp

pdf-mcp 是供 AI Agent 从单个 PDF 或整个文件夹检索信息的 MCP 服务。它结合关键词与语义搜索、按需读取页面、OCR,以及表格和图表数据提取。

主要功能

  1. 01关键词与语义混合搜索
  2. 02按需读取指定页面并执行 OCR
  3. 03搜索和概览 PDF 文件夹
  4. 04提取表格和图表坐标
  5. 05使用 SQLite 缓存已解析文档
  6. 06将隐藏文本标记为不可信内容

适用场景

  1. 01在长篇报告中定位相关段落
  2. 02跨多个 PDF 文档搜索
  3. 03读取扫描页面或提取表格数据

MCP 相关

它向 MCP 客户端提供 PDF 信息、搜索、读取、渲染和语料库工具。默认支持 stdio,也提供 HTTP,适用于无法启动进程的客户端或共享语料库场景。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

暂未收录安装方式

我们还没有获取到这个服务的安装包或远程地址,请按项目 README 中的说明安装。

代码仓库
安装包
pypipdf-mcp3.5.0
mcpbpdf-mcp-3.5.0.mcpb

工具

13

收录的工具列表 · 更新于 2 周前

参数类型必填说明
pathstring是PDF 文件路径(绝对路径、相对路径或 URL)
detailboolean否为 True 时,在 `text_coverage` 中包含逐页数组 (`text_chars_per_page`、`raster_images_per_page`)。默认值为 False——仅返回固定大小的 `summary`,以限制大型文档的负载大小(否则,3000 页的 PDF 仅覆盖信息就会包含约 6000 个 整数)。仅在需要 逐页字符数/图像数时启用。
content_trustboolean否为 True 时,在 响应中包含 `content_trust` 键,其中包含对隐藏文本信号的扫描结果。扫描结果会与文档元数据一同缓存,因此后续调用开销很低。`suspicious=True` 表示文档中的某些文本对人类读者不可见(例如,白底白字文本、不透明度为零的文本跨度、极小字号)。隐藏文本绝不会被删除或修改——此信息仅供参考。`detail=True` 时,该区块还会包含一个 `spans` 列表,其中列出每个文本跨度的信号详情。默认值为 False——除非显式请求,否则完全省略,以减轻常规调用的负担。

详细介绍

pdf-mcp

PyPI version Python 3.11+ License: MIT GitHub Issues CI codecov Downloads

通过单个 MCP 工具,对单个 PDF 或整个文件夹执行 Agentic RAG。

由 Agent 决定何时搜索;pdf-mcp 负责检索并返回摘录。它是一个 MCP 服务,可让 Claude Code 和其他 AI Agent 按含义或关键字搜索单个 PDF 或整个文件夹,只读取所需页面,并准确提取表格、图片和扫描文本,即使面对多栏和日文版式也能处理;预热大型语料库时还可选择使用 CUDA 加速。

mcp-name: io.github.jztan/pdf-mcp

在浏览器中试用

看看你的 AI Agent 能看到什么 →

添加任意 PDF,或包含多个 PDF 的整个文件夹,观察 Agent 如何筛查语料库、同时搜索所有文档,并只读取所需页面,仅使用一小部分 token。100% 在客户端运行,无需安装。

pdf-mcp 浏览器演示:AI Agent 预热一个包含 6 个 PDF 的语料库,对其进行筛查,搜索全部六份文档,并只读取匹配页面;语料库中有 97.3% 的内容从未进入上下文窗口

为什么选择 pdf-mcp?

不使用 pdf-mcp使用 pdf-mcp
大型 PDF上下文溢出只读取所需页面
查找内容加载所有内容混合搜索:BM25 关键字 + 语义搜索
PDF 文件夹一次处理一份文档预热、筛查并搜索整个文件夹
预热大型文件夹CPU 嵌入耗时数分钟按长度排序并以小批量进行 CPU 编码;也可使用 CUDA 嵌入,在 NVIDIA 显卡上速度快 10 到 100 倍
表格和图表在原始文本中丢失结构化行,以及矢量图表中的 (x, y) 数据
多栏和竖排版式列内容交错正确的阅读顺序,包括日文纵排
扫描版 PDF完全没有文本通过 Tesseract 进行 OCR,并行处理各页面
重复访问每次都重新解析重启后仍保留的 SQLite 缓存
隐藏或注入的文本未经提示地摄入标记为不可信,不会剥除

安装

Claude Desktop:无需预先安装
  1. 下载 pdf-mcp.mcpb。
  2. 在 Claude Desktop 中打开 Settings > Extensions,将文件拖到 该页面,然后点击 Install。
  3. 通过文件位置询问 Claude 关于 PDF 的问题,例如:“使用 pdf-mcp 总结 C:\Users\me\Downloads\report.pdf”,也可以询问整个文件夹。

首次启动时会下载 pdf-mcp 的组件(约 250 MB),可能需要几分钟;之后启动只需几秒。已包含扫描页面的 OCR 功能:遇到第一个扫描页面时,会下载仅支持英语的 Tesseract(约 14 MB)。需要 Windows 10 或更高版本,或 macOS 13 或更高版本(Apple Silicon 设备需 macOS 14),并在 Claude Desktop 的 Chat 中运行。有关更新、卸载和其他详情,请参阅 docs/clients.md。

Claude Code 和其他 MCP 客户端

需要 Python 3.11 或更高版本。使用 uv 或 pipx 安装 pdf-mcp 命令:

uv tool install pdf-mcp     # or: pipx install pdf-mcp

在虚拟环境中使用 pip install pdf-mcp 也可以;Homebrew 的 Python 以及近期版本的 Debian 和 Ubuntu 不允许全局安装 pip 软件包。

然后将其添加到客户端。Claude Code 的配置方法:

claude mcp add pdf-mcp -- pdf-mcp

对于 VS Code、Cursor、Codex CLI、Kiro 或任何其他 MCP 客户端,请参阅 docs/clients.md。然后让你的 Agent 读取 PDF。

搜索、语料库工具、表格、多栏文本和 CJK 阅读顺序开箱即用。对于非英语文档,请参阅 语言支持。扫描页面的 OCR 还需要 Tesseract:

brew install tesseract                             # macOS
sudo apt install tesseract-ocr                     # Ubuntu/Debian
winget install -e --id UB-Mannheim.TesseractOCR    # Windows

可选:在 NVIDIA 显卡上使用 CUDA 嵌入,可将大型文件夹的预热速度提升 1 到 2 个数量级;请参阅 docs/configuration.md。

从 Python 使用

pdf-mcp 的工具也是普通的 Python 函数,因此你可以导入它们,并将 PDF 交给 Anthropic SDK,而无需运行服务。两个可运行脚本,分别用于提问和处理完整文档:examples/。

为何要构建此工具,以及过程中遇到了哪些问题:Claude 的 100 页 PDF 限制及其解决方法

工具

提供 13 个专用工具,而非一个包罗万象的工具。典型流程: 使用 pdf_info 制定计划,使用 pdf_search 定位内容(其段落摘录通常 可直接回答问题),需要更多内容时使用 pdf_read_pages。对于文件夹,先用 pdf_corpus_overview 进行初筛,再用 pdf_corpus_search 搜索。

工具功能
pdf_info页数、元数据、目录摘要、扫描页面检测。首先调用。
pdf_search按页面或章节进行混合搜索(关键词 + 语义);搜索结果包含摘录、来源坐标、所属大纲章节以及表格的引导句
pdf_read_pages读取指定页面或范围,可按需执行 OCR,并读取表格和嵌入图像
pdf_read_all一次调用读取整个文档,受字节数上限限制
pdf_get_toc为含有大量书签的文档获取完整目录
pdf_render_pages将页面渲染为 PNG,供视觉模型处理:图表、手写内容、扫描件
pdf_extract_chart从绘图几何信息中读取图表数据,输出精确的 (x, y) 表格
pdf_corpus_warm在时间预算内将 PDF 文件夹预热到缓存中
pdf_corpus_overview为文件夹中的每份文档生成初筛卡片
pdf_corpus_search跨文件夹搜索;搜索结果包含文档和页面来源信息
pdf_cache_stats按文档显示缓存明细和总大小
pdf_cache_clear清除已过期或全部缓存条目
server_info当前启用的可选功能和配置

这些工具返回的文本均为从 PDF 中提取的不可信内容。 pdf_info(content_trust=True) 会报告人类读者无法看到的隐藏文本,而读取工具会按页面标记这些内容。

示例提示词:

"Read the PDF at /path/to/document.pdf"
"Which pages discuss supply chain risks?"
"Find sections about the training process"
"Show me what page 5 looks like"
"OCR pages 3-5 of the scanned PDF"

完整参考文档,涵盖每个参数和响应结构: docs/tool-reference.md。嵌入模型选择: docs/embedding-models.md。

示例工作流

针对大型文档(例如,一份 200 页的年报):

User: "Summarize the risk factors in this annual report"

Agent workflow:
1. pdf_info("report.pdf")
   → 200 pages, TOC shows "Risk Factors" on page 89

2. pdf_search("report.pdf", "risk factors")
   → Matches with structural paragraph excerpts: each excerpt
     is the bullet, paragraph, or heading that matched, not a
     fixed-width window. Often enough to answer directly.

3. If excerpts are sufficient → synthesize answer

4. If more context needed:
   pdf_read_pages("report.pdf", "89-95")
   → Full page text for deeper reading

远程 / HTTP 传输

STDIO 是默认方式,以上所有示例都使用它。pdf-mcp-http 通过 HTTP 提供相同的工具,适用于无法启动进程的客户端 (Anthropic API MCP connector、claude.ai 自定义连接器),以及多个客户端共享的 预热语料库。

export PDF_MCP_AUTH_TOKEN="$(openssl rand -hex 32)"
pdf-mcp-http

路径在服务端解析,因此 HTTP Agent 读取的是服务器上已有的内容: 允许列表根目录下的文件,或由服务器获取的 URL。它无法 传入自己机器上的文件。该服务为单租户,并采用默认拒绝策略:如果没有身份验证令牌,也没有 [paths] 允许列表,进程会退出, 而不会提供开放端点。

Docker 镜像已发布到 GHCR,支持 amd64 和 arm64,且已包含所有依赖,因此每个工具都能在首次请求时正常工作:

./deploy.sh              # token, image, start, health-check
cp your.pdf documents/   # this folder is the server's /data/pdfs

部署前,请阅读 docs/remote-access.md,了解信任边界 和威胁模型;有关设置、客户端配置和令牌轮换,请参阅 docs/configuration.md。

配置

pdf-mcp 开箱即用。若要限制服务可访问的路径和 URL 主机,调整缓存和工作线程设置,或添加自己的 内容信任短语,请参阅 docs/configuration.md。

路线图

请参阅 ROADMAP.md,了解计划中的功能和发布历史。

贡献

欢迎贡献。有关设置、检查、一致性评估框架和质量迭代指南,请参阅 docs/contributing.md。

贡献者

感谢所有通过代码、评审、测试和功能请求帮助改进此项目的人:

@Summer907 · @ebbsanchez · @VooDisss · @DerDennisOP · @deepdmk · @TheSOV · @janLo · @bbulkow · @HillsCloud · @phinnphace

贡献者

每个版本的贡献者鸣谢名单列于 Changelog。

安全

发现漏洞?请参阅 SECURITY.md,了解威胁模型、报告渠道和预期响应时间。请勿针对尚未修复的安全问题创建公开 GitHub issue。

许可证

MIT。请参阅 LICENSE。

链接

博客文章

版本背后的故事。 构建 pdf-mcp 总让我不断遇到意外:结果不如预期的基准测试、导致一切出问题的格式,以及不得不移除的功能。我会在 The Dispatch 中记录这些思考。如果你也对此感兴趣,欢迎关注。

构建 pdf-mcp 的背景、基准测试和设计笔记:

入门

语料库与多文档搜索

  • 知识库不过是一个文件夹:使用语料库工具将一个 PDF 文件夹转变为 Agent 知识库,无需摄取流程或向量存储
  • 无需向量数据库,为 AI Agent 实现跨文档检索:为什么 BM25 分数无法在各文档索引间合并,而排名可以;以及两阶段 RRF 如何在包含 100 个 PDF 的语料库中,对 184 个经过评分的查询,有 84.8% 能将目标文档排入前 3 名
  • Amazon Bedrock 如何帮助我改进 RAG:在相同的 2,000 个令牌预算下,以 4 美分的成本将 pdf_corpus_search 与 Bedrock Knowledge Bases 进行基准测试,发现了自行测试 8 个月都未注意到的两个 bug:摘录选择器丢弃了已检索页面中的答案;每页只生成一个嵌入,导致短答案被隐藏

搜索与检索

工程与安全

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。