# PDF Reader MCP [Health: Active]

**Category:** 🔎 Search & Data Extraction  
**Repository:** https://github.com/SylphxAI/pdf-reader-mcp  
**GitHub Stars:** 1066  
**Views:** 12  
**Installs:** 0  
**Upvotes:** 0  
**Directory Page:** https://allmcps.com/mcp/pdf-reader-mcp

## Description
Evidence-first PDF MCP. Agent Document Twin with citeable page+bbox evidence.

## Tools
Capabilities this server exposes over MCP:

- **inspect** — Document and media evidence when Markdown is not enough. video_timeline (bounded scene/cue timeline) and render_frame (actual decoded frames), and cite_check (quote/location support, not semantic truth), are anymd Pro; PDF operations: inspect (page facts, metadata), render_page (PNG images), extract_regions (crop bounding boxes), ocr_pages / analyze_regions (configured OCR or vision provider), structure (JSON with document map, elements, geometry; profile quality|research adds trust and accessibility reports), compare (page-level diff of sources[0] vs sources[1]).
- **outline** — Return a document heading tree with stable node ids, title paths, page/slide/chapter ranges and Markdown byte ranges. PDF bookmarks or detected headings, Word headings, PowerPoint slides, EPUB chapters and headings, HTML and Markdown. format json (default) or tree. Pass a node id to read to fetch that section.
- **read** — Read any document as clean Markdown: PDF, Word (DOCX), PowerPoint (PPTX), Excel (XLSX/XLS/ODS), CSV, EPUB, HTML or a web URL, Markdown/text, images (metadata + OCR), audio/video (metadata, chapters, subtitles). Pages/slides/sheets carry <!-- page N --> style markers for citation. Long documents stop at max_tokens (default 20000) and end with a cursor to continue; choose pages with pages: "1-5,8". A directory returns its readable files.
- **search** — Search documents for text: one file, many files, whole directories (recursive, .gitignore aware), or URLs, across every format read supports. Returns each hit as file + page/slide/sheet + a snippet with the match in bold. mode auto (default) finds the exact phrase and falls back to BM25-ranked passages when there is none; literal or ranked force one. Narrow directories with glob, e.g. "*.pdf".

## Claude Desktop Quick Installation
No generated config for this server: it installs through its own setup steps.

The project's own setup steps (from https://github.com/SylphxAI/pdf-reader-mcp), copied verbatim. Run them in order; they are not an mcpServers config.

1. Add to your MCP client:

```sh
npx -y @sylphx/anymd setup              # add anymd to every MCP client on this machine
```

2. Run:

```sh
npx -y @sylphx/anymd setup     # --dry-run to preview, --remove to undo
```

3. Add to Claude Code:

```sh
claude mcp add anymd -- npx -y @sylphx/anymd
```

4. Add to Codex:

```sh
codex mcp add anymd -- npx -y @sylphx/anymd
```

5. Add to VS Code:

```sh
code --add-mcp '{"name":"anymd","command":"npx","args":["-y","@sylphx/anymd"]}'
```

6. Install:

```sh
npm install -g @sylphx/anymd     # or run it once with: npx -y @sylphx/anymd <file>
```

## Documentation

## What PDF Reader MCP does

PDF Reader MCP gives MCP-compatible agents a document ingestion and evidence workflow centered on PDFs. `search` finds text across one file, multiple files, recursive directories, or URLs and returns the matching location with a highlighted snippet.

The server also exposes document structure and page-level inspection. `outline` builds a heading tree with stable node IDs, title paths, ranges, and Markdown byte positions. `inspect` can return PDF metadata and page facts, render pages to PNG, crop bounding-box regions, run OCR or region analysis, produce document structure JSON, and compare two PDF sources page by page.

## How it works

The server runs locally over MCP stdio and can be launched with the `@sylphx/anymd` package. It accepts paths, directories, and URLs through its tools. Reading can be limited with a page selector such as `1-5,8`, while large outputs stop at a token limit and return a cursor for continuation. Directory searches recurse while respecting `.gitignore`, and a glob such as `*.pdf` can narrow the files considered.

Search uses an automatic mode by default: it looks for the exact phrase and falls back to BM25-ranked passages when no exact match is found. Literal and ranked modes force one of those search strategies. For structured retrieval, an agent can first call `outline`, then pass a returned node ID to `read` to fetch a specific section.

## Setup and configuration

Node.js 18 or newer is required. The standard setup command is:

```bash
npx -y @sylphx/anymd setup
```

A manual MCP configuration runs `npx -y @sylphx/anymd` as the command. The package provides setup examples for Claude Desktop, Claude Code, Codex, Cursor, VS Code, Windsurf, Zed, Cline, and Gemini CLI. The server can be restricted to a directory with `--allow-dir=/path/to/docs`.

The local mode does not require an API key. OCR uses explicitly enabled local document-vision models or Tesseract, and local audio transcription uses ffmpeg with the bundled Qwen3-ASR model; these model or transcription downloads require opt-in.

## Tools and capabilities

- `read`: Convert PDF, DOCX, PPTX, XLSX/XLS/ODS, CSV, EPUB, HTML, Markdown, text, images, audio, and video into readable output.
- `search`: Search files, directories, collections of files, or URLs with exact, literal, or BM25-ranked matching.
- `outline`: Return document headings, section ranges, stable IDs, and paths across supported document types.
- `inspect`: Examine PDF facts and metadata, render pages, crop regions, run OCR or analysis, return structure data, and compare PDF sources.
- `render_page`, `extract_regions`, `ocr_pages`, `analyze_regions`, and `compare`: Perform focused PDF evidence and layout operations.
- `video_timeline`, `render_frame`, and `cite_check`: Provide bounded media evidence or check whether a quote is supported at a cited location; these are part of anymd Pro.

## Limitations and notes

Long reads are bounded by `max_tokens`, which defaults to 20,000, so agents must follow the returned cursor for additional content. OCR and audio transcription depend on explicitly installed or downloaded local components. `cite_check` verifies quote and location support rather than semantic truth. The package was formerly named `pdf-reader-mcp`, while the current executable and npm package use `anymd`.

_Full upstream README: https://allmcps.com/mcp/pdf-reader-mcp/readme_

