formfill-mcp
Fill any PDF form from your AI agent — MCP server for PDF form filling
Install / Use
claude mcp add knportal -- npx -y github:knportal/formfill-mcpIf the server publishes to npm under a different name, use that package instead — check the repo README.
MCP Server
Model Context Protocol server
Quality Score
Category
AutomationSupported Platforms
Our assessment of formfill-mcp
formfill-mcp scores 74/100 on our quality scale, 2620th of 2,881 Automation skills we index.
Its MCP Server is 8.2 KB long, well organised into 17 sections with 12 code examples: a thorough specification that gives an agent plenty to work with.
It has 3 GitHub stars, so there is little community track record yet; judge it on its content.
Maintenance, license and trust
- The repository was last updated about 4 months ago. That is recent enough to be usable, but agent tooling moves fast, so check the instructions against your agent's current version.
- Our last check on 2026-09-20 found the source still online.
- It is released under the MIT license, a permissive license that allows use, modification and commercial use with attribution.
- Its trust signals score 85/100, with 2 cautions from licensing, adoption, age or documentation. These come from repository metadata, not a code audit — read the skill file before letting an agent act on it.
Safety scan
No issues foundOur scan of the whole file found no instruction hijacking, hidden characters, credential access, data exfiltration or destructive commands. An AI review of the same text found nothing harmful.
AI review by kimi-k2.7-code on 2026-09-29. Automated pattern scan on 2026-09-29. It catches known dangerous patterns, not every risk — read a skill before letting an agent act on it.
formfill-mcp compared with similar skills
All 4 of these similar skills score higher than formfill-mcp; compare them before choosing.
| Skill | Score | Stars | Updated | Format |
|---|---|---|---|---|
| formfill-mcp (this skill)by knportal | 74 | 3 | 4mo ago | MCP Server |
| Agent-Reachby Panniantong | 100 | 97.0k | 5d ago | CLAUDE.md |
| headroomby headroomlabs-ai | 100 | 75.2k | today | CLAUDE.md |
| CowAgentby zhayujie | 100 | 47.4k | today | CLAUDE.md |
| Scraplingby D4Vinci | 100 | 87.3k | today | MCP Server |
Frequently asked questions
- How do I install formfill-mcp?
- Run
claude mcp add knportal -- npx -y github:knportal/formfill-mcp. The install tabs above show the steps for each supported agent. - Which AI agents does formfill-mcp work with?
- It is written for Claude Code and Claude Desktop, as a MCP Server file. Other agents that read the same format can often use it too.
- Is formfill-mcp safe to use?
- Our scan of the whole file found no instruction hijacking, hidden characters, credential access, data exfiltration or destructive commands. An AI review of the same text found nothing harmful. It is MIT-licensed and scores 85/100 on trust signals. Skills are instructions an agent will follow, so read the file before installing it and do not approve commands you do not understand.
- Is formfill-mcp still maintained?
- The repository was last updated about 4 months ago. That is recent enough to be usable, but agent tooling moves fast, so check the instructions against your agent's current version.
Skill content
View source on GitHubGet API Key · View on Smithery · Built by Plenitudo AI
</div>How It Works
┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐
│ 1. Inspect │ │ 2. Fill │ │ 3. Done │
│ │ → │ │ → │ │
│ list_form_ │ │ fill_form │ │ Filled PDF │
│ fields │ │ │ │ saved to disk │
│ │ │ │ │ │
│ Returns every │ │ Writes values, │ │ Open in │
│ field name, │ │ saves output │ │ Preview or │
│ type & value │ │ file │ │ send anywhere │
└─────────────────┘ └─────────────────┘ └─────────────────┘
Most AI workflows collapse at the last mile: the agent understands the form but can't write to it. FormFill closes that gap with three focused tools.
Tools
| Tool | Description | When to use |
|---|---|---|
| list_form_fields | Returns every fillable field — name, type, and current value | First step: discover what's in the form |
| fill_form | Fill a PDF with provided field values and save the result | Standard forms (1–5 pages) |
| fill_form_multipage | Same as fill_form, page-by-page for large documents | Complex multi-page forms (6+ pages) |
Works With
Any MCP-compatible host:
- Claude Desktop — add to
claude_desktop_config.json - Cursor — MCP server config
- Cline — same config pattern
- Continue — same config pattern
- Any agent that supports the Model Context Protocol
Supported Form Types
| Category | Examples | |---|---| | Tax | W-9, W-4, 1040, Schedule C, state forms | | HR | I-9, onboarding packets, benefits enrollment, PTO | | Legal | NDAs, lease agreements, contracts, disclosures | | Insurance | Claims forms, enrollment applications | | Real Estate | Purchase agreements, rental applications, disclosures | | Education | Admissions, financial aid, transcripts |
Pricing
| Tier | Price | Monthly Fills | |---|---|---| | Free | $0 | 50 fills | | Pro | $9.99 / month | Unlimited |
Get your API key at formfill.plenitudo.ai
Quick Start
1. Get an API key
Sign up at formfill.plenitudo.ai — free tier available immediately.
2. Connect to Claude Desktop
Edit ~/Library/Application Support/Claude/claude_desktop_config.json:
{
"mcpServers": {
"formfill": {
"command": "/absolute/path/to/formfill-mcp/venv/bin/python",
"args": ["/absolute/path/to/formfill-mcp/server.py", "--stdio"]
}
}
}
Replace the paths with your actual install location. Fully quit and reopen Claude Desktop (Cmd+Q — just closing the window is not enough). You'll see the 🔨 tools icon — FormFill is connected.
Remote HTTP endpoint (Cursor, Cline, any HTTP MCP client):
https://formfill.plenitudo.ai/mcp
3. Fill your first form
List the fillable fields in /Users/me/Desktop/w9.pdf using API key ff_free_abc123
Fill the form at /Users/me/Desktop/w9.pdf with:
name: Jane Smith
TIN: 12-3456789
address: 123 Main St, Austin TX 78701
Save to /Users/me/Desktop/w9_filled.pdf
API key: ff_free_abc123
Example Prompts
W-9 (tax):
Fill the W-9 at ~/Desktop/fw9.pdf with my name "John Smith", SSN "123-45-6789",
address "456 Oak Ave, Boston MA 02101". Business type: Individual/sole proprietor.
Save to ~/Desktop/fw9_filled.pdf. API key: ff_free_abc123
Rental application:
Fill the rental application at ~/Desktop/rental_app.pdf with these values:
[paste field values]. Save to ~/Desktop/rental_filled.pdf. API key: ff_free_abc123
Multi-page contract:
Fill the 8-page NDA at ~/Desktop/nda.pdf. My name: Jane Smith, Company: Acme Corp,
Date: March 28 2026. Use fill_form_multipage. API key: ff_free_abc123
Response Format
Success:
{
"ok": true,
"output_path": "/Users/me/forms/w9_filled.pdf",
"fields_filled": 12,
"invalid_fields": []
}
Error:
{"ok": false, "error": "Invalid API key"}
{"ok": false, "error": "Usage limit reached. Upgrade at https://formfill.plenitudo.ai"}
{"ok": false, "error": "File not found: /Users/me/missing.pdf"}
Self-Hosting
git clone https://github.com/knportal/formfill-mcp.git
cd formfill-mcp
python -m venv venv
source venv/bin/activate
pip install -r requirements.txt
cp .env.example .env
python manage_keys.py create --tier free
python server.py
# → MCP server running on http://localhost:8000
For remote agent access, deploy the included Cloudflare Worker (worker.js).
Architecture
server.py — MCP server (3 tools)
auth.py — API key validation + usage tracking (SQLite)
stripe_webhook.py — Stripe subscription webhook handler
worker.js — Cloudflare Worker (remote proxy)
manage_keys.py — Key management CLI
data/keys.db — API key store
data/usage.db — Monthly usage counters
Troubleshooting
Values fill into the wrong fields
Always call list_form_fields first. It returns each field's position (x, y on page). Use those coordinates — not guessed names — to identify fields. Higher y = higher on the page (PDF coordinates are bottom-up). This matters most for IRS/government PDFs that use hybrid XFA/AcroForm format.
"No fillable fields found"
The PDF is either flat/scanned (no AcroForm layer), XFA-only (older Adobe LiveCycle format), or password-protected. The response includes pdf_type to tell you which. FormFill requires interactive AcroForm fields.
"None of the provided field names exist in this PDF"
Field names were guessed rather than read from list_form_fields. The error response includes valid_fields — the correct names to use.
Claude Desktop: "not a valid MCP server configuration"
Use command/args format (not url or type: streamableHttp). Include "--stdio" in args. Fully quit and reopen Claude Desktop after editing the config.
Server crashes: "Read-only file system: ./logs"
Set FORMFILL_LOG_FILE to a writable path, or ensure FORMFILL_DATA_DIR points to a writable directory. The default ~/Library/Logs/formfill-mcp/server.log works without config on macOS.
API key limit reached Free tier: 50 fills/month. Upgrade at formfill.plenitudo.ai. Your key is upgraded automatically — no config change needed.
Check server health
GET https://formfill.plenitudo.ai/health→{"status":"ok"}GET https://formfill.plenitudo.ai/smoke-test→ fills a real PDF end-to-end, returns pass/fail per component
Contributing & Security
- CONTRIBUTING.md — dev setup and PR guidelines
- SECURITY.md — responsible disclosure policy
License
MIT — Copyright © 2025 Plenitudo AI
<div align="center"> <strong><a href="https://formfill.plenitudo.ai?ref=readme">formfill.plenitudo.ai</a></strong> · <a href="https://github.com/knportal/formfill-mcp/issues">Issues</a> · <a href="https://plenitudo.ai">Plenitudo.ai</a> </div>
Related Skills
Agent-Reach
97.0kGive your AI agent eyes to see the entire internet. Read & search Twitter, Reddit, YouTube, GitHub, Bilibili, XiaoHongShu — one CLI, zero API fees.
headroom
75.2kCompress tool outputs, logs, files, and RAG chunks before they reach the LLM. 20% fewer tokens for coding agents, 60-95% fewer tokens for JSON, same answers. Library, proxy, MCP server.
CowAgent
47.4kOpen-source personal AI assistant & Agent Harness. Plans tasks, runs tools and skills, self-evolves with memory and knowledge. Multi-agent, multi-model, multi-channel. Lightweight, extensible, one-line install.
Scrapling
87.3k🕷️ An adaptive Web Scraping framework that handles everything from a single request to a full-scale crawl! Don't be shy, join here: https://discord.gg/EMgGbDceNQ and follow here for daily tips and tricks: https://x.com/Scrapling_dev
Languages
Trust signals
From repository metadata: license, adoption, age and documentation. Not a code audit — see the Safety scan above for what the skill file itself contains.
