MCP bridge for querying Italian legacy databases (AS/400, SQL Server) with semantic mapping and PII masking
Two tools with basic schemas and descriptions, but significant gaps in parameter documentation and error handling. query_legacy_db has a complete input schema with types and descriptions (good), but privacy_cleanup lacks any input documentation. Both tools lack output schema documentation, error recovery guidance, and actionable error messages. Naming is clear (verb_noun pattern), but descriptions could be more concise and LLM-optimized. No tool annotations (readOnlyHint/destructiveHint) despite clear risk profiles. Missing parameter constraints (e.g., limit bounds, filter validation rules) in descriptions.
Esegue la pulizia per la privacy: chiude tutte le connessioni al DB e azzera lo stato interno del server. Nessun dato sensibile resta in memoria. Restituisce un report di audit (timestamp, connessioni chiuse, stato azzerato). Utile per conformità GDPR e per dare garanzie alle aziende sulla retention dei dati.
Query a legacy database table by logical name. Use the logical table name (e.g. Anagrafica_Clienti); it is translated to the physical table (e.g. ANAG00F). Optional filters: dict of column name to value for equality. limit caps the number of rows (default 100, max 1000). Results are read-only and Codice Fiscale / IBAN are masked.
privacy_cleanup has empty input schema ({}) with no parameter documentation. Tool description is in Italian and lacks English clarity on what the tool does, when to call it, and what it returns.
No output schemas documented for either tool. LLMs cannot plan downstream calls or extract required fields. query_legacy_db returns list[dict] but structure is undocumented; privacy_cleanup returns dict but fields are not specified.
No error handling guidance. Tools lack recovery hints (e.g., 'If table not found, call list_tables()' or 'If privacy cleanup fails, check database connectivity'). No categorization of errors as retryable vs fatal.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 61 | 2026-07-28+ | v2 |
Missing tool annotations. query_legacy_db is marked READ_ONLY and privacy_cleanup is REVERSIBLE in metadata, but no readOnlyHint or destructiveHint annotations in the MCP tool definition itself. Agents cannot infer safety properties from the schema.
Parameter 'limit' in query_legacy_db lacks explicit min/max constraints in description. Code enforces max 1000, but description only states 'default 100, max 1000', no mention of minimum or that 0 is valid. Ambiguous for LLM.