生产就绪的AI代理PDF处理服务器
5-10倍更快的并行处理 • 基于Y坐标的排序 • 超过94%的测试覆盖率 • 103个通过的测试
<a href="https://mseep.ai/app/SylphxAI-pdf-reader-mcp"> <img src="https://mseep.net/pr/SylphxAI-pdf-reader-mcp-badge.png" alt="安全验证" width="200"/> </a> </div>PDF Reader MCP 是一个生产就绪的模型上下文协议服务器,它赋予AI代理企业级的PDF处理能力。提取文本、图像和元数据时具有无与伦比的性能和可靠性。
问题:
// 传统的PDF处理
- 顺序页面处理(慢)
- 没有自然的内容排序
- 复杂路径处理
- 错误隔离差
解决方案:
// PDF Reader MCP
- 5-10倍更快的并行处理 ⚡
- 基于Y坐标的排序 📐
- 灵活的路径支持(绝对/相对) 🎯
- 单页错误恢复 🛡️
- 超过94%的测试覆盖率 ✅
结果:可扩展的生产就绪PDF处理。
来自生产测试的真实世界性能:
| 操作 | 每秒操作数 | 性能 | 使用案例 |
|---|---|---|---|
| 错误处理 | 12,933 | ⚡⚡⚡⚡⚡ | 验证与安全性 |
| 提取全文 | 5,575 | ⚡⚡⚡⚡ | 文档分析 |
| 提取页面 | 5,329 | ⚡⚡⚡⚡ | 单页操作 |
| 多个页面 | 5,242 | ⚡⚡⚡⚡ | 批量处理 |
| 仅元数据 | 4,912 | ⚡⚡⚡ | 快速检查 |
| 文档 | 顺序 | 并行 | 加速 |
|---|---|---|---|
| 10页PDF | ~2秒 | ~0.3秒 | 5-8倍更快 |
| 50页PDF | ~10秒 | ~1秒 | 10倍更快 |
| 100+页 | ~20秒 | ~2秒 | 线性扩展 随CPU核心数量增加 |
基准测试根据PDF复杂度和系统资源有所不同。
# 快速开始 - 零安装
npx @sylphx/pdf-reader-mcp
# 使用pnpm(推荐)
pnpm add @sylphx/pdf-reader-mcp
# 使用npm
npm install @sylphx/pdf-reader-mcp
# 使用yarn
yarn add @sylphx/pdf-reader-mcp
# 对于Claude Desktop(最简单)
npx -y @smithery/cli install @sylphx/pdf-reader-mcp --client claude
添加到您的MCP客户端(claude_desktop_config.json,Cursor,Cline):
{
"mcpServers": {
"pdf-reader-mcp": {
"command": "npx",
"args": ["@sylphx/pdf-reader-mcp"]
}
}
}
{
"sources": [{
"path": "documents/report.pdf"
}],
"include_full_text": true,
"include_metadata": true,
"include_page_count": true
}
结果:
{
"sources": [{
"path": "documents/manual.pdf",
"pages": "1-5,10,15-20"
}],
"include_full_text": true
}
// Windows - 两种格式都有效!
{
"sources": [{
"path": "C:\\Users\\John\\Documents\\report.pdf"
}],
"include_full_text": true
}
// Unix/Mac
{
"sources": [{
"path": "/home/user/documents/contract.pdf"
}],
"include_full_text": true
}
不再有 "绝对路径不允许" 错误!
{
"sources": [{
"path": "presentation.pdf",
"pages": [1, 2, 3]
}],
"include_images": true,
"include_full_text": true
}
响应包括:
{
"sources": [
{ "path": "C:\\Reports\\Q1.pdf", "pages": "1-10" },
{ "path": "/home/user/Q2.pdf", "pages": "1-10" },
{ "url": "https://example.com/Q3.pdf" }
],
"include_full_text": true
}
⚡ 所有PDF文件自动并行处理!
// ✅ Windows
{ "path": "C:\\Users\\John\\Documents\\report.pdf" }
{ "path": "C:/Users/John/Documents/report.pdf" }
// ✅ Unix/Mac
{ "path": "/home/john/documents/report.pdf" }
{ "path": "/Users/john/Documents/report.pdf" }
// ✅ 相对路径(仍然有效)
{ "path": "documents/report.pdf" }
其他改进:
v1.2.0 - 内容排序
v1.1.0 - 图像提取及性能
read_pdf 工具处理所有PDF操作的单一工具。
| 参数 | 类型 | 描述 | 默认值 |
|---|---|---|---|
sources | 数组 | 要处理的PDF来源列表 | 必需 |
include_full_text | 布尔值 | 提取全文内容 | false |
include_metadata | 布尔值 | 提取PDF元数据 | true |
include_page_count | 布尔值 | 包含总页数 | true |
include_images | 布尔值 | 提取嵌入图像 | false |
{
path?: string; // 本地文件路径(绝对或相对)
url?: string; // PDF的HTTP/HTTPS URL
pages?: string | number[]; // 要提取的页面:“1-5,10”或[1,2,3]
}
仅元数据(快速):
{
"sources": [{ "path": "large.pdf" }],
"include_metadata": true,
"include_page_count": true,
"include_full_text": false
}
从URL:
{
"sources": [{
"url": "https://arxiv.org/pdf/2301.00001.pdf"
}],
"include_full_text": true
}
页面范围:
{
"sources": [{
"path": "manual.pdf",
"pages": "1-5,10-15,20" // 页面1,2,3,4,5,10,11,12,13,14,15,20
}]
}
内容按照自然阅读顺序基于Y坐标返回:
文档布局:
┌─────────────────────┐
│ [标题] Y:100 │
│ [图像] Y:150 │
│ [文本] Y:400 │
│ [照片A] Y:500 │
│ [照片B] Y:550 │
└─────────────────────┘
响应顺序:
[
{ type: "text", text: "标题..." },
{ type: "image", data: "..." },
{ type: "text", text: "..." },
{ type: "image", data: "..." },
{ type: "image", data: "..." }
]
优点:
启用提取:
{
"sources": [{ "path": "manual.pdf" }],
"include_images": true
}
响应格式:
{
"images": [{
"page": 1,
"index": 0,
"width": 1920,
"height": 1080,
"format": "rgb",
"data": "base64-encoded-png..."
}]
}
支持格式: RGB,RGBA,灰度 自动检测: JPEG,PNG和其他嵌入格式
</details> <details> <summary><strong>📂 路径配置</strong></summary> <br/>绝对路径(v1.3.0+) - 直接文件访问:
{ "path": "C:\\Users\\John\\file.pdf" }
{ "path": "/home/user/file.pdf" }
相对路径 - 工作区文件:
{ "path": "docs/report.pdf" }
{ "path": "./2024/Q1.pdf" }
配置工作目录:
{
"mcpServers": {
"pdf-reader-mcp": {
"command": "npx",
"args": ["@sylphx/pdf-reader-mcp"],
"cwd": "/path/to/documents"
}
}
}
</details>
<details>
<summary><strong>📊 大PDF策略</strong></summary>
<br/>
策略1:页面范围
{ "sources": [{ "path": "big.pdf", "pages": "1-20" }] }
策略2:渐进加载
// 步骤1:获取页数
{ "sources": [{ "path": "big.pdf" }], "include_full_text": false }
// 步骤2:提取部分
{ "sources": [{ "path": "big.pdf", "pages": "50-75" }] }
策略3:并行批处理
{
"sources": [
{ "path": "big.pdf", "pages": "1-50" },
{ "path": "big.pdf", "pages": "51-100" }
]
}
</details>
解决方案: 升级到v1.3.0+
npm update @sylphx/pdf-reader-mcp
完全重启您的MCP客户端。
原因:
解决方案:
使用绝对路径:
{ "path": "C:\\Full\\Path\\file.pdf" }
或者配置cwd:
{
"pdf-reader-mcp": {
"command": "npx",
"args": ["@sylphx/pdf-reader-mcp"],
"cwd": "/path/to/docs"
}
}
解决方案:
npm cache clean --force
rm -rf node_modules package-lock.json
npm install @sylphx/pdf-reader-mcp@latest
完全重启MCP客户端。
| 组件 | 技术 |
|---|---|
| 运行时 | Node.js 22+ ESM |
| PDF引擎 | PDF.js (Mozilla) |
| 验证 | Zod + JSON Schema |
| 协议 | MCP SDK |
| 语言 | TypeScript (严格) |
| 测试 | Vitest (103个测试) |
| 质量 | Biome (50倍更快) |
| 持续集成/交付 | GitHub Actions |
any类型,启用严格模式