Evidence-first PDF MCP. Agent Document Twin with citeable page+bbox evidence.
Copy the AI prompt to install this server into Claude Code, Cursor, or another agent β or use 1-click editor setup below.
We haven't yet run this listing's install command through our automated sandbox check. This isn't a red flag β we're steadily working through the catalog.
π‘ Paste the JSON block into your client's configuration file under mcpServers, then restart the application.
Local-first PDF answers with page-level proof. One call returns markdown, tables, and citations. OCR stays off until you ask for it.
npm @sylphx/citra Β· bin citra Β· MCP io.github.SylphxAI/citra
Formerly @sylphx/pdf-reader-mcp. Install @sylphx/citra.
Most PDF tools hand an agent a wall of text. The agent then guesses β the page number, the table grid, the region behind the claim. And a confidently wrong answer costs more than "I can't tell."
| A text dump says | Citra returns |
Locators in, citations out. A human can check the claim.
Excerpt of a real read_pdf response against test/fixtures/differential/v3014-selectable-table-v1.pdf
(paths shortened). The table is detected and linked to its continuation on page 2 β and when
Citra cannot prove something, it says so in gaps instead of guessing.
A call with only sources uses fast. You get markdown, tables, chunks, a
document map, page geometry, layout, and semantic hints β plus metadata and the
page count. You do not get a trust audit, and you do not get OCR.
| You send | You get |
|---|---|
sources only, or a page filter | fast β the lean read above. Every requested page, not a sample. |
"profile": "quality" | fast, plus the text layer, HTML, elements, document AST, outline, annotations, forms, attachments, structure, permissions, full text, and page labels. Still no audit and no OCR. |
"profile": "research" | quality, plus safety findings, a trust report, and an accessibility report. |
"auto": true | the legacy balanced preset: fast plus the three audits, without the quality structure. |
"auto_detail" | wins over profile. fast, balanced, or full. |
"auto": false or any include_* | only the flags you set. Metadata and page count stay on unless you turn them off. |
| OCR or a rendered page | include_ocr_text_layer, or pdf_evidence (ocr_pages, render_page, extract_regions). Never part of a profile. |
pages filters the read. It does not turn the preset off.
No Docker. No API key. No global install. That starts a stdio MCP server your agent can use immediately.
| Your client | Setup |
|---|---|
| Any agent / CLI | npx -y @sylphx/citra |
| Claude Code | claude mcp add citra -- npx -y @sylphx/citra |
| Claude Desktop / Cursor / VS Code / Codex | "command": "npx", "args": ["-y", "@sylphx/citra"] |
| Global CLI | npm i -g @sylphx/citra β citra |
mcpServers snippetnpx MCP server β not a 20-step bootstrap.Four tools. One surface. Few, powerful, obvious.
| Tool | What an agent uses it for |
|---|---|
read_pdf | The fast read: markdown, tables with cells and geometry, and citation-ready chunks. OCR is pdf_evidence. |
search_pdf | Cheap literal retrieval first: page and bounding-box locators before a deep read |
pdf_compare | Compare two local PDFs at page and term level |
pdf_evidence | Focused verification: inspect, render_page, extract_regions, ocr_pages, analyze_regions |
Full option and result reference: docs/api
| β₯ 10.4Γ | median warm read_pdf latency vs the TypeScript engine β same host (linux-x64), 8 required fixture classes, median of class speedups ~15.4Γ |
| ~3.4Γ smaller | clean install β 82.3 MiB β 24.4 MiB of node_modules vs TS 3.0.14 |
| 20 files | on disk vs 4,101 β one native binary per platform, zero production JS dependencies |
| 5 platforms | macOS arm64/x64 Β· Linux x64/arm64 Β· Windows x64 |
Warm-cache figure is method-bounded: long-lived MCP server, repeated identical local
read_pdf after warm-up, Rust 4.1.0 against the TypeScript engine 3.0.14, one linux-x64 host.
The first request in a process pays full parse cost. No multi-host extrapolation.
See Performance.
One optional native package is selected for your host only:
| Platform | Native package |
|---|---|
| macOS arm64 | @sylphx/citra-darwin-arm64 |
| macOS x64 | @sylphx/citra-darwin-x64 |
| Linux x64 | @sylphx/citra-linux-x64-gnu |
| Linux arm64 | @sylphx/citra-linux-arm64-gnu |
| Windows x64 | @sylphx/citra-win32-x64-msvc |
url source is a pinned, redirect-revalidated http(s) fetch, not a browser; private addresses are rejected unless MCP_PDF_ALLOW_PRIVATE_IPS=true is explicitly set (policy).MCP_API_KEY enforced before binding elsewhere, and --allow-dir restricts filesystem reach. Details: security docs Β· report privately per SECURITY.md.| Product | Job |
|---|---|
| Iris | Image facts and pixel evidence |
| Cue | Video timelines and timestamp evidence |
| Spine | Repository architecture and impact |
| Locus | Exact code-chunk retrieval |
| Lookout | Web research with source excerpts |
Each product is independent. Install only the tools your agent needs.
| π Website | sylphxai.github.io/citra |
| β‘ Quickstart | Getting started |
| π API reference | docs/api |
| π Evidence contract | What "proof" means |
| π Performance | Method & results |
| βοΈ Comparison | Why not the alternatives |
Stop PDF hallucinations. Give agents proof.
β Star this repo if Citra made your agent tell the truth.
Factual signals from GitHub, npm, and our automated checks β not a rating.
No reviews yet β be the first to share how this listing worked for you.
Showcase your server listing on GitHub or your project documentation. Embed this dynamic SVG badge to highlight official listing status and live engagement.
[](https://allmcps.com/mcp/pdf-reader-mcp)<a href="https://allmcps.com/mcp/pdf-reader-mcp"><img src="https://allmcps.com/api/badge/pdf-reader-mcp?style=directory" alt="PDF Reader MCP on AllMCPs" /></a>