Pacioli
# Pacioli
> En honor a **Luca Pacioli** (1447–1517), fraile franciscano y matemático italiano, considerado el padre de la contabilidad moderna. En 1494 publicó *Summa de arithmetica, geometria, proportioni et proportionalita*, donde describió por primera vez de forma sistemática la partida doble — el sistema que sigue siendo la base de toda la contabilidad mundial cinco siglos después.
MCP Server para Holded + Skill PGC Español
## Descripción
Servidor MCP read-only (stdio) que conecta Claude Code con la API de Holded. Permite realizar consultas financieras, contables y de facturación en lenguaje natural sobre los datos de tu cuenta de Holded. Incluye una skill del Plan General Contable español (PGC 2007) para contexto contable.
## Requisitos previos
- Node.js 18+
- API key de Holded (Settings > Developers > New API Key)
- Claude Code
## Instalación
```bash
git clone <repo>
cd pacioli
npm install
npm run build
```
## Configuración
### 1. Variables de entorno
Crea un fichero `.env` en la raíz del proyecto:
```
HOLDED_API_KEY=tu_key
```
> **Nota**: El servidor lee la API key de la variable de entorno `HOLDED_API_KEY`. Si usas `mcp.json` para configurar Claude Code, la key se pasa directamente via `env`. El fichero `.env` es útil para desarrollo y pruebas manuales (`node --env-file=.env dist/index.js`).
### 2. Registrar el servidor en Claude Code
Añade la siguiente entrada a `~/.claude/mcp.json`:
```json
{
"mcpServers": {
"holded": {
"command": "node",
"args": ["/ruta/absoluta/a/pacioli/dist/index.js"],
"env": {
"HOLDED_API_KEY": "tu_api_key"
}
}
}
}
```
### 3. Instalar la Skill PGC
Copia el directorio de la skill al directorio de skills de Claude Code:
```bash
cp -r skills/pgc-espanol/ ~/.claude/skills/pgc-espanol/
```
## Tools disponibles
| Tool | Descripción | Parámetros |
|------|-------------|------------|
| `holded_list_accounts` | Lista las cuentas del Plan General Contable configuradas en Holded | `group?` (string): Grupo PGC (1-9) para filtrar por primer dígito |
| `holded_list_daily_ledger` | Obtiene los asientos del libro diario | `startDate?` (string): YYYY-MM-DD, `endDate?` (string): YYYY-MM-DD, `accountNumber?` (string) |
| `holded_list_documents` | Lista documentos de facturación por tipo | `docType` (enum): invoice, salesreceipt, creditnote, salesorder, proform, waybill, estimate, purchase, purchaseorder, purchaserefund; `startDate?`, `endDate?`, `contactId?`, `paid?` (enum 0/1/2), `sort?` (enum created-asc/created-desc) |
| `holded_get_document` | Obtiene el detalle de un documento por tipo e ID | `docType` (enum), `documentId` (string) |
| `holded_list_contacts` | Lista todos los contactos (clientes y proveedores) | `type?` (enum client/supplier/debtor/creditor) |
| `holded_get_contact` | Obtiene el detalle de un contacto por su ID | `contactId` (string) |
| `holded_list_treasuries` | Lista las cuentas de tesorería (bancos, cajas, etc.) | ninguno |
| `holded_list_payments` | Lista los pagos registrados | `startDate?` (string): YYYY-MM-DD, `endDate?` (string): YYYY-MM-DD |
| `holded_get_taxes` | Obtiene la lista de impuestos configurados | ninguno |
| `holded_get_balance_sheet` | Balance de situación calculado desde cuentas PGC | ninguno |
| `holded_get_profit_loss` | Cuenta de pérdidas y ganancias | `startDate?`, `endDate?` |
| `holded_get_vat_summary` | Resumen de IVA soportado/repercutido | `startDate?`, `endDate?` |
## Ejemplos de uso
Consultas en lenguaje natural que Claude Code puede resolver con este servidor:
- "¿Cuánto hemos facturado este trimestre?"
- "¿Cuál es el saldo de la cuenta 430?"
- "¿Cuánto tenemos en banco?"
- "¿Qué facturas tenemos pendientes de cobro?"
## Licencia
Apache 2.0 -- ver [LICENSE](./LICENSE).
TDQS
Scored across 13 tools
Each tool targets a distinct resource or report: accounts, ledger, documents, contacts, taxes, treasuries, payments, and three financial statements. List/get pairs are clearly separated by purpose, and the descriptions clarify potentially adjacent concepts such as daily ledger entries versus payments.
The 12 domain tools follow a consistent holded_<verb>_<noun> pattern, making the set easy to scan. The only deviation is holded_health_check, which is not verb-first, but it is an operational exception rather than a domain naming problem.
Thirteen tools is well within the ideal range for a read-only accounting integration. Each tool maps to a meaningful Holded resource or standard report, and none feel redundant or like padding.
The surface covers core accounting data and reports: chart of accounts, ledger, documents, contacts, taxes, treasury, payments, balance sheet, P&L, and VAT. It lacks write operations and some advanced reports like trial balance or cash flow, but these are reasonable gaps for a read-only reporting server.