Releases: avvocati-e-mac/normattiva-mcp
Release list
v0.2.0
Novità
- Protezione del traffico condivisa in SQLite fra CLI, MCP e processi concorrenti.
- Cache, quote mobili, cooldown, modalità offline e comportamento fail-closed.
- Nessun retry automatico; tutti i tentativi HTTP reali consumano quota.
- Nuovi comandi
norm statoe tool MCPnormattiva_stato_rete. - Campo
protezione_retee avvisi leggibili nelle risposte MCP capaci di rete. - Skill portabile Agent Skills per Claude, Codex, OpenCode e Pi.
- Gestore CLI
norm skillcon installazione, aggiornamento e rimozione atomici. - Documentazione aggiornata sull'uso esclusivo delle API Open Data e sull'attribuzione CC BY 4.0.
Installazione di CLI e server MCP
uv tool install "https://github.com/avvocati-e-mac/normattiva-mcp/releases/download/v0.2.0/normattiva_mcp-0.2.0-py3-none-any.whl"Il comando installa entrambi gli eseguibili: norm (CLI) e norm-mcp (server MCP).
Verifica
- 163 test offline superati.
- Ruff lint e format superati.
- Wheel e sdist verificati; le copie pubblica e packaged della skill sono identiche.
- Nessun test live in CI e nessuna procedura progettata per provocare limitazioni del servizio.
Artefatti
normattiva_mcp-0.2.0-py3-none-any.whlnormattiva_mcp-0.2.0.tar.gz
SHA-256 wheel: 9fd2dcc0829e592594ca6ff915e1945fdadb14b619c23235c8063fe470f78463
SHA-256 sdist: e23c8b60e932037803551cdb936728935f6cfd9e04001a46db459a12285598c1
v0.1.1
Correzione: i messaggi d'errore non arrivavano più muti al modello
Un bug reale, trovato provando il server a mano da Claude Desktop durante
un'avaria vera di Normattiva: l'SDK MCP trattava come crash silenzioso
qualunque errore che non fosse una sua ToolError, quindi il modello
vedeva solo "Error executing tool <nome>" invece del messaggio scritto
apposta (es. "Normattiva è stata sospesa dopo guasti ripetuti"). Nella
prova reale questo ha portato il modello a offrire il testo di un
articolo a memoria, come ripiego — proprio il rischio che il progetto
esiste per evitare.
Ogni strumento MCP converte ora ogni eccezione in ToolError prima che
esca dal server, così il messaggio arriva sempre leggibile. Verificato
di nuovo con Claude Desktop e con opencode/DeepSeek v4 flash: l'errore
arriva col testo vero, nessuna ricostruzione a memoria.
Aggiunge anche: le istruzioni consegnate al modello ora spiegano come
distinguere un'avaria vera da un problema di rete locale (norm doctor,
provare da un'altra rete), e il README è completo (installazione, uso,
collegamento a un assistente MCP, cosa aspettarsi da un'avaria).
Installazione con uv
Da questo pacchetto (i due file allegati a questa release):
uv tool install normattiva_mcp-0.1.1-py3-none-any.whlinstalla i comandi norm e norm-mcp in ~/.local/bin. Per restare
sincronizzati col sorgente durante lo sviluppo, clonare il repository e
usare invece:
uv tool install --editable .Verifica dopo l'installazione:
norm --version # deve stampare 0.1.1
norm fonti "codice civile"v0.1.0
Prima release: CLI e server MCP funzionanti
CLI (norm) e server MCP (norm-mcp) per leggere, verificare e citare
norme italiane da Normattiva.it, pensati per essere usati anche da modelli
LLM economici (es. DeepSeek 4 flash). Testato end-to-end, sia da terminale
sia collegato a Claude Desktop.
Comandi da terminale
norm leggi <fonte> <articolo>— testo verificato di un articolonorm link <fonte> <articolo>— citazione Markdown, verificata per difettonorm urn <urn>— legge un URN già in manonorm fonti [testo]— elenca o cerca nella tabella delle fonti verificatenorm doctor— controlla se l'endpoint del testo rispondenorm verifica --tutte— verifica l'intera tabella contro l'API
Strumenti MCP
normattiva_leggi_articolonormattiva_linknormattiva_trova_fonte(l'unico locale, nessuna rete)normattiva_leggi_urn
Un quinto strumento (normattiva_cerca, ricerca full-text) è previsto per
un prossimo rilascio.
Cosa c'è sotto
- Grammatica URN-NIR misurata contro l'API reale, con rifiuti tipizzati per
ogni forma che l'API rifiuterebbe (comma, lettera, estensione con
trattino,!vig=vuoto). - Tabella di 47 fonti verificate (i codici storici, dove il numero di
allegato non è raggiungibile dalla ricerca full-text), ognuna con
provenienza dichiarata e un articolo di controllo. - Parser HTML con tre guardiani contro altrettante trappole misurate:
l'heading discordante, il preambolo di promulgazione al posto
dell'articolo, l'HTML vuoto. - Client HTTP con i tre 404 distinti (atto inesistente, coordinate
sbagliate, endpoint del gateway), un circuit breaker, e la ricaduta
automatica su vigenza storica quando un articolo risulta abrogato — mai
silenziosa, sempre dichiarata nel testo restituito. - Le descrizioni degli strumenti MCP sotto un tetto di caratteri misurato
(4.124/5.500), per non sovraccaricare un modello debole di prosa che non
cambia nessuna sua decisione.
Un'avaria vera, documentata mentre succedeva
Il 29 agosto 2026, durante lo sviluppo di questa release, normattiva.it ha
avuto un'avaria reale e prolungata (prima solo l'endpoint del testo, poi
l'intero dominio, portale incluso, irraggiungibile a livello TCP da due
reti diverse). Il client si è comportato come progettato — nessun
tentativo infinito, messaggio chiaro — e le istruzioni consegnate al
modello dicono ora esplicitamente come distinguere un'avaria vera da un
problema di rete locale (norm doctor, un'altra rete). Dettagli in
docs/MISURE.md §7.
Licenza
Codice sotto licenza MIT. I dati restituiti dagli strumenti provengono da
Normattiva.it (Istituto Poligrafico e Zecca dello Stato) sotto licenza
CC BY 4.0 — le due licenze sono distinte e dichiarate entrambe nel README.