mcpField
P
PDF Manipulation Toolkit

PDF Manipulation Toolkit

Local
github.com/Sohaib-2Files & Storage16Updated 69w ago

About PDF Manipulation Toolkit

A PDF manipulation server for Claude and other MCP clients, letting users operate on documents with natural-language commands. It covers page editing, encryption, optimization, repair, metadata, and file handling.

Key features

  1. 01Merge, split, and extract pages
  2. 02Encrypt PDFs or remove passwords
  3. 03Compress, repair, and validate files
  4. 04View and update PDF metadata
  5. 05Download files and configure workspaces

Use cases

  1. 01Combine research papers or split manuals
  2. 02Protect or unlock PDF documents
  3. 03Repair damaged files and reduce file size
  4. 04Inspect document structure and attachments

MCP support

The MCP server exposes PDF operations, analysis, and file-management capabilities as tools for clients, and can be connected to Claude Desktop.

Configuration

Local server config is the same for every client. Copy it into your client’s MCP config file.

No install method listed yet

We haven’t collected a package or remote endpoint for this server. Follow the instructions in the project README.

Repository

Tools

No tool list yet

Local servers expose tools only once running on your machine, and the maintainer has not provided a tool list.

Details

From the project README

PDF MCP Server

GitHub stars GitHub issues GitHub license Python 3.8+

Transform PDF manipulation with AI-powered natural language commands through Claude integration

Comprehensive PDF toolkit that integrates seamlessly with Claude AI via MCP (Model Context Protocol). Perform complex PDF operations using simple conversational commands - merge, split, encrypt, optimize, and analyze PDFs effortlessly.

Demo

🚀 Quick Start

Clone & Setup
git clone https://github.com/Sohaib-2/pdf-mcp-server.git
cd pdf-mcp-server
Option 1: With Virtual Environment (Recommended)
python -m venv .venv
# Windows
.venv\Scripts\activate
# macOS/Linux  
source .venv/bin/activate

pip install -r requirements.txt
Option 2: Without Virtual Environment
pip install fastmcp requests pathlib
Install PDF Tools

PDFtk:

# Ubuntu/Debian
sudo apt-get install pdftk
# macOS
brew install pdftk-java
# Windows: Download from https://www.pdflabs.com/tools/pdftk-the-pdf-toolkit/

QPDF:

# Ubuntu/Debian
sudo apt-get install qpdf
# macOS
brew install qpdf
# Windows: Download from https://qpdf.sourceforge.io/

🔧 Claude Desktop Integration

  1. Locate Claude config file:

    • Windows: %APPDATA%\Claude\claude_desktop_config.json
    • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
  2. Add PDF MCP Server:

With Virtual Environment:

{
  "mcpServers": {
    "pdf-tools": {
      "command": "C:\\path\\to\\pdf-mcp-server\\.venv\\Scripts\\python.exe",
      "args": ["C:\\path\\to\\pdf-mcp-server\\server.py"]
    }
  }
}

Without Virtual Environment:

{
  "mcpServers": {
    "pdf-tools": {
      "command": "python",
      "args": ["C:\\path\\to\\pdf-mcp-server\\server.py"]
    }
  }
}

macOS/Linux with venv:

{
  "mcpServers": {
    "pdf-tools": {
      "command": "/path/to/pdf-mcp-server/.venv/bin/python",
      "args": ["/path/to/pdf-mcp-server/server.py"]
    }
  }
}
  1. Restart Claude Desktop

  2. Start using natural language:

    • "Merge these 3 PDFs into one document"
    • "Encrypt my report with password protection"
    • "Extract pages 1-10 from this manual"

📚 Complete Tool Reference

Core Operations
ToolDescriptionExample
merge_pdfsCombine multiple PDFsmerge_pdfs(['doc1.pdf', 'doc2.pdf'], 'combined.pdf')
split_pdfSplit into individual pagessplit_pdf('document.pdf', './pages/')
extract_pagesExtract specific page rangesextract_pages('book.pdf', '1-5,10,15-20', 'excerpt.pdf')
rotate_pagesRotate pages by degreesrotate_pages('scan.pdf', '90', 'rotated.pdf', '1-3')
Security & Encryption
ToolDescriptionExample
encrypt_pdfAES-256 encryptionencrypt_pdf('file.pdf', 'secure.pdf', 'password123')
encrypt_pdf_basicBasic password protectionencrypt_pdf_basic('doc.pdf', 'protected.pdf', 'pass', 'admin')
decrypt_pdfRemove password protectiondecrypt_pdf('locked.pdf', 'unlocked.pdf', 'password')
Optimization & Repair
ToolDescriptionExample
optimize_pdfCompress for web/emailoptimize_pdf('large.pdf', 'small.pdf', 'high')
repair_pdfFix corrupted PDFsrepair_pdf('broken.pdf', 'fixed.pdf')
check_pdf_integrityValidate PDF structurecheck_pdf_integrity('suspicious.pdf')
Information & Analysis
ToolDescriptionExample
get_pdf_infoDetailed metadata (JSON)get_pdf_info('document.pdf')
update_pdf_metadataModify title/author/etcupdate_pdf_metadata('file.pdf', 'updated.pdf', title='New Title')
inspect_pdf_structureInternal structure analysisinspect_pdf_structure('complex.pdf', detailed=True)
extract_pdf_attachmentsExtract embedded filesextract_pdf_attachments('portfolio.pdf', './attachments/')
File Management
ToolDescriptionExample
download_pdfDownload from URLdownload_pdf('https://example.com/file.pdf', 'local.pdf')
open_pdf_previewOpen with system vieweropen_pdf_preview('report.pdf', browser=False)
get_file_infoFile size/path detailsget_file_info('document.pdf')
configure_pdf_workspaceSet working directoryconfigure_pdf_workspace('/path/to/workspace')
count_pdfs_in_directoryList PDFs in foldercount_pdfs_in_directory('./pdf_folder/')
System Management
ToolDescriptionPurpose
get_server_statusCheck tool availabilityVerify PDFtk/QPDF installation
list_default_directoriesShow search pathsDebug file resolution issues
get_pdf_tools_helpComplete documentationIn-app help reference

💬 Natural Language Examples

Document Management:

  • "Combine all my research papers into one bibliography"
  • "Split this 100-page manual into chapters"
  • "Extract the executive summary from pages 2-4"

Security Operations:

  • "Encrypt this contract with military-grade protection"
  • "Remove password from this locked document"
  • "Add owner permissions to prevent editing"

File Optimization:

  • "Optimize all PDFs in my downloads folder"
  • "Fix this corrupted presentation file"

Advanced Analysis:

  • "Show me detailed metadata about this academic paper"
  • "Analyze the internal structure for security audit"

🗂️ File Path Handling

Flexible path resolution:

  • Absolute: C:\Documents\file.pdf
  • Relative: ../pdfs/document.pdf
  • Filename only: report.pdf (searches default directories)

Default search order:

  1. PDF_WORKSPACE environment variable
  2. ~/Documents/PDFs
  3. ~/Downloads
  4. ~/Desktop
  5. Current working directory

⚙️ Configuration

Custom workspace:

configure_pdf_workspace('/path/to/your/pdfs')

Check installation:

get_server_status()  # Verify PDFtk and QPDF availability

🛠️ Troubleshooting

Common issues:

ProblemSolution
PDFtk not foundInstall PDFtk and add to PATH
QPDF errorInstall QPDF via package manager
File not foundUse list_default_directories() to check search paths
Permission deniedRun with appropriate file permissions
Invalid PDFUse check_pdf_integrity() to validate file

Debug commands:

get_server_status()           # Check tool installation
list_default_directories()    # Verify search paths  
get_pdf_info('file.pdf')      # Validate PDF structure

🏗️ Architecture

pdf-mcp-server/
├── server.py              # FastMCP server with 16 tools
├── pdftk_tools.py         # PDFtk CLI wrapper
├── qpdf_tools.py          # QPDF CLI wrapper  
├── utils.py               # File utilities & path resolution
└── requirements.txt       # Python dependencies

Built with:

  • FastMCP - MCP server framework
  • PDFtk - PDF manipulation
  • QPDF - Advanced PDF processing

🤝 Contributing

  1. Fork the repository
  2. Create feature branch: git checkout -b feature/amazing-feature
  3. Commit changes: git commit -m 'Add amazing feature'
  4. Push to branch: git push origin feature/amazing-feature
  5. Open Pull Request

📄 License

This project is licensed under the MIT License

👨‍💻 Author

Sohaib-2 - GitHub

🌟 Acknowledgments


⭐ Star this repo if it helped you! | 🐛 Report issues | 💡 Request features

Comments

Markdown supported

New to MCP?

From what the protocol is to installing your first server, these answers cover most first questions.

An open protocol that defines how AI applications connect to external tools and data in a uniform way. Clients talk to the model; MCP servers provide tools, resources and prompt templates. They exchange standard messages, so one server can be reused by many clients.