PDF Reader (PDF Agent Stack)
Read PDF internals: text, structure, fonts, signatures and tags, with what was not read declared.
Connector by shuji-bonji · 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/shuji-bonji-pdf-reader-mcp
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, install config and code. Checked Oct 25, 2026.
- Tools
- 18 read · 0 write · 0 deleteRead-only
- Secrets
- None asked for
- Install scripts
- None found
- Runs as
- Node.js package
Tools by what they do 18
Read from the source code; the running server may list different tools.
Read 18 · Look things up without changing anything.
compare_structureextract_structured_textextract_tablesget_metadataget_page_countinspect_annotationsinspect_cataloginspect_fontsinspect_signaturesinspect_structureinspect_tagslocate_objects
Show 6 more tools
read_imagesread_textread_urlrender_pagesearch_textsummarize
Network hosts it talks to 5
aiim.org· found in codebiomejs.dev· found in codegithub.com· found in coderaw.githubusercontent.com· found in codeshuji-bonji.github.io· found in code
Files it touches
- Any path the agent passes to its tools
Tools (18)
Read from the source code; the running server may differ. Descriptions are the server’s own words; hidden characters are shown as [U+…].
compare_structureCompare PDF Structuresread-onlyCompare the internal structures of two PDF documents and identify differences. Args: - file_path_1 (string): Absolute path to the first PDF file - file_path_2 (string): Absolute path to the second PDF file - response_format ('markdown' | 'json'): Output format (default: 'markdown') Returns: Structural comparison including: property-by-property diff (page count, PDF version, encryption, tagged status, object counts, page dimensions, file size, catalog entries, signatures), font comparison (fonts unique to each file and shared fonts), and a summary. The comparison needs both files, …
extract_structured_textExtract Structured Textread-onlyExtract a tagged PDF's text in logical content order, with each piece labelled by its structure type. This answers "what is the text of the H1?" — which read_text (flat, coordinate order), inspect_tags (structure, no text) and extract_tables (text, tables only) each cannot. Args: - file_path (string): Absolute path to a local PDF file - pages (string, optional): Page range ("1-5", "3", "1,3,5-7"). Omit for all pages. An element that touches the range is returned whole, even if it continues outside it. - roles (string[], optional): Structure types to include, e.g. ["H1","H2"] for an…
extract_tablesExtract Tables (Tagged PDF)read-onlyExtract every `<Table>` subtree from a Tagged PDF as a structured row/cell list, optionally rendered as Markdown tables. How it works: walks the document's StructTreeRoot depth-first (the same walker as `extract_structured_text` / `inspect_tags`) and pulls cell text for each `<TR>` → `<TH>/<TD>`, then collapses kerning whitespace (e.g. "消 費 税 法" → "消費税法"). This sidesteps reading-order extraction's failure mode on multi-column tables (typical of 新旧対照表 PDFs). A Table that continues across a page break is ONE table (ISO 32000-2 §14.8.2.5 NOTE 2) — `pages` is an array, and a table touching the r…
get_metadataGet PDF Metadataread-onlyExtract metadata from a PDF document including title, author, creation date, page count, PDF version, and structural information. Args: - file_path (string): Absolute path to a local PDF file - response_format ('markdown' | 'json'): Output format (default: 'markdown') Returns: Metadata including: title, author, subject, keywords, creator, producer, creation/modification dates, page count, PDF version, linearized/encrypted/tagged/signature flags, file size. Examples: - Get document properties for cataloging - Check if a PDF is tagged (accessibility) - Verify PDF version compatibi…
get_page_countGet PDF Page Countread-onlyGet the total number of pages in a PDF document. This is a lightweight operation that only reads the PDF header, not the full content. Args: - file_path (string): Absolute path to a local PDF file Returns: Page count as a number. Examples: - Quick check before deciding which pages to extract - Validate a PDF file is readable
inspect_annotationsInspect PDF Annotationsread-onlyExtract and categorize all annotations in a PDF document. Args: - file_path (string): Absolute path to a local PDF file - pages (string, optional): Page range. Format: "1-5", "3", or "1,3,5-7". Omit for all pages. - response_format ('markdown' | 'json'): Output format (default: 'markdown') Returns: Total annotation count, breakdown by subtype (Link, Widget, Highlight, Text, etc.) and by page, flags for links/forms/markup presence, and individual annotation details. Examples: - Check for form fields (Widget annotations) - Find all links in a document - Inventory markup annotati…
inspect_catalogInspect PDF Catalogread-onlyList the document-level components hanging off the catalog dictionary (ISO 32000-2 §7.7.2, Table 29) — the parts of a PDF that are not page content and that page-oriented readers drop: bookmarks, layers, attachments, the XMP packet, and the actions that run when the document is opened. Args: - file_path (string): Absolute path to a local PDF file - max_outline_items (integer, 1-500, default 50): how many bookmark items to list (count and depth cover the whole tree) - include_xmp (boolean, default false): also return the XMP packet text (capped at 64 KiB) - response_format ('markdown' …
inspect_fontsInspect PDF Fontsread-onlyList all fonts used in a PDF document with their properties. Args: - file_path (string): Absolute path to a local PDF file - response_format ('markdown' | 'json'): Output format (default: 'markdown') Returns: Font name, type (TrueType, Type1, CIDFont, etc.), encoding, embedded/subset status, and pages where each font is used. Examples: - Check if all fonts are embedded (required for PDF/A, PDF/X) - Identify font types and encodings - Find which pages use specific fonts
inspect_signaturesInspect PDF Digital Signaturesread-onlyExamine digital signature fields in a PDF document. Args: - file_path (string): Absolute path to a local PDF file - response_format ('markdown' | 'json'): Output format (default: 'markdown') Returns: Total signature field count, signed/unsigned breakdown, and details for each field (signer name, reason, location, signing time, filter/subFilter). Note: This tool inspects signature field structure only. Cryptographic signature verification is not performed. Examples: - Check if a PDF has been digitally signed - Inspect signer information and signing dates - Verify signature field…
inspect_structureInspect PDF Structureread-onlyExamine PDF internal object structure including catalog entries, page tree, and object statistics. Args: - file_path (string): Absolute path to a local PDF file - response_format ('markdown' | 'json'): Output format (default: 'markdown') Returns: Catalog entries (keys and COS types), page tree info (page count, MediaBox samples), object statistics, and encryption status. Object statistics report three separate counts: - byType: the COS type of each indirect object (ISO 32000-2 §7.3) — one of dict, stream, array, name, string, integer, real, boolean, null, ref - byDocType: the …
inspect_tagsInspect Tagged PDF Structureread-onlyAnalyze the Tagged PDF structure tree for accessibility assessment. Args: - file_path (string): Absolute path to a local PDF file - response_format ('markdown' | 'json'): Output format (default: 'markdown') Returns: Whether the PDF is tagged, the structure tree hierarchy with roles, max nesting depth, total element count, and role distribution (e.g., Document, P, H1, Table, Figure). Examples: - Check if a PDF is tagged for accessibility (PDF/UA) - Inspect the tag hierarchy and role distribution - Assess document structure quality
locate_objectsLocate PDF Objects (object number → page and rectangle)read-onlyReport where the given objects sit on the page. Bridges "which object" to "which coordinates": pdf-verify-mcp's verify_integrity names the objects an incremental update changed, and pdf-writer-mcp's add_annotation wants a page number and a rectangle. The rectangle is returned in PDF user space (origin bottom-left, pt, x1 < x2 and y1 < y2 — ISO 32000-1 §7.9.5 normalised form), which is exactly what add_annotation takes. Args: - file_path (string): Absolute path to a local PDF file - object_numbers (number[]): Object numbers to locate, e.g. [25, 27] - response_format ('markdown' | 'json'…
read_imagesRead PDF Imagesread-onlyDescription is built at runtime.
read_textRead PDF Textread-onlyExtract text content from a PDF document with Y-coordinate-based reading order preservation. Text is extracted page by page, sorted by vertical position (top to bottom) then horizontal position (left to right), providing natural reading order. `/ActualText` replacements (ISO 32000-2 §14.9.4) are resolved, on both of the paths that clause defines: the `/ActualText` of a structure element, and the one in a `Span` marked-content property list — the latter occurs in untagged documents too. So a word carried as ActualText (ligature substitutes, hyphenation fixes) reads here the way a person viewi…
read_urlRead PDF from URLread-onlyFetch a PDF from a URL and extract its text content. Text is ALL this tool returns — see the scope note below. Downloads the PDF from the specified URL, then extracts text with Y-coordinate-based reading order. Supports HTTP and HTTPS. Maximum file size: 50MB. Timeout: 30 seconds. **Scope (#25):** the fetched bytes are discarded after extraction; this tool deliberately does not save them. Every other tool of this server takes a `file_path`, so to use search_text, inspect_structure, extract_tables, render_page or anything else on a URL's PDF, download the file to local disk FIRST (with whatev…
Show 3 more tools
render_pageRender PDF Pageread-onlyDescription is built at runtime.
search_textSearch PDF Textread-onlySearch for text within a PDF document. Returns matching locations with surrounding context. Case-insensitive search across all or specified pages. Each match includes the page number, the matched text, and configurable surrounding context. The search runs over the same text `read_text` returns, so `/ActualText` replacements (ISO 32000-2 §14.9.4) match: a word carried as ActualText (ligature substitutes, hyphenation fixes) is found under the spelling a viewer shows, not under its glyph form. Rarely, a page's marked content cannot be aligned with the extracted text and the replacement is left …
summarizeSummarize PDFread-onlyGenerate a quick overview report of a PDF document. Combines metadata, text presence check, image count, and a text preview from the first page into a single summary. Useful as a first step before deciding which detailed tools to use. Args: - file_path (string): Absolute path to a local PDF file - response_format ('markdown' | 'json'): Output format (default: 'markdown') `hasText` is decided from page 1's preview and cannot say *why* text is absent. `textExtractability` answers that over every page (ISO 32000-2 §9.10.1): `extracted`, `no_text_layer` (image content, no text-showing opera…
Signals
- Stars
- 2
- Forks
- 0
- Open issues
- 0
- Last commit
- Oct 15, 2026 (13 days ago)
- Last release
- Oct 15, 2026 (13 days ago)
From GitHub (fetched Oct 24, 2026).
Details
- Registry name
io.github.shuji-bonji/pdf-reader-mcp- Version
- 0.17.0
- Auth
- No auth
- Packages
- npm @shuji-bonji/pdf-reader-mcp
- License
- MIT
- Repository
- github.com/shuji-bonji/pdf-reader-mcp
- First seen
- Oct 24, 2026
- Last checked
- Oct 24, 2026
More from shuji-bonji
- 0.619score
PDF Spec (PDF Agent Stack)
shuji-bonji
Look up ISO 32000 (PDF) clauses, requirements and terms.
ConnectorAFreshness: ALocalRead-only★ 2Claude Code +5 - 0.614score
Houki Nta MCP
shuji-bonji
Japan NTA tax notices (tsutatsu) and Q&A, marked with legal_status and linked back to the law.
ConnectorAFreshness: ALocal★ 2Claude Code +5 - 0.614score
Houki Egov MCP
shuji-bonji
Japanese statutes from e-Gov Law API v2 — laws and ordinances per article, with law number and URL.
ConnectorAFreshness: ALocal★ 2Claude Code +5 - 0.584score
PDF Verify (PDF Agent Stack)
shuji-bonji
Verify PDF signatures, detect tampering, and identify PDF/A and PAdES conformance levels.
ConnectorAFreshness: ALocalRead-onlyClaude Code +5 - 0.584score
PDF Writer (PDF Agent Stack)
shuji-bonji
Create and edit PDFs: text, Markdown, tables, metadata and pages, with Japanese font embedding.
ConnectorAFreshness: ALocalClaude Code +5
Cite this page
PDF Reader (PDF Agent Stack) MCP server. Agent Mart. https://agentmart.dev/connectors/shuji-bonji-pdf-reader-mcp (last updated 2026-10-24)