
pdffr
io.github.AmerSarhanPublished by GitHub account AmerSarhanv0.1.1Updated Oct 24, 2026
Local, private PDF to Markdown for agents: geometry-first parsing, OCR only where needed.
Overview
A local MCP server that converts PDFs to Markdown, outlines and tables for an AI assistant, parsing text geometry first and using on-device OCR only where text-
- What you can do
- Convert a PDF to Markdown from a file path, URL or base64 bytes, with optional page ranges, OCR toggle, language and character limit, returning Markdown plus a stats footer. Extract headings with level, text and page so the assistant can pick pages before reading them. Extract every table as JSON rows grouped by page. All three tools accept the same path, URL or base64 inputs.
- When to use it
- Useful when an assistant needs to read, summarize or quote PDF reports, invoices or scans locally, especially when documents should not be uploaded to a third-party service or when tables and outlines need structured extraction.
- Requirements
- Runs as a local stdio process via npx (package pdffr-mcp); requires Node 20 or newer. The first run downloads the OCR model for the requested language (English by default) into the OS temp directory. No API keys, accounts or environment variables are declared. Fetching a URL input needs network access.
Installation
In SourceWeft
- Open pdffr 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
pdffr-mcp
An MCP server that gives any agent — Claude Desktop, Claude Code, Cursor, Windsurf, Zed, your own — a local, private PDF → Markdown tool backed by pdffr. Born-digital pages decompile from glyph geometry in milliseconds; scans and screenshots get on-device OCR only where the text layer can't explain the ink. Nothing leaves the machine.
Install
Claude Desktop / Claude Code / Cursor / Windsurf — add to your MCP config:
Claude Code one-liner:
Requires Node 20+. The first run downloads the OCR model for the requested language (English by default) into the OS temp directory.
Tools
pdf_to_markdown
Decompile a PDF to Markdown. Give it one of path, url or base64.
Returns the Markdown, followed by a one-line stats footer (pages, time, OCR regions).
pdf_outline
Headings only — level, text and page — so an agent can decide which pages to read before paying for them. Same inputs (path / url / base64, ocr, lang).
pdf_tables
Every table as JSON rows ([{ page, rows: string[][] }]). Same inputs.
Why not a vision model
A PDF already knows where every glyph is. pdffr reads that geometry directly and reserves OCR for the pixels the text layer doesn't explain, so a 30-page report comes back in well under a second and a scanned invoice in a couple of seconds — with no API key and no upload. See the architecture notes.
MIT © Amer Sarhan
Source: packages/mcp/README.md at commit 642d495
Tools
0Version history
1- v0.1.1LatestSep 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
