MintPDF
以下摘录自该仓库的 README(片段) · 在 GitHub 读完整 README →
**HTML & Markdown → PDF, as a REST API and an MCP server.**
No template editor. No template IDs. No dashboard. No signup to try.
**mintpdf.dev**
Try it · MCP setup · API · Self-host · Security · Limitations
---
Send HTML or Markdown, get a PDF back. It is Chromium under the hood, with the print CSS already
worked out so tables don't split across pages, table headers repeat, and Markdown comes out looking
like a document rather than a text file.
- **Pagination is the point.** break-inside, repeating thead, orphans and widows, and headers
and footers that actually inherit your styling. See How it works.
- **MCP native** — generate_pdf and pdf_from_url over streamable HTTP, so an agent can produce a
document mid-conversation.
- **Documents aren't kept** — rendered files are deleted after an hour, and their contents are
never logged. Keys, emails and usage counters obviously are stored. See Security.
- **Run it yourself** — MIT, with a published image. The hosted service exists so you don't have to
operate Chromium, not because the renderer is secret.
Quickstart
No signup, no key:
Want more than 3 renders a day? A free key (email only, no card) raises it to 100 a month:
Then send Authorization: Bearer pm_… with your requests.
Use it from Claude (or any MCP client)
Prefer the hosted endpoint directly? Use mcp-remote instead:
Restart your client, then just ask:
> "Summarise this thread as a one-page brief with page numbers and give me a PDF."
| Tool | Input | Returns |
|---|---|---|
| generate_pdf | html **or** markdown, plus options | download URL, valid 1 hour |
| pdf_from_url | url (public http/https), plus options | download URL, valid 1 hour |
API
POST /v1/pdf
Body takes **exactly one** source, plus options:
| Field | Type | Notes |
|---|---|---|
| html | string | Full document or fragment |
| markdown | string | Rendered with the default stylesheet |
| url | string | Public page to render. Private/internal addresses are blocked |
| format | string | A4 (default), Letter, Legal, A3, A5 |
| landscape | boolean | default false |
| margin | string | all sides, e.g. "18mm" |
| headerText / footerText | string | small text on every page |
| pageNumbers | boolean | adds 3 / 7 to the footer |
| output | "pdf" \| "url" | default returns PDF bytes; "url" returns JSON with a link |
POST /v1/keys
{"email":"you@example.com"} → a free key. No card, no verification loop.
POST /mcp
MCP streamable-HTTP endpoint, stateless. Same capabilities as the REST API.
Postman
A ready-made collection covering every endpoint and option lives in
postman/. Import it by link:
The first request runs with no key at all, and fetching a free key stores it into the collection
variable automatically, so the rest of the collection works straight after.
Limits
| Tier | Limit | Price |
|---|---|---|
| Anonymous | 3 renders/day per IP | free, no signup |
| Free key | 100 renders/month | free, email only |
| Solo | 3,000 renders/month | $19/month |
| Team | 12,000 renders/month | $49/month |
| Scale | 50,000 renders/month | $129/month |
Self-host
MintPDF is MIT-licensed; run your own if you'd rather.
Or pull the published image, which has Chromium and the fonts baked in:
Then it is the same API on your own machine, with no limits and nothing leaving it:
Images are built and published by CI on every change, and each is smoke-tested by starting the
container and rendering a real PDF from it before being tagged. Tags are latest and the short
commit SHA. Building it yourself works too:
Environment: BASE_URL (used in download links), DATA_DIR (defaults to /tmp/mintpdf; mount a
volume to persist keys), ANON_DAILY_LIMIT, FREE_MONTHLY_LIMIT, SOLO_MONTHLY_LIMIT,
TEAM_MONTHLY_LIMIT, SCALE_MONTHLY_LIMIT, OVERAGE_FACTOR, RENDER_CONCURRENCY,