Command Palette

Search for a command to run...

UnylyUnyly
Browse all

Pdf Inspector Integration

FreeNot checked

MCP server + Rust skillkit wrapping firecrawl/pdf-inspector with tax / IRC / SEC domain extractors. 9 tools, offline, no OCR.

GitHubEmbed

About

MCP server + Rust skillkit wrapping firecrawl/pdf-inspector with tax / IRC / SEC domain extractors. 9 tools, offline, no OCR.

README

CI License: MIT OR Apache-2.0

Rust workspace plus MCP server wrapping the firecrawl/pdf-inspector library for offline, fast PDF classification and extraction, with tax-form, IRC, SEC-filing, and Sweet tax-review demo helpers exposed as separate tools.

Status

Alpha. The 13 MCP tools compile and load; validation against real PDFs is partial. Use ground-truth fixtures of your own to confirm fitness for any specific workflow.

Validation snapshot (see docs/HANDOFF.md for full log):

Tool Real-PDF validated? Notes
classify_pdf Yes 98 PDFs, 100% text-based corpus, ~1-10 ms
pdf_to_markdown Yes 4-page doc in ~11 ms
analyze_layout Compile-tested only No live MCP smoke yet
extract_text_regions Compile-tested only API verified, no live MCP smoke
extract_table_regions Compile-tested only API verified, no live MCP smoke
batch_classify Compile-tested only Loops classify_pdf
identify_tax_form Yes (10/12) Bank-direct 1099-INTs return Unknown — see Known limitations
parse_irc_sections Partial Counts non-zero on Treas Reg corpus, but section-number capture is wrong format — see CHANGELOG
split_sec_filing Yes (26/~26) Apple 10-K FY2024, all canonical Items
list_tax_packages Synthetic demo Lists bundled Sweet demo packages across six tax workflows
review_tax_package Synthetic demo Runs deterministic checks against bundled structured examples
compare_line_items Synthetic demo Compares one return value to one source value with tolerance
render_review_memo Synthetic demo Renders a Markdown memo from structured review findings

Why

Coding agents that touch PDFs almost always reach for OCR first, even when the source is born-digital. That round-trip costs seconds-to-minutes per document and discards the structural information already present in the PDF (text positions, headings, table boundaries).

pdf-inspector reads the PDF directly: it classifies (TextBased / Scanned / Mixed) in single-digit milliseconds and extracts to clean Markdown without calling out to any OCR engine. This project exposes that capability over the Model Context Protocol so any MCP-aware agent (Claude Code, Codex, Cursor, Gemini, OpenCode) can call it identically.

On top of the generic primitives, three domain-specific tools encode patterns we use ourselves: tax-form identification (W-2, 1099, K-1, 1040), IRC section parsing for Title 26 PDFs, and SEC 10-K / 10-Q section splitting. These are layered as separate MCP tools rather than baked into the core extractor so the upstream surface stays clean.

The 13 tools

Tool What it does Status
classify_pdf TextBased / Scanned / Mixed classification with confidence stable
pdf_to_markdown Full PDF to clean Markdown with headings, tables, lists stable
analyze_layout Tables, columns, complexity metrics beta
extract_text_regions Text from [x1,y1,x2,y2] rectangles beta
extract_table_regions Tables from rectangles as Markdown pipe-tables beta
batch_classify Classify many PDFs in one call beta
identify_tax_form Detect W-2 / 1099 / K-1 / 1040 / 1065 / 1120 / 1120-S / schedules beta
parse_irc_sections Section parser for Title 26 IRC PDFs experimental
split_sec_filing 10-K / 10-Q section splitter by Item number beta
list_tax_packages List bundled Sweet demo packages demo
review_tax_package Run deterministic review checks for a bundled package demo
compare_line_items Compare one return line against one source value demo
render_review_memo Render a Markdown review memo for a bundled package demo

Install

From source

git clone https://github.com/Jimthetaxguy/pdf-inspector-integration
cd pdf-inspector-integration
cargo install --path crates/pdf-inspector-mcp

This places pdf-inspector-mcp in your Cargo bin directory (typically ~/.cargo/bin/). To pin a known location, use:

cargo install --root /usr/local --path crates/pdf-inspector-mcp

Wire into Claude Code

Add an entry to ~/.claude/mcp.json (or your equivalent MCP-client config):

{
  "mcpServers": {
    "pdf-inspector": {
      "command": "<HOME>/.cargo/bin/pdf-inspector-mcp",
      "args": []
    }
  }
}

Replace <HOME>/.cargo/bin/pdf-inspector-mcp with the actual absolute path returned by which pdf-inspector-mcp after install. If you used cargo install --root /usr/local, the path is /usr/local/bin/pdf-inspector-mcp.

Quick start

The server speaks JSON-RPC over stdio. A minimal tools/call for classify_pdf:

printf '%s\n%s\n%s\n' \
  '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2025-11-25","capabilities":{},"clientInfo":{"name":"t","version":"1"}}}' \
  '{"jsonrpc":"2.0","method":"notifications/initialized"}' \
  '{"jsonrpc":"2.0","id":2,"method":"tools/call","params":{"name":"classify_pdf","arguments":{"path":"/path/to/file.pdf"}}}' \
  | pdf-inspector-mcp

The same pattern works for any of the 13 tools. Two more one-liners (drop in the printf block above, replacing the third line):

{"jsonrpc":"2.0","id":2,"method":"tools/call","params":{"name":"identify_tax_form","arguments":{"path":"/path/to/W2.pdf"}}}
{"jsonrpc":"2.0","id":2,"method":"tools/call","params":{"name":"split_sec_filing","arguments":{"path":"/path/to/10-K.pdf"}}}

Sweet demo package tools do not require real PDFs; they use bundled synthetic structured data to demonstrate the review layer that would sit behind a Harris-style pilot:

{"jsonrpc":"2.0","id":2,"method":"tools/call","params":{"name":"list_tax_packages","arguments":{}}}
{"jsonrpc":"2.0","id":2,"method":"tools/call","params":{"name":"review_tax_package","arguments":{"package_id":"demo_1040_w2_schedule_c"}}}
{"jsonrpc":"2.0","id":2,"method":"tools/call","params":{"name":"compare_line_items","arguments":{"label":"W-2 wages","return_reference":"Form 1040 line 1a","source_reference":"W-2 Box 1","return_amount":84732,"source_amount":87432,"tolerance":0}}}
{"jsonrpc":"2.0","id":2,"method":"tools/call","params":{"name":"render_review_memo","arguments":{"package_id":"demo_1099_bundle"}}}

The actual response payload is JSON-encoded inside the standard MCP {"content":[{"type":"text","text":...}]} envelope.

Architecture

A caller (any MCP-aware agent) speaks JSON-RPC over stdio to the pdf-inspector-mcp binary. The binary dispatches to a thin facade crate (pdf-inspector-skillkit) which wraps the upstream pdf-inspector library. Domain modules (tax / sec / irc) are siblings of the core extractor — each composes the primitives with format-specific knowledge but never modifies the upstream surface.

  caller (Claude Code, Codex, ...)
        |
        | JSON-RPC over stdio (MCP)
        v
  pdf-inspector-mcp        (rmcp 1.4 server)
        |
        v
  pdf-inspector-skillkit   (facade lib)
   |       |
   |       +-- domain::tax      (identify_tax_form)
   |       +-- domain::sec      (split_sec_filing)
   |       +-- domain::irc      (parse_irc_sections)
   |       +-- domain::sweet    (demo review packages + comparisons)
   v
  pdf-inspector             (upstream, SHA-pinned)

Development

Task Command
Build cargo build --workspace
Test cargo test --workspace
Lint cargo clippy --workspace --all-targets -- -D warnings
Validate domain tool against a PDF cargo run --example validate_domain -- <tax|irc|sec> <pdf-path>
Run Sweet review demo cargo run -p pdf-inspector-skillkit --example sweet_review_demo -- demo_1040_w2_schedule_c

License

Dual-licensed under either of:

at your option.

Every transitive dependency is permissively licensed (MIT, Apache-2.0, BSD, MPL-2.0 file-level, or Zlib). See THIRD_PARTY.md for the full audit.

Contributing

See CONTRIBUTING.md for setup, code standards, and the PR checklist (including a hard rule against committing real personal or financial PDFs as test fixtures).

from github.com/Jimthetaxguy/pdf-inspector-integration

Installing Pdf Inspector Integration

This server has no published package — it is built from source. Open the repository and follow its README.

▸ github.com/Jimthetaxguy/pdf-inspector-integration

FAQ

Is Pdf Inspector Integration MCP free?

Yes, Pdf Inspector Integration MCP is free — one-click install via Unyly at no cost.

Does Pdf Inspector Integration need an API key?

No, Pdf Inspector Integration runs without API keys or environment variables.

Is Pdf Inspector Integration hosted or self-hosted?

Self-hosted: the server runs locally on your machine via the install command above.

How do I install Pdf Inspector Integration in Claude Desktop, Claude Code or Cursor?

Open Pdf Inspector Integration on unyly.org, pick your client tab (Claude Desktop, Claude Code, Cursor) and press Install — the config is generated automatically, no JSON editing.

Related MCPs

Compare Pdf Inspector Integration with

Not sure what to pick?

Find your stack in 60 seconds

Author?

Embed badge for your README

Browse similar

All development MCPs