
Pdf Extract Mcp
io.github.diyaluoPublished by GitHub account diyaluov0.3.0Updated Oct 24, 2026
Digital PDF invoices/bank statements to CSV, JSON or Excel with automatic PII redaction.
Overview
Local MCP server that extracts tables and text from digital PDFs such as invoices and bank statements into CSV, JSON or Excel, with automatic PII redaction.
- What you can do
- Extract tables and text from a digital PDF supplied as base64 or a direct https URL, returning CSV, JSON records or an XLSX file; table detection tries ruled tables, header-derived columns and generic text alignment per page. Redact personal and financial identifiers by default, covering US and international items such as SSN, IBAN, SWIFT, routing and card numbers, phone and email, plus China-specific ID, mobile, bank card, USCC, passport and personal names. Check service status and free-tier limits. Amounts, dates and descriptions are left unchanged, and scanned or image-only PDFs are rejected.
- When to use it
- Useful when you have text-layer PDFs of invoices, bank statements or bills and want an assistant to turn them into structured rows for spreadsheets or downstream processing without exposing personal data. Not suitable for scanned or image-only documents.
- Requirements
- Runs as a local stdio process; the README installs it with pip and requires Python 3.10+, mcp, pdfplumber and openpyxl, with pandas optional. A remote streamable-http mode is also documented. No authentication is declared; an optional PDF_EXTRACT_API_KEY enables a paid tier, and PDF_EXTRACT_STATE_DIR overrides the telemetry location.
Installation
In SourceWeft
- Open Pdf Extract Mcp in the dashboard and add it to a workspace.
- Enable the server for the chats that should use its tools.
Desktop only via STDIO. STDIO servers start a local process, so they need the SourceWeft desktop host.
Other MCP clients
Follow the launch instructions in the repository.
README
pdf-extract-mcp
A Model Context Protocol (MCP) server that extracts tables and text from digital (text-layer) PDFs — bank statements, invoices, bills — into CSV / JSON / Excel, with automatic PII redaction.
Part of the invoice-extractor product. This package is the MCP distribution channel ("ecosystem parasite": one backend, many host workflows). Web demo lives in the parent project.
What it does
extract_pdf— upload a digital PDF (base64 or URL), get back structured table rows as CSV / JSON records / XLSX.health— service status and free-tier limits.
Table detection tries three strategies per page: ruled tables → explicit columns derived from the header row's own x-positions (handles statement PDFs with no grid lines, the common case for Western banks) → generic text alignment.
PII redaction (on by default) covers:
Bank identifiers that are ambiguous as bare numbers (routing/account/sort code) are masked only when they follow a label, so reference numbers and amounts stay readable. Amounts, dates and descriptions are never altered.
Scanned / image-only PDFs are explicitly rejected (SCANNED_PDF_UNSUPPORTED)
— the free tier covers digital PDFs only (OCR is a paid-tier candidate).
Limits (free tier)
- 100 pages / rolling 30 days / client (anonymous, keyed by client hash).
- 50 MB per file.
- Above quota the tool returns a structured
QUOTA_EXCEEDEDresponse with an in-band upgrade pointer. It never silently bills. - Set
PDF_EXTRACT_API_KEYto a paid key to bypass the quota (billing gateway is a P1 item; current free tier has no paid keys issued).
Run (local stdio — Claude Desktop / Cursor / any MCP client)
Client config example:
Run (remote streamable-http, for hosted MCP clients)
Tool schema
Telemetry
Every call is appended (best-effort, never blocks extraction) to
~/.cache/pdf-extract-mcp/mcp_usage.jsonl (override with
PDF_EXTRACT_STATE_DIR). Clients are recorded as salted hashes; no PDF
content and no PII are ever logged.
Note: as a distributed stdio bundle this file lives on the user's machine, so the publisher cannot read it. Real external usage is read from the hosting registry's owner API instead (
GET /servers/{namespace}/{name}/logson Smithery returns the invocation count).
Stack
mcp >= 1.2 (works on both mcp 1.x FastMCP and mcp 2.x MCPServer), pdfplumber,
openpyxl. pandas is optional — when absent the package falls back to a
lightweight list-of-rows table (stdlib CSV/JSON + openpyxl), which keeps the
distributable bundle small. Python 3.10+.
License
MIT
Source: README.md at commit 0c3e59d
Tools
0Version history
2- v0.3.0LatestOct 17, 2026
- v0.1.0Oct 16, 2026
Score
50% of the applicable checks met
How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.
- Reached in the last 30 days25 pts
Keep the endpoint answering the MCP handshake; SourceWeft probes it every 30 days.
- Auth declared10 pts
Declare the credential headers in the registry entry, or keep the endpoint answering the probe so its auth can be classified.
- Tools listed15 pts
Answer tools/list without a credential, or ship a package that starts in a sandbox without one.
- DescriptionRequired15 pts
- Logo10 pts
- Documentation15 pts
- License10 pts