Skip to main content
AllMCPs
BrowseBestCategoriesStackCompareToolsGuidesBlog
Log in Submit MCP

Stay in the loop

Get new MCP servers and top picks in your inbox.

AllMCPs

The open directory for discovering and installing Model Context Protocol servers.

Follow AllMCPs on X (opens in a new tab)AllMCPs on GitHub (opens in a new tab)
Launched onTiny Startupstinystartups.com
Explore
  • Browse servers
  • Best MCP servers
  • Categories
  • MCP clients
  • Agent prompts
  • Stack Builder
  • Compare servers
  • Random discovery New
  • Submit a server
  • Pricing & Boost Boost
Learn
  • Guides hub
  • What is MCP?
  • Install guide
  • Build an MCP server
  • Deploy an MCP server
  • Security guide
  • Troubleshooting
  • MCP for SEO & AEO
  • Protocol versioning
  • Blog & updates
Tools
  • All developer tools
  • Config generator
  • Config validator
  • Config auditor
  • MCP playground
  • Token calculator
  • OpenAPI β†’ MCP
  • Badge generator
For agents
  • REST API docs
  • Trust & traffic Live
  • Remote MCP server SSE β†— (opens in a new tab)
  • llms.txt β†— (opens in a new tab)
  • Catalog JSON β†— (opens in a new tab)
Company
  • About
  • Advertise Sponsor
  • Contact
  • X (@AllMCPs) β†— (opens in a new tab)
  • GitHub β†— (opens in a new tab)
  • Terms
  • Privacy
AllMCPs VerifiedAllMCPs VerifiedFeatured on Nick LaunchesFeatured on Nick LaunchesLaunch Llama NewsletterLaunch Llama NewsletterVerified DR - allmcps.comVerified DR - allmcps.comFeatured on SaaSGrowFeatured on SaaSGrowFeatured on Twelve ToolsFeatured on Twelve ToolsFeatured on Saaspa.geFeatured on Saaspa.geFeatured on Findly.toolsFeatured on Findly.toolsFeatured on Startup FameFeatured on Startup FameFeatured on LaunchKiwiFeatured on LaunchKiwiFeatured on ScrollLaunchFeatured on ScrollLaunchFeatured on DailyPingsFeatured on DailyPingsFazier badgeFazier badgeFeatured on NewTool.siteFeatured on NewTool.siteFeatured on saasfame.comFeatured on saasfame.comDR Checker - Domain RatingDR Checker - Domain RatingListed on Turbo0Listed on Turbo0Launched on LaunchBoard - Product Launch PlatformLaunched on LaunchBoard - Product Launch PlatformList on SimilarlabsList on Similarlabshttps://codetrendy.comhttps://codetrendy.comListed on DevTool.ioFeatured on BuildlistFeatured on BuildlistLaunched on Tiny StartupsFeatured on ShowMeBestAIFeatured on ShowMeBestAIFind us on LaunchZoneFind us on LaunchZoneAllMCPs VerifiedAllMCPs VerifiedFeatured on Nick LaunchesFeatured on Nick LaunchesLaunch Llama NewsletterLaunch Llama NewsletterVerified DR - allmcps.comVerified DR - allmcps.comFeatured on SaaSGrowFeatured on SaaSGrowFeatured on Twelve ToolsFeatured on Twelve ToolsFeatured on Saaspa.geFeatured on Saaspa.geFeatured on Findly.toolsFeatured on Findly.toolsFeatured on Startup FameFeatured on Startup FameFeatured on LaunchKiwiFeatured on LaunchKiwiFeatured on ScrollLaunchFeatured on ScrollLaunchFeatured on DailyPingsFeatured on DailyPingsFazier badgeFazier badgeFeatured on NewTool.siteFeatured on NewTool.siteFeatured on saasfame.comFeatured on saasfame.comDR Checker - Domain RatingDR Checker - Domain RatingListed on Turbo0Listed on Turbo0Launched on LaunchBoard - Product Launch PlatformLaunched on LaunchBoard - Product Launch PlatformList on SimilarlabsList on Similarlabshttps://codetrendy.comhttps://codetrendy.comListed on DevTool.ioFeatured on BuildlistFeatured on BuildlistLaunched on Tiny StartupsFeatured on ShowMeBestAIFeatured on ShowMeBestAIFind us on LaunchZoneFind us on LaunchZone
Β© 2026 Jackalope Digital LLC. All rights reserved.
  1. Home
  2. πŸ’» Developer Tools
  3. Pdffr
P
Health: Not checked yetWe have not completed a health check for this listing yet.No health check has run yet.

Pdffr

User RatingsBe the first to rate and review this MCP server! Enrichment pendingWe haven’t run our AI enrichment pass on this listing yet, so the overview, use cases, and FAQ below may be sparse or missing. We work through the catalog over time β€” check back soon.
View RepositoryVisit Website

Local, private PDF to Markdown for agents: geometry-first parsing, OCR only where needed.

Quick Install

Automated & IDE Setup

Copy the AI prompt to install this server into Claude Code, Cursor, or another agent β€” or use 1-click editor setup below.

Add to CursorAdd to VS Code
Manual Client & Custom JSON ConfigExpand JSON β–Ύ

Client Config & Setup

Choose your client or environment
Target File:~/Library/Application Support/Claude/claude_desktop_config.json
claude_desktop_config.json
{
  "mcpServers": {
    "pdffr": {
      "command": "npx",
      "args": [
        "-y",
        "pdffr"
      ]
    }
  }
}

πŸ’‘ Paste the JSON block into your client's configuration file under mcpServers, then restart the application.

Install Directory Badge Claim listing AlternativesπŸ’» More in Developer Tools

Documentation Overview

pdffr

CI npm license

A PDF decompiler, not an image reader. PDF β†’ Markdown in the browser or Node, in milliseconds for born-digital pages β€” with on-device OCR spent only on the pixels the text layer can't explain.

Try it in your browser β†’ β€” drop any PDF; it never leaves the tab.

pdffr decompiling a mixed native + scanned document: the page on the left with native text tinted and the OCR region outlined, the markdown beside it

server.ts
import { decompile } from 'pdffr';

const { markdown, stats } = await decompile(file);
// stats.firstOutputMs β‰ˆ 150ms for a typical report; the file never leaves the tab
Terminal
npx pdffr report.pdf -o report.md

Why this exists

Every PDF→Markdown tool sits at one of two extremes:

ApproachSpeedQualityProblem
Text-layer extraction (pdfminer, pdf.js getTextContent)instantpoorPDF has no paragraphs, headings, tables or reading order β€” you get a soup of positioned strings
Render + OCR / vision model (Textract, LlamaParse, VLMs)slow, paid, cloudhighRasterizes a page that was already digital, then asks a model to re-read pixels the file could have told it exactly

~80% of real-world PDFs are born-digital: every glyph's exact coordinates, size and font are already in the file. pdffr treats PDF as what it is β€” a drawing program β€” and decompiles the drawing back into structure:

  • Geometry-native decompilation. Glyph runs β†’ lines β†’ an XY-cut reading-order tree over whitespace β†’ headings (font-size clustering), paragraphs (leading analysis), nested lists (marker glyph + indent), tables (ruling lines from the content stream, or column x-alignment), inline **bold**/*italic*/<sup>, math fonts and sub/superscripts transliterated to $LaTeX$, rotated text re-framed upright, running header/footer stripping, hyphenation repair. No rasterization. Milliseconds per page.
  • Render-diff oracle. When a page carries bitmaps or thin text coverage, the page is rendered once, the raster's ink mask is computed, and the dilated boxes of every native glyph are erased from it. What's left is ink the text layer cannot explain β€” scans, stamps, screenshots with burned-in text. Exact image rectangles from the content stream (CTM-tracked) sharpen the regions further. Only those regions go to OCR.
  • One IR for both sources. OCR words come back with boxes and confidence, get gated by a text-plausibility test (confidence alone lies on icons and charts), and enter the same geometry engine as native glyphs. Structure recovery is source-agnostic.
  • Parallel and optimistic. Pages decompile concurrently; markdown streams out immediately with placeholders; a pool of tesseract workers fills them in place. Whole-page scans are split along their own ink into chunks so the pool works in parallel.
  • Private by construction. pdf.js and tesseract.js run in web workers in the user's tab. Nothing is uploaded.
  • Same engine in Node. pdffr/node runs the identical pipeline on the server or the command line, with @napi-rs/canvas standing in for the DOM.

Install

Terminal
npm install pdffr pdfjs-dist tesseract.js
# Node / CLI additionally:
npm install @napi-rs/canvas

pdfjs-dist and tesseract.js are peer dependencies; @napi-rs/canvas is an optional peer used only by the Node entry.

Usage

Browser

server.ts
import { decompile, warmOcr, setPdfWorkerSrc } from 'pdffr';

// Bundled apps: point pdf.js at its worker. Without this, pdffr falls back to the jsdelivr build.
setPdfWorkerSrc(new URL('pdfjs-dist/build/pdf.worker.min.mjs', import.meta.url).href);

// Optional: pre-load OCR workers while the user is still choosing a file.
warmOcr();

const result = await decompile(file, {
  ocr: true, // escalate unexplained ink to on-device OCR (default true)
  lang: 'eng', // tesseract language(s): 'deu', 'eng+ara', 'chi_sim', …
  concurrency: 4, // pages decompiled in parallel
  onPage(page, md) {
    // streams: first the native pass, then again as OCR regions land
    render(page, md);
  },
  onEvent(e) {
    // every trace line, page (re)emit, and stats update
    if (e.type === 'trace') console.log(e.kind, e.msg);
  },
});

result.markdown; // the whole document
result.pages[0].blocks; // typed blocks: heading | para | math | list | table
result.stats; // firstOutputMs, nativeDoneMs, totalMs, ocrRegions, nativeChars, ...

Node

server.ts
import { decompileFile, terminateOcr } from 'pdffr/node';

const { markdown } = await decompileFile('invoice.pdf', { lang: 'deu' });
await terminateOcr(); // let the process exit once the tesseract workers are done

Command line

bash
pdffr scan.pdf                    # markdown on stdout, progress on stderr
pdffr scan.pdf -o scan.md --lang eng+fra
pdffr paper.pdf --no-ocr -q       # native text only, silent
pdffr paper.pdf --json --pages 1-3  # per-page markdown, typed blocks and stats as JSON

API

  • decompile(input, options?) β†’ Promise<DecompileResult> β€” input is an ArrayBuffer, Uint8Array, Blob or File. Options: ocr, lang, concurrency, pool, onPage, onEvent, pdfWorkerSrc.
  • decompileFile(path, options?) β€” Node only.
  • warmOcr(lang?) / terminateOcr() β€” pre-load or shut down the shared tesseract pool.
  • ocrPool(lang?) β€” the shared OcrPool; pass your own via options.pool to control worker count.
  • runPipeline(buffer, emit, { ocr, concurrency, escalate }) β€” the streaming core, if you want raw events.
  • blocksToMarkdown(blocks) β€” render typed blocks yourself.
  • setPdfWorkerSrc(url) β€” configure pdf.js's worker.

Types: Block, ListItem, Run, Region, Rules, PageState, Stats, PipelineEvent.

Integrations

PackageWhat it is
pdffr-mcpMCP server for Claude Desktop / Claude Code / Cursor / any agent: pdf_to_markdown, pdf_outline, pdf_tables β€” listed on the MCP Registry
pdffr-langchainLangChain.js document loader β€” one Markdown Document per page
pdffr-llamaindexLlamaIndex.TS reader β€” one Markdown Document per page
langchain-pdffr (PyPI)Python: pdffr.convert() and a LangChain PdffrLoader, driving the CLI (needs Node 20+)
server.ts
from langchain_pdffr import PdffrLoader
docs = PdffrLoader("report.pdf").load()   # one Markdown Document per page
config.json
{ "mcpServers": { "pdffr": { "command": "npx", "args": ["-y", "pdffr-mcp"] } } }

How a page flows through

Code
getTextContent ─► runs (x, y, w, h, size, bold, italic, math font, rotation)
                   β”‚
getOperatorList ─► exact bitmap rects + ruling lines (CTM walk), font resolution
                   β”‚
        suspicious? (bitmaps, or thin coverage)
             β”‚ no                          β”‚ yes
             β–Ό                             β–Ό
     structure pass                render page once (print intent)
                                   ink mask βˆ’ native glyph boxes = residual
                                   regions = bitmap rects βˆͺ residual components
                                   large regions split along their ink
                                   ─► OCR pool (2Γ—/3Γ— upsampling for small crops,
                                      second read of doubtful words,
                                      text-plausibility gate)
                                   ─► OCR runs join the same structure pass

Structure pass: rotated runs re-framed upright (a dominant rotation turns the whole page; a minority is a sidebar group) β†’ buildLines (math spans β†’ LaTeX) β†’ orderRuns (XY-cut: tall prose gutter β†’ vertical cut; largest whitespace band β†’ horizontal cut; ruled and aligned tables detected first as atomic boxes) β†’ toBlocks (headings, lists with nesting, paragraphs by leading, display math, tables, furniture stripping) β†’ markdown.

Demo

Terminal
npm install
npm run dev

Read the full README β†’View source on GitHub β†’

Related MCP Servers

View all in Developer Tools View all alternatives
  • PraisonAI logoPraisonAI

    AI Agents Framework with Self Reflection and MCP support

    πŸ’» Developer Tools1 views
    Compare vs PraisonAI β†’
  • Valet logoValet

    Get share links, publish and manage websites, artifacts and agents. No account needed.

    πŸ’» Developer Tools2 views
    Compare vs Valet β†’
  • Parseflow logoParseflow

    PDF parsing server with text extraction, metadata, search, images, and TOC via MCP

    πŸ’» Developer Tools0 views
    Compare vs Parseflow β†’
  • ProAgentStore logoProAgentStore

    MCP-first control plane for ProAgentStore agents and private instances.

    πŸ’» Developer Tools0 views
    Compare vs ProAgentStore β†’

Reviews

No reviews yet β€” be the first to share how this listing worked for you.

Frequently Asked Questions about Pdffr

Add the following block to your claude_desktop_config.json under mcpServers: "mcpServers": { "pdffr": { "command": "npx", "args": ["-y", "pdffr"] } }

AllMCPs Directory Badge

Full Badge Customizer

Showcase your server listing on GitHub or your project documentation. Embed this dynamic SVG badge to highlight official listing status and live engagement.

Badge Style:
Live Dynamic SVG PreviewPdffr AllMCPs Directory Badge
Markdown (GitHub README)
[![AllMCPs](https://allmcps.com/api/badge/pdffr?style=directory)](https://allmcps.com/mcp/pdffr)
HTML Embed
<a href="https://allmcps.com/mcp/pdffr"><img src="https://allmcps.com/api/badge/pdffr?style=directory" alt="Pdffr on AllMCPs" /></a>

Technical Specs & Signals

CategoryπŸ’»Developer Tools
More technical detailsExpand β–Ύ
TransportSTDIO
RuntimeNode.js
Last updatedSep 7, 2026
Views0
Unique ViewsTotal visits recorded for this listing page on AllMCPs.
Installs0
Installs & Copy ActionsTotal times users copied install commands or configuration snippets for this server.
27Quality signal: Emerging Β· 27/100How this signal is calculated β–Ύ
Server availabilityNot measured

Not scored for repo-hosted servers β€” we can't reach the running server, only its GitHub page. Hosted MCP endpoints are health-checked live.

Verified ownership8/20
Documentation & tools11/30
Adoption & activity1/15
Community engagement0/10

A guidance signal from public completeness & health data β€” not a user rating. New listings start lower and rise as they add docs, get verified, and grow adoption. Signals we can't observe for a listing are skipped, not counted against it.

β˜… FeaturedAllMCPs Server logo

AllMCPs Server

The official MCP server for AllMCPs.com - submit and manage tools directly from your AI. The open directory for MCP servers. Connect Claude, Cursor, Windsurf, and AI agents to databases, tools, files, and APIs. Explore 10,000+ servers. AllMCPs is the premier, open directory for discovering, evaluating, and installing Model Context Protocol (MCP) servers to equip AI agents and LLMs with real-world superpowers.

Explore Server β†’

Own this project?

This directory is pre-filled from public sources. Claim via GitHub README, site badge, or DNS TXT to unlock edit access and the Official badge β€” proof is checked automatically, then reviewed by our team.

Free dofollow backlink: add your website and place the AllMCPs badge on it β€” no claim needed. We detect it automatically and keep it verified as long as the badge stays live.

Claim & get free dofollow

Share & Embed

Add our SVG badge (dark/light directory styles) or embeddable widget to your site.

Explore more

More in πŸ’» Developer Tools β†’Best MCP servers for Developers β†’Alternatives to Pdffr β†’Install in Claude DesktopInstall in CursorInstall in VS Code