by andr3medeiros
Automate PDF tasks using PyMuPDF: text, image, form, annotation & metadata handling—ideal for powder diffraction file ma
Provides comprehensive PDF editing and manipulation capabilities through PyMuPDF. Lets you edit text, add images, manage forms, split/merge documents, and handle annotations directly in PDF files.
PDF Manipulation is a community-built MCP server published by andr3medeiros that provides AI assistants with tools and capabilities via the Model Context Protocol. Automate PDF tasks using PyMuPDF: text, image, form, annotation & metadata handling—ideal for powder diffraction file ma It is categorized under productivity. This server exposes 16 tools that AI clients can invoke during conversations and coding sessions.
You can install PDF Manipulation in your AI client of choice. Use the install panel on this page to get one-click setup for Cursor, Claude Desktop, VS Code, and other MCP-compatible clients. This server runs locally on your machine via the stdio transport.
MIT
PDF Manipulation is released under the MIT license. This is a permissive open-source license, meaning you can freely use, modify, and distribute the software.
Add new capabilities to Claude beyond text generation
Example
Access external data sources, execute code, interact with tools and services
Transform Claude from chatbot to action-taking agent
Provide Claude with access to relevant context and data
Example
Load project documentation, access knowledge bases, query databases
Get more accurate, context-aware responses
Automate multi-step workflows combining AI and external tools
Example
Research → Summarize → Create document → Send notification
Complete complex tasks end-to-end without manual steps
Share your MCP server with the developer community
We wired PDF Manipulation into a staging workspace; the listing’s GitHub and npm pointers saved time versus hunting across READMEs.
Strong directory entry: PDF Manipulation surfaces stars and publisher context so we could sanity-check maintenance before adopting.
PDF Manipulation reduced integration guesswork — categories and install configs on the listing matched the upstream repo.
I recommend PDF Manipulation for teams standardizing on MCP; the explainx.ai page compares cleanly with sibling servers.
Useful MCP listing: PDF Manipulation is the kind of server we cite when onboarding engineers to host + tool permissions.
I recommend PDF Manipulation for teams standardizing on MCP; the explainx.ai page compares cleanly with sibling servers.
PDF Manipulation reduced integration guesswork — categories and install configs on the listing matched the upstream repo.
Strong directory entry: PDF Manipulation surfaces stars and publisher context so we could sanity-check maintenance before adopting.
Useful MCP listing: PDF Manipulation is the kind of server we cite when onboarding engineers to host + tool permissions.
PDF Manipulation reduced integration guesswork — categories and install configs on the listing matched the upstream repo.
showing 1-10 of 50
📚 This project is entirely based on PyMuPDF - a powerful Python library for PDF manipulation. Please check out the official PyMuPDF documentation to learn more about its extensive capabilities!
A study project implementing a Model Context Protocol (MCP) server that provides comprehensive PDF manipulation capabilities using the official MCP FastMCP framework. This project focuses on direct PDF editing and manipulation features for learning and experimentation purposes.
<a href="https://glama.ai/mcp/servers/@andr3medeiros/pdf-manipulation-mcp-server"> <img width="380" height="200" src="https://glama.ai/mcp/servers/@andr3medeiros/pdf-manipulation-mcp-server/badge" alt="PDF Manipulation Server MCP server" /> </a>Quick Start: Run directly with uv run pdf-manipulation-mcp-server (like npx for Node.js packages)
📖 For detailed installation instructions, see INSTALL.md
Option 1: Run Directly with UV (Like npx)
# Run without installation (fastest)
uv run pdf-manipulation-mcp-server
Option 2: Install from PyPI
# Install the package
pip install pdf-manipulation-mcp-server
# Run the server
pdf-mcp-server
Option 3: Install from GitHub
# Install directly from GitHub
pip install git+https://github.com/yourusername/pdf-manipulation-mcp-server.git
# Run the server
pdf-mcp-server
Option 4: Clone and Install Locally
# Clone the repository
git clone https://github.com/yourusername/pdf-manipulation-mcp-server.git
cd pdf-manipulation-mcp-server
# Install in development mode
pip install -e .
# Run the server
pdf-mcp-server
Option 5: Using UV (Development)
# Clone the repository
git clone https://github.com/yourusername/pdf-manipulation-mcp-server.git
cd pdf-manipulation-mcp-server
# Install dependencies with UV
uv pip install mcp pymupdf
# Test the server
uv run pytest tests/ -v
# Run the server
uv run python server.py
pdf_add_text - Add text to a PDF at specified positionpdf_replace_text - Replace text in a PDF documentpdf_add_image - Add an image to a PDFpdf_extract_images - Extract all images from a PDFpdf_add_annotation - Add annotations to a PDF (text, highlight, underline, strikeout)pdf_add_form_field - Add form fields to a PDF (text, checkbox, radio, combobox)pdf_fill_form - Fill form fields in a PDF with valuespdf_merge_files - Merge multiple PDF files into onepdf_combine_pages_to_single - Combine multiple pages from a PDF into a single pagepdf_split - Split a PDF into individual pages or page rangespdf_rotate_page - Rotate a page in a PDF (90, 180, 270 degrees)pdf_delete_page - Delete a page from a PDFpdf_crop_page - Crop a page in a PDF with coordinate supportpdf_auto_crop_page - Automatically crop pages by detecting content boundariespdf_get_info - Get metadata and information about a PDFpdf_set_metadata - Set metadata for a PDFFollow the installation steps above to set up the MCP server.
Add this configuration to your Cursor settings:
Option A: Using an MCP config and uvx:
Create ~/.cursor/mcp_config.json:
{
"mcpServers": {
"pdf-manipulation": {
"command": "uvx",
"args": ["--from", "pdf-manipulation-mcp-server", "pdf-mcp-server"]
}
}
}
Option B: Using MCP Config File from a local installation
Create ~/.cursor/mcp_config.json:
{
"mcpServers": {
"pdf-manipulation": {
"command": "uv",
"args": ["run", "python", "server.py"],
"cwd": "/path/to/pdf-manipulation-mcp-server"
}
}
}
Option C: Using Cursor Settings UI
Cmd+, on Mac, Ctrl+, on Windows/Linux){
"mcp.servers": {
"pdf-manipulation": {
"command": "uv",
"args": ["run", "python", "server.py"],
"cwd": "/path/to/pdf-manipulation-mcp-server"
}
}
}
After adding the configuration, restart Cursor IDE to load the MCP server.
# Automatically crop PDF pages to remove margins
result = await pdf_auto_crop_page(
pdf_path="document.pdf",
padding=10.0
)
# Crop specific page with coordinates
result = await pdf_crop_page(
pdf_path="document.pdf",
page_number=0,
x0=50, y0=50, x1=400, y1=300,
coordinate_mode="bbox"
)
result = await pdf_add_text(
pdf_path="document.pdf",
page_number=0,
text="New text content",
x=100,
y=100,
font_size=14,
color=[1, 0, 0] # Red color
)
# Add image to PDF
result = await pdf_add_image(
pdf_path="document.pdf",
page_number=0,
image_path="image.png",
x=100,
y=200,
width=200,
height=150
)
# Extract all images from PDF
result = await pdf_extract_images(
pdf_path="document.pdf",
output_dir="extracted_images"
)
# Merge multiple PDFs
result = await pdf_merge_files(
pdf_paths=["doc1.pdf", "doc2.pdf", "doc3.pdf"]
)
# Combine pages from a single PDF
result = await pdf_combine_pages_to_single(
pdf_path="document.pdf",
page_numbers=[0, 1, 2],
layout="vertical"
)
# Split PDF into individual pages
result = await pdf_split(
pdf_path="document.pdf",
output_dir="split_pages"
)
# Rotate a page
result = await pdf_rotate_page(
pdf_path="document.pdf",
page_number=0,
rotation=90
)
pdf-manipulation-mcp-server/
├── pdf_server.py # Main MCP server implementation
├── server.py # Entry point for UV
├── test_mcp_server.py # Test script
├── pyproject.toml # Project configuration
├── install.sh # Installation script (Mac/Linux)
├── install.bat # Installation script (Windows)
└── README.md # This file
# Test the MCP server
uv run python test_mcp_server.py
# Run the server
uv run python server.py
mcp - Official MCP SDK for Pythonpymupdf - Core PDF manipulation librarypytest - Testing framework (dev dependency)pytest-asyncio - Async testing support (dev dependency)All operations create new files with timestamps to avoid overwriting originals. Output files follow the pattern: {original_name}_{operation}_{timestamp}.pdf
The server includes comprehensive error handling:
"No tools" in Cursor settings: This is normal! Tools appear in the chat interface, not in settings.
UV not found: Install UV first:
curl -LsSf https://astral.sh/uv/install.sh | sh
Python version error: UV will automatically install Python 3.11+ if needed.
Dependencies not found: Make sure you're using UV:
uv pip install mcp pymupdf
To run the server in debug mode:
uv run python server.py --debug
This is a study project, but contributions are welcome! If you'd like to contribute:
uv run pytest tests/ -vThis project was created as a learning exercise to explore:
This project is open source and available under the MIT License.
For issues and questions:
uv run python test_mcp_server.pyPrerequisites
Time Estimate
15-60 minutes depending on server complexity
Steps
Troubleshooting
✓ Do
✗ Don't
💡 Pro Tips
Architecture
Model Context Protocol standardizes how AI hosts (Claude, Cursor) communicate with external tools and data sources through server implementations.
Protocols
Compatibility
✓ Use when
Use when you need Claude to access external data, execute actions, or integrate with tools. Best for extending AI capabilities beyond conversation.
✗ Avoid when
Avoid when native integrations exist (use official APIs directly), for real-time critical systems, or when security/compliance requires zero external dependencies.