Server MCP per interrogare export Inaz (cedolini PDF, presenze/timbrature CSV)
Server has 10 tools with complete schemas and descriptions in Italian. Naming follows verb_noun pattern (lista_, leggi_, cerca_, esegui_, salva_). Descriptions are present (avg ~100 chars) but lack LLM-optimized guidance on WHEN to use each tool vs alternatives. Parameters are typed and described. Critical gap: no error handling guidance (e.g., what to do if PDF is corrupted, preset not found). Batch/composition tools (esegui_comandi, esegui_preset) are well-designed but lack idempotency documentation. Output schemas are implicit in code, not formally documented. Security: tools accept file paths (nome_file), path traversal mitigated by store.percorso_sicuro() but not documented in tool descriptions.
Cerca una stringa (case-insensitive) in tutti i cedolini; righe che matchano.
Elenca i preset salvati (combinazioni di comandi) con i loro comandi.
Esegue più tool in sequenza in una sola chiamata (fa risparmiare round-trip). Ogni comando: {"tool": nome, "argomenti": {...}}. Un errore in un comando non blocca gli altri: viene riportato come {"tool": nome, "errore": ...}.
Esegue i comandi di un preset salvato per nome.
Mostra la cartella dati Inaz configurata e quanti file contiene.
Legge un cedolino per nome file: campi estratti + testo completo.
No error recovery guidance in tool descriptions. When leggi_cedolino fails (corrupted PDF), description does not tell LLM what to do next (e.g., 'Try lista_cedolini to verify file exists'). Code catches exceptions but does not surface actionable recovery paths.
Output schemas are implicit in code (dict[str, Any], list[dict[str, Any]]). LLMs cannot see what fields to expect without reading implementation. Formal schema documentation missing from tool definitions.
Path traversal risk in leggi_cedolino(nome_file). Tool accepts user-supplied file paths. While store.percorso_sicuro() mitigates this, the security check is not documented in the tool description, and LLMs cannot verify the safety guarantee.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 61 | 2026-07-28+ | v2 |
Elenca i cedolini PDF nella cartella dati con i campi paga principali.
Righe presenze da tutti i CSV, opzionalmente filtrate per mese "AAAA-MM".
Totale ore, giorni e ore per causale, opzionalmente per mese "AAAA-MM".
Salva (o sovrascrive) un preset: una combinazione di comandi richiamabile per nome.
Batch tool esegui_comandi lacks idempotency documentation. If a command fails mid-batch, partial state is left. No guidance on whether retrying the batch is safe or if compensation is needed.
Descriptions are in Italian; LLM context is likely English. Language mismatch may reduce tool discoverability and cause LLMs to misinterpret intent. No English fallback provided.