/ Directory / Playground / pdf-reader-mcp
● Community SylphxAI ⚡ Instant

pdf-reader-mcp

by SylphxAI · SylphxAI/pdf-reader-mcp

One tool, read_pdf, that extracts text, images, and metadata from local or remote PDFs 5-10× faster via parallel page processing.

pdf-reader-mcp (SylphxAI) is a focused Node.js MCP exposing a single tool that handles all PDF extraction. Uses PDF.js with parallel page workers and Y-coordinate layout preservation. Supports local paths and HTTP/HTTPS URLs. 94% test coverage makes it safer for production pipelines.

Why use it

Key features

Live Demo

What it looks like in practice

pdf-reader.replay ▶ ready
0/0

Install

Pick your client

~/Library/Application Support/Claude/claude_desktop_config.json  · Windows: %APPDATA%\Claude\claude_desktop_config.json
{
  "mcpServers": {
    "pdf-reader": {
      "command": "npx",
      "args": [
        "-y",
        "pdf-reader-mcp"
      ],
      "_inferred": true
    }
  }
}

Open Claude Desktop → Settings → Developer → Edit Config. Restart after saving.

~/.cursor/mcp.json · .cursor/mcp.json
{
  "mcpServers": {
    "pdf-reader": {
      "command": "npx",
      "args": [
        "-y",
        "pdf-reader-mcp"
      ],
      "_inferred": true
    }
  }
}

Cursor uses the same mcpServers schema as Claude Desktop. Project config wins over global.

VS Code → Cline → MCP Servers → Edit
{
  "mcpServers": {
    "pdf-reader": {
      "command": "npx",
      "args": [
        "-y",
        "pdf-reader-mcp"
      ],
      "_inferred": true
    }
  }
}

Click the MCP Servers icon in the Cline sidebar, then "Edit Configuration".

~/.codeium/windsurf/mcp_config.json
{
  "mcpServers": {
    "pdf-reader": {
      "command": "npx",
      "args": [
        "-y",
        "pdf-reader-mcp"
      ],
      "_inferred": true
    }
  }
}

Same shape as Claude Desktop. Restart Windsurf to pick up changes.

~/.continue/config.json
{
  "mcpServers": [
    {
      "name": "pdf-reader",
      "command": "npx",
      "args": [
        "-y",
        "pdf-reader-mcp"
      ]
    }
  ]
}

Continue uses an array of server objects rather than a map.

~/.config/zed/settings.json
{
  "context_servers": {
    "pdf-reader": {
      "command": {
        "path": "npx",
        "args": [
          "-y",
          "pdf-reader-mcp"
        ]
      }
    }
  }
}

Add to context_servers. Zed hot-reloads on save.

claude mcp add pdf-reader -- npx -y pdf-reader-mcp

One-liner. Verify with claude mcp list. Remove with claude mcp remove.

Use Cases

Real-world ways to use pdf-reader-mcp

How to review a contract PDF with Claude

👤 Legal ops, founders, PMs ⏱ ~20 min beginner

When to use: You need to understand what's in a 50-page contract and flag unusual clauses.

Flow
  1. Read the full PDF
    Use read_pdf on ./contracts/msa-acme.pdf. Extract text and metadata.✓ Copied
    → Full text + author/title/date metadata
  2. Ask for a structured summary
    Summarize: parties, term, payment terms, IP, termination, unusual clauses. Quote the exact clause for each.✓ Copied
    → Structured summary with quotes
  3. Red-flag review
    Compared to a standard SaaS MSA, what clauses are unusual or risky? Cite page numbers.✓ Copied
    → Prioritized list of things to negotiate

Outcome: A 15-minute review instead of a 2-hour one — with citations.

Pitfalls
  • Scanned PDFs return empty text — pdf-reader needs a text layer; run ocrmypdf input.pdf output.pdf first

Digest a folder of research PDFs into a summary table

👤 Analysts, researchers ⏱ ~15 min beginner

When to use: You downloaded 30 whitepapers and need a skim-layer before deciding what to read deeply.

Flow
  1. List PDFs
    List all PDFs in ./papers/. For each, extract title and abstract.✓ Copied
    → Table: filename, title, abstract
  2. Classify and rank
    Classify each paper into [relevant / tangential / skip]. Give a 1-line 'why'.✓ Copied
    → Prioritized reading list

Outcome: A reading order based on content, not file name.

Combine with: filesystem

Extract structured data from invoice PDFs

👤 Finance, AP teams ⏱ ~20 min intermediate

When to use: You receive PDF invoices and want them as CSV or JSON for your books.

Flow
  1. Extract per invoice
    For each PDF in ./inbox/, extract: vendor, invoice_number, date, total, line_items[]. Return as JSON array.✓ Copied
    → Structured JSON per invoice
  2. Flag anomalies
    Highlight any invoices with totals >$10k or with line items that don't add up✓ Copied
    → Review queue

Outcome: Automated AP triage with human-in-the-loop for flags.

Combine with: google-sheets

Combinations

Pair with other MCPs for X10 leverage

pdf-reader + filesystem

Iterate over a PDF folder, write summaries alongside

For each PDF in ./papers/, write a corresponding .md summary in the same folder.✓ Copied
pdf-reader + google-sheets

Invoice data straight into a Sheets ledger

Extract invoices from ./inbox/*.pdf and append one row per invoice to my 'AP' sheet.✓ Copied

Tools

What this MCP exposes

ToolInputsWhen to callCost
read_pdf path: str (local or URL), options?: { pages?, include_images?, include_metadata? } Any PDF ingest — single tool handles all operations Local CPU only

Cost & Limits

What this costs to run

API quota
None — runs locally
Tokens per call
A 50-page doc is 20k-100k tokens
Monetary
Free
Tip
Use the pages option to limit extraction to the first N pages when prototyping

Security

Permissions, secrets, blast radius

Credential storage: None
Data egress: Only when given HTTP URLs; local paths stay local

Troubleshooting

Common errors and fixes

Empty text from a valid PDF

PDF is image-only. Run OCR first: ocrmypdf in.pdf out.pdf, then read

Verify: Check metadata; if `producer` says 'Scanner', it's imaged
Out-of-memory on huge PDFs

Pass pages: [1, 50] to chunk; process in ranges

Garbled text / wrong reading order

Some PDFs use non-standard layouts. Try disabling layout-preservation for raw stream order

Alternatives

pdf-reader-mcp vs others

AlternativeWhen to use it insteadTradeoff
mcp-server-pdf (simple)Minimal dependency, okay with slower single-threadedMuch slower on large docs
LlamaParse APIYou need LLM-grade layout understanding of complex forms/tablesPaid, cloud, better on messy docs

More

Resources

📖 Read the official README on GitHub

🐙 Browse open issues

🔍 Browse all 400+ MCP servers and Skills