Skip to main content

pdf-porter

Layout-aware PDF to Markdown for Claude — one tool, zero config, five minutes to set up. Uses Docling to preserve tables, multi-column layouts, and document structure that Claude's native PDF ingestion loses.

If you want the full Docling toolset, see docling-mcp by IBM Research. pdf-porter is intentionally minimal: one tool, one job.

Installation

Use with Claude Desktop (recommended)

Add to ~/Library/Application Support/Claude/claude_desktop_config.json:

{
  "mcpServers": {
    "pdf-tools": {
      "command": "uvx",
      "args": ["pdf-porter"]
    }
  }
}

Then restart Claude Desktop. The first time Claude calls the tool, Docling will download its model weights (~500MB). Subsequent calls are fast.

Development

git clone https://github.com/benmazzotta/pdf-porter
cd pdf-porter
uv sync --dev
uv run pytest

Tool Reference

pdf_to_markdown

Parameter Type Default Description
path str — Path to a PDF on the server’s filesystem
pdf_base64 str — Base64-encoded PDF bytes (use for uploads; see below)
save_output bool False If True, writes a .md file and returns the output path
output_dir str — Directory for the .md file when save_output=True (e.g. /mnt/user-data/outputs/)
filename str — Original filename hint for base64 mode (e.g. "report.pdf" → output is "report.md")

You must pass either path or pdf_base64 (not both). Paths under /mnt/user-data/uploads/ (e.g. Claude Desktop uploads) are not visible to the server; for those, pass the file content as pdf_base64 instead.

Returns: Markdown string, or a bare output file path when save_output=True, or "Error: <message>" on failure.

Known Limitations

  • First run: Docling downloads model weights (~500MB). You'll see a pause. Subsequent runs are fast.
  • Scanned PDFs: OCR mode is not enabled in v0.1. Image-only PDFs will return empty or minimal text.
  • Windows: Path handling not validated on Windows.

License

MIT. See LICENSE.

Metadata

Release files for pdf-porter 0.2.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for pdf-porter 0.2.1
File Size Uploaded Provenance
pdf_porter-0.2.1.tar.gz 177.6 kB Without provenance Details

Built distribution (wheel)

Table of built distributions (wheels) for pdf-porter 0.2.1
File Interpreter ABI Platform
pdf_porter-0.2.1-py3-none-any.whl Python 3 none any Details

Total release size: 182.7 kB

Release files / pdf_porter-0.2.1.tar.gz

Download URL pdf_porter-0.2.1.tar.gz
Size 177.6 kB
Tags Source
SHA-256 checksum
How to use checksums
791dfae2116b2358fd6449aeeeabda634dd6dd6df1f27eb3d85f6b29c19f803c
BLAKE2b-256 checksum
How to use checksums
0936eb4ae932644a2ba3ee2944a63436527b757a9abc53da80d89db4e32769bd
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.10.5 {"installer":{"name":"uv","version":"0.10.5","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

Release files / pdf_porter-0.2.1-py3-none-any.whl

Download URL pdf_porter-0.2.1-py3-none-any.whl
Size 5.1 kB
Tags Python 3
SHA-256 checksum
How to use checksums
fbdca6239051d457c0a6eb5eff33a68e1a13f27bf6a9e8301173597407e3475a
BLAKE2b-256 checksum
How to use checksums
1a384a375f3472ca092614f1c4a734c3d07a6aec4c89ebbb0fef683ec124f4ce
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.10.5 {"installer":{"name":"uv","version":"0.10.5","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

Security for pdf-porter 0.2.1

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page