PDF阅读器MCP服务器
一种模型上下文协议(MCP)服务器,为AI助手提供PDF处理功能。此服务器允许您通过标准化的界面从PDF文件中提取文本内容和元数据。
🚀 特性
- PDF文本提取:从PDF文件中提取全文内容
- PDF元数据提取:获取文档属性、作者、标题、创建日期、页数等
- 稳健的错误处理:具有详细错误消息的全面错误处理
- 安全:输入验证和文件路径清理,以防止安全问题
- 类型安全:具有正确类型定义的完整TypeScript实现
📦 安装
先决条件
- Node.js(v16或更高版本)
- npm或yarn包管理器
设置
- 克隆存储库:
git clone https://github.com/ananyaakamat/PDF_reader_project.git
cd PDF_reader_project/MCP_Servers/pdf_reader- 安装依赖项:
npm install- 构建项目:
npm run build🛠️ 用法
运行服务器
要启动MCP服务器,请执行以下操作:
npm start或者直接用Node.js运行:
node index.jsClaude桌面中的配置
将以下配置添加到您的Claude Desktop MCP设置中:
{
"mcp": {
"servers": {
"pdf-reader": {
"command": "node",
"args": [
"path/to/your/PDF_reader_project/MCP_Servers/pdf_reader/index.js"
]
}
}
}
}替换 path/to/your/ 带有项目目录的实际路径。
VS代码中的配置
为了快速安装,请使用下面的一键安装按钮之一:
备注:替换 PATH_TO_YOUR_PROJECT 使用克隆存储库的实际路径。对于手动安装,请将以下JSON块添加到VS Code中的用户设置(JSON)文件中。您可以按 Ctrl + Shift + P 和打字 Preferences: Open User Settings (JSON).
您可以选择将其添加到名为的文件中 .vscode/mcp.json 在您的工作空间中。这将允许您与他人共享配置。
请注意mcp使用时需要密钥mcp.json文件。
添加到您的VS代码 settings.json:
{
"mcp": {
"servers": {
"pdf-reader": {
"command": "node",
"args": [
"path/to/your/PDF_reader_project/MCP_Servers/pdf_reader/index.js"
]
}
}
}
}设置文件位置:
- 视窗:
%APPDATA%\Code\User\settings.json - macOS:
~/Library/Application Support/Code/User/settings.json - Linux:
~/.config/Code/User/settings.json
备注:确保在VS Code中安装了MCP扩展以支持MCP服务器。
🔧 可用工具
1.extract_pdf_text
从PDF文件中提取所有文本内容。
参数:
filePath(string):PDF文件的路径
例子:
{
"name": "extract_pdf_text",
"arguments": {
"filePath": "./documents/sample.pdf"
}
}答复:
{
"success": true,
"filePath": "./documents/sample.pdf",
"text": "Extracted text content...",
"pageCount": 5,
"extractedAt": "2025-07-08T10:30:00.000Z"
}2.提取_pdf_metadata
从PDF文件中提取元数据和文档属性。
参数:
filePath(string):PDF文件的路径
例子:
{
"name": "extract_pdf_metadata",
"arguments": {
"filePath": "./documents/sample.pdf"
}
}答复:
{
"success": true,
"filePath": "./documents/sample.pdf",
"metadata": {
"pageCount": 5,
"pdfVersion": "1.4",
"hasAcroForm": false,
"hasXFA": false,
"title": "Sample Document",
"author": "John Doe",
"subject": "Example PDF",
"keywords": "sample, test, pdf",
"creator": "Microsoft Word",
"producer": "PDF Creator",
"creationDate": "2025-01-01T00:00:00.000Z",
"modificationDate": "2025-07-08T10:00:00.000Z"
},
"extractedAt": "2025-07-08T10:30:00.000Z"
}🛡️ 安全功能
- 路径验证:防止目录遍历攻击
- 文件扩展名验证:仅接受
.pdf文件 - 访问控制:在处理之前检查文件权限
- 输入消毒:使用Zod模式验证所有输入参数
🏗️ 项目结构
PDF_reader_project/
├── MCP_Servers/
│ └── pdf_reader/
│ ├── src/
│ │ └── server.ts # Main server implementation
│ ├── index.js # Compiled JavaScript output
│ ├── package.json # Dependencies and scripts
│ ├── tsconfig.json # TypeScript configuration
│ └── node_modules/ # Dependencies
├── docs/ # Documentation
│ ├── setup-guide.md
│ ├── python-best-practices.md
│ └── ...
└── README.md # This file🔧 发展
从源头构建
- 全局安装TypeScript (如果尚未安装):
npm install -g typescript- 编译TypeScript:
npm run build- 以开发模式运行:
npm run dev可用脚本
npm run build:将TypeScript编译为JavaScriptnpm start:启动MCP服务器npm run dev:在开发模式下自动重启运行
📚 依赖项
生产依赖性
@modelcontextprotocol/sdk:用于服务器实现的MCP SDKpdf-parse:PDF解析库zod:运行时类型验证
发展依赖性
typescript:TypeScript编译器@types/node:Node.js类型定义
🐛 故障排除
常见问题
- “找不到文件”错误:
- 确保PDF文件存在于指定路径中 - 检查文件权限 - 有疑问时使用绝对路径
- “权限被拒绝”错误:
- 验证PDF文件的读取权限 - 检查文件是否已在其他应用程序中打开
- “文件路径无效”错误:
- 确保文件具有 .pdf 扩展 - 检查路径中的目录遍历尝试
错误代码
InvalidParams:输入参数无效或文件问题InternalError:服务器端处理错误MethodNotFound:请求的工具未知
🤝 贡献
- 分叉存储库
- 创建要素分支:
git checkout -b feature/your-feature - 提交更改:
git commit -am 'Add your feature' - 推到分支:
git push origin feature/your-feature - 提交拉取请求
📝 许可证
此项目根据MIT许可证获得许可-请参阅 许可证 文件以获取详细信息。
🙏 致谢
📞 支持
如果您遇到任何问题或有疑问:
______________________________________________________________________
由以下材料制成❤️ 对于MCP社区
