
PDF Reader MCP Server
赋能 AI 代理安全地读取和提取项目上下文中 PDF 文件的信息(文本、元数据、页数),使用灵活的 MCP 工具。
README
PDF Reader MCP Server (@sylphlab/pdf-reader-mcp)
使用单个灵活的工具,使您的 AI 代理(如 Cline)能够在您的项目上下文中安全地读取 PDF 文件并提取信息(文本、元数据、页数)。
安装
使用 npm (推荐)
在您的 MCP 主机环境或项目中安装为依赖项:
pnpm add @sylphlab/pdf-reader-mcp # Or npm install / yarn add
配置您的 MCP 主机(例如,mcp_settings.json
)以使用 npx
:
{
"mcpServers": {
"pdf-reader-mcp": {
"command": "npx",
"args": ["@sylphlab/pdf-reader-mcp"],
"name": "PDF Reader (npx)"
}
}
}
(确保主机为目标项目设置正确的 cwd
)
使用 Docker
拉取镜像:
docker pull sylphlab/pdf-reader-mcp:latest
配置您的 MCP 主机以运行容器,将您的项目目录挂载到 /app
:
{
"mcpServers": {
"pdf-reader-mcp": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"-v",
"/path/to/your/project:/app", // Or use "$PWD:/app", "%CD%:/app", etc.
"sylphlab/pdf-reader-mcp:latest"
],
"name": "PDF Reader (Docker)"
}
}
}
本地构建(用于开发)
- 克隆:
git clone https://github.com/sylphlab/pdf-reader-mcp.git
- 安装:
cd pdf-reader-mcp && pnpm install
- 构建:
pnpm run build
- 配置 MCP 主机:
(确保主机为目标项目设置正确的{ "mcpServers": { "pdf-reader-mcp": { "command": "node", "args": ["/path/to/cloned/repo/pdf-reader-mcp/build/index.js"], "name": "PDF Reader (Local Build)" } } }
cwd
)
快速开始
假设服务器正在运行并在您的 MCP 主机中配置:
MCP 请求(从本地 PDF 获取元数据和第 2 页文本):
{
"tool_name": "read_pdf",
"arguments": {
"sources": [
{
"path": "./documents/my_report.pdf",
"pages": [2]
}
],
"include_metadata": true,
"include_page_count": false, // 默认为 true,此处显式设置为 false
"include_full_text": false // 由于指定了 'pages',因此被忽略
}
}
预期响应片段:
{
"results": [
{
"source": "./documents/my_report.pdf",
"success": true,
"data": {
"page_texts": [
{ "page": 2, "text": "Text content from page 2..." }
],
"info": { ... },
"metadata": { ... }
// 未包含 num_pages,因为已请求
}
}
]
}
为什么选择这个项目?
- 🛡️ 安全: 将文件访问严格限制在项目根目录中。
- 🌐 灵活: 处理本地相对路径和公共 URL。
- 🧩 整合: 单个
read_pdf
工具满足多种提取需求(全文、特定页面、元数据、页数)。 - ⚙️ 结构化输出: 以可预测的 JSON 格式返回数据,易于代理解析。
- 🚀 易于集成: 专为通过
npx
或 Docker 在 MCP 环境中无缝使用而设计。 - ✅ 健壮: 使用
pdfjs-dist
进行可靠的解析,并使用 Zod 进行输入验证。
性能优势
使用 Vitest 在示例 PDF 上进行的初始基准测试显示了对各种操作的有效处理:
场景 | 每秒操作数 (hz) | 相对速度 |
---|---|---|
处理不存在的文件 | ~12,933 | 最快 |
获取全文 | ~5,575 | |
获取特定页面(第 1 页) | ~5,329 | |
获取特定页面(第 1 页和第 2 页) | ~5,242 | |
获取元数据和页数 | ~4,912 | 最慢 |
(更高的 hz 表示更好的性能。结果可能因 PDF 的复杂性和环境而异。)
有关更多详细信息和未来计划,请参阅 性能文档。
特性
- 读取 PDF 文件的全文内容。
- 读取特定页面或页面范围的文本内容。
- 读取 PDF 元数据(作者、标题、创建日期等)。
- 获取 PDF 的总页数。
- 在单个请求中处理多个 PDF 源(本地路径或 URL)。
- 在定义的项目根目录下安全运行。
- 通过 MCP 提供结构化的 JSON 输出。
- 可通过 npm 和 Docker Hub 获得。
设计理念
该服务器通过上下文限制来优先考虑安全性,通过结构化数据传输来优先考虑效率,并通过简单性来优先考虑易于集成到 AI 代理工作流程中。 它的目标是最小化依赖项,依赖于强大的 pdfjs-dist
库。
请参阅完整的 设计理念 文档。
与其他解决方案的比较
与直接文件访问(通常不可行)或通用文件系统工具相比,此服务器提供 PDF 特定的解析功能。 与外部 CLI 工具(例如,pdftotext
)不同,它提供了一个安全的、集成的 MCP 接口,具有结构化的输出,从而提高了 AI 代理的可靠性和易用性。
请参阅完整的 比较 文档。
未来计划(路线图)
- 文档:
- 完成所有文档部分(指南、API、设计、比较)。
- 解决 TypeDoc 问题并生成 API 文档。
- 添加更多示例和高级用法模式。
- 为文档站点实施 PWA 支持和移动优化。
- 向文档站点添加分享按钮和增长指标。
- 基准测试:
- 使用各种 PDF 文件(大小、复杂性)进行全面的基准测试。
- 测量内存使用情况。
- 比较 URL 与本地文件性能。
- 核心功能:
- 探索针对非常大的 PDF 文件的潜在优化。
- 调查提取图像或注释的选项(长期)。
- 测试:
- 在可行的情况下,将测试覆盖率提高到接近 100%。
- 一旦可行,添加运行时测试。
文档
有关详细用法、API 参考和指南,请访问 完整文档网站(部署后更新链接)。
社区与支持
- 发现错误或有功能请求? 请在 GitHub Issues 上打开一个 issue。
- 想要贡献? 我们欢迎贡献! 请参阅 CONTRIBUTING.md。
- Star & Watch: 如果您发现此项目有用,请考虑在 GitHub 上 star ⭐ 和 watch 👀 该存储库,以表示您的支持并保持更新!
许可证
该项目已获得 MIT 许可证 的许可。
推荐服务器

Baidu Map
百度地图核心API现已全面兼容MCP协议,是国内首家兼容MCP协议的地图服务商。
Playwright MCP Server
一个模型上下文协议服务器,它使大型语言模型能够通过结构化的可访问性快照与网页进行交互,而无需视觉模型或屏幕截图。
Magic Component Platform (MCP)
一个由人工智能驱动的工具,可以从自然语言描述生成现代化的用户界面组件,并与流行的集成开发环境(IDE)集成,从而简化用户界面开发流程。
Audiense Insights MCP Server
通过模型上下文协议启用与 Audiense Insights 账户的交互,从而促进营销洞察和受众数据的提取和分析,包括人口统计信息、行为和影响者互动。

VeyraX
一个单一的 MCP 工具,连接你所有喜爱的工具:Gmail、日历以及其他 40 多个工具。
graphlit-mcp-server
模型上下文协议 (MCP) 服务器实现了 MCP 客户端与 Graphlit 服务之间的集成。 除了网络爬取之外,还可以将任何内容(从 Slack 到 Gmail 再到播客订阅源)导入到 Graphlit 项目中,然后从 MCP 客户端检索相关内容。
Kagi MCP Server
一个 MCP 服务器,集成了 Kagi 搜索功能和 Claude AI,使 Claude 能够在回答需要最新信息的问题时执行实时网络搜索。

e2b-mcp-server
使用 MCP 通过 e2b 运行代码。
Neon MCP Server
用于与 Neon 管理 API 和数据库交互的 MCP 服务器
Exa MCP Server
模型上下文协议(MCP)服务器允许像 Claude 这样的 AI 助手使用 Exa AI 搜索 API 进行网络搜索。这种设置允许 AI 模型以安全和受控的方式获取实时的网络信息。