Releases: fedec65/BetterCallClaudeMCP_Italy
Releases · fedec65/BetterCallClaudeMCP_Italy
Release list
BetterCallClaude Italia MCP v1.1.2
Corretto
- Throttle vault solo sulle miss — Il controllo anti brute-force ora scatta solo quando la
session_keynon esiste: chi possiede una chiave valida non viene più bloccato quando il limite (20 miss/min) è raggiunto, eliminando il vettore di DoS verso gli altri utenti segnalato in review.
BetterCallClaude Italia MCP v1.1.1
Patch di sicurezza e robustezza a seguito della review automatizzata della 1.1.0.
Corretto
- Keep-alive conforme alla regola 8 — La query Solr del keep-alive ora passa da
fetchWithRetry(rate limiter condiviso) conretries: 1: i 4xx non vengono ritentati e il rilevamento 401/403 resta invariato. - Versione endpoint
/— Non più hardcoded: letta dalpackage.jsondel packagemcp-servers-http.
Sicurezza
- Salt scrypt per-entry — La chiave AES-256-GCM è ora derivata da
SESSION_STORE_SECRET+ salt casuale per entry (le entry legacy senza salt restano leggibili via fallback al salt storico). - Passphrase min 16 caratteri —
session_keyminima portata da 8 a 16 caratteri negli schemi dei toolsession_*. - Throttle anti brute-force — Le miss del vault (session_key inesistenti) sono limitate a 20/min process-wide con errore esplicito.
BetterCallClaude Italia MCP v1.1.0
Aggiunto
- Session vault ItalGiure (server
cassazione) — Nuovi toolcassazione_session_set/cassazione_session_status/cassazione_session_delete: ogni utente registra il proprio cookie una volta sola associandolo a unasession_key(passphrase). Cookie cifrato AES-256-GCM a riposo, passphrase salvata solo come hash SHA-256. I toolcassazione_search_massimeecassazione_get_sentenzaaccettano il nuovo parametro opzionalesession_key(priorità:cookie>session_key>ITALGIURE_COOKIE> file). - Keep-alive sessioni — Ogni 6 ore una query Solr leggera per ciascun cookie registrato: mantiene vive le sessioni (sliding expiration) e marca
scadutasu 401/403. RichiedeSESSION_STORE_SECRET(e consigliatoSESSION_STORE_PATHsu volume Railway).
Corretto
- Rate limiter condiviso tra tutti gli utenti (
mcp-servers-http) — Mancavaapp.set('trust proxy', 1): dietro il proxy Railwayreq.ipera sempre l'IP dell'edge e il bucket 30 req/15min era globale, causando 429 sistematici e il fallimento dell'handshake dei connettori Claude.ai (erroreofid_...). Ora il limite MCP è 300 req/15min per IP utente, i metodi di handshake/discovery (initialize,tools/list,ping,notifications/*) non consumano quota, e la rotta MCP è esclusa dal limiter generale. Limiti configurabili viaGENERAL_RATE_LIMIT_MAX/MCP_RATE_LIMIT_MAX. - CORS — Aggiunta
https://claude.aialla whitelist delle origini.
Migliorato
- Fallback scraper robusti per i 3 server con accesso limitato:
corte-costituzionale— descrizione tool aggiornata con avviso anti-bot; fallback a URL diretti ECLIgiustizia-amministrativa— timeout fetch aumentato a 25s; fallback a URL DeJure open-accesscassazione— rilevamento rapido HTTP 403; fallback a ItalGiure + DeJure con URL completi nella risposta
- Documentazione —
AGENTS.mdaggiornato con tabella affidabilità fonti e strategia fallback
BetterCallClaude Italia v1.0.0
🚀 BetterCallClaude Italia — MCP Servers for Italian Legal Research
Release Date: 2026-05-19
What is this?
A suite of 7 Model Context Protocol (MCP) servers that let AI assistants (Claude, Cursor, etc.) search and interact with Italian legal databases directly.
📦 Included Servers
| Server | Source | Capabilities |
|---|---|---|
| normattiva | api.normattiva.it Open Data | Search legislation, get act details, list typologies |
| eur-lex-ita | EUR-Lex CELLAR SPARQL | Search EU acts in Italian by CELEX, type, date range, EuroVoc |
| corte-costituzionale | cortecostituzionale.it | Search Constitutional Court decisions (with URL fallback for anti-bot protection) |
| giustizia-amministrativa | giustizia-amministrativa.it | Search administrative justice decisions |
| cassazione | cortedicassazione.it | Search Court of Cassation decisions (public portion + ItalGiure fallback) |
| legal-citations-ita | Local logic | Validate, parse, and format Italian legal citations |
| legal-persona-ita | Templates | Draft legal documents with structured templates |
🏗️ Architecture
- HTTP Aggregator: Single Express app mounts all 7 servers via StreamableHTTPServerTransport (MCP protocol 2025-06-18)
- Shared utilities: LRU cache, rate limiting, HTTP retry client
- Health endpoint: GET /health returns all registered servers
- Docker: Multi-stage build on node:20-alpine
- Deployment: Ready for Railway via railway.toml
🧪 Quality
- 29 tests passing across 11 test files (Vitest 4.1.6)
- TypeScript 5.5+ strict mode
- CI/CD with GitHub Actions (Node 20.x + 22.x, lint, Docker build + healthcheck)
📚 Documentation
🐳 Quick Start
Clone, install, test, build, run:
git clone https://github.com/fedec65/BetterCallClaudeMCP_Italy.git
cd BetterCallClaudeMCP_Italy
npm ci
npm run test:run
npm run build --workspaces
docker build -f mcp-servers-http/Dockerfile -t bettercallclaude-italy .
docker run -p 8080:8080 bettercallclaude-italy⚖️ License
AGPL-3.0-or-later
🔗 Links
- Live endpoint: https://mcp-italia.bettercallclaude.ch
- Issues & PRs welcome!