generate_basic_pdfLABSCO SUMMARY
It will not make an outbound call you did not configure.
The timestamp authority and the revocation endpoints come from operator-set environment variables, and a tool argument can never supply a URL. Together with a cache that refuses to store decrypted bytes or key material, this reads as a PDF engine designed on the assumption that the caller is a language model.
What it is
A PDF engine exposed as MCP tools. It builds documents from structured blocks, adds barcodes, tables, forms and vector charts, renders 24 scripts with proper shaping and bidi, applies and verifies PAdES digital signatures, and merges, splits, annotates, encrypts and decrypts existing files.
What you get
- Generation — generate_basic_pdf from headings, paragraphs, lists, page breaks and spacers with optional PDF/A, watermark, outline and page labels; add_table with wrapping, repeated headers and zebra striping; add_chart for bar, horizontal bar, line, pie and donut as pure vector paths; embed_image for JPEG and PNG
- Codes and scripts — add_barcode for QR, Code 128, EAN-13, Data Matrix and PDF417; add_international_text across 24 scripts including Arabic, Hebrew, Thai, CJK and Devanagari, with colour emoji support
- Forms — add_form creates an AcroForm with text fields, checkboxes, radio buttons and dropdowns; read_form_fields enumerates an existing one; fill_form fills and optionally flattens it as a non-destructive incremental update
- Signing — sign_pdf applies a PAdES-compatible CMS signature and injects the placeholder itself, so any PDF can be signed in one call; prepare_signature_placeholder remains for controlling that placeholder; verify_pdf recomputes the ByteRange digest and checks each signature's CMS value
- Inspection — inspect_pdf reports version, page count, encryption, PDF/A claim, signature count and attachments, with a check array for CI-style assertions; validate_pdf runs a PDF/UA structural conformance check; extract_text and extract_attachments read content and embedded files back
- Structure — merge_pdfs concatenates 2 to 50 files, split_pdf writes one document per page range, extract_pages pulls an arbitrary subset into a single file, annotate_pdf appends markup while preserving the original bytes
- Archival and security — add_attachment produces PDF/A-3 with embedded files, which is what a Factur-X or ZUGFeRD invoice needs; encrypt_pdf applies AES-128 or AES-256 and never RC4; decrypt_pdf emits an unencrypted copy
Requirements
The npm package pdfnative-mcp over stdio, run with npx -y pdfnative-mcp. Tools return base64 unless PDFNATIVE_MCP_OUTPUT_DIR names a sandboxed directory that outputMode='file' may write to. PDFNATIVE_MCP_PORT switches to Streamable HTTP on loopback, unauthenticated unless PDFNATIVE_MCP_HTTP_TOKEN is set. PDFNATIVE_MCP_CACHE_DIR enables an opt-in response cache that never stores signing, encryption or timestamp output. PDFNATIVE_MCP_MAX_INFLATE_BYTES caps per-stream decompression against zip bombs. Timestamped and long-term-validation signatures need PDFNATIVE_MCP_TSA_URL and PDFNATIVE_MCP_REVOCATION set by the operator; without them those calls fail rather than reaching out. One thing to plan around: merging, splitting and page extraction drop signatures and AcroForms, because a page-tree edit invalidates the byte range.
Setup effort
One command — npx -y pdfnative-mcp
USE CASES
Producing a report with tables and charts
Build the document from blocks, add a wrapping table with repeated headers, and draw the chart as vectors.
Signing a document and proving it later
One call signs any PDF; verification recomputes the digest and checks the signature value.
Filling a form someone sent you
Enumerate the field tree first, then fill and optionally flatten without disturbing the original bytes.
Building an electronic invoice with a machine-readable payload
Embed the XML as a PDF/A-3 attachment, then assert the result carries it.
Splitting or combining files
Concatenate a set, cut one into ranges, or lift an arbitrary page subset into a new document.
Checking a file meets an accessibility or archival standard
PDF/UA structural conformance, plus CI-style assertions on the PDF/A claim and signature count.
Password-protecting a document
Apply AES-128 or AES-256 with explicit permissions, or open an encrypted file and emit a clear copy.
Setting a script other engines get wrong
Arabic, Hebrew, Thai, CJK and Devanagari with real shaping and bidi, several languages per document.
28 tools
Listed in project docs. Your client may show a different list.
inspect_layoutadd_barcodeadd_international_textadd_tableadd_formread_form_fieldsfill_formadd_chartembed_imageprepare_signature_placeholdersign_pdfadd_ltvtimestamp_pdfverify_pdfvalidate_pdfadd_attachmentextract_attachmentsextract_textinspect_pdfupdate_metadataencrypt_pdfdecrypt_pdfmerge_pdfssplit_pdfextract_pagesannotate_pdfdraft_governance_issueBEFORE YOU INSTALL
What to know first
Tools you get
28 tools named in the project's documentation. Four of the 28 — inspect_layout, add_ltv, timestamp_pdf and update_metadata — arrived in v1.6.0; run v1.6.0 or later to get them.
Requires
npx on PATH
Where it runs
Both documented clients run the server on your machine.
INSTALLATION
Connect your client
Server setup
npx -y pdfnative-mcpMCP Clients
Claude Desktop, Cursor
{
"mcpServers": {
"pdfnative": {
"command": "npx",
"args": [
"-y",
"pdfnative-mcp"
],
"env": {
"PDFNATIVE_MCP_OUTPUT_DIR": "/Users/<YOUR_USERNAME>/Documents/mcp-pdfs"
}
}
}
}