PDF Reader MCP Server
The PDF Reader MCP Server allows AI agents to securely read and extract data from PDF files.
Capabilities:
Extract full text content from PDFs
Extract text from specific pages or page ranges
Retrieve PDF metadata (author, title, creation date, etc.)
Get the total page count of a PDF
Process multiple PDF sources (local paths or URLs) in a single request
Operate securely within the defined project root directory
Provide structured JSON output for easy parsing by AI agents
Be installed and run via npm (npx) or Docker
Integrates with Codecov for code coverage reporting, as indicated by the badge showing coverage statistics for the project.
Provides Docker container deployment option, allowing users to run the PDF reader MCP server in an isolated environment with project directory mounting.
Integrates with GitHub for CI/CD pipeline execution, issue tracking, and repository management for the PDF reader MCP server.
Publishes to npm registry allowing installation via npm, with version tracking displayed through npm badge.
Future plans include PWA support for the documentation site, enabling offline access and mobile optimization.
Uses Vitest for performance benchmarking, measuring operations per second for various PDF processing scenarios.
Leverages Zod for input validation, ensuring that requests to the PDF reader MCP server are properly formatted and validated.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@PDF Reader MCP Serverextract text from the quarterly report PDF in the reports folder"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
📄 PDF Reader MCP
Your agent read the PDF. Did it read the truth?
The most-starred PDF MCP server on GitHub. One call turns any PDF into an Agent Document Twin — structured text, tables, trust signals, and source evidence you can search, crop, and cite.
Local-first · One smart read_pdf call · Evidence with page + bbox · 397 tests · 39/39 release-gate checks
⭐ Star this repo if agents should cite PDFs with proof, not guess from plain text. · Quick start · See it work · Roadmap · Why not plain text?
The problem
PDFs are not text files. They are layout, pixels, tables, hidden text, scanned pages, and reading order that breaks the moment you flatten them.
Most PDF tools give agents a text dump. Tables disappear. Scanned pages go blank. Hidden text sneaks in. Citations become guesses. Then the model hallucinates — confidently.
PDF Reader MCP is built for the moment your agent needs to prove an answer, not just sound plausible.
Related MCP server: PDF Reader MCP Server
Why not a plain text dump?
Typical PDF path | PDF Reader MCP |
Dump text into context | Return markdown, chunks, tables, and a linked document map |
"Trust the summary" | Page numbers, bounding boxes, crop IDs, and render evidence |
Hope tables survived | Cells, geometry, confidence, warnings, continuation hints |
Scanned pages silently empty | OCR path with word boxes and provenance |
No idea what is risky | Trust report for hidden text, spoofing, unsafe links, injection-like content |
Ship and pray | 39/39 SOTA release-gate checks on every version |
Full capability matrix: comparison guide.
See it work
Install once. Call once.
claude mcp add pdf-reader -- npx @sylphx/pdf-reader-mcp{
"sources": [{ "path": "/absolute/path/to/report.pdf" }]
}read_pdf inspects the PDF, picks the extraction route, and returns the Agent
Document Twin — no manual include_* flags required:
{
"auto_read": {
"workflow": "digital_text_route",
"selected_arguments": {
"include_markdown": true,
"include_tables": true,
"include_chunks": true,
"include_trust_report": true,
"include_document_map": true
}
},
"markdown": "# Annual Report 2026\n\n## Executive Summary\n\n...",
"tables": [
{
"page": 5,
"cells": [
{ "row": 0, "col": 0, "text": "Quarter", "bbox": [72, 650, 180, 670] },
{ "row": 0, "col": 1, "text": "Revenue", "bbox": [200, 650, 300, 670] }
],
"confidence": 0.95
}
],
"trust_report": { "risk_level": "low", "findings": [] }
}Abbreviated shape — see full example and workflows.
Search, then verify the source region:
{
"sources": [{ "path": "/absolute/path/to/report.pdf" }],
"query": "revenue recognition",
"max_matches_per_source": 10
}Use the returned page and bounding box with pdf_evidence (render_page or
extract_regions) when the agent needs visual proof before citing.
Why agents use it
Need | What you get |
Read the document | Markdown, JSON, HTML, page text, metadata, chunks, and semantic AST. |
Prove the answer | Page numbers, bounding boxes, evidence IDs, region crops, and source renders. |
Handle scanned PDFs | Rendered pages routed through configured OCR providers with word boxes and provenance. |
Recover tables | Selectable-text and OCR-derived tables with cells, geometry, confidence, warnings, and continuation hints. |
See what text extraction misses | Visual page evidence, focused crops, and configured visual-region provider adapters. |
Protect the agent | Trust reports for hidden text, prompt-injection-like content, visual spoofing, unsafe links, and redaction. |
Route accessibility work | Tagged-PDF coverage, tag-visible coverage, headings, images, forms, links, permissions, and page grades. |
Ship with proof | CI, package smoke, deterministic quality benchmarks, provider artifacts, and release gates. |
Quick Start
Claude Code
claude mcp add pdf-reader -- npx @sylphx/pdf-reader-mcpClaude Desktop
Add this to claude_desktop_config.json:
{
"mcpServers": {
"pdf-reader": {
"command": "npx",
"args": ["@sylphx/pdf-reader-mcp"]
}
}
}Any MCP Client
npx @sylphx/pdf-reader-mcpNode.js >=22.13 is required. The default package works without downloading
OCR models, vision models, Ollama, LM Studio, llama.cpp, or cloud credentials.
Docker
# Pre-built image from GitHub Container Registry
docker run --rm -i -v /path/to/pdfs:/workspace ghcr.io/sylphxai/pdf-reader-mcp
# Or build locally
docker build -t pdf-reader-mcp . && \
docker run --rm -i -v /path/to/pdfs:/workspace pdf-reader-mcpNeed Cursor, VS Code, Windsurf, Cline, Warp, HTTP transport, Docker customization, or filesystem sandboxing? See the installation guide.
MCP Tool Surface
Tool | Use it when the agent needs to... |
| Use first. With only |
| Search selectable text and optional OCR text with snippets, offsets, boxes, and provenance. |
| One focused evidence tool for |
Full request and response details live in the API reference.
Agents can force auto: false for precise manual extraction, or use
auto_detail: "fast", "balanced", or "full" to control output depth without
learning dozens of switches.
Agent Document Twin
The Agent Document Twin is the main reason to use this project instead of a plain text extractor. It keeps the document readable by agents while preserving the evidence needed to verify the answer.
Layer | Output |
Lossless PDF layer | Text runs, lines, words, characters, fonts, transforms, page geometry, metadata coverage, outlines, forms, attachments, annotations, permissions, and structure signals where available. |
Visual layer | Page renders, region crops, crop provenance, visual candidates, OCR source renders, and provider-normalized visual evidence. |
Semantic layer | Page, section, paragraph, list, caption, header, footer, table, image, chart, formula, figure, and diagram nodes where available. |
Evidence layer | Stable IDs, page ranges, bounding boxes, crop IDs, confidence, warnings, and extraction method provenance. |
Agent layer | Markdown, JSON, HTML, citation chunks, routing plans, trust report, accessibility report, and document map indexes. |
Example: Read With Evidence
{
"sources": [{ "path": "/absolute/path/to/report.pdf" }],
"include_markdown": true,
"include_chunks": true,
"include_tables": true,
"include_text_layer": true,
"include_document_map": true,
"include_document_ast": true,
"include_trust_report": true,
"include_accessibility_report": true
}Provider-Enabled Intelligence
The current package stays local-first. The roadmap target is a Rust MCP server with the same public tool contract, plus optional deployment-controlled providers for OCR and visual enrichment.
Capability | Default behavior | Enable with |
Selectable-text PDFs | Works out of the box | No extra dependency |
Rendering and crops | Works out of the box | No extra dependency |
Trust and accessibility reports | Works out of the box | No extra dependency |
OCR for scanned pages | Provider-ready |
|
Visual table/chart/formula/figure/image enrichment | Provider-ready |
|
Supported visual provider paths include local commands, local HTTP servers, Ollama, OpenAI-compatible endpoints, LM Studio, and llama.cpp. Request payloads cannot choose arbitrary executables or arbitrary provider URLs; providers are configured by the deployment environment.
# Example shape only. Point these at your own local OCR command.
export MCP_PDF_OCR_COMMAND="tesseract"
export MCP_PDF_OCR_ARGS_JSON='["{input}", "stdout", "tsv"]'See the guide and API reference for provider configuration details.
Release Proof
Claims are backed by shipped, machine-readable artifacts. Releases do not ship unless the gate passes.
Artifact | Current proof |
|
|
| score |
| strict provider evidence enabled, 4/4 final-bar provider profiles certified |
| corpus-style PDF intelligence assertions with capability summaries |
| deterministic crop-substrate proof for provider-manifest regions |
| deterministic scoring proof for table, formula, chart, figure, and image regions |
Run the same proof locally:
bun run benchmark:release-artifacts
bun run benchmark:release-gate
bun run package:smokeSee performance and release evidence for the full benchmark contract.
Output Formats
read_pdf can return the same PDF in several agent-friendly forms:
Plain text and page text
Markdown for RAG and summarization
HTML for rendering or downstream transformation
Structured elements with page and geometry provenance
Document AST for semantic navigation
Citation chunks with page, element, table, and bbox references
Tables with rows, cells, geometry, warnings, and confidence
Trust and accessibility reports
Agent Document Twin indexes linking text, visual, OCR, table, trust, and accessibility evidence
Security Model
PDFs can contain hostile or misleading content. The server treats extraction as an evidence workflow, not as a trusted text dump.
Local-first by default.
URL loading is guarded by host, private-IP, size, and HTTP policy controls.
OCR and visual providers are configured by environment, not by request body.
Trust reports surface hidden text, near-invisible geometry, off-page text, overlapping text, unsafe links, redaction signals, and prompt-injection-like content.
Rendering, crops, OCR, and visual enrichment preserve provenance so agents can route weak evidence to verification instead of silently trusting it.
Documentation
Topic | Link |
Docs site | |
Getting started | |
Installation and clients | |
API reference | |
Examples and workflows | |
Benchmark proof | |
Why evidence-first PDF reading | |
Stop PDF hallucinations (agent builders) | |
Capability overview | |
Architecture and design | |
Performance and release proof |
Development
git clone https://github.com/SylphxAI/pdf-reader-mcp.git
cd pdf-reader-mcp
bun install
bun run build
bun testUseful checks:
bun run check
bun run typecheck
bun run docs:build
bun run package:smoke
bun run benchmark:release-gateSupport
Help this reach more builders
If PDF hallucinations have wasted your context, your citations, or your trust in agent output, you are exactly who this project is for.
⭐ Star the repo — it is the fastest way to help more agent builders find evidence-first PDF reading. Share it in your MCP client setup, team wiki, or agent stack README.
Discovery (in progress)
Channel | Status |
Listed — claim server for full discoverability | |
Listed — | |
Open — multimedia/document processing listing | |
Open — community server highlight | |
Open — directory submission request | |
Branch ready — upstream PRs disabled | |
Not listed yet — free web-form submission |
Know another MCP directory? Open an issue with the link.
License
MIT © SylphxAI
Star History
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Tools
Latest Blog Posts
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/SylphxAI/pdf-reader-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server