Dropping a file into the conversation loads it the old way and bypasses everything here; give a path or a URL instead and the tools take over. The approach is deliberately plain — no embeddings, no chunking, no vector store — just metadata, outline, search and page ranges, which is enough for a model to navigate a thousand-page textbook by itself. Reach for page images only when text extraction is not enough, since they cost far more context than the text does.
An MCP server for selective PDF reading. Rather than loading a document whole, it lets a model check the metadata and table of contents, search the text for a pattern, and pull only the page ranges that matter — with page images available when layout or a diagram is the answer. It works on local files and on URLs, which it downloads and processes locally.
- A document's properties, page count and file information, read before anything else — `get_pdf_metadata`
- Bookmarks and document outline, so the model can pick a section by name instead of by guessing at page numbers — `get_pdf_outline`
- Text extracted from a page range such as `"5:10"` or `"20:"`, with a choice of strategy: `hybrid` by default, `native` for clean PDFs, `ocr` for scans
- Pattern and regular-expression search across the document, returning context snippets around each hit, with a configurable context length and a result cap for early stopping
- Pages converted to optimised images for visual analysis, for charts, diagrams, equations and anything where the layout carries the meaning — `get_pdf_images`
- File paths given absolutely, or relative to `~/pdf-agent/`, and online PDFs given as a URL
No account and no key. Node.js LTS installed on the system — and in Claude Desktop specifically, "Use Built-in Node.js for MCP" must be turned off under Settings → Extensions → Advanced Settings, because the extension will not run on Claude's bundled Node. The npm package name is `pdf-agent-mcp` (1.0.0); install the released `.dxt` package by double-clicking it, or clone and build with `npm install && npm run build` and point your client at `server/index.js`.
One command — npx -y github:vlad-ds/pdf-agent-mcp
