プロトタイプ · プレビュー版:公式レジストリのすべてのサーバーを掲載し、30分ごとに同期しています。レビューとアカウント機能は今後のステップで始まります。
PopNx MCPAIを使う人のためのMCPサーバー · やさしい言葉で解説

PDF Reader (PDF Agent Stack)

作者:shuji-bonjiバージョン 0.22.0i★ –iパソコンで動く
レジストリ名io.github.shuji-bonji/pdf-reader-mcp

インストール

概要

作者による説明(英語の原文)

Read PDF internals: text, structure, fonts, signatures and tags, with what was not read declared.

PopNx MCPの3つの柱

この3つを1つのスコアにまとめることはしません。意見、測定、人気はそれぞれ別のものだからです。

できること

このサーバーのやさしい解説はまだ書いていません。以下はレジストリから読み取った事実です。

  • 接続方法: パソコンで動く
  • トランスポート: stdio
  • カテゴリ: 文書・表計算・事務作業

インストール

使っているAIアプリを選んで、設定をコピーしてください。

インストールの前に

  • 基本チェック:1項目中1項目に合格
  • あなたのパソコンで、あなたのユーザーと同じ権限(ファイル、ネットワーク、アプリ)で動きます。
  • レジストリには、入力が必要なキーは載っていません。

必要なもの

  • npmNode.jsのインストール(npxコマンドに必要)

どのアプリを使っていますか?

上でアプリを選んでください。選んだアプリを覚えておくので、次からはボタンに「…にインストール」と表示されます。

Claude Desktop → Settings → Developer → Edit Config を開き、claude_desktop_config.json にこれを貼り付けます

{
  "mcpServers": {
    "pdf-reader": {
      "command": "npx",
      "args": [
        "-y",
        "@shuji-bonji/pdf-reader-mcp"
      ]
    }
  }
}

ターミナルでこれを実行します

claude mcp add pdf-reader -- npx -y @shuji-bonji/pdf-reader-mcp

Cursorで開く

または、設定を自分でコピーする

プロジェクトの .cursor/mcp.json、または ~/.cursor/mcp.json に貼り付けます

{
  "mcpServers": {
    "pdf-reader": {
      "command": "npx",
      "args": [
        "-y",
        "@shuji-bonji/pdf-reader-mcp"
      ]
    }
  }
}

ブラウザがアプリを開いてよいか確認し、そのあとアプリが設定を表示して確認を求めます。キーの値は空欄のままなので、自分で入力してください。

VS Codeで開く

または、設定を自分でコピーする

プロジェクトの .vscode/mcp.json に貼り付けます

{
  "servers": {
    "pdf-reader": {
      "type": "stdio",
      "command": "npx",
      "args": [
        "-y",
        "@shuji-bonji/pdf-reader-mcp"
      ]
    }
  }
}

ブラウザがアプリを開いてよいか確認し、そのあとアプリが設定を表示して確認を求めます。キーの値は空欄のままなので、自分で入力してください。

これはパソコンで動くサーバーですが、ChatGPTがつなげるのはインターネット上のサーバーだけです。ほかのアプリを選んでください。

選んだアプリは、この端末のCookieに保存されます。アカウントは不要です。

この設定は、作者のレジストリ登録情報から作成しています。READMEと違う場合は、READMEに従ってください。

できること

パソコンで動くサーバーです。インストールすると、ツール一覧がAIアプリに表示されます。

基本チェックi

誰でも見られる情報をチェックしており、コードは読んでいません。当てはまらない項目は数に入れていません。 · 2026年11月8日にチェック

  • ✓ 合格

    作者とリポジトリが一致

    レジストリ名は、リポジトリを所有するGitHubアカウント shuji-bonji で確認済みです

  • … 未チェック

    今もメンテナンスされている

    このリポジトリはまだGitHubから読み取っていません

  • … 未チェック

    ライセンスがある

    このリポジトリはまだGitHubから読み取っていません

  • – 対象外

    エンドポイントが応答する

    これはパソコンで動くため、インターネット上のエンドポイントはありません

  • – 対象外

    OAuthでサインイン

    パソコンで動き、代わりにローカルの設定を使います

  • … 未チェック

    ツールの説明に隠れた指示がない

    パソコンで動くサーバーです。ツール一覧を読み取れるのは、インターネット上のエンドポイントがある場合だけです

文書・表計算・事務作業のほかのサーバーとの比較i

  • このカテゴリのほかの3590件のうち0%よりスターが多い
  • このカテゴリのほかの3590件のうち91%より最近レジストリに公開
  • 基本チェックの結果が、このカテゴリのほかの3590件のうち100%と同じかそれ以上

レジストリでこのカテゴリにある有効なすべてのサーバーと比較しています。スターは、公開者がリポジトリの所有者である場合だけ数えます。

よくある質問

PDF Reader (PDF Agent Stack)は安全ですか?

当てはまる基本チェック1項目のうち1項目に合格しました。コードは読んでいません。キーやトークンを追加する前に、サーバーがどんなアクセスを求めているかを確認し、必要な権限だけを持つキーを使ってください。

どんなキーやコードが必要ですか?

レジストリには必須のキーは載っていません。ただし、最初に使うときにサインインを求めるサーバーもあります。

パソコンで動きますか、それともクラウドですか?

あなたのパソコンで動きます。必要なときにAIアプリが起動し、データは作者のサーバーを通りません(サーバー自体がオンラインサービスを呼び出す場合を除きます)。

今もメンテナンスされていますか?

GitHubリポジトリの最終更新は–、最新バージョン(0.22.0)がレジストリに届いたのは一昨日です。

どのアプリで使えますか?

Claude Desktop、Claude Code、Cursor、VS CodeなどのMCP対応アプリで使えます。パソコンにNode.jsも必要です。

代わりに使えるものは?

同じカテゴリには:Agent-Native Calendar, Excel MCP Server, MCP Server for Excel

代わりの候補

同じカテゴリで、ほかの作者が作ったサーバー。スターの多い順。

カードの見方:↓ 週あたりのダウンロードi★ GitHubスターi3つの柱:レビュー · チェック · 利用状況i更新=最新バージョンをレジストリに公開した日i

Agent-Native Calendar

Agent-Native Google Calendar - manage events, sync, and public booking

作者:BuilderIO広く使われている★ 76202 か月前更新

クラウドで動く

Excel MCP Server

Create and edit Excel files with AI: charts, PivotTables, formulas. No Excel needed.

作者:haris-musa広く使われている↓ 5万/週★ 42768 日前更新

パソコンで動く

MCP Server for Excel

Excel automation for AI - Sheets, Power Query, DAX, VBA, Tables, Ranges and more. Windows only.

作者:sbroenne成長中↓ 4321/週★ 8475 日前更新

パソコンで動く

作者のREADME

READMEを開く

作者のリポジトリから書かれたとおりにコピーしたものです。PopNx MCPは内容を確認・推奨していません。HTML、画像、スクリプトは取り除いています。リンクはこのサイトの外へ移動します。

PDF Reader MCP Server

English | 日本語

An MCP (Model Context Protocol) server specialized in deciphering PDF internal structures.

While typical PDF MCP servers are thin wrappers for text extraction, this project focuses on reading and analyzing the internal structure of PDF documents. Pair it with pdf-spec-mcp for specification-aware structural analysis and validation.

PDF family
ServerRole
pdf-spec-mcpPDF specification knowledge (ISO 32000, PDF/A, PDF/UA)
pdf-reader-mcp (this)Read and inspect PDF internal structure — *what is in* a PDF
pdf-verify-mcpAuthenticity verification — *whether it is genuine*: cryptographic signature verification, tamper detection, PAdES level, PDF/A validation, encrypted-PDF decryption

pdf-reader-mcp inspects signature structure (inspect_signatures); for cryptographic signature verification, trust/revocation evaluation, and PDF/A conformance validation, use pdf-verify-mcp.

Features

18 tools organized into three tiers:

Tier 1: Basic Operations
ToolDescription
get_page_countLightweight page count retrieval
get_metadataFull metadata extraction (title, author, PDF version...)
read_textText extraction with Y-coordinate reading order (opt-in `split_columns: 2 \3 for untagged multi-column PDFs, compact_whitespace for Japanese forms). Resolves /ActualText replacements (§14.9.4, both the structure-element and the Span marked-content path). Reports **text extractability** per page (§9.10.1) so an empty result is never mistaken for an empty page. For **logical** order in tagged PDFs, prefer extract_structured_text`
search_textFull-text search with surrounding context. Searches the same text read_text returns, /ActualText included, so a hit means what a reader sees (a note names any page whose marked content could not be aligned)
read_imagesEmbedded image XObjects as PNG or JPEG files, returned as MCP image content blocks so a vision model can read them. max_width / max_height downscale by area average; the response has a byte budget and names anything it leaves out
read_urlFetch a remote PDF and extract its text — nothing more. The bytes are not saved; to use the other 17 tools on a URL's PDF, download it first and pass the local path (see "read_url and the read-only boundary")
render_pageRasterise pages to PNG/JPEG via PDFium-WASM (optional dependency @hyzyla/pdfium). The next step when text extractability says no_text_layer / not_extractable — draws the whole page, vector art and forms included
summarizeQuick overview report (metadata + text + image count + per-document text extractability)
Tier 2: Structure Inspection
ToolDescription
inspect_structureObject tree and catalog dictionary analysis
inspect_catalogDocument-level inventory from the catalog (ISO 32000-2 §7.7.2): bookmarks (/Outlines), layers (/OCProperties), attachments (/EmbeddedFiles, with /AFRelationship), the XMP packet with its declared pdfaid / pdfuaid / W3C TDMRep (tdm:reservation) values, and what runs on open (/OpenAction, /AA, document-level JavaScript). Each entry says absent or unreadable — never one for the other. Declarations are reported as written, not verified
inspect_tagsTagged PDF structure tree visualization
inspect_fontsFont inventory (embedded/subset/type detection)
inspect_annotationsAnnotation listing (categorized by subtype)
inspect_signaturesDigital signature field structure analysis
extract_structured_textTagged PDF text in logical content order (ISO 32000-2 §14.8.2.5), each piece labelled with its structure type (H1 / P / Table …). Resolves /ActualText, separates /Alt and list labels, keeps page-spanning elements whole. include_bbox: true adds where each element is drawn — one rectangle per page, in the form add_annotation takes
extract_tablesTagged PDF subtree → Markdown table (preserves columns). A table continuing across a page break is ONE table (pages array)
locate_objectsObject number → page and rectangle, in the coordinate form pdf-writer-mcp add_annotation takes. Bridges pdf-verify-mcp verify_integrity's "which objects changed" to "where they are". Each location names its basis: an annotation's own /Rect is exact, a content stream can only say "the whole page"
Tier 3: Comparison
ToolDescription
compare_structureStructural diff between two PDFs (properties + fonts)

validate_tagged and validate_metadata were removed (deprecated since 0.7.0). This server reports what a PDF contains and does not return pass/fail against a standard. For PDF/UA or PDF/A conformance, use pdf-verify-mcp validate_conformance (flavour: "pdfua-1", "pdfa-*", …). For the facts those tools used to look at, use inspect_tags (structure tree) and get_metadata (metadata fields) here.

read_url and the read-only boundary (#25)

read_url returns text, and only text. This is a decision, now stated rather than implied: the fetched bytes are discarded after extraction, because saving them would make a reader tool write to the file system, and every tool of this server is read-only (readOnlyHint: true — all 18 of them).

To run search_text, inspect_structure, extract_tables, render_page or anything else against a PDF that lives at a URL, download the file first — with whatever fetch capability the calling environment has — and pass the local path. Fetching is the caller's responsibility, deliberately: an agent environment always has a way to download a file, and a reader that also writes files has stopped being a pure observer.

read_url remains the right tool for the one-shot question: *what does the document at this URL say?*

Pages can be rendered when text cannot be read (#23)

summarize reporting hasText: false used to be a dead end: nothing in this server could read the document any further. render_page closes that — it rasterises pages to PNG or JPEG and returns them as MCP image content blocks, so a vision model can read a scan, a diagram, a filled form, or handwriting.

render_page({ file_path: "/path/to/scan.pdf", pages: "1-3", format: "jpeg" })

pages is required: rendering is the most expensive operation here, and "all pages" of a 500-page scan should be a decision, not a default. The same 4 MB response budget as read_images applies, with omissions named.

Rendering runs on PDFium compiled to WebAssembly (@hyzyla/pdfium, an optional dependency). A WASM binary is the same bytes on every platform, so the published package still behaves identically wherever npx runs it — the reason native addons are not used here. Without the dependency installed, render_page reports what to install and every other tool works normally. PDFium (BSD-3-Clause) is a different engine from the pdf.js this server reads text with; the tool description says so, because a rendering difference between engines must not be attributed to the file.

Measured before choosing this: pdf.js + @napi-rs/canvas (1.0.7 and 0.1.80) segfaults the

whole process on pages that draw images — exactly the pages this tool exists for — and

renders blank pages when standardFontDataUrl is not configured.

Images come back as image files (#22)

read_images used to base64 imgData.data — pdfjs's *decoded pixels*. An 8×8 RGB image was 192 bytes with no PNG or JPEG signature anywhere in it, so the result could not be opened by any viewer and could not be read by a vision model, which is the reason to extract an image in the first place.

Images are now encoded (PNG by default, lossless; format: "jpeg" with quality when smaller matters) and returned as MCP image content blocks, with the metadata alongside in a text block. Both encoders are written out here — no native addon, no per-platform binary.

The response is bounded at 4 MB of encoded image data. A 200 dpi A4 scan is ~11.6 MB of pixels on its own, so images past the budget are named with the reason rather than dropped:

read_images({ file_path: "/path/to/scan.pdf", pages: "1", max_width: 1200, format: "jpeg" })

read_images returns the image XObjects a page draws. It is not a picture of the page — vector drawings and text are not covered by it.

Text extractability — three states, not two (#21)

read_text used to answer with text or with nothing, and nothing meant three different things. ISO 32000-2 §9.10.1 separates them, so this server does too. Every text-returning tool — read_text, read_url, search_text, extract_structured_text, summarize — reports, per page:

StateConditionWhat to do next
extractedEvery font used has a route to Unicode under §9.10.2Use the text
no_text_layerNo text-showing operator (Tj TJ ' "), image content presentThe page is pixels. OCR or a rendered image is needed; this server does neither
not_extractableA font used has no /ToUnicode, no standard encoding and no known CID collectionText is missing or wrong. The report names the fonts and the clause
not_observedEncrypted, or the content stream could not be readNothing was measured. Not the same as "nothing is there"

not_extractable is reported per font, so a page that mixes a readable font with an unreadable one is a partial loss and says so, rather than passing as complete.

The observation is made from the file, not from pdf.js's output: pdf.js synthesises a toUnicode map for every font it loads, so asking it whether a font has a /ToUnicode CMap answers yes for fonts whose dictionary has none.

Installation

npx (recommended)
npx @shuji-bonji/pdf-reader-mcp@latest
Claude Desktop

Add to your claude_desktop_config.json:

{

"mcpServers": { "pdf-reader-mcp": { "command": "npx", "args": ["-y", "@shuji-bonji/pdf-reader-mcp@latest"] } } }

Use `@latest`. The -y flag in npx -y only skips the install

prompt — it does not check for updates. Without @latest, npx keeps

running whichever version it cached the first time, so new releases never

reach you. If you suspect you are on a stale version, run

rm -rf ~/.npm/_npx and restart your client.

Claude Code
claude mcp add pdf-reader-mcp -- npx -y @shuji-bonji/pdf-reader-mcp@latest
From Source
git clone https://github.com/shuji-bonji/pdf-re

冒頭だけを表示しています。続きはリポジトリで読めます

PopNxに聞く