# @docmake/mcp Official [Model Context Protocol](https://modelcontextprotocol.io) server for [DocMake](https://docmake.io), the AI-native document generation platform. It lets AI assistants like Claude generate DOCX and PDF documents from your DocMake templates: no glue code, just a conversation. > "Generate the invoice for Acme Corp: 10 hours of consulting at 100 EUR, due in 14 days." The assistant picks your invoice template, fills in the data, renders a PDF through the DocMake API, and hands you the file path. ## Example prompts - "Generate the invoice for Acme Corp: 10 hours of consulting at 100 EUR, due in 14 days." - "Which fields does my employment contract template need? Then fill it in for Maria Ionescu, starting 1 October, and save it as a DOCX." - "Import ~/Documents/quarterly-report.docx as a DocMake template, then show me the variables it found." ## Setup You need a DocMake API key. Create one at [app.docmake.io](https://app.docmake.io) under Settings > API Keys (free plan works). ### Claude Desktop Add to `claude_desktop_config.json` (Settings > Developer > Edit Config): ```json { "mcpServers": { "docmake": { "command": "npx", "args": ["-y", "@docmake/mcp@latest"], "env": { "DOCMAKE_API_KEY": "dm_your_key_here" } } } } ``` ### Claude Code ```bash claude mcp add docmake --env DOCMAKE_API_KEY=dm_your_key_here -- npx -y @docmake/mcp@latest ``` ### Cursor / other MCP clients Any client that supports stdio MCP servers works with the same command: `npx -y @docmake/mcp@latest` with `DOCMAKE_API_KEY` in the environment. ### Remote server (no install) DocMake also hosts the same six tools over streamable HTTP, so a client that speaks remote MCP needs nothing installed: ```json { "mcpServers": { "docmake": { "url": "https://app.docmake.io/mcp/v1", "headers": { "Authorization": "Bearer dm_your_key_here" } } } } ``` Two differences from this package. `render_document` returns a short-lived download link instead of writing the file to your machine, and `import_docx` takes the document as base64 rather than a path, because the server runs remotely and cannot read your disk. Everything else, including strict rendering, behaves the same. ## Configuration | Variable | Required | Default | Purpose | |---|---|---|---| | `DOCMAKE_API_KEY` | yes | | API key from app.docmake.io, Settings > API Keys | | `DOCMAKE_OUTPUT_DIR` | no | `~/Downloads/DocMake` | Where rendered documents are saved | | `DOCMAKE_API_BASE` | no | `https://app.docmake.io/api/v1` | API base URL, override for self-hosted setups | ## Tools | Tool | What it does | |---|---| | `list_templates` | List the templates in your workspace, with search and pagination | | `get_template` | A template's field tree: every variable it expects, ready to map to render data | | `render_document` | Render a template to PDF or DOCX and save the file locally | | `create_template` | Create a new template from a document schema JSON | | `import_docx` | Import a local .docx file as a new template (base64 on the remote server) | | `get_usage` | Plan, render quota, and rate limits for the current billing period | The server also exposes your templates as MCP resources and ships a `generate-document` prompt for a guided render flow. ## How rendering works `render_document` is strict by default: if any template variable has no value in `data`, the render fails and returns the list of missing keys, so the assistant can ask you for the values instead of producing an incomplete document. Pass `strict: false` to render with each variable's fallback text instead. Variables can declare a default value in the template editor. A defaulted variable never counts as missing: omit it from `data` and the default is rendered, even in strict mode. `get_template` shows each field's `default` (and `example`, a preview-only sample that is never rendered). Rendered files are saved to `DOCMAKE_OUTPUT_DIR` and never overwrite an existing file. ## Privacy Policy Full policy: [https://docmake.io/privacy](https://docmake.io/privacy) **What this server collects.** Nothing of its own. It has no telemetry and no analytics, and it never reads your chat history, memory, or files other than a `.docx` you explicitly pass to `import_docx`. **What it sends, and where.** Every tool call is a request to the DocMake API at `https://app.docmake.io/api/v1` over HTTPS, authenticated with your API key. Those requests carry only what the call needs: a template id, the data you asked to render, or the `.docx` you asked to import. DocMake processes that data to render your document. **Storage and retention.** Your templates and account data live in your DocMake workspace and are retained until you delete them or close the account. Rendered documents are written to your own machine, under `DOCMAKE_OUTPUT_DIR` (`~/Downloads/DocMake` by default), and are never uploaded anywhere else. Your API key stays on your machine: the desktop extension keeps it in your operating system keychain, and a manual setup keeps it in your MCP client's config file. **Third-party sharing.** Render data is not sold, and it is not shared with third parties beyond the subprocessors DocMake needs to run the service, listed in the full policy. **Contact.** support@docmake.io for privacy questions, data export, or deletion. ## Links - [DocMake](https://docmake.io), template gallery and product - [API documentation](https://docmake.io/developers) - [Dashboard](https://app.docmake.io) - Support: support@docmake.io ## License MIT