Skip to main content
Glama
README.md
# docjet-mcp

MCP server for [DocJet](https://docjet.dev) — render branded PDF documents (invoices, reports, certificates) and PNG social images directly from any MCP client (Claude Desktop, Claude Code, Cursor, Windsurf, ...).

Send a template ID or raw HTML plus JSON data; get back a signed download URL. Runs locally over stdio via `npx` — nothing to host.

## Quick start

Add to your MCP client configuration:

```json
{
  "mcpServers": {
    "docjet": {
      "command": "npx",
      "args": ["docjet-mcp"],
      "env": {
        "DOCJET_API_KEY": "binfra_your_key_here"
      }
    }
  }
}
```

Get an API key at [docjet.dev](https://docjet.dev). To try it without signing up, use the public demo key (rate-limited to 3 req/min, 50 renders/month, shared by everyone):

```
binfra_9afb57dbb6478c441ad101129fca65847f5745403f9d718b3de6d934c9b63f88
```

## Tools

| Tool | What it does |
| --- | --- |
| `render_pdf` | Render a branded PDF. Input: `template_id` (or raw `html`) + `data` object. Returns a signed download URL. |
| `render_image` | Render a PNG image (e.g. OG/social card). Input: `template_id` (or raw `html`) + `data` object. Returns a signed download URL. |
| `list_templates` | List available templates: `id`, `name`, `description`, `outputType`. No API key needed. |

Example prompt once connected:

> "List the DocJet templates, then render the invoice-ro template with client 'Demo SRL' and total 1000 as a PDF."

## Environment variables

| Variable | Required | Description |
| --- | --- | --- |
| `DOCJET_API_KEY` | Yes | Your DocJet API key (`binfra_` prefix). Sent as a Bearer token; never logged. |
| `DOCJET_BASE_URL` | No | Override the API base URL (default `https://api.docjet.dev`). |

## How it works

- Stdio transport using the official [`@modelcontextprotocol/sdk`](https://www.npmjs.com/package/@modelcontextprotocol/sdk) (v1).
- `render_pdf` → `POST /v1/render?response=url`, `render_image` → `POST /v1/image?response=url`, `list_templates` → `GET /v1/templates`.
- Template IDs are validated locally against `^[a-z0-9][a-z0-9-]{0,63}$` before any network call.
- API errors surface as MCP error content with the DocJet error code (e.g. `QUOTA_EXCEEDED`, `RATE_LIMITED`).

## Links

- API docs: [docjet.dev/docs](https://docjet.dev/docs)
- JS/TS SDK: [`docjet` on npm](https://www.npmjs.com/package/docjet)
- Support: support@docjet.dev

## License

MIT

TDQS

A4.3/5.0

Scored across 3 tools

Disambiguation5/5

Each tool has a clearly distinct purpose: listing templates, rendering to PNG, and rendering to PDF. No functional overlap.

Naming Consistency5/5

All tool names follow a consistent verb_noun pattern: list_templates, render_image, render_pdf.

Tool Count5/5

With only 3 tools, the set is tightly scoped to the core functionality of template discovery and rendering, which is appropriate for this service.

Completeness4/5

The tools cover the primary use case of listing and rendering templates. The ability to provide raw HTML compensates for missing template management, though a tool to create/update templates would be a minor gap.

Maintenance

ActivityNo data
ResponsivenessNo issues