PDF处理服务器

一个提供PDF文本和元数据提取功能的MCP服务器,适用于AI助手和开发工具集成。

  • by ananyaakamat
  • JavaScript
  • 本地部署
  • 更新于
在 GitHub 查看 ananyaakamat/pdf_reader_project

使用说明

PDF阅读器MCP服务器

一种模型上下文协议(MCP)服务器,为AI助手提供PDF处理功能。此服务器允许您通过标准化的界面从PDF文件中提取文本内容和元数据。

🚀 特性

  • PDF文本提取:从PDF文件中提取全文内容
  • PDF元数据提取:获取文档属性、作者、标题、创建日期、页数等
  • 稳健的错误处理:具有详细错误消息的全面错误处理
  • 安全:输入验证和文件路径清理,以防止安全问题
  • 类型安全:具有正确类型定义的完整TypeScript实现

📦 安装

先决条件

  • Node.js(v16或更高版本)
  • npm或yarn包管理器

设置

  1. 克隆存储库:

    git clone https://github.com/ananyaakamat/PDF_reader_project.git
    cd PDF_reader_project/MCP_Servers/pdf_reader
    
  2. 安装依赖项:

    npm install
    
  3. 构建项目:

    npm run build
    

🛠️ 用法

运行服务器

要启动MCP服务器,请执行以下操作:

npm start

或者直接用Node.js运行:

node index.js

Claude桌面中的配置

将以下配置添加到您的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

🔧 发展

从源头构建

  1. 全局安装TypeScript (如果尚未安装):

    npm install -g typescript
    
  2. 编译TypeScript:

    npm run build
    
  3. 以开发模式运行:

    npm run dev
    

可用脚本

  • npm run build:将TypeScript编译为JavaScript
  • npm start:启动MCP服务器
  • npm run dev:在开发模式下自动重启运行

📚 依赖项

生产依赖性

  • @modelcontextprotocol/sdk:用于服务器实现的MCP SDK
  • pdf-parse:PDF解析库
  • zod:运行时类型验证

发展依赖性

  • typescript:TypeScript编译器
  • @types/node:Node.js类型定义

🐛 故障排除

常见问题

  1. “找不到文件”错误:

    • 确保PDF文件存在于指定路径中
    • 检查文件权限
    • 有疑问时使用绝对路径
  2. “权限被拒绝”错误:

    • 验证PDF文件的读取权限
    • 检查文件是否已在其他应用程序中打开
  3. “文件路径无效”错误:

    • 确保文件具有 .pdf 扩展
    • 检查路径中的目录遍历尝试

错误代码

  • InvalidParams:输入参数无效或文件问题
  • InternalError:服务器端处理错误
  • MethodNotFound:请求的工具未知

🤝 贡献

  1. 分叉存储库
  2. 创建要素分支: git checkout -b feature/your-feature
  3. 提交更改: git commit -am 'Add your feature'
  4. 推到分支: git push origin feature/your-feature
  5. 提交拉取请求

📝 许可证

此项目根据MIT许可证获得许可-请参阅 许可证 文件以获取详细信息。

🙏 致谢

📞 支持

如果您遇到任何问题或有疑问:

  1. 检查 故障排除部分
  2. 查看 文档
  3. 在GitHub上打开一个问题

由以下材料制成❤️ 对于MCP社区