PDFops
Herramientas PDF deterministas para agentes de IA: inspeccionar campos AcroForm, rellenar formularios, fusionar PDFs y generar facturas. Prueba sin clave, npx -y pdfops-mcp.
Documentación
pdfops-mcp
Servidor MCP que brinda a los agentes de IA herramientas PDF deterministas, respaldado por la API de PDFops: inspeccionar campos de AcroForm, completar formularios, fusionar PDFs y generar facturas — sin Chromium, sin dependencias nativas, nada que alojar.
Además de un agente local, las herramientas operan sobre rutas de archivo, por lo que los bytes PDF nunca transitan por el contexto del modelo: tu agente dice "completa /tmp/form.pdf y guarda en /tmp/out.pdf" y recibe una confirmación de una línea. Cada entrada PDF también acepta una URL https:// o un URI data:application/pdf;base64,…, y cada salida puede devolverse en línea en lugar de escribirse — que es lo que hace que el servidor funcione en entornos de ejecución alojados (ver más abajo).
Instalación
Claude Code
claude mcp add pdfops -- npx -y pdfops-mcp
# with a key:
claude mcp add pdfops -e PDFOPS_API_KEY=pdfops_live_… -- npx -y pdfops-mcp
Claude Desktop (claude_desktop_config.json) / Cursor (.cursor/mcp.json)
{
"mcpServers": {
"pdfops": {
"command": "npx",
"args": ["-y", "pdfops-mcp"],
"env": { "PDFOPS_API_KEY": "pdfops_live_…" }
}
}
}
VS Code (.vscode/mcp.json, nota la clave servers y type)
{
"servers": {
"pdfops": {
"type": "stdio",
"command": "npx",
"args": ["-y", "pdfops-mcp"],
"env": { "PDFOPS_API_KEY": "pdfops_live_…" }
}
}
}
Cualquier otro cliente stdio (Windsurf, Cline, Zed, tu propio agente): comando npx, argumentos -y pdfops-mcp. Guía por cliente y una transcripción real de llamadas a herramientas: pdfops.dev/mcp.
PDFOPS_API_KEY es opcional — sin él obtienes la prueba sin clave (100 solicitudes/IP/mes). Una clave gratuita (250/mes, sin tarjeta) toma un campo en pdfops.dev/pricing.
Herramientas
| Herramienta | Qué hace |
|---|---|
pdf_inspect | Lista los campos de formulario de un PDF (nombres, tipos, opciones, valores) + una plantilla de completado lista para pegar. Llámala primero en PDFs desconocidos. |
pdf_fill | Completa campos AcroForm → escribe el PDF completado. El flatten opcional integra los valores y elimina el formulario. |
pdf_merge | Fusiona ≥2 PDFs en orden → escribe el resultado. |
pdf_invoice | Datos estructurados → PDF de factura completo. Determinista: misma entrada, salida byte-idéntica. |
pdfops_usage | Verificación de cuota para la clave configurada. |
Ejecución remota (Smithery, Glama alojado, pasarelas de IDE en la nube)
Un entorno de ejecución MCP alojado ejecuta este servidor en una máquina donde las rutas de archivo de tu agente no existen. Nada cambia en la configuración — pasa fuentes que el servidor pueda alcanzar y omite output_path:
- Entradas (
pdf_path,pdf_paths): una URLhttps://que el servidor pueda obtener (≤50 MB), o un URIdata:application/pdf;base64,…para archivos pequeños. - Salidas: omite
output_pathypdf_fill/pdf_merge/pdf_invoicedevuelven el PDF en línea como un recursoapplication/pdfincrustado (pdfops://filled.pdf, …) que el cliente guarda. Conoutput_pathconfigurado, el archivo se escribe donde se ejecuta el servidor.
Localmente, las rutas absolutas siguen funcionando exactamente como antes y siguen siendo la forma recomendada — los bytes permanecen fuera del contexto del modelo.
Ejemplos de indicaciones
- "¿Qué campos tiene ~/forms/fw9.pdf?" →
pdf_inspect - "Completa ~/forms/fw9.pdf para Ada Lovelace, 12 Analytical Way, Londres; guárdalo aplanado como ~/out/w9-ada.pdf" →
pdf_inspect, luegopdf_fillconflatten: true - "Completa el formulario de incorporación una vez por fila de contractors.csv en ~/out/" → un
pdf_inspect, luegopdf_fillpor fila - "Fusiona ~/out/w9-ada.pdf, ~/docs/nda.pdf y ~/docs/cover.pdf en un solo paquete, portada primero" →
pdf_merge - "Factura a Globex por 3 días de consultoría a $650, impuesto del 8.5%, vencimiento en 30 días" →
pdf_invoice - "¿Cuántas solicitudes de PDFops me quedan este mes?" →
pdfops_usage
Flujo de agente de ejemplo
"Completa la plantilla W-9 en ~/docs/w9.pdf para Ada Lovelace y fúndela con ~/docs/cover.pdf"
pdf_inspect→ descubre nombres de campos + plantilla de completadopdf_fill→ escribe el W-9 completadopdf_merge→ escribe el paquete combinado
Enlaces
Documentación de la API: pdfops.dev/docs · OpenAPI: pdfops.dev/openapi.json · Cliente tipado: pdfops-sdk · Preguntas: hello@pdfops.dev
Política de privacidad
Este servidor se ejecuta en tu máquina y envía solo lo que una llamada de herramienta necesita a la API de PDFops (https://pdfops.dev): los bytes PDF a los que apuntas, los valores de campo que proporcionas y tu clave API si configuras una. PDFops procesa la solicitud en memoria y devuelve el resultado; no almacena tus documentos. El uso anónimo se mide por IP y por etiqueta de cliente (mcp) solo para cuota y atribución. Nada se comparte con terceros. La política completa, incluidos retención y datos de contacto, está en https://pdfops.dev/privacy. Preguntas: hello@pdfops.dev.
MIT © PDFops