Sponsored by Deepsite.site

PDF Manipulation Toolkit

Created By
Sohaib-25 months ago
Comprehensive PDF manipulation toolkit. Merge, split, encrypt, optimize PDFs through natural language commands via MCP protocol.
Content

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
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

Server Config

{
  "mcpServers": {
    "pdf-tools": {
      "command": "python",
      "args": [
        "path\\to\\pdf-mcp-server\\server.py"
      ]
    }
  }
}
Recommend Servers
TraeBuild with Free GPT-4.1 & Claude 3.7. Fully MCP-Ready.
MiniMax MCPOfficial MiniMax Model Context Protocol (MCP) server that enables interaction with powerful Text to Speech, image generation and video generation APIs.
Baidu Map百度地图核心API现已全面兼容MCP协议,是国内首家兼容MCP协议的地图服务商。
Jina AI MCP ToolsA Model Context Protocol (MCP) server that integrates with Jina AI Search Foundation APIs.
BlenderBlenderMCP connects Blender to Claude AI through the Model Context Protocol (MCP), allowing Claude to directly interact with and control Blender. This integration enables prompt assisted 3D modeling, scene creation, and manipulation.
DeepChatYour AI Partner on Desktop
Howtocook Mcp基于Anduin2017 / HowToCook (程序员在家做饭指南)的mcp server,帮你推荐菜谱、规划膳食,解决“今天吃什么“的世纪难题; Based on Anduin2017/HowToCook (Programmer's Guide to Cooking at Home), MCP Server helps you recommend recipes, plan meals, and solve the century old problem of "what to eat today"
Zhipu Web SearchZhipu Web Search MCP Server is a search engine specifically designed for large models. It integrates four search engines, allowing users to flexibly compare and switch between them. Building upon the web crawling and ranking capabilities of traditional search engines, it enhances intent recognition capabilities, returning results more suitable for large model processing (such as webpage titles, URLs, summaries, site names, site icons, etc.). This helps AI applications achieve "dynamic knowledge acquisition" and "precise scenario adaptation" capabilities.
EdgeOne Pages MCPAn MCP service designed for deploying HTML content to EdgeOne Pages and obtaining an accessible public URL.
MCP AdvisorMCP Advisor & Installation - Use the right MCP server for your needs
TimeA Model Context Protocol server that provides time and timezone conversion capabilities. This server enables LLMs to get current time information and perform timezone conversions using IANA timezone names, with automatic system timezone detection.
AiimagemultistyleA Model Context Protocol (MCP) server for image generation and manipulation using fal.ai's Stable Diffusion model.
Context7Context7 MCP Server -- Up-to-date code documentation for LLMs and AI code editors
Serper MCP ServerA Serper MCP Server
Visual Studio Code - Open Source ("Code - OSS")Visual Studio Code
CursorThe AI Code Editor
Tavily Mcp
ChatWiseThe second fastest AI chatbot™
WindsurfThe new purpose-built IDE to harness magic
Playwright McpPlaywright MCP server
Amap Maps高德地图官方 MCP Server