Benspdf
Read PDFs locally: text, pages, metadata, scan detection, layout, permissions, render, OCR.
Connector by benbergner · GitHub account verified by the MCP Registry
Install
Works with Claude Code, Codex, VS Code, Cursor, Windsurf, Claude Desktop. Read the repository before you give any tool access to your data.
npx agentmarket install connector/benbergner-benspdf
Asks which of your tools to add it to (Claude Code, Codex, Cursor, VS Code, Windsurf, Gemini CLI, Claude Desktop) and shows the change first. See https://agentmart.dev/cli.
Get the weekly diff
The weekly diff: one email a week with new agent tools, notable updates and grade changes, plus security alerts for tools you follow. Double opt-in, one-click unsubscribe.
About
Reviews
Write a reviewNo reviews yet. Installed it? Reviews come from verified installers only. How reviews work
Permissions
What this server can do and what it asks for, from its tool list and install config. Checked Oct 25, 2026.
- Tools
- 8 read · 2 write · 1 delete · 1 not yet classified
- Secrets
- None asked for
- Install scripts
- Not scanned yet
- Runs as
- Python package
Tools by what they do 12
Read from the source code; the running server may list different tools.
Read 8 · Look things up without changing anything.
list_artifactspdf_check_accesspdf_check_textpdf_extract_textpdf_metadatapdf_ocrpdf_page_countpdf_page_layout
Write 2 · Create, change, send or run things.
create_test_pdf_fileexport
Delete 1 · Delete, drop, revoke or wipe things.
discard
Not yet classified 1 · We could not tell from the name and description.
pdf_render_pages
Files it touches
- Any path the agent passes to its tools
Tools (12)
Read from the source code; the running server may differ. Descriptions are the server’s own words; hidden characters are shown as [U+…].
create_test_pdf_fileCreate a test PDF, handy for trying the other tools without hunting for one. The pages are blank, so this is for exercising tools rather than for anything that needs real content. Args: output_path: Optional path to also write the PDF to. Omit to keep it as a temporary artifact. num_pages: Number of blank pages to create (default: 3) title: Optional title for the PDF metadata
discardDelete temporary artifacts from the workspace now. Only accepts artifact ids, never file paths, so this cannot delete the user's own files. Artifacts expire on their own, so this is only needed when the user explicitly asks to clean up. Args: refs: Artifact id, or list of artifact ids, to delete.
exportSave one or more results to a real location on disk. The only tool that writes to the user's filesystem, so call it once at the end, when they have said where the output should go. Never hand an artifact id back as if it were a finished file; artifacts expire. Args: refs: Artifact id, or list of artifact ids, to export. dest: Where to write. For a single artifact this may be a full file path. For several artifacts, or when `name` is given, this is a directory and is created if missing. name: Filename template used when writing into a directory. Placeholder…
list_artifactsList recent temporary artifacts in the workspace, newest first. Useful when you have lost track of an artifact id from earlier in the conversation, so you can find it again instead of redoing the work. Args: limit: Maximum number of artifacts to return.
pdf_check_accessCheck a PDF's encryption and what it permits: printing, copying, editing. Answers "is this locked, and what am I allowed to do with it?". `encrypted` and `needs_password` are separate answers and the difference matters: most encrypted files have no user password, so they open silently and only carry restrictions. `permissions` gives a boolean per action, `restrictions` lists what is denied, and an unencrypted file permits everything — a PDF has nowhere to keep restrictions but its encryption dictionary. Treat restrictions as what the file asks of viewers, not as enforcement: once a document…
pdf_check_textCheck whether a PDF has a text layer, looks scanned, or needs OCR. Answers "can I read this, or is it a picture of a document?". Worth running before extracting text from a file you have not seen. `verdict` is "text", "scanned", "mixed", or "no_text" — the last meaning nothing readable but nothing scan-like either, so blank, vector-only, or illustrated pages that OCR cannot help. `needs_ocr` follows from it, `summary` is a sentence worth quoting, and the per page evidence behind the verdict comes back alongside, including each page's `image_coverage` (the largest image's share of the page ar…
pdf_extract_textRead the text of a PDF that has one, page by page. The cheap and exact way to read a document: milliseconds a page, and the characters are the ones the file holds. Prefer it to pdf_ocr, which is for pages carrying no text, and to pdf_render_pages, which costs an image a page. pdf_check_text says which path a file needs; page numbers come back with the text, so quote page 8 rather than "the document". A long document arrives in ranges: one call returns about 50,000 characters and names the pages it did not reach, so when `truncated`, do what the summary says. `output="txt"` writes the whole e…
pdf_metadataRead a PDF's document properties: title, author, dates, producer, keywords. Answers "who made this, when, and with what". It does not count pages (use pdf_page_count) and says nothing about whether the pages hold readable text (use pdf_check_text). A PDF can store these fields in two independent places, the legacy Info dictionary and an XMP packet, and the two often disagree. The normalized answer is at the top level, preferring XMP, with `sources` naming the store each value came from and `conflicts` listing every field where the two differ, both values included. Both stores also come back …
pdf_ocrRead a scanned PDF with OCR, and optionally add a real text layer to it. The way to read a page with no text: a scan, or an export that lost its text. Prefer it to pdf_render_pages for reading; run pdf_check_text when unsure. Tesseract is a system install, and a missing binary or language errors with how to install it. OCR can be confidently wrong, so pages report `mean_confidence` and `low_confidence_words`: say when confidence is low rather than presenting text as certain, and look at a bad page with pdf_render_pages. Text pages are skipped unless `force`. A long document may stop early; …
pdf_page_countCount the pages in a PDF. Answers "how many pages is this?". Reads only the document's page tree, so it stays cheap on large files. It does not read page text, page sizes, or document properties. Args: ref: PDF file path, or a workspace artifact id.
pdf_page_layoutMeasure a PDF's page sizes, orientation and rotation. Answers "what size is this, is it all the same, and why does one page come out sideways?". Reads page geometry only, so it stays cheap on long documents. `sizes` groups the pages by shape, most pages first, each carrying the page numbers it covers as a range like "1-16,18", so a 300 page document answers in one entry instead of 300 rows. Sizes are the page as a reader sees it: CropBox clipped to MediaBox with `/Rotate` applied, so a landscape box rotated 90 degrees reports as portrait. Pages within 3pt of a known paper are grouped and nam…
pdf_render_pagesRender PDF pages to images, so a page can be looked at rather than read. Use it to see what a page looks like: checking a change landed (did a redaction remove content, did a split cut where intended), previewing, and pages where appearance is the content — handwriting, signatures, charts, checkbox state. For *reading* a scan prefer pdf_ocr, whose text layer is searchable and needs no vision model; render when OCR is unavailable or would mangle what matters. Every page is saved as a PNG artifact and its id returned. With `view`, the default, the first few images also come back to be looked …
Signals
- Stars
- 1
- Forks
- 0
- Open issues
- 0
- Weekly downloads
- 61
- Last commit
- Sep 13, 2026 (1 month ago)
- Last release
- Sep 13, 2026 (1 month ago)
- Last package publish
- Sep 13, 2026 (1 month ago)
From GitHub (fetched Oct 24, 2026) and the package registry.
Details
- Registry name
io.github.benbergner/benspdf- Version
- 0.3.0
- Auth
- No auth
- Packages
- pypi benspdf-mcp
- License
- Apache-2.0
- Repository
- github.com/benbergner/BensPDF
- First seen
- Oct 24, 2026
- Last checked
- Oct 25, 2026
Cite this page
Benspdf MCP server. Agent Mart. https://agentmart.dev/connectors/benbergner-benspdf (last updated 2026-10-25)