Pdfmakerapi
About
Generate PDF's such as invoices,receipts,documents, letters, proposals using natural language and get a link to view/edit/share your pdf.
Details
- Author
- GerardoBarrera
- Downloads
- 100
- Categories
- Productivity, Other
Jump to
Setting up with Highlight
This MCP is not yet compatible with Highlight’s one-click setup. However, you can still use it with Highlight by following these steps:
- Download and install Highlight from highlightai.com/download
- Navigate to the plugins tab and select "Add Custom Plugin"
-
Configure the plugin with the settings below
Plugin Name
PdfmakerapiCommand (node, npx, python, etc.)Please refer to the README for specific instructions on how to obtain API keys or other required environment variables.
- Enable "Start Automatically" if you want the plugin to start when Highlight launches
From the repository
{
"mcpServers": {
"pdfmakerapi": {
"command": "npx",
"args": [
"-y",
"@pdfmakerapi/mcp"
]
}
}
}
create_document
Create a professional, shareable PDF document — invoices, receipts, certificates, reports, resumes, letters, and more. Returns a link that opens the document in the PDFMakerAPI editor, where the user can preview it, edit any field, and download the PDF. Design a THOROUGH, realistic document (don't leave it sparse) that exactly follows this model, then pass it as `document`. DOCUMENT MODEL (PDFMakerAPI) Document: - id: string (short slug) - name: string - description: string (one short sentence) - pageSize: "letter" | "a4" | "legal" | "letter-landscape" | "a4-landscape" | "square" | "auto" (default "a4"; "auto" = letter width with the height growing to fit the content — use it for certificates/awards so there's no empty space below) - pageBackgroundColor: hex string (default "#ffffff") - margin: "none" | "sm" | "md" | "lg" — page margin; default "lg" - gap: "none" | "sm" | "md" | "lg" — vertical spacing between top-level sections; default "lg" - variables: Variable[] — every {{placeholder}} you use MUST be declared here - children: Node[] — the document body, top to bottom Variable: { id, name (snake_case, used as {{name}}), label (human), type: "text"|"date"|"number"|"currency", defaultValue?: string } Node (every node has: id, name, width: "full"|"1/2"|"1/3"|"1/4"|"2/3"|"3/4"|"auto", order: number, align?: "left"|"center"|"right", style?: NodeStyle): - container: { type:"container", layout:{ direction:"row"|"column", gap:"none"|"sm"|"md"|"lg", justify?:"start"|"center"|"end"|"between", alignItems?:"start"|"center"|"end"|"stretch" }, children: Node[] } - text: { type:"text", content: string (supports \n, {{vars}}, and **inline bold** — wrap part of the text in double asterisks to bold just that part, e.g. "Total: **{{total}}**"), fontSize?:"xs"|"sm"|"base"|"lg"|"xl", fontWeight?:"normal"|"medium"|"semibold"|"bold" } - table: { type:"table", columns: { id, name (data key), label (header), width?: "40%", align?: "left"|"center"|"right" }[], rowVariable: string } - spacer: { type:"spacer", height: "sm"|"md"|"lg"|"xl" } - divider: { type:"divider", lineStyle?: "solid"|"dashed"|"dotted" } NodeStyle: { backgroundColor?: hex, backgroundMode?: "none"|"solid"|"gradient", gradientTo?: hex, textColor?: hex, padding?: "none"|"sm"|"md"|"lg"|"xl", borderRadius?: "none"|"sm"|"md"|"lg", fullBleed?: boolean } VARIABLES — how data is inserted - In text content, insert a value with double braces and the exact snake_case name, e.g. {{invoice_number}} — no spaces inside the braces. Every {{name}} used MUST be declared in variables[]. - Give every variable a realistic defaultValue so the result looks complete. - TABLES do NOT use {{}}. A table renders one row per item in its rowVariable array, pulling item[column.name] for each cell — so each column "name" must match the row object's key. The rowVariable variable's defaultValue must be a JSON-encoded string of the row array, e.g. JSON.stringify([{ description: "Brand design", qty: "1", amount: "$2,400.00" }]). RULES - Use containers (direction:"row") to place items side by side. - Row widths: a direction:"row" container puts ALL children on ONE line (no wrap), so their widths must sum to AT MOST "full" (full=1, 3/4=.75, 2/3≈.67, 1/2=.5, 1/3≈.33, 1/4=.25). 1/3+1/3+1/3, 1/2+1/2, and 2/3+1/3 fit; 1/2+1/2+1/2 (1.5) or 2/3+2/3 overflow and break the layout — split into multiple stacked row containers or use narrower widths. - For label/value pairs (dates, totals, "Bill To", reference numbers), nest a direction:"row" container with two text children — a BOLD label (fontWeight:"bold") and the value as a {{variable}} — each with a width (e.g. label "1/3", value "2/3") so they align in columns. Stack such rows in a column container. - Use a table node for any repeating rows (line items, attendees) and set rowVariable. - Spacing between sections comes from the document "gap" (default "lg") — do NOT insert spacer nodes between top-level sections. - Table column alignment: left-align text columns, right…
Claude Desktop / Cursor
Paste into your MCP client config file to install this server.
{
"mcpServers": {
"pdfmakerapi": {
"pdfmakerapi": {
"command": "npx",
"args": [
"-y",
"@pdfmakerapi/mcp"
]
}
}
}
}
McpServers
{
"pdfmakerapi": {
"command": "npx",
"args": [
"-y",
"@pdfmakerapi/mcp"
]
}
}
AnMCPserver forPDFMakerAPI. It exposes a singlecreate_documenttool that turns a plain-English document description into ashareable linkwhich opens in the PDFMakerAPI editor — preview it, edit any field, and download the PDF.
Works withClaude Desktop, Claude.ai, Cursor, Windsurf, Cline, Zed, VS Code, ChatGPT, and any other MCP client. It's a thin client of the public API athttps://api.pdfmakerapi.com, so it needs no account or credentials of its own.
PDFMakerAPI is a PDF template builder and PDF generation API. Instead of hard-coding documents or wrestling with HTML-to-PDF converters that break when your content changes, you design a reusable template once in a visual, no-code editor — placing text, tables, images, and dynamic fields exactly where you want them — then feed it data to produce a finished, editable PDF.
Generate a single document or thousands. Fill a template in yourself, share a link so anyone completes it in the browser as a fillable PDF form, send JSON to the REST API, trigger generation from no-code tools like Zapier, Make, and n8n, or create documents straight from AI agents like Claude and ChatGPT. Prefer to start from a prompt? Describe what you need and let Quill build it.
Teams use PDFMakerAPI for invoices, receipts, certificates, reports, and contracts — anything you'd otherwise rebuild by hand every time the data changes. Start building free with 100 PDFs a month.
Or add the same config manually(works in every desktop client):
{ "mcpServers": { "pdfmakerapi": { "command": "npx", "args": ["-y", "@pdfmakerapi/mcp"] } } }
Settings → Developer → Edit Config (claude_desktop_config.json), add themcpServersblock above, and restart Claude.
Use theAdd to Cursorbutton, or add the block to~/.cursor/mcp.json(global) or.cursor/mcp.json(per-project).
Add the block to~/.codeium/windsurf/mcp_config.json(or via Settings → Cascade → MCP).
Cline → MCP Servers → Configure, and add themcpServersblock.
Use theInstall in VS Codebutton, or add to.vscode/mcp.json(note: VS Code uses aserverskey):
{ "servers": { "pdfmakerapi": { "command": "npx", "args": ["-y", "@pdfmakerapi/mcp"] } } }
{ "context_servers": { "pdfmakerapi": { "command": { "path": "npx", "args": ["-y", "@pdfmakerapi/mcp"] } } } }
If your client supports remote MCP servers, just point it at the hosted endpoint — nonpx, no Node:
- Claude.ai (web):Settings → Connectors → Add custom connector → paste the URL.
- ChatGPT (Plus/Pro/Enterprise):Settings → Connectors → add the URL.
- Cursor / others:add{ "url": "https://api.pdfmakerapi.com/mcp" }instead ofcommand/args.
"Make a professional invoice for Acme with 3 line items.""Create a course completion certificate.""Build a clean one-page resume."
It callscreate_documentand returns a link likehttps://app.pdfmakerapi.com/d/<id>— open it to preview, edit any field, and download the PDF.
git clone https://github.com/GerardoBarrera/pdfmakerapi-mcp.git cd pdfmakerapi-mcp npm install npm run build # compile to dist/ npm run dev # run from source (tsx)
- Server doesn't appear in your client— restart the client after editing its MCP config, and check the JSON is valid (no trailing commas). For remote clients, confirm the URL is exactlyhttps://api.pdfmakerapi.com/mcp.
- npxfails to start— ensure Node.js 18+ is installed (node -v), then retrynpx -y @pdfmakerapi/mcp@latest.
- Connection / timeout on the remote endpoint— verify your network/proxy allows HTTPS toapi.pdfmakerapi.com, and that you're using the Streamable HTTP transport.
- "Document is too large"— documents are capped at ~1 MB of JSON; trim large tables or split into multiple documents.
- The returned link won't open— copy the full link (it ends in a document ID); if it 404s, generate the document again.
- Still stuck?— open aGitHub issueor emailsupport@pdfmakerapi.com.
Generates professional PDF cover letters using LaTeX. Requires Docker for local execution.
Create PDFs without leaving your workflow. Perfect for documentation, reports, and creative projects. Productive PDF generation with full Unicode and emoji support.
Generates professional PDF resumes using LaTeX templates.
AI-powered reading triage MCP. 26 tools with a 24h burn timer. Read less, absorb more.
Universal document generation and conversion MCP. Generate PDF/DOCX/XLSX from templates+JSON (invoices, contracts, reports), batch generation, 100+ format conversions.
Create and manipulate PowerPoint presentations programmatically using JSON or Markdown.
An MCP server designed to assist with novel writing, configurable via JSON project files.
A server for reading and converting documents between PDF, DOCX, and Markdown formats using marker-pdf and pandoc.
Remote MCP server for Docsie video-to-docs automation and workspace knowledge search.
Sign in to leave a review
Use Google, GitHub, or an email account so ratings stay tied to real people.
No reviews posted yet.




