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.

VerifiedSTDIODesktop onlyFiles & StorageData & Analytics

Overview

AI-generated 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.
Before you install
The url input makes the server fetch a remote file, so only pass URLs you trust. The first run downloads an OCR model, which needs network access and disk space in the temp directory. Output is truncated at maxChars by default, so long documents may be cut off. Processing is described as local, with nothing leaving the machine.

Installation

In SourceWeft

  1. Open pdffr 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

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:

json
{  "mcpServers": {    "pdffr": {      "command": "npx",      "args": ["-y", "pdffr-mcp"]    }  }}

Claude Code one-liner:

bash
claude mcp add pdffr -- npx -y pdffr-mcp

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.

ArgumentTypeNotes
pathstringabsolute or relative file path
urlstringfetched with the server's network access
base64stringraw PDF bytes
pagesstringe.g. "1-3,7"; default all
ocrbooleanescalate unexplained ink to OCR (default true)
langstringtesseract language(s), e.g. "deu", "eng+ara" (default "eng")
maxCharsnumbertruncate the result (default 200 000) — the response says if it did

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

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

Version history

1
  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