pdfnative MCP — PDF generation, PAdES signing & introspection
io.github.Nizoka/pdfnative-mcp · v1.8.0
PDF MCP server: PDF/A, PDF/X-4, PAdES (LTV), forms, 32 scripts, JPEG 2000, spot colours. 28 tools
Connect Runs on your machine
claude mcp add pdfnative-mcp -e PDFNATIVE_MCP_OUTPUT_DIR=<PDFNATIVE_MCP_OUTPUT_DIR> -e PDFNATIVE_MCP_OUTPUT_BASE_URL=<PDFNATIVE_MCP_OUTPUT_BASE_URL> -e PDFNATIVE_MCP_CACHE_DIR=<PDFNATIVE_MCP_CACHE_DIR> -e PDFNATIVE_MCP_FONT_DIR=<PDFNATIVE_MCP_FONT_DIR> -e PDFNATIVE_MCP_PORT=<PDFNATIVE_MCP_PORT> -e PDFNATIVE_MCP_HTTP_TOKEN=<PDFNATIVE_MCP_HTTP_TOKEN> -e PDFNATIVE_MCP_MAX_INFLATE_BYTES=<PDFNATIVE_MCP_MAX_INFLATE_BYTES> -e PDFNATIVE_MCP_CREATION_DATE=<PDFNATIVE_MCP_CREATION_DATE> -e SOURCE_DATE_EPOCH=<SOURCE_DATE_EPOCH> -e PDFNATIVE_MCP_TSA_URL=<PDFNATIVE_MCP_TSA_URL> -e PDFNATIVE_MCP_TSA_AUTH=<PDFNATIVE_MCP_TSA_AUTH> -e PDFNATIVE_MCP_REVOCATION=<PDFNATIVE_MCP_REVOCATION> -e PDFNATIVE_MCP_NETWORK_ALLOWED_HOSTS=<PDFNATIVE_MCP_NETWORK_ALLOWED_HOSTS> -e PDFNATIVE_MCP_NETWORK_TIMEOUT_MS=<PDFNATIVE_MCP_NETWORK_TIMEOUT_MS> -- npx -y [email protected]
{
"mcpServers": {
"pdfnative-mcp": {
"command": "npx",
"args": [
"-y",
"[email protected]"
],
"env": {
"PDFNATIVE_MCP_OUTPUT_DIR": "<PDFNATIVE_MCP_OUTPUT_DIR>",
"PDFNATIVE_MCP_OUTPUT_BASE_URL": "<PDFNATIVE_MCP_OUTPUT_BASE_URL>",
"PDFNATIVE_MCP_CACHE_DIR": "<PDFNATIVE_MCP_CACHE_DIR>",
"PDFNATIVE_MCP_FONT_DIR": "<PDFNATIVE_MCP_FONT_DIR>",
"PDFNATIVE_MCP_PORT": "<PDFNATIVE_MCP_PORT>",
"PDFNATIVE_MCP_HTTP_TOKEN": "<PDFNATIVE_MCP_HTTP_TOKEN>",
"PDFNATIVE_MCP_MAX_INFLATE_BYTES": "<PDFNATIVE_MCP_MAX_INFLATE_BYTES>",
"PDFNATIVE_MCP_CREATION_DATE": "<PDFNATIVE_MCP_CREATION_DATE>",
"SOURCE_DATE_EPOCH": "<SOURCE_DATE_EPOCH>",
"PDFNATIVE_MCP_TSA_URL": "<PDFNATIVE_MCP_TSA_URL>",
"PDFNATIVE_MCP_TSA_AUTH": "<PDFNATIVE_MCP_TSA_AUTH>",
"PDFNATIVE_MCP_REVOCATION": "<PDFNATIVE_MCP_REVOCATION>",
"PDFNATIVE_MCP_NETWORK_ALLOWED_HOSTS": "<PDFNATIVE_MCP_NETWORK_ALLOWED_HOSTS>",
"PDFNATIVE_MCP_NETWORK_TIMEOUT_MS": "<PDFNATIVE_MCP_NETWORK_TIMEOUT_MS>"
}
}
}
}
{
"mcpServers": {
"pdfnative-mcp": {
"command": "npx",
"args": [
"-y",
"[email protected]"
],
"env": {
"PDFNATIVE_MCP_OUTPUT_DIR": "<PDFNATIVE_MCP_OUTPUT_DIR>",
"PDFNATIVE_MCP_OUTPUT_BASE_URL": "<PDFNATIVE_MCP_OUTPUT_BASE_URL>",
"PDFNATIVE_MCP_CACHE_DIR": "<PDFNATIVE_MCP_CACHE_DIR>",
"PDFNATIVE_MCP_FONT_DIR": "<PDFNATIVE_MCP_FONT_DIR>",
"PDFNATIVE_MCP_PORT": "<PDFNATIVE_MCP_PORT>",
"PDFNATIVE_MCP_HTTP_TOKEN": "<PDFNATIVE_MCP_HTTP_TOKEN>",
"PDFNATIVE_MCP_MAX_INFLATE_BYTES": "<PDFNATIVE_MCP_MAX_INFLATE_BYTES>",
"PDFNATIVE_MCP_CREATION_DATE": "<PDFNATIVE_MCP_CREATION_DATE>",
"SOURCE_DATE_EPOCH": "<SOURCE_DATE_EPOCH>",
"PDFNATIVE_MCP_TSA_URL": "<PDFNATIVE_MCP_TSA_URL>",
"PDFNATIVE_MCP_TSA_AUTH": "<PDFNATIVE_MCP_TSA_AUTH>",
"PDFNATIVE_MCP_REVOCATION": "<PDFNATIVE_MCP_REVOCATION>",
"PDFNATIVE_MCP_NETWORK_ALLOWED_HOSTS": "<PDFNATIVE_MCP_NETWORK_ALLOWED_HOSTS>",
"PDFNATIVE_MCP_NETWORK_TIMEOUT_MS": "<PDFNATIVE_MCP_NETWORK_TIMEOUT_MS>"
}
}
}
}
{
"servers": {
"pdfnative-mcp": {
"type": "stdio",
"command": "npx",
"args": [
"-y",
"[email protected]"
],
"env": {
"PDFNATIVE_MCP_OUTPUT_DIR": "<PDFNATIVE_MCP_OUTPUT_DIR>",
"PDFNATIVE_MCP_OUTPUT_BASE_URL": "<PDFNATIVE_MCP_OUTPUT_BASE_URL>",
"PDFNATIVE_MCP_CACHE_DIR": "<PDFNATIVE_MCP_CACHE_DIR>",
"PDFNATIVE_MCP_FONT_DIR": "<PDFNATIVE_MCP_FONT_DIR>",
"PDFNATIVE_MCP_PORT": "<PDFNATIVE_MCP_PORT>",
"PDFNATIVE_MCP_HTTP_TOKEN": "<PDFNATIVE_MCP_HTTP_TOKEN>",
"PDFNATIVE_MCP_MAX_INFLATE_BYTES": "<PDFNATIVE_MCP_MAX_INFLATE_BYTES>",
"PDFNATIVE_MCP_CREATION_DATE": "<PDFNATIVE_MCP_CREATION_DATE>",
"SOURCE_DATE_EPOCH": "<SOURCE_DATE_EPOCH>",
"PDFNATIVE_MCP_TSA_URL": "<PDFNATIVE_MCP_TSA_URL>",
"PDFNATIVE_MCP_TSA_AUTH": "<PDFNATIVE_MCP_TSA_AUTH>",
"PDFNATIVE_MCP_REVOCATION": "<PDFNATIVE_MCP_REVOCATION>",
"PDFNATIVE_MCP_NETWORK_ALLOWED_HOSTS": "<PDFNATIVE_MCP_NETWORK_ALLOWED_HOSTS>",
"PDFNATIVE_MCP_NETWORK_TIMEOUT_MS": "<PDFNATIVE_MCP_NETWORK_TIMEOUT_MS>"
}
}
}
}
Replace the values in angle brackets with your own. Keys stay on your machine; we never see them.
Tools
This server runs locally, so its tools are listed by your MCP client once it starts.
Environment variables
| Name | Description |
|---|---|
PDFNATIVE_MCP_OUTPUT_DIROptional | Absolute path of a sandboxed directory where outputMode='file' may write PDFs. Unset: every tool returns base64 only (file output disabled). |
PDFNATIVE_MCP_OUTPUT_BASE_URLOptional | Optional public base URL of PDFNATIVE_MCP_OUTPUT_DIR when the operator serves it over HTTP (e.g. https://files.example.com/pdf/). File-mode results then carry url (base + sandbox-relative path, percent-encoded) and name it instead of the host path. Absolute http(s) URL, no credentials, query or fra… |
PDFNATIVE_MCP_CACHE_DIROptional | Opt-in content-addressed response cache directory (SHA-256 keyed, 1h TTL, 256 MiB LRU, plaintext at rest). Never caches encrypt/decrypt, sign, timestamp, add_ltv, update_metadata, encrypted builds or file output. |
PDFNATIVE_MCP_FONT_DIROptional | Optional operator font sandbox: absolute path of a directory of .ttf / .otf files (at most 64, 16 MiB each), each parsed by the engine and registered at boot under the slug of its file name; tools name one with the font input (FONT_NOT_FOUND otherwise). An invalid directory or file refuses to start… |
PDFNATIVE_MCP_PORTOptional | Serve Streamable HTTP on this loopback port instead of stdio (MCP 2026-07-28, stateless). Unauthenticated unless PDFNATIVE_MCP_HTTP_TOKEN is set. |
PDFNATIVE_MCP_HTTP_TOKENOptional, secret | Opt-in bearer token for the HTTP transport (>= 16 chars, no whitespace). When set, /mcp requires 'Authorization: Bearer <token>' or answers 401. Never logged. |
PDFNATIVE_MCP_MAX_INFLATE_BYTESOptional | Per-stream FlateDecode decompression cap in bytes (zip-bomb mitigation; default 104857600 = 100 MiB). Integer >= 1024; an invalid value refuses to start the server. |
PDFNATIVE_MCP_CREATION_DATEOptional | ISO 8601 instant with a time zone (e.g. 2026-01-01T00:00:00Z) pinned as the creation date of every generated document: reproducible bytes on any host. A call's own creationDate still wins. An invalid value refuses to start the server. |
SOURCE_DATE_EPOCHOptional | reproducible-builds.org convention: integer seconds since the Unix epoch, used as the pinned creation date when PDFNATIVE_MCP_CREATION_DATE is unset. An invalid value refuses to start the server. |
PDFNATIVE_MCP_TSA_URLOptional | http(s) URL of the RFC 3161 timestamp authority used by sign_pdf timestamp=true and timestamp_pdf (PAdES B-T / B-LTA). Unset: those calls fail with TSA_NOT_CONFIGURED and no network request is made. Tool arguments can never supply a URL. |
PDFNATIVE_MCP_TSA_AUTHOptional, secret | Optional Authorization header value sent to the TSA (e.g. 'Basic ...' or 'Bearer ...'). Never logged or echoed. |
PDFNATIVE_MCP_REVOCATIONOptional | 'ocsp', 'crl' or 'ocsp,crl': enables online revocation collection for add_ltv mode='online' (PAdES B-LT). Unset: that mode fails with REVOCATION_NOT_CONFIGURED; mode='offline' stays fully offline. Requires PDFNATIVE_MCP_NETWORK_ALLOWED_HOSTS. |
PDFNATIVE_MCP_NETWORK_ALLOWED_HOSTSOptional | Comma-separated allow-list of OCSP / CRL responder hosts ('host', 'host:port' or '*.suffix'). Mandatory when PDFNATIVE_MCP_REVOCATION is set: responder URLs found in certificates are fetched only if the host matches (http(s) only, no credentials, no redirects, internal addresses rejected unless lis… |
PDFNATIVE_MCP_NETWORK_TIMEOUT_MSOptional | Per-request timeout for TSA / OCSP / CRL calls in milliseconds, 1000-120000 (default 10000). |
Details
| Package | [email protected] (NPM, stdio) |
| First published | 1 Nov 2026 |
| Last updated | 1 Nov 2026 |
| Registry name | io.github.Nizoka/pdfnative-mcp |
More files and documents servers See all
Listing data from the official MCP registry. Status and tools from NestDaddy's daily check. Browse all MCP servers.
