Installa il server
Parti da Docker, npx o dal checkout locale in base al contesto operativo del client MCP.
Server MCP avanzato per interagire semanticamente con il catalogo dati di schema.gov.it. Abilita agenti AI a esplorare ontologie, analizzare copertura e qualità dei dati, navigare vocabolari controllati e interrogare endpoint SPARQL interni ed esterni.
Tre ingressi chiari per installare, configurare e provare il server MCP.
Parti da Docker, npx o dal checkout locale in base al contesto operativo del client MCP.
Usa le configurazioni pronte per Claude Code, VS Code e Cursor in modalità stdio o HTTP/SSE.
Apri gli esempi d'uso per vedere come comporre richieste su ontologie, dataset e endpoint SPARQL.
38 strumenti organizzati in 12 aree per esplorazione, analisi, interoperabilità e lavoro su ontologie locali
Query SPARQL libere, esplorazione del catalogo e delle classi con conteggi istanze.
query_sparqlexplore_catalogexplore_classesCopertura, qualità e sovrapposizioni: individua gap, label mancanti e duplicati.
check_coveragecheck_qualitycheck_overlapsAccedi al catalogo delle ontologie e alle classi e proprietà definite in ciascun modello.
list_ontologiesexplore_ontologyCerca, naviga e approfondisci ConceptScheme e termini controllati direttamente dalla chat.
list_vocabulariessearch_in_vocabularybrowse_vocabularyDataset DCAT-AP_IT: esplora metadati, distribuzioni e anteprime CSV/JSON dalla chat. Su schema.gov.it questi tool sono spesso secondari: conviene di norma partire da ontologie, vocabolari, classi, proprietà e query SPARQL.
list_datasetsexplore_datasetpreview_distributionRicerca fuzzy, deep dive su concetti, pathfinding tra entità e rilevamento anomalie ontologiche.
search_conceptsinspect_conceptfind_relationssuggest_improvementsdescribe_resourceAnalizza proprietà RDF, istanze di classi e suggerimenti sui vocabolari controllati da usare come range semantico.
list_propertiesget_property_detailslist_instances_of_classfind_recommended_scheme_for_propertyComuni, province, identificatori CLV e risoluzione di codici territoriali verso URI canonici del catalogo.
list_municipalitieslist_provinceslist_identifiersresolve_territorial_uriQuery verso endpoint SPARQL pubblici, discovery di servizi collegati e retry automatico da POST a GET in caso di 403.
list_linked_endpointsquery_external_endpointfind_external_alignmentsexplore_external_endpointrecommend_external_endpointsCarica, interroga e confronta file RDF o OWL locali senza pubblicarli nel catalogo remoto.
inspect_local_ontologyquery_local_ontologycompare_local_with_remoteIn modalità HTTP puoi caricare un file RDF, ottenere un identificativo temporaneo e interrogarlo via SPARQL.
query_uploaded_storeAnalisi dei log di utilizzo per identificare pattern d'uso e suggerire nuovi strumenti specializzati.
suggest_new_toolsanalyze_usageModalità allineate al README per uso locale, remoto o sviluppo
Consigliato per uso remoto o condiviso. Supporta trasporto HTTP/SSE.
Avvio rapido con Docker Compose (immagine da GHCR):
docker compose up -d mcp
Per buildare dal checkout locale invece dell'immagine remota:
docker compose -f docker-compose.build.yaml up -d mcp
Oppure con Docker direttamente:
docker run -d \ --name schema-gov-it-mcp \ -p 3000:3000 \ -e MCP_TRANSPORT=sse \ -v ./logs:/app/logs \ ghcr.io/italia/dati-semantic-mcp:latest
Verifica che il server sia attivo:
curl http://localhost:3000/health
# {"status":"ok","service":"schema-gov-it-mcp","sessions":0}
L'immagine ghcr.io/italia/dati-semantic-mcp:latest viene aggiornata
automaticamente via GitHub Actions ad ogni push su main.
Avvio istantaneo via stdio senza installazione permanente.
npx schema-gov-it-mcp
Installazione globale da GitHub, senza passare dal registry npm:
npm install -g git+https://github.com/italia/dati-semantic-mcp.git schema-gov-it-mcp
Aggiungi il server a Claude Code con un singolo comando:
claude mcp add schema-gov-it -- npx -y github:italia/dati-semantic-mcp
Configurazione manuale in ~/.claude.json:
{
"mcpServers": {
"schema-gov-it": {
"command": "npx",
"args": ["-y", "github:italia/dati-semantic-mcp"]
}
}
}
Installazione locale per sviluppo e personalizzazione del codice sorgente.
git clone https://github.com/italia/dati-semantic-mcp.git cd dati-semantic-mcp npm install npm run build node dist/index.js
Il build è già agganciato anche allo script prepare, ma nel README viene mantenuto esplicito per chiarezza.
Configurazioni pronte per Claude Code, VS Code e Cursor in modalità stdio e HTTP
claude mcp add schema-gov-it \ -- npx -y github:italia/dati-semantic-mcp
Configurazione manuale equivalente in ~/.claude.json:
{
"mcpServers": {
"schema-gov-it": {
"command": "npx",
"args": ["-y", "github:italia/dati-semantic-mcp"]
}
}
}
claude mcp add --transport http \ schema-gov-it http://localhost:3000/mcp
Configurazione manuale equivalente in ~/.claude.json:
{
"mcpServers": {
"schema-gov-it": {
"type": "http",
"url": "http://localhost:3000/mcp"
}
}
}
In .vscode/mcp.json:
{
"servers": {
"schema-gov-it": {
"command": "npx",
"args": ["-y", "github:italia/dati-semantic-mcp"]
}
}
}
Quando il server gira già via Docker o deployment remoto:
{
"servers": {
"schema-gov-it": {
"type": "http",
"url": "http://localhost:3000/mcp"
}
}
}
Prompt coerenti con gli esempi del README corrente
"Cerca concetti relativi alla 'Sanità' e dimmi quali sono le classi principali."
→ usa search_concepts + inspect_concept
"Analizza la classe Persona e dimmi con chi è collegata."
→ usa inspect_concept
"Trova i comuni della Lombardia e il loro codice Belfiore."
→ usa list_municipalities
"Esegui una query SPARQL su DBpedia per trovare le città italiane e collegale con quelle di schema.gov.it."
→ usa query_external_endpoint + find_external_alignments
"Controlla se ci sono sovrapposizioni tra i concetti di Luogo e individua label mancanti."
→ usa check_overlaps + check_quality
"Elenca le ontologie disponibili e mostrami le classi di quella sui Servizi Pubblici."
→ usa list_ontologies + explore_ontology
"Consigliami alcuni endpoint SPARQL pubblici da interrogare insieme a schema.gov.it."
→ usa recommend_external_endpoints
"Dammi una panoramica dell'ontologia in /home/user/mia-ontologia.ttl e dimmi quali classi posso riusare da schema.gov.it."
→ usa inspect_local_ontology + compare_local_with_remote
"Come posso ottimizzare le mie query?"
→ usa analyze_usage
Comportamenti operativi e accorgimenti riportati nel README
Usa recommend_external_endpoints per una short list curata e list_linked_endpoints per scoprire i servizi pubblicati nel catalogo via metadata DCAT.
query_external_endpoint comprime i risultati e tronca le risposte troppo estese. Per query esterne conviene indicare sempre un LIMIT esplicito.
Le query verso endpoint esterni usano header più simili a un browser; se il POST fallisce con 403, il server riprova automaticamente in GET.
Nelle query interne non serve dichiarare rdf:, owl: o skos:. I prefissi vengono aggiunti dal server; sugli endpoint esterni no.
I parametri utente vengono sanitizzati per ridurre il rischio di SPARQL injection e mantenere il comportamento degli strumenti prevedibile.
I tool locali usano Oxigraph per caricare file RDF/OWL in memoria con cache dopo il primo caricamento. In modalità HTTP puoi anche creare uno store temporaneo via POST /upload e interrogarlo con query_uploaded_store; la scadenza è automatica dopo un'ora.
Le chiamate finiscono in logs/usage_log.jsonl con argomenti, riepilogo, source_data_metrics e ai_data_metrics: metriche quantitative dei dati ricevuti e del payload passato al modello. Il server supporta stdio per uso locale e HTTP/SSE con MCP_TRANSPORT=sse per ambienti remoti o Docker.