mcpField
P
PDF Reader

PDF Reader

本地服务
github.com/Xvvln生产力120 周前更新

关于 PDF Reader

PDF Reader 是面向 MCP 客户端的 PDF 读取与分析服务,可提取文本、页面图像、表格、链接、批注和元数据。还提供页面搜索、统计及文本相似度比较。

主要功能

  1. 01提取文本与页面图像
  2. 02读取目录、链接和批注
  3. 03检测表格并提取图片
  4. 04搜索文本并查看上下文
  5. 05获取元数据与文本统计
  6. 06比较页面文本相似度

适用场景

  1. 01检索报告中的指定内容
  2. 02检查 PDF 页面与文档属性
  3. 03提取表格、图片和链接
  4. 04比较两页文本差异

MCP 相关

作为 MCP 服务向兼容客户端提供 PDF 读取与分析工具,包括文本、图像、表格、链接、批注和元数据提取。

配置

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

mcp.json · 通用配置
{
"mcpServers": {
"xvvln-pdf-reader": {
"command": "uvx",
"args": [
"pdf-insight-mcp"
]
}
}
}
启动命令uvx pdf-insight-mcp

本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
pypipdf-insight-mcp0.2.1

工具

还没有获取到工具列表

本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。

详细介绍

pdf-reader-mcp

一个用于读取和分析 PDF 文件的 MCP 服务。它可以为支持 MCP(Model Context Protocol)的客户端提供 PDF 文本、页面图片、表格、链接、批注、目录、元数据和基础文本统计。

一个专注于 PDF 的 MCP 服务,用于从 PDF 文件中提取文本、渲染页面、表格、链接、批注、目录、元数据和文本统计信息。

包名称

  • GitHub 仓库:pdf-reader-mcp
  • MCP Registry 名称:io.github.Xvvln/pdf-reader-mcp
  • PyPI 包:pdf-insight-mcp
  • CLI 命令:pdf-reader-mcp 和 pdf-insight-mcp

pdf-reader-mcp 是项目名称。由于 PyPI 上的 pdf-reader-mcp 包名称不可用,因此该项目以 pdf-insight-mcp 的名称发布到 PyPI。

功能

工具功能说明
get_pdf_info读取文档元数据、页数、文件大小和加密状态。
read_pdf_as_text从选定页面提取文本,并限制页面数和字符数。
read_pdf_as_images将选定页面渲染为 Base64 编码的图片。
get_pdf_outline读取书签和目录条目。
search_pdf_text搜索文本并返回每个匹配项所在页面的上下文。
extract_pdf_tables在 PyMuPDF 能够检测到结构化表格时提取这些表格。
extract_pdf_images提取嵌入的 PDF 图片。
get_pdf_page_info检查单个页面的大小、文本、图片、链接和旋转角度。
extract_pdf_links提取外部 URL 和内部页面跳转链接。
get_pdf_annotations读取批注、高亮和批注元数据。
get_pdf_text_stats计算文本、行、段落和扫描件可能性统计信息。
compare_pdf_pages比较两个页面之间的文本相似度。

快速开始

如果尚未安装 uv,请先安装:

curl -LsSf https://astral.sh/uv/install.sh | sh

直接从 PyPI 运行服务:

uvx pdf-insight-mcp

或者先安装:

python -m pip install pdf-insight-mcp
pdf-reader-mcp

MCP 客户端配置

使用已发布到 PyPI 的包:

{
  "mcpServers": {
    "pdf-reader": {
      "command": "uvx",
      "args": ["pdf-insight-mcp"]
    }
  }
}

开发时使用本地检出版本:

{
  "mcpServers": {
    "pdf-reader": {
      "command": "uv",
      "args": [
        "--directory",
        "/absolute/path/to/pdf-reader-mcp",
        "run",
        "pdf-reader-mcp"
      ]
    }
  }
}

将 /absolute/path/to/pdf-reader-mcp 替换为此仓库在你计算机上的绝对路径。

常见用法

让 MCP 客户端使用 PDF 的绝对路径调用工具。请求示例:

Read /Users/me/Documents/report.pdf as text.
Search /Users/me/Documents/report.pdf for "baseline characteristics".
Render pages 1-3 of /Users/me/Documents/report.pdf as images.
Extract links and annotations from /Users/me/Documents/review.pdf.

对于大型 PDF,请先使用较小的页面范围。对于扫描件或对版式敏感的 PDF,请使用 read_pdf_as_images,并指定较小的 pages 范围和适中的 dpi。

限制和行为

  • read_pdf_as_text 默认最多处理 50 页,并返回最多 200000 个字符。
  • read_pdf_as_images 会拒绝超过 20 页的请求。
  • read_pdf_as_images 默认将图片总负载限制在约 20 MB。
  • extract_pdf_images 最多返回 20 张嵌入的图片,但会报告实际检测到的总数。
  • 除非加密 PDF 无需密码即可访问,否则会拒绝处理。
  • 扫描版 PDF 可能几乎没有或完全没有可提取的文本。必要时,请在本服务之外使用图片渲染或 OCR。

开发

安装依赖:

uv sync --extra dev

运行测试:

uv run pytest -q

构建包:

uv build
uvx twine check dist/*

运行本地服务:

uv run pdf-reader-mcp

发布

通过 GitHub Actions 发布版本。

首次发布前,请使用以下信息配置 PyPI Trusted Publishing:

PyPI project name: pdf-insight-mcp
Owner: Xvvln
Repository name: pdf-reader-mcp
Workflow filename: publish.yml
Environment name: leave empty

然后,在 pyproject.toml 和 server.json 中更新版本,提交更改并推送版本标签以发布:

git tag vX.Y.Z
git push origin main --tags

Publish 工作流会运行测试、构建 Python 包、发布到 PyPI、使用 GitHub OIDC 向 MCP Registry 进行身份验证,并发布 server.json。

技术栈

  • Python 3.10+
  • MCP Python SDK
  • PyMuPDF
  • uv
  • pytest

许可证

MIT

评论

支持 Markdown

第一次接触 MCP?

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

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