Dokmatiq DocGen MCP Server
MCP (Model Context Protocol) server that exposes the Dokmatiq DocGen document generation API as tools for AI assistants like Codex, Claude Code, Claude Desktop, Cursor, Continue, Cline, and Hermes.
Use it to generate PDFs, DOCX/ODT documents, Excel workbooks, invoices, e-invoices (ZUGFeRD/XRechnung/Factur-X), receipt exports, signed PDFs, PDF forms, and documents on company letterhead (Briefpapier/Firmenpapier).
Setup
Prerequisites
- Python 3.11+
- DocGen API key
Installation
python3.11 -m pip install --user dokmatiq-docgen-mcp
The package requires Python 3.11 or newer. On macOS, the system or Xcode-provided python3 can be too old; use Homebrew Python, pyenv, uv, or another Python 3.11+ runtime if pip cannot find a compatible package.
pip install --user commonly installs the docgen-mcp command into ~/.local/bin. If your MCP client cannot find docgen-mcp, add ~/.local/bin to PATH or use the absolute command path in your MCP config.
Or install from source:
cd mcp
pip install -e .
Running tests
From the repository root, use the checked-in lockfile to install the MCP server and run its stdio/client smoke tests:
uv run --project mcp python -m unittest discover -s mcp/tests -v
Configuration
Set your API key as an environment variable:
export DOCGEN_API_KEY=dk_live_xxx
Optionally override the base URL:
export DOCGEN_BASE_URL=https://custom.api.endpoint.com
Usage with Claude Desktop
Add to your Claude Desktop config (~/Library/Application Support/Claude/claude_desktop_config.json):
{
"mcpServers": {
"docgen": {
"command": "/Users/you/.local/bin/docgen-mcp",
"env": {
"DOCGEN_API_KEY": "dk_live_xxx"
}
}
}
}
Or using uvx:
{
"mcpServers": {
"docgen": {
"command": "uvx",
"args": ["dokmatiq-docgen-mcp"],
"env": {
"DOCGEN_API_KEY": "dk_live_xxx"
}
}
}
}
Usage with Claude Code
claude mcp add docgen -- docgen-mcp
Set the API key in your environment or .env file.
Usage with Codex
Install the companion skill:
python3 ~/.codex/skills/.system/skill-installer/scripts/install-skill-from-github.py \
--repo dokmatiq/docgen-sdks \
--path plugin/skills/dokmatiq-docgen
Then configure an MCP server named docgen using either docgen-mcp, an absolute path such as /Users/you/.local/bin/docgen-mcp, or uvx dokmatiq-docgen-mcp. Make sure DOCGEN_API_KEY is available to the server process.
Usage with Hermes
Add the MCP server to your Hermes config (~/.hermes/config.yaml):
mcp_servers:
docgen:
command: "uvx"
args: ["dokmatiq-docgen-mcp"]
env:
DOCGEN_API_KEY: "dk_live_xxx"
Replace dk_live_xxx with your Dokmatiq API key.
Environment Variables in MCP Configs
Do not use shell placeholders such as ${DOCGEN_API_KEY} inside JSON MCP config files unless your specific client documents that it expands them. Many MCP clients pass that value literally to the server, which causes authentication to fail.
Available Tools
Document Generation
| Tool | Description |
|---|---|
generate_pdf_from_html |
Convert HTML to PDF |
generate_pdf_from_markdown |
Convert Markdown to PDF |
generate_document |
Generate with template, fields, watermark, output format |
compose_document |
Compose multi-part document from sections |
create_invoice |
Create ZUGFeRD-compliant invoice PDF |
PDF Tools
| Tool | Description |
|---|---|
merge_pdfs |
Merge multiple PDFs into one |
extract_text_from_pdf |
Extract all text content |
get_pdf_metadata |
Get title, author, page count |
convert_to_pdfa |
Convert to PDF/A archival format |
rotate_pdf |
Rotate pages |
PDF Forms
| Tool | Description |
|---|---|
inspect_pdf_form |
List form fields with types and values |
fill_pdf_form |
Fill form fields |
Digital Signatures
| Tool | Description |
|---|---|
sign_pdf |
Digitally sign with PKCS#12 certificate |
verify_pdf_signatures |
Verify existing signatures |
list_certificates |
List uploaded certificates |
Templates & Fonts
| Tool | Description |
|---|---|
list_templates |
List uploaded templates |
upload_template |
Upload ODT/DOCX template |
delete_template |
Delete a template |
list_fonts |
List uploaded fonts |
Preview
| Tool | Description |
|---|---|
preview_pdf_page |
Render page as PNG image |
get_pdf_page_count |
Get total page count |
Excel Workbooks
| Tool | Description |
|---|---|
generate_excel |
Generate styled XLSX from structured JSON (sheets, columns, formulas, styling, freeze panes) |
csv_to_excel |
Convert CSV to formatted Excel with auto-filter and styled headers |
excel_to_csv |
Extract Excel sheet data as CSV |
excel_to_json |
Extract Excel sheet data as structured JSON with typed values |
fill_excel_template |
Fill Excel template with values at named cells and ranges |
inspect_excel |
Inspect workbook metadata (sheet names, row/column counts, named ranges) |
E-Invoicing
| Tool | Description |
|---|---|
validate_zugferd |
Validate ZUGFeRD compliance |
extract_zugferd |
Extract invoice data from ZUGFeRD PDF |
validate_xrechnung |
Validate XRechnung XML |
parse_xrechnung |
Parse XRechnung into structured data |
detect_xrechnung |
Detect XRechnung format |
Receipt Recognition (AI-Powered)
| Tool | Description |
|---|---|
extract_receipt |
Extract structured data from receipt image (vendor, totals, VAT, line items, SKR03/04 account) |
extract_receipt_async |
Submit receipt for async extraction with optional webhook |
get_receipt_job |
Check async extraction job status |
get_receipt_job_result |
Get extraction result of completed job |
list_receipt_jobs |
List all async receipt jobs |
receipt_to_document |
Extract receipt and generate expense report (PDF/DOCX/ODT) |
export_receipts_csv |
Export receipts as DATEV-compatible CSV |
export_receipts_xlsx |
Export receipts as Excel workbook |
Example Prompts
Once connected, you can ask Claude:
- "Generate a PDF from this HTML:
<h1>Hello World</h1>" - "Create an invoice for ACME GmbH to Kunde AG for 8 hours of consulting at 120€/hour"
- "Merge these two PDFs together"
- "Extract the text from this PDF"
- "Fill the form fields name=Max and date=12.04.2026 in this PDF"
- "Extract the data from this receipt image -- I need vendor, total, and VAT breakdown"
- "Analyze these receipts and export them as a DATEV CSV"
- "Turn this receipt photo into an expense report PDF"
License
MIT
Release files for dokmatiq-docgen-mcp 0.1.3
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| dokmatiq_docgen_mcp-0.1.3.tar.gz | 53.6 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| dokmatiq_docgen_mcp-0.1.3-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 64.3 kB
Release files / dokmatiq_docgen_mcp-0.1.3.tar.gz
| Download URL | dokmatiq_docgen_mcp-0.1.3.tar.gz |
|---|---|
| Size | 53.6 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
c8ee24444f5848a88b451606765061e50921cdc5c8b0f27601de56252245f337
|
|
BLAKE2b-256 checksum How to use checksums |
ad629a0e6a84b1427e430501704bf4bf8c8ed3db9ba06aa5608b56c83b5d7964
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.14.6
|
Release files / dokmatiq_docgen_mcp-0.1.3-py3-none-any.whl
| Download URL | dokmatiq_docgen_mcp-0.1.3-py3-none-any.whl |
|---|---|
| Size | 10.8 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
bdfc32a9729bf2b42b3dc67d30326ac52f11ea5d65d05ab5e41d608e5cc39fa9
|
|
BLAKE2b-256 checksum How to use checksums |
d937eeb31ab55b3a93c289b7ca0101eefe5bccae3fef15b32b654db3e744b83a
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.14.6
|