Skip to content

Releases: avvocati-e-mac/normattiva-mcp

v0.2.0

Choose a tag to compare

@avvocati-e-mac avvocati-e-mac released this 04 Sep 16:51

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 stato e tool MCP normattiva_stato_rete.
  • Campo protezione_rete e avvisi leggibili nelle risposte MCP capaci di rete.
  • Skill portabile Agent Skills per Claude, Codex, OpenCode e Pi.
  • Gestore CLI norm skill con 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.whl
  • normattiva_mcp-0.2.0.tar.gz

SHA-256 wheel: 9fd2dcc0829e592594ca6ff915e1945fdadb14b619c23235c8063fe470f78463

SHA-256 sdist: e23c8b60e932037803551cdb936728935f6cfd9e04001a46db459a12285598c1

v0.1.1

Choose a tag to compare

@avvocati-e-mac avvocati-e-mac released this 29 Aug 12:23

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.whl

installa 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

Choose a tag to compare

@avvocati-e-mac avvocati-e-mac released this 29 Aug 11:55

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 articolo
  • norm link <fonte> <articolo> — citazione Markdown, verificata per difetto
  • norm urn <urn> — legge un URN già in mano
  • norm fonti [testo] — elenca o cerca nella tabella delle fonti verificate
  • norm doctor — controlla se l'endpoint del testo risponde
  • norm verifica --tutte — verifica l'intera tabella contro l'API

Strumenti MCP

  • normattiva_leggi_articolo
  • normattiva_link
  • normattiva_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.