read_pdfLABSCO SUMMARY
Bounded on purpose, and honest about what does not work.
The resource caps are the interesting design choice: oversized documents are rejected before any extraction work happens and tool responses are bounded rather than serialised unbounded, which is the difference between a malicious PDF costing you an error and costing you the process. The known-limitations section is equally unusual for being specific — encryption parameters can be configured but the underlying library does not yet serialise the encryption dictionary on write, image extraction returns embedded streams byte-for-byte with no preprocessing, and PyPy and GraalPy are unsupported. Reading encrypted PDFs works.
What it is
The MCP server bundled with oxidize-pdf, a Rust-backed PDF library for Python. It covers reading and extraction, document assembly, forms, annotations, encryption and structural analysis, and every path it touches must resolve inside a workspace directory you nominate.
What you get
- Reading —
read_pdffor metadata including page count, version and encryption status, andextract_textfor all pages or one convert_pdf— output as markdown, chunks, or a RAG-optimised format, which is the tool that matters if the PDF is destined for a retrieval indexmanipulate_pdf— split, merge, rotate, extract pages, reverse and overlay in one tool- Creation —
create_pdf,annotate_pdffor text annotations and highlights, andsave_pdfwith optional encryption manage_forms— create, fill, read and validate form fieldssecure_pdf— encrypt, check permissions and verify signaturesanalyze_pdf— validate structure, detect corruption and check PDF/A compliance;extract_entitiespulls structured entities from pages- Resources exposing built-in fonts, standard page sizes, server capabilities, version and the workspace listing
Requirements
Python 3.10+ on Linux, macOS or Windows; pip install "oxidize-pdf[mcp]", then run oxidize-mcp or launch it through uvx --from "oxidize-pdf[mcp]" oxidize-mcp. The package is oxidize-pdf (version 0.18.0). Configuration is entirely environment variables: OXIDIZE_WORKSPACE is the sandbox root and defaults to ~/Documents/oxidize-mcp, with OXIDIZE_ALLOWED_PATHS for extra directories. Caps are enforced up front — OXIDIZE_MAX_FILE_SIZE_MB at 100, OXIDIZE_MAX_PAGES at 10000, OXIDIZE_MAX_OUTPUT_BYTES and OXIDIZE_MAX_SESSION_BYTES at 10485760 each, OXIDIZE_MAX_SESSIONS at 10 and OXIDIZE_SESSION_TIMEOUT at 3600 seconds. Exceeding one returns an error coded RESOURCE_LIMIT. No C dependencies, no Java, no subprocess calls. MIT licensed.
Setup effort
One command — pip install "oxidize-pdf[mcp]"
USE CASES
Getting a PDF into a retrieval index
Convert it to a RAG-optimised format or chunks rather than dumping raw text and cleaning it up later.
Reorganising a document
Split, merge, rotate or reorder pages through a single manipulation tool and save the result inside the workspace.
Filling in a form
Read the field structure, fill the values, then validate that the result is what the form expects.
Checking a file before you trust it
Validate the structure, detect corruption and check PDF/A compliance instead of finding out downstream.
Marking up a document for review
Add text annotations and highlights where they belong and save the annotated copy.
12 tools
Listed in project docs. Your client may show a different list.
extract_textconvert_pdfcreate_pdfsave_pdfadd_pdf_contentannotate_pdfmanipulate_pdfmanage_formssecure_pdfextract_entitiesanalyze_pdfBEFORE YOU INSTALL
What to know first
Tools you get
12 tools named in the project's documentation.
Requires
- Python 3.10+
- uv on PATH for the Claude Desktop and Claude Code routes (they start it with uvx --from "oxidize-pdf[mcp]" oxidize-mcp)
- oxidize-mcp on PATH for the VS Code route (pip install "oxidize-pdf[mcp]" installs it)
Where it runs
All 3 documented clients run the server on your machine.
INSTALLATION
Connect your client
Server setup
pip install "oxidize-pdf[mcp]"MCP Clients
Claude Desktop
{
"mcpServers": {
"oxidize-pdf": {
"command": "uvx",
"args": [
"--from",
"oxidize-pdf[mcp]",
"oxidize-mcp"
]
}
}
}Claude Code
claude mcp add oxidize-pdf -- uvx --from "oxidize-pdf[mcp]" oxidize-mcpVS Code
{
"servers": {
"oxidize-pdf": {
"command": "oxidize-mcp",
"env": {
"OXIDIZE_WORKSPACE": "<YOUR_OXIDIZE_WORKSPACE>"
}
}
}
}