集成PyPDF2,支持从PDF文档中高效提取文本和检索信息,适用于多种应用场景。
概述
PDF 阅读器 MCP 服务器
一个 Model Context Protocol (MCP) 服务器,提供从 PDF 文件读取和提取文本的工具,支持本地文件和 URL。
作者
Philip Van de Walker
邮箱:philip.vandewalker@gmail.com
GitHub:https://github.com/trafflux
功能
- 从本地 PDF 文件读取文本内容
- 从 PDF URL 读取文本内容
- 针对损坏或无效 PDF 的错误处理
- 用于访问本地 PDF 的卷挂载
- 自动检测 PDF 编码
- 标准化的 JSON 输出格式
安装
- 克隆仓库:
bash
git clone https://github.com/trafflux/pdf-reader-mcp.git
cd pdf-reader-mcp
- 构建 Docker 镜像:
bash
docker build -t mcp/pdf-reader .
使用
运行服务器
运行服务器以访问本地 PDF 文件:
bash
docker run -i --rm -v /path/to/pdfs:/pdfs mcp/pdf-reader
将 /path/to/pdfs
替换为您的 PDF 文件目录的实际路径。
如果不使用本地 PDF 文件:
bash
docker run -i --rm mcp/pdf-reader
MCP 配置
添加到您的 MCP 设置配置中:
json
{
"mcpServers": {
"pdf-reader": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"-v",
"/path/to/pdfs:/pdfs",
"mcp/pdf-reader"
],
"disabled": false,
"autoApprove": []
}
}
}
不使用本地 PDF 文件时:
json
{
"mcpServers": {
"pdf-reader": {
"command": "docker",
"args": ["run", "-i", "--rm", "mcp/pdf-reader"],
"disabled": false,
"autoApprove": []
}
}
}
可用工具
-
read_local_pdf
- 用途:从本地 PDF 文件读取文本内容
- 输入:
json
{ "path": "/pdfs/document.pdf" }
- 输出:
json
{ "success": true, "data": { "text": "提取的内容..." } }
-
read_pdf_url
- 用途:从 PDF URL 读取文本内容
- 输入:
json
{ "url": "https://example.com/document.pdf" }
- 输出:
json
{ "success": true, "data": { "text": "提取的内容..." } }
错误处理
服务器处理各种错误情况并提供清晰的错误消息:
- 无效或损坏的 PDF 文件
- 文件缺失
- URL 请求失败
- 权限问题
- 网络连接问题
错误响应遵循以下格式:
json
{
"success": false,
"error": "详细的错误消息"
}
依赖项
- Python 3.11+
- PyPDF2:PDF 解析和文本提取
- requests:用于从 URL 获取 PDF 的 HTTP 客户端
- MCP SDK:Model Context Protocol 实现
项目结构
.
├── Dockerfile # 容器配置
├── README.md # 本文档
├── requirements.txt # Python 依赖项
└── src/
├── __init__.py # 包初始化
└── server.py # 主服务器实现
许可证
版权所有 2025 Philip Van de Walker
根据 Apache License, Version 2.0(“许可证”)授权;
除非符合许可证要求,否则不得使用此文件。
您可以在以下网址获取许可证副本:
http://www.apache.org/licenses/LICENSE-2.0
除非适用法律要求或书面同意,否则按“原样”分发的软件,
没有任何明示或暗示的保证或条件。
请参阅许可证了解具体的权限和限制。
贡献
欢迎贡献!请随时提交 Pull Request。
联系
如有问题、疑问或贡献,请联系 Philip Van de Walker:
- 邮箱:philip.vandewalker@gmail.com
- GitHub:https://github.com/trafflux