Skip to main content
Glama
rubenzarroca

Pacioli

by rubenzarroca
README.md
# 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

A3.8/5.0

Scored across 13 tools

Disambiguation5/5

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.

Naming Consistency4/5

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.

Tool Count5/5

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.

Completeness4/5

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.

Maintenance

ActivityInactive
ResponsivenessNo issues