Text extraction is the obvious part. Being able to rasterise a page at a chosen dpi is what lets a model look at a table, a diagram or a scanned form that has no extractable text at all. The `outputPath` option is the one to reach for on anything large: writing files to disk instead of returning base64 keeps a fifty-page render out of the conversation.
A PDF reader built to avoid sending whole documents into a model. Load a file once, then pull only the pages, images or matches you need; the parsed document stays in memory for fast repeat access.
- `load_pdf` loads from a local path or a URL and returns an id and a page count; `list_loaded_pdfs` shows what is open
- `extract_page` and `extract_range` return text from a page or a span of pages
- `search_pdf` searches the text, taking plain strings or regular expressions, case-sensitive or not, and returns page numbers with context
- `get_pdf_info` returns metadata; `extract_outline` returns the table of contents with page references
- `render_page` and `render_pages` rasterise pages at a chosen dpi as PNG or JPEG, returned as base64 or written to files with a `{page}` pattern in the path
- `list_images`, `extract_images` and `extract_image` pull the embedded images out, with the same choice of base64 or files
Bun, on Linux, macOS or Windows. The README's install lines name the package @espresso3389/pdf-splitter-mcp at version 0.1.1, which npm does not have. To upgrade you have to clear the bunx cache first, since it caches the downloaded package under the temporary directory.
One command — bunx espresso3389/pdf-splitter-mcp install claudecode
