MCP server para VeriFactu (AEAT). Facturación electrónica española desde Claude Code.
Servidor MCP para integrar VeriFactu (AEAT) con Claude Code y Cursor.
Permite generar, encadenar y enviar registros de facturación electrónica desde lenguaje natural, sin necesidad de leer la documentación técnica de la AEAT.
| Herramienta | Descripción |
|---|---|
generate_invoice_xml | Genera XML válido con hash SHA-256 encadenado (sin enviar) |
send_invoice | Envía registro de alta a la AEAT via API y persiste la huella |
cancel_invoice | Envía registro de anulación |
check_invoice_status | Consulta el estado de un registro |
list_invoices | Lista los registros enviados (filtros opcionales por emisor y paginación) |
get_last_hash | Devuelve la última huella registrada localmente para un emisor |
calculate_hash | Calcula el hash SHA-256 de cualquier registro |
El encadenamiento real lo gestiona la API verifactuapi.es internamente (vía
previous_id). El servidor MCP persiste la huella canónica que devuelve la
API en SQLite local (~/.verifactu-mcp/state.db) como audit log, no como
mecanismo de encadenamiento operativo. La herramienta get_last_hash consulta
ese log.
calculate_hash y la huella huella_local_estimada de send_invoice son
estimaciones heurísticas para inspección — la huella canónica AEAT incluye
el timestamp server-side y solo el servidor puede generarla.
$env:VERIFACTU_API_TOKEN = "<tu_token_sandbox>"
python smoke_test.py <id_emisor> [nif_receptor]
Ejecuta list_invoices + send_invoice (¡emite registro real en sandbox!) +
check_invoice_status + get_last_hash. NO ejecutar contra producción.
# 1. Clona el repositorio
git clone https://github.com/tuusuario/verifactu-mcp
cd verifactu-mcp
# 2. Instala las dependencias
pip install -e .
Tras pip install -e ., el script verifactu-mcp queda disponible globalmente.
Añade esto a tu ~/.claude.json (o claude_desktop_config.json):
{
"mcpServers": {
"verifactu": {
"command": "verifactu-mcp",
"env": {
"VERIFACTU_API_TOKEN": "tu_token_aqui"
}
}
}
}
Alternativa sin script instalado (vía python -m):
{
"mcpServers": {
"verifactu": {
"command": "python",
"args": ["-m", "verifactu_mcp.server"],
"cwd": "/ruta/a/verifactu-mcp",
"env": {
"VERIFACTU_API_TOKEN": "tu_token_aqui"
}
}
}
}
# Generar un XML sin enviar (ideal para pruebas)
"Genera un registro VeriFactu para una factura de 100€ + 21% IVA,
emisor B12345678, serie 2025/001, fecha 15-05-2025,
descripción: Servicios de desarrollo web"
# Enviar a la AEAT — la huella anterior se resuelve automáticamente
"Envía a la AEAT la factura 2025/001 del emisor B12345678,
base 100€, IVA 21%, fecha hoy"
# Consultar estado
"¿Cuál es el estado del registro con ID 42?"
# Anular una factura
"Anula la factura 2025/001 del emisor B12345678"
# Listar las facturas enviadas
"Lista las últimas 50 facturas enviadas para el emisor B12345678"
# Inspeccionar el último hash del emisor
"¿Cuál es la última huella encadenada para B12345678?"
| Variable | Descripción | Requerida |
|---|---|---|
VERIFACTU_API_TOKEN | Token de acceso a verifactuapi.es | Sí (para enviar) |
VERIFACTU_API_BASE | URL base de la API (por defecto producción) | No |
VERIFACTU_STATE_DB | Ruta a la DB SQLite de estado (por defecto ~/.verifactu-mcp/state.db) | No |
| Entorno | URL |
|---|---|
| Sandbox | https://prewww1.aeat.es/wlpl/TIKE-CONT/ws/SistemaFacturacion/VerifactuSOAP |
| Producción | https://www1.aeat.es/wlpl/TIKE-CONT/ws/SistemaFacturacion/VerifactuSOAP |
Para certificados de prueba (sandbox): catentidades@correo.aeat.es
MIT
Source-derived launch command. Check the maintainer’s required arguments and credentials before running:
uvx verifactu-mcpMerge this template into ~/Library/Application Support/Claude/claude_desktop_config.json. Keep existing servers. Add any arguments, credentials, and permissions required by the maintainer; this template has not been install-tested.
{
"mcpServers": {
"io-github-kmonbeibi31-verifactu-mcp": {
"command": "uvx",
"args": [
"verifactu-mcp"
]
}
}
}Restart Claude Desktop completely for changes to take effect. Confirm the server appears connected in the client’s tool list, then try a read-only example from its documentation.
Claude Desktop setup referenceverifactu-mcppypiio.github.KmOnBeIbI31/verifactu-mcp works with any MCP-compatible client. Copy the config snippet from the Configuration section above and add it to the file shown for your client, then restart the application.
~/Library/Application Support/Claude/claude_desktop_config.jsonRestart Claude Desktop completely for changes to take effect.~/.cursor/mcp.jsonRestart Cursor for changes to take effect..vscode/mcp.jsonReload VS Code window for changes to take effect.~/.codeium/windsurf/mcp_config.jsonRestart Windsurf for changes to take effect..mcp.jsonSave at the project root, then start Claude Code in that project and review the MCP server approval prompt. Keep real credentials out of shared files.