Skip to main content

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

5 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
batch_modify_pdf_content Apply the same replacements to multiple PDFs at once

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

# Batch process multiple PDFs
pdf-mod batch *.pdf -o output/ -r "Draft=Final"

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.

Documentation

Project-bound knowledge lives in docs/ (docs-as-code): ADRs, runbooks, troubleshooting, and lessons.

Metadata

Release files for pdf-modifier-mcp 1.6.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for pdf-modifier-mcp 1.6.0
File Size Uploaded Provenance
pdf_modifier_mcp-1.6.0.tar.gz 318.3 kB With provenance Details

Built distribution (wheel)

Table of built distributions (wheels) for pdf-modifier-mcp 1.6.0
File Interpreter ABI Platform
pdf_modifier_mcp-1.6.0-py3-none-any.whl Python 3 none any Details

Total release size: 363.4 kB

Release files / pdf_modifier_mcp-1.6.0.tar.gz

Download URL pdf_modifier_mcp-1.6.0.tar.gz
Size 318.3 kB
Tags Source
SHA-256 checksum
How to use checksums
cf0343bd835f62ff1b3b44ec8496835b84f247f15322e87468b5d8d1c7fa5f91
BLAKE2b-256 checksum
How to use checksums
7e1e6566dc2ba9f0173d93d577682faba3d54d1eb8ef42a8328979cdcf3b1833
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.12

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Jun 24, 2026.

Transparency log

Release files / pdf_modifier_mcp-1.6.0-py3-none-any.whl

Download URL pdf_modifier_mcp-1.6.0-py3-none-any.whl
Size 45.0 kB
Tags Python 3
SHA-256 checksum
How to use checksums
6c3ef1468a740fbe85867e199635bb5e06e951a8f8d6300bf731a54db858e471
BLAKE2b-256 checksum
How to use checksums
f540873e7f4344fe88fb653b0ee12fc4f5e759a00ecb8346b9c564ad8f81afc6
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.12

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Jun 24, 2026.

Transparency log

Security for pdf-modifier-mcp 1.6.0

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

Full provenance

All 2 files in this release have been uploaded with provenance metadata.

Select from 2 files

Attestation for pdf_modifier_mcp-1.6.0.tar.gz

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Jun 24, 2026.

Transparency log

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page