$git clone https://github.com/SylphxAI/pdf-reader-mcpThe most-starred PDF MCP server on GitHub.
| 1 | <div align="center"> |
| 2 | |
| 3 | <p align="center"> |
| 4 | <img src="https://mark.sylphx.com/api/v1/banner?type=glass&theme=tokyonight&text=pdf+reader+mcp&desc=%F0%9F%93%84+The+PDF+intelligence+layer+for+AI+agents+%E2%80%94+Agent+Document+Twin%2C+evidence-firs&height=200&animation=rise&credit=0" alt="pdf-reader-mcp — Sylphx Mark banner" width="100%" /> |
| 5 | </p> |
| 6 | |
| 7 | # 📄 PDF Reader MCP |
| 8 | |
| 9 | ### Your agent read the PDF. **Did it read the truth?** |
| 10 | |
| 11 | The most-starred PDF MCP server on GitHub. |
| 12 | |
| 13 | > **Published stable: `@sylphx/pdf-reader-mcp@3.0.14` (TypeScript path).** |
| 14 | > Pure-Rust cutover is **in progress and not published**. Versions `3.0.15`–`3.1.1` |
| 15 | > are **WITHDRAWN** (deprecated on npm). Do not install them. |
| 16 | > **Publish freeze** until capability-first semantic compatibility is proven (ADR-0005) — not exact PDF.js JSON equality, and no premature releases. |
| 17 | |
| 18 | [](https://github.com/SylphxAI/pdf-reader-mcp/stargazers) |
| 19 | [](https://www.npmjs.com/package/@sylphx/pdf-reader-mcp) |
| 20 | [](https://opensource.org/licenses/MIT) |
| 21 | [](https://github.com/SylphxAI/pdf-reader-mcp/actions/workflows/ci.yml) |
| 22 | [](https://codecov.io/gh/SylphxAI/pdf-reader-mcp) |
| 23 | [](https://www.rust-lang.org/) |
| 24 | [](https://www.npmjs.com/package/@sylphx/pdf-reader-mcp) |
| 25 | [](#docker) |
| 26 | |
| 27 | **Local-first** · **Published: TS 3.0.14** · **Pure-Rust experimental** · **Publish freeze** |
| 28 | |
| 29 | [⭐ Star this repo](https://github.com/SylphxAI/pdf-reader-mcp) if agents should cite PDFs with proof, not guess from plain text. |
| 30 | · [Quick start](#quick-start) · [See it work](#see-it-work) · [Roadmap](docs/roadmap/sota-family-roadmap.md) · [Why not plain text?](#why-not-a-plain-text-dump) |
| 31 | </div> |
| 32 | |
| 33 | --- |
| 34 | |
| 35 | ## The problem |
| 36 | |
| 37 | PDFs are not text files. They are layout, pixels, tables, hidden text, scanned |
| 38 | pages, and reading order that breaks the moment you flatten them. |
| 39 | |
| 40 | Most PDF tools give agents a **text dump**. Tables disappear. Scanned pages go |
| 41 | blank. Hidden text sneaks in. Citations become guesses. Then the model |
| 42 | hallucinates — confidently. |
| 43 | |
| 44 | **PDF Reader MCP is built for the moment your agent needs to prove an answer, not |
| 45 | just sound plausible.** |
| 46 | |
| 47 | ## Why not a plain text dump? |
| 48 | |
| 49 | | Typical PDF path | PDF Reader MCP | |
| 50 | | --- | --- | |
| 51 | | Dump text into context | Return markdown, chunks, tables, and a linked document map | |
| 52 | | "Trust the summary" | Page numbers, bounding boxes, crop IDs, and render evidence | |
| 53 | | Hope tables survived | Cells, geometry, confidence, warnings, continuation hints | |
| 54 | | Scanned pages silently empty | OCR path with word boxes and provenance | |
| 55 | | No idea what is risky | Trust report for hidden text, spoofing, unsafe links, injection-like content | |
| 56 | | Ship and pray | **39/39** SOTA release-gate checks on every version | |
| 57 | |
| 58 | Full capability matrix: [comparison guide](docs/comparison/index.md). |
| 59 | |
| 60 | ## See it work |
| 61 | |
| 62 | **Install once. Call once.** |
| 63 | |
| 64 | ```bash |
| 65 | claude mcp add pdf-reader -- npx @sylphx/pdf-reader-mcp@3.0.14 |
| 66 | ``` |
| 67 | |
| 68 | ```json |
| 69 | { |
| 70 | "sources": [{ "path": "/absolute/path/to/report.pdf" }] |
| 71 | } |
| 72 | ``` |
| 73 | |
| 74 | `read_pdf` inspects the PDF, picks the extraction route, and returns the Agent |
| 75 | Document Twin — no manual `include_*` flags required: |
| 76 | |
| 77 | ```json |
| 78 | { |
| 79 | "auto_read": { |
| 80 | "workflow": "digital_text_route", |
| 81 | "selected_arguments": { |
| 82 | "include_markdown": true, |
| 83 | "include_tables": true, |
| 84 | "include_chunks": true, |
| 85 | "incl |