pdf-filler-mcp
Enables filling any PDF form, including scanned or AcroForm, through a browser-based drag-and-drop editor. Works entirely locally with no data leaving the machine.
README
pdf-filler-mcp
An MCP server that lets Claude fill any PDF form — scanned or AcroForm — through a browser-based drag-and-drop editor.
Editor — drag, reposition and edit fields directly on the rendered PDF page:

Result — the generated PDF with all fields overlaid:

How it works
- Claude renders the PDF to images and inspects the layout
- Claude places markers on each field and iterates until placement is correct
- Claude opens the editor — a self-contained HTML page where you drag fields, edit values and click Fertig
- PDF is generated automatically — the editor POSTs to a local receiver which runs headless Playwright to produce the final PDF
The entire stack runs locally. No data leaves your machine.
Tools exposed
| Tool | Description |
|---|---|
pdf_render |
Render all pages to PNG at a given DPI, returns scale factor |
pdf_preview |
Overlay numbered coloured marker dots on a page for iterative placement verification |
pdf_editor_multi |
Generate a multi-page drag-and-drop HTML editor pre-filled with field values |
pdf_fill |
Directly overlay text on a PDF without opening the browser editor |
pdf_merge |
Merge per-page PDFs into a single file |
pdf_memory_get |
Retrieve saved field layout for a known form type |
pdf_memory_set |
Save verified field layout so the same form can be filled again instantly |
pdf_receiver_start |
Start the local HTTP receiver that auto-generates the PDF on Fertig |
pdf_receiver_wait |
Block until the user clicks Fertig and the PDF is ready |
Prerequisites
- Python 3.9+
- pymupdf (
pip install pymupdf) - pypdf (
pip install pypdf) — for merging - Node.js + Playwright — for the auto-PDF-generation step (
npm i -g playwright)
Installation
1. Clone
git clone https://github.com/patroqueeet/pdf-filler-mcp.git ~/.claude/pdf-filler
2. Register with Claude Code
Add to ~/.mcp.json:
{
"mcpServers": {
"pdf-filler": {
"command": "python3",
"args": ["~/.claude/pdf-filler/filler.py", "serve"]
}
}
}
Restart Claude Code — the pdf_* tools will be available in any session.
Typical workflow
User: Fill out /tmp/application.pdf with my personal data
Claude:
1. pdf_render → get page images + scale_factor
2. pdf_preview → place marker dots, read result image, adjust
3. pdf_memory_get → check if layout is already saved
4. pdf_receiver_start → start PDF receiver on port 7789
5. pdf_editor_multi → open editor in browser
6. pdf_receiver_wait → wait for user to click Fertig
→ returns: { done: true, output_path: "/tmp/application_filled.pdf" }
Editor features
- Click to create a field anywhere on the document image
- Drag the ⣿ handle to reposition
- Tab between fields; inline editing
- Checkbox type available via the ➕ button
- Multi-page navigation with per-page field state
- Print CSS hides all editor chrome — only text overlays are printed
Running the tests
pip install pymupdf pypdf pytest pytest-timeout
pytest tests/ -v
License
MIT — see LICENSE.
Recommended Servers
playwright-mcp
A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.
Magic Component Platform (MCP)
An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.
Audiense Insights MCP Server
Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.
VeyraX MCP
Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.
graphlit-mcp-server
The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.
Kagi MCP Server
An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.
E2B
Using MCP to run code via e2b.
Neon Database
MCP server for interacting with Neon Management API and databases
Exa Search
A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.
Qdrant Server
This repository is an example of how to create a MCP server for Qdrant, a vector search engine.