Skip to main content

PDF modification tool with CLI and MCP interfaces for AI agents.

Project description

PDF Modifier MCP

CI PyPI codecov Python 3.12+ Docs License: MIT

Give your AI coding assistant the ability to natively read, edit, and redact PDF documents.

Most AI assistants can generate Python scripts to edit PDFs, but running them requires manual execution, debugging missing fonts, and fixing broken layouts. PDF Modifier is an MCP server that gives your AI direct, native tools to safely manipulate PDFs in place.

The numbers:

Metric Without PDF Modifier MCP With PDF Modifier MCP
Workflow AI writes script -> You run it -> Debug errors AI edits PDF directly via MCP
Time to redact 10 invoices ~15 minutes (trial & error) Seconds (autonomous)
Layout preservation Often breaks styling or coordinates 100% (Base 14 font matching)
Interface Terminal only Native AI Tools + CLI fallback

Quick Install (30 seconds)

One command. No cloning, no venv. Use user scope (-s user) so the tools are available across all your projects.

Claude Code

claude mcp add -s user pdf-modifier -- uvx --upgrade pdf-modifier-mcp

Gemini CLI

gemini mcp add -s user pdf-modifier uvx -- --upgrade pdf-modifier-mcp

OpenAI Codex CLI

Add to ~/.codex/config.toml:

[mcp_servers.pdf-modifier]
command = "uvx"
args = ["--upgrade", "pdf-modifier-mcp"]

GitHub Copilot (VS Code)

Add to .vscode/mcp.json or your User Settings:

{
  "mcp": {
    "servers": {
      "pdf-modifier": {
        "command": "uvx",
        "args": ["--upgrade", "pdf-modifier-mcp"]
      }
    }
  }
}

Then ask your assistant:

"Read the structure of invoice.pdf and redact all credit card numbers"

That's it. You're running.

What You Get

3 MCP Tools — PDF manipulation, on demand

Tool What it does
read_pdf_structure Extract complete PDF structure with text positions, sizes, and fonts
inspect_pdf_fonts Search for terms and report their exact font properties
list_pdf_hyperlinks Inventory all existing hyperlinks and URIs in the document
modify_pdf_content Find and replace text (or regex) with strict style and layout preservation

CLI Interface (For Humans)

Still want to script it yourself? The package includes a powerful Typer CLI:

# Simple text replacement
pdf-mod modify input.pdf output.pdf -r "old text=new text"

# Inventory hyperlinks
pdf-mod links input.pdf

Regex replacement (dates, IDs, etc.)

pdf-mod modify input.pdf output.pdf -r "Order #\d+=Order #REDACTED" --regex

Create hyperlinks

pdf-mod modify input.pdf output.pdf -r "Click Here=Visit Site|https://example.com"


## Before / After

**Before PDF Modifier MCP** — Manual scripting workflow:
```python
# The AI generates a script like this for you to run:
import fitz
doc = fitz.open("invoice.pdf")
for page in doc:
    # Hope the AI calculated the rects and fonts correctly...
    page.insert_text((100, 100), "REDACTED", fontname="helv")
doc.save("out.pdf")

With PDF Modifier MCP — Autonomous AI action:

# The AI natively calls the tool without asking you to run scripts
modify_pdf_content(
    input_path="invoice.pdf",
    replacements={"pattern": r"\b\d{4}-\d{4}-\d{4}-\d{4}\b", "replacement": "XXXX-XXXX-XXXX-XXXX"},
    use_regex=True
)

Architecture

MCP Host (Claude, Gemini, Copilot)
  ↓ MCP protocol (stdio)
pdf-modifier-mcp (FastMCP Server)
  │
  ├── Core Layer (PDFModifier, PDFAnalyzer)
  │     ├── Regex matching & text extraction
  │     ├── Base 14 font fallback mapping
  │     └── Layout & coordinate preservation
  │
  └── PyMuPDF (fitz) Engine

Development

See CONTRIBUTING.md for setup, code standards, and PR workflow.

git clone https://github.com/mlorentedev/pdf-modifier-mcp.git
cd pdf-modifier-mcp
make setup     # create venv + install deps
make check     # lint + typecheck + test

License

MIT License - see LICENSE for details.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

pdf_modifier_mcp-1.4.0.tar.gz (240.1 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

pdf_modifier_mcp-1.4.0-py3-none-any.whl (22.3 kB view details)

Uploaded Python 3

File details

Details for the file pdf_modifier_mcp-1.4.0.tar.gz.

File metadata

  • Download URL: pdf_modifier_mcp-1.4.0.tar.gz
  • Upload date:
  • Size: 240.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for pdf_modifier_mcp-1.4.0.tar.gz
Algorithm Hash digest
SHA256 25e21032c68d494f3214ce50f2daa773e4e459ba58fd9ce2c15f2659dcd2337e
MD5 5d8c4b92d2a6df2fb76374c0a4b32a91
BLAKE2b-256 71e4d2b90037a6258a373c9c471fcab122d5fa4c6a6ac3d3d24ca096793f9648

See more details on using hashes here.

Provenance

The following attestation bundles were made for pdf_modifier_mcp-1.4.0.tar.gz:

Publisher: release.yml on mlorentedev/pdf-modifier-mcp

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file pdf_modifier_mcp-1.4.0-py3-none-any.whl.

File metadata

File hashes

Hashes for pdf_modifier_mcp-1.4.0-py3-none-any.whl
Algorithm Hash digest
SHA256 61f08d2e4f59ca60c7612aab9cb4f274a56f9aae8f8fb62459925a2c8f013168
MD5 fe30e42dc8b0cff8142d40aa2adff131
BLAKE2b-256 18b7c14620be7d8a6836183529c2f3a647751bf55848e302b508c8918aaf92b3

See more details on using hashes here.

Provenance

The following attestation bundles were made for pdf_modifier_mcp-1.4.0-py3-none-any.whl:

Publisher: release.yml on mlorentedev/pdf-modifier-mcp

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page