Invoice Parser MCP
Analiza facturas, recibos y documentos financieros para convertirlos en JSON estructurado, directamente desde tu agente de IA.
👁 License: MIT
👁 Version
👁 MCP
Listado en: Glama · Smithery · mcp.so
Creado para el Model Context Protocol. Impulsado por Claude Vision.
Qué hace
Extrae datos estructurados de facturas en PDF, recibos escaneados y archivos de imagen. Sin plantillas, sin configuración de OCR: Claude Vision lee el documento y devuelve un JSON limpio.
Related MCP server: Doc Agent
Herramientas
Herramienta | Descripción | Precio |
| Análisis completo de facturas (proveedor, partidas, totales, fecha de vencimiento) | $0.05/llamada |
| Análisis de recibos minoristas (comerciante, artículos, impuestos, método de pago) | $0.05/llamada |
| Solo la lista detallada, nada más | $0.01/llamada |
| Solo subtotal, impuestos, total, fecha de vencimiento | $0.01/llamada |
| Validación matemática: comprueba que las partidas sumen correctamente | $0.01/llamada |
| Análisis por lotes de múltiples archivos → CSV resumen (máx. 20) | $0.10/llamada |
Referencia de herramientas
parse_invoice
Análisis completo de facturas. Extrae cada campo estructurado de una factura de proveedor.
Parámetros
Parámetro | Tipo | Requerido | Descripción |
| string | Sí | Ruta absoluta al PDF de la factura o imagen (PNG, JPG, WEBP). |
| string | No* | Tu clave API de InvoiceParser. Consigue una en plenitudo.ai. |
| string | No* | Prueba de pago x402 (hash de transacción Base USDC). Alternativa a |
*Se debe proporcionar api_key o payment_proof.
Ejemplo de entrada
{
"file_path": "/Users/me/documents/invoice_acme_jan2025.pdf",
"api_key": "ip_free_abc123"
}Ejemplo de salida
{
"ok": true,
"document_type": "invoice",
"vendor": {
"name": "Acme Corp",
"address": "123 Industrial Way, Austin TX 78701",
"email": "billing@acme.com",
"phone": "512-555-0100",
"tax_id": "12-3456789"
},
"bill_to": {
"name": "Jane Smith",
"address": "456 Oak Ave, Boston MA 02101",
"email": "jane@example.com"
},
"invoice_number": "INV-2025-0142",
"invoice_date": "2025-01-15",
"due_date": "2025-02-15",
"payment_terms": "Net 30",
"currency": "USD",
"line_items": [
{
"description": "Software consulting — January",
"quantity": 40,
"unit_price": 175.0,
"total": 7000.0,
"tax_rate": 0.0
}
],
"subtotal": 7000.0,
"discount": 0.0,
"tax_amount": 560.0,
"shipping": 0.0,
"total": 7560.0,
"amount_due": 7560.0,
"notes": "Wire transfer preferred. See banking details on page 2.",
"po_number": "PO-98765"
}parse_receipt
Analiza un recibo minorista o de gastos. Diseñado para recibos de punto de venta, facturas de restaurantes y documentos de reclamación de gastos.
Parámetros
Parámetro | Tipo | Requerido | Descripción |
| string | Sí | Ruta absoluta al PDF del recibo o imagen (PNG, JPG, WEBP). |
| string | No* | Tu clave API de InvoiceParser. |
| string | No* | Prueba de pago x402 (hash de transacción Base USDC). |
Ejemplo de entrada
{
"file_path": "/Users/me/receipts/coffee_shop_march1.jpg",
"api_key": "ip_free_abc123"
}Ejemplo de salida
{
"ok": true,
"document_type": "receipt",
"merchant": {
"name": "Blue Bottle Coffee",
"address": "300 Webster St, Oakland CA 94609",
"phone": "510-555-0200",
"website": "bluebottlecoffee.com"
},
"date": "2025-03-01",
"time": "09:14",
"receipt_number": "5541",
"cashier": "Maria",
"items": [
{ "name": "Latte (large)", "quantity": 1, "unit_price": 6.50, "total": 6.50, "sku": "", "category": "beverage" },
{ "name": "Croissant", "quantity": 1, "unit_price": 4.00, "total": 4.00, "sku": "", "category": "pastry" }
],
"subtotal": 10.50,
"discounts": 0.0,
"tax": 0.84,
"tip": 2.00,
"total": 13.34,
"currency": "USD",
"payment_method": "Visa",
"card_last_four": "4242",
"transaction_id": "TXN-88821",
"loyalty_points": null,
"notes": ""
}extract_line_items
Extracción ligera que devuelve solo la lista detallada. Más rápido y económico que parse_invoice cuando solo necesitas las partidas.
Parámetros
Parámetro | Tipo | Requerido | Descripción |
| string | Sí | Ruta absoluta al PDF o imagen de la factura o recibo. |
| string | No* | Tu clave API de InvoiceParser. |
| string | No* | Prueba de pago x402 (hash de transacción Base USDC). |
Ejemplo de salida
{
"ok": true,
"line_items": [
{ "description": "Widget A (x10)", "quantity": 10, "unit_price": 12.00, "total": 120.00 },
{ "description": "Widget B (x5)", "quantity": 5, "unit_price": 24.00, "total": 120.00 }
],
"item_count": 2
}extract_totals
Extrae solo el resumen financiero (subtotal, impuestos, totales, fecha de vencimiento) sin analizar partidas ni detalles del proveedor.
Parámetros
Parámetro | Tipo | Requerido | Descripción |
| string | Sí | Ruta absoluta al PDF o imagen de la factura o recibo. |
| string | No* | Tu clave API de InvoiceParser. |
| string | No* | Prueba de pago x402 (hash de transacción Base USDC). |
Ejemplo de salida
{
"ok": true,
"currency": "USD",
"subtotal": 240.00,
"discount": 0.0,
"tax_amount": 19.20,
"tax_rate": 8.0,
"shipping": 0.0,
"tip": 0.0,
"total": 259.20,
"amount_due": 259.20,
"invoice_date": "2025-01-15",
"due_date": "2025-02-15"
}validate_invoice
Herramienta de validación matemática. Verifica que los totales de las partidas sean iguales a cantidad × precio_unitario, que el subtotal coincida con la suma de las partidas, que el cálculo de impuestos sea consistente y que el total final cuadre. Permite una tolerancia de redondeo de ±$0.02.
Parámetros
Parámetro | Tipo | Requerido | Descripción |
| string | Sí | Ruta absoluta al PDF o imagen de la factura. |
| string | No* | Tu clave API de InvoiceParser. |
| string | No* | Prueba de pago x402 (hash de transacción Base USDC). |
Ejemplo de salida — factura válida
{
"ok": true,
"valid": true,
"issues": [],
"summary": {
"line_items_checked": 3,
"subtotal": 450.00,
"tax": 36.00,
"total": 486.00,
"currency": "USD"
}
}Ejemplo de salida — factura no válida
{
"ok": true,
"valid": false,
"issues": [
{
"field": "line_item_2_total",
"expected": 120.00,
"found": 100.00,
"description": "quantity (10) × unit_price (12.00) = 120.00, but stated total is 100.00"
}
],
"summary": {
"line_items_checked": 3,
"subtotal": 340.00,
"tax": 27.20,
"total": 367.20,
"currency": "USD"
}
}export_to_csv
Analiza por lotes hasta 20 facturas o recibos y exporta un CSV resumen. Cada fila contiene: nombre de archivo, tipo de documento, proveedor/comerciante, fecha, número, subtotal, impuestos, total, moneda, fecha de vencimiento, método de pago.
Parámetros
Parámetro | Tipo | Requerido | Descripción |
| array de strings | Sí | Lista de rutas absolutas a los PDF o imágenes de facturas/recibos. Máximo 20. |
| string | Sí | Ruta absoluta donde se guardará el archivo CSV resultante. |
| string | No* | Tu clave API de InvoiceParser. |
| string | No* | Prueba de pago x402 (hash de transacción Base USDC). |
Ejemplo de entrada
{
"file_paths": [
"/Users/me/invoices/jan2025.pdf",
"/Users/me/invoices/feb2025.pdf",
"/Users/me/receipts/expense_march.jpg"
],
"output_path": "/Users/me/exports/q1_summary.csv",
"api_key": "ip_free_abc123"
}Ejemplo de salida (respuesta JSON)
{
"ok": true,
"output_path": "/Users/me/exports/q1_summary.csv",
"rows_written": 3,
"errors": []
}Columnas del CSV: filename, document_type, vendor_merchant, date, number, subtotal, tax, total, currency, due_date, payment_method
Formatos admitidos
PDF (facturas, documentos escaneados)
PNG, JPG, WEBP (fotos de recibos, capturas de pantalla)
Autenticación
Nivel gratuito: 20 análisis/mes con una clave API (consigue una en plenitudo.ai)
Pago por uso (x402): No se necesita cuenta. Envía USDC en Base a la dirección de la billetera, pasa el hash de la transacción como payment_proof.
{
"error": "Payment required",
"x402": {
"network": "base",
"token": "USDC",
"recipient": "0x9053FeDC90c1BCB4a8Cf708DdB426aB02430d6ad",
"amount_usdc": 0.05
}
}Uso (Claude Desktop / cliente MCP)
{
"mcpServers": {
"invoice-parser": {
"url": "https://invoice-parser.plenitudo.ai/mcp?ref=readme"
}
}
}Arquitectura
server.py — MCP server (6 tools: parse_invoice, parse_receipt,
extract_line_items, extract_totals, validate_invoice,
export_to_csv)
auth.py — API key validation + usage tracking (SQLite)
x402.py — x402 micropayment verification (USDC on Base)
config.py — Environment variable loading
worker.js — Cloudflare Worker (remote proxy for MCP traffic)
data/keys.db — API key store (created at runtime)
data/usage.db — Monthly usage counters (created at runtime)
logs/ — Structured log files
tests/ — Unit tests (mock Vision API, no real documents needed)Flujo de solicitud
AI agent (Claude Desktop, Cursor, etc.)
│
│ MCP tool call (JSON-RPC over HTTP)
▼
Cloudflare Worker (worker.js) ← optional remote proxy
│
│ Forwards to Railway deployment
▼
server.py (FastMCP, streamable HTTP)
│
├── auth.py validates API key / x402 proof
├── x402.py verifies USDC transaction on Base
└── Anthropic API Claude Vision reads the document
│
▼
structured JSON → returned to agentVariables de entorno
Variable | Requerido | Descripción |
| Sí | Clave API de Anthropic para Claude Vision. Configúrala como |
| No | Sobrescribe la URL base de Anthropic. Configúrala como |
| No | ID del modelo de Claude. Por defecto es |
| No | Directorio para bases de datos SQLite. Por defecto es |
| No | Puerto HTTP. Por defecto es |
Despliegue (Railway)
Haz un fork de este repositorio
Conecta a Railway → Nuevo proyecto → Desplegar desde GitHub
Añade variables de entorno:
ANTHROPIC_API_KEY— tu clave API de AnthropicINVOICEPARSER_DATA_DIR—/dataSTRIPE_WEBHOOK_SECRET— desde el panel de StripeSTRIPE_PRO_PRICE_ID— desde el panel de Stripe
Añade un volumen persistente en
/dataDespliega
Ejecución local (enrutamiento opcional con maxproxy)
Si ejecutas el servidor en la misma máquina que una instancia de maxproxy en el puerto 3456, puedes enrutar las llamadas de Claude Vision a través de él en lugar de acceder directamente a la API de Anthropic:
ANTHROPIC_API_KEY=maxproxy
ANTHROPIC_BASE_URL=http://localhost:3456Deja ANTHROPIC_BASE_URL sin configurar (o vacío) en cualquier despliegue en la nube/Railway; esos entornos no pueden acceder a un proxy local.
Contribución y seguridad
CONTRIBUTING.md — configuración de desarrollo y directrices de PR
SECURITY.md — política de divulgación responsable
CHANGELOG.md — historial de versiones
Licencia
MIT — Copyright © 2025 Kenneth Nygren / Plenitudo AI
This server cannot be installed
Maintenance
Latest Blog Posts
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/knportal/invoice-parser-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server
