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.

VerifiedSTDIODesktop onlyFiles & StorageData & Analytics

Overview

AI-generated 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.
Before you install
Free tier is limited to 100 pages per rolling 30 days per client and 50 MB per file; above quota it returns a quota error rather than billing. A PDF given by URL is fetched from that address, so content leaves the machine. Every call is appended to a local usage log with salted client hashes; the README states no PDF content or PII is logged. Redaction is on by default but can be turned off.

Installation

In SourceWeft

  1. Open Pdf Extract Mcp in the dashboard and add it to a workspace.
  2. 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:

RegionMasked
US / internationalSSN, EIN/TIN, IBAN, SWIFT/BIC, routing/ABA, account numbers, card numbers (plain and 4111 1111 1111 1111 / dashed), US & international phone, email
China18/15-digit national ID, mobile phone, bank card, USCC (统一社会信用代码), passport, 2–3 char personal names, organization keywords

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_EXCEEDED response with an in-band upgrade pointer. It never silently bills.
  • Set PDF_EXTRACT_API_KEY to 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)

bash
pip install -e .pdf-extract-mcp

Client config example:

json
{  "mcpServers": {    "pdf-extract": {      "command": "pdf-extract-mcp",      "env": {}    }  }}

Run (remote streamable-http, for hosted MCP clients)

bash
REMOTE_TRANSPORT=http MCP_HOST=127.0.0.1 MCP_PORT=5060 \  python -m pdf_extract_mcp.server# POST JSON-RPC to http://127.0.0.1:5061/mcp

Tool schema

extract_pdf(  pdf_base64: str | None,     # preferred: PDF bytes as base64  pdf_url:    str | None,     # alternative: direct https .pdf URL  output:     "csv"|"json"|"xlsx",   # default csv  redact_pii: bool = true,  api_key:    str | None,    # paid key, optional) -> {  ok, type: "tables"|"text", pages, tables, rows, columns,  csv | rows_json | xlsx_base64,   # depends on output  elapsed_ms}

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}/logs on 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

0
SourceWeft has not started this package in its sandbox yet, so its tools are not known.

Version history

2
  1. v0.3.0LatestOct 17, 2026
  2. 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