Dynamic Document API
Renderiza PDFs e imágenes a partir de plantillas, HTML o Markdown, combina PDFs y crea facturas electrónicas validadas XRechnung y ZUGFeRD. Alojado en la UE; inicia sesión con OAuth o usa una clave de API.
Servidor MCP alojado
npx add-mcp 'https://mcp.dynamicdocumentapi.com/mcp'Se instala en Claude Code, Codex, Cursor y más
Documentación
Servidor MCP
Conecta Claude, ChatGPT, Cursor, VS Code y otros agentes de IA a tus plantillas mediante el Model Context Protocol, desde el inicio de sesión y las herramientas hasta el modo de prueba y los límites.
El servidor MCP permite que los agentes de IA usen Dynamic Document API como una herramienta. Un agente puede listar tus plantillas, leer los datos que una plantilla espera y generar PDFs, imágenes y facturas electrónicas, para luego entregarte los enlaces de descarga. Habla el Model Context Protocol, por lo que funciona con cualquier cliente que admita servidores MCP remotos.
https://mcp.dynamicdocumentapi.com/mcp
Inicias sesión con tu cuenta de Dynamic Document API la primera vez que un cliente se conecta y eliges el espacio de trabajo que puede usar. No hay nada que instalar.
Conectar un cliente
| Cliente | Cómo |
|---|---|
| Claude (claude.ai y Claude Desktop) | Añade un conector personalizado con la URL anterior |
| ChatGPT | Añade un conector con la URL anterior, si tu plan ofrece conectores personalizados |
| Claude Code | claude mcp add --transport http dynamic-document-api https://mcp.dynamicdocumentapi.com/mcp |
| Cursor | En .cursor/mcp.json: {"mcpServers": {"dynamic-document-api": {"url": "https://mcp.dynamicdocumentapi.com/mcp"}}} |
| VS Code | En .vscode/mcp.json: {"servers": {"dynamic-document-api": {"type": "http", "url": "https://mcp.dynamicdocumentapi.com/mcp"}}} |
El cliente abre el inicio de sesión de Dynamic Document API en tu navegador. Después de iniciar sesión, la pantalla de consentimiento muestra:
- Los permisos: listar plantillas y leer sus esquemas (
templates:read), crear renderizados (render:write) y leer renderizados y sus archivos (renders:read). Nada más: el servidor no puede cambiar plantillas, claves, webhooks ni ajustes. - El espacio de trabajo que el cliente puede usar y su región. Necesitas un rol que pueda gestionar integraciones en él.
- "Aplicación no verificada" y la dirección a la que regresas. Los clientes de IA se registran ellos mismos cuando se conectan por primera vez, por lo que el nombre que muestran es su propia declaración. Continúa solo si la dirección pertenece al cliente que estás conectando, como
claude.aipara Claude ohttp://localhostpara un cliente en tu computadora.
La conexión dura hasta que la elimines en Ajustes → Integraciones en el panel de control. El cliente renueva su acceso en segundo plano; si no lo has usado durante 90 días, te pedirá que inicies sesión nuevamente.
Con una clave de API
Los clientes que te permiten configurar encabezados de solicitud pueden enviar una clave de API en lugar de iniciar sesión:
Authorization: Bearer dda_test_…
Con una clave, esta decide si los renderizados son de prueba. Una clave de prueba (dda_test_…) hace que cada renderizado sea de prueba. Una clave en vivo (dda_live_…) hace que cada renderizado sea final y facturado, porque la API acepta renderizados de prueba solo desde claves de prueba. Comienza con una clave de prueba y cambia a una clave en vivo cuando quieras los documentos finales.
Prefiere iniciar sesión cuando el cliente lo admita: una clave en el archivo de configuración de un cliente es fácil de filtrar.
Herramientas
| Herramienta | Qué hace |
|---|---|
list_templates | Lista las plantillas publicadas del espacio de trabajo, filtradas por tipo o nombre |
get_template_schema | Devuelve los datos que una plantilla espera: el JSON Schema, una lista de campos, un payload de ejemplo y la factura electrónica predeterminada de la plantilla |
render_pdf_from_template | Genera un PDF a partir de una plantilla y datos JSON, opcionalmente como factura electrónica híbrida |
render_image_from_template | Genera un PNG, JPEG o WebP a partir de una plantilla de imagen |
render_pdf_from_html | Genera un PDF a partir de HTML y CSS |
render_pdf_from_markdown | Genera un PDF a partir de Markdown con un tema integrado |
create_einvoice | Crea un XML de factura electrónica validado: perfiles XRechnung, EN 16931, Factur-X y ZUGFeRD |
get_render | Devuelve el estado de un renderizado y enlaces de descarga actualizados |
merge_pdfs | Fusiona de 2 a 200 PDFs en uno, consulta herramientas de PDF |
Cada resultado de herramienta tiene un texto breve que el agente puede citar y el resultado completo como datos estructurados. Los enlaces de descarga están firmados y caducan; get_render devuelve otros nuevos.
El servidor también ofrece cada plantilla como un recurso (template://tpl_…, su esquema y un payload de ejemplo), cada renderizado como render://rnd_… y dos indicaciones que los clientes muestran como puntos de partida: create_invoice_pdf y make_social_image.
Modo de prueba primero
Después de iniciar sesión, los renderizados del servidor MCP son renderizados de prueba a menos que el agente pase test: false: llevan una marca de agua TEST y no se facturan. El resultado le indica al agente cómo obtener el documento final, así que pídelo cuando estés satisfecho con la versión de prueba. Cada renderizado final cuenta como un renderizado de API.
Una conexión con una clave de API no tiene ese interruptor: una clave de prueba siempre genera renderizados de prueba y una clave en vivo siempre genera finales. El servidor le indica al agente cuál de las dos es.
Límites
- 60 llamadas de herramienta por minuto por conexión. También se aplican los límites de tasa de API de tu plan.
- 25 segundos por llamada de renderizado. Un renderizado que tarda más sigue ejecutándose y la herramienta devuelve su id con el estado
queuedoprocessing; el agente recopila los archivos conget_render. - Listas de permitidos de IP: las solicitudes llegan a la API desde los propios servidores de Dynamic Document API, por lo que un espacio de trabajo con una lista de permitidos de IP de API (Ajustes → Seguridad) las rechaza.
- Los renderizados muestran la fuente
mcpen la lista de renderizados del panel de control y en el desglose de uso.
Servidor local
El servidor también se ejecuta en tu computadora, con una clave de API en lugar de un inicio de sesión. Se publica como una imagen de Docker, franko727/mcp en Docker Hub, para Intel y Apple silicon. Necesitas Docker instalado; el cliente inicia el contenedor por sí mismo.
- Crea una clave de API en Claves de API en el panel de control en https://app.dynamicdocumentapi.com. Comienza con una clave de prueba (
dda_test_…). - Añade el servidor a tu cliente.
Claude Desktop (claude_desktop_config.json), Cursor (.cursor/mcp.json) y la mayoría de los otros clientes:
{
"mcpServers": {
"dynamic-document-api": {
"command": "docker",
"args": ["run", "-i", "--rm", "-e", "DYNAMIC_DOCUMENT_API_KEY", "franko727/mcp"],
"env": { "DYNAMIC_DOCUMENT_API_KEY": "dda_test_…" }
}
}
}
Claude Code:
claude mcp add dynamic-document-api --env DYNAMIC_DOCUMENT_API_KEY=dda_test_… -- docker run -i --rm -e DYNAMIC_DOCUMENT_API_KEY franko727/mcp
El servidor local tiene las mismas herramientas, recursos e indicaciones. Como con una clave de API anteriormente, la clave decide si los renderizados son de prueba. Sus solicitudes llegan a la API desde tu computadora, por lo que la lista de permitidos de IP de un espacio de trabajo se aplica a tu dirección. Iniciarlo con npx, sin Docker, está próximo.
[
Enlaces firmados
URLs de imagen y PDF que renderizan una plantilla bajo solicitud, sin clave de API. Formato de URL, firmas HMAC, enlaces abiertos, comprobaciones y errores, caché, cuotas y facturación.
](https://dynamicdocumentapi.com/docs/signed-links)[
Referencia de API
Página siguiente