Model Context Protocol (MCP): potenzialitร , rischi e uso responsabile

Un paio di giorni di fa ho scritto un post riguardo la mia visione del Model Context Protocol (MCP), il nuovo standard aperto per integrare modelli linguistici (LLM) con tool e sorgenti dati esterne. In un paio di giorni, forse colpa anche dell’algoritmo di Linkedin, MCP รจ rapidamente diventato il tema de facto del mio stream in modo permanente. Da articoli per collegare chatbot e agenti AI con servizi di terze parti fino ad articoli con visioni piรน estreme della mia, soprattutto in temi di sicurezza ed opportunitร  come il bel post di approfondimento dal titolo Everything Wrong with MCP di Shrivu Shankar che ho intercettato grazie ad una interazione di Paola Bonomo.

Insieme allโ€™entusiasmo – ovvio – per il tema รจ evidente che, come per tutto, stanno emergendo ora analisi che evidenziano vulnerabilitร , limiti strutturali e problemi di user experience, che in parte avevo citato anche nel mio primo post di approfondimento.

In questo post , viste le discussioni che ho letto e sulle quali mi sto confrontando in diversi ambiti, provo ad andare un po’ oltre precedente: andrรฒ piรน a fondo sulle potenzialitร  di MCP in termini di standardizzazione e interoperabilitร , ma anche le criticitร  legate a sicurezza, prompt injection, esperienza utente e i limiti nellโ€™uso di LLM con molti strumenti attivi. Ho aggiunto alla fine uno spunto sul trade-off tra facilitร  dโ€™uso e controllo, proponendo principi per un uso piรน sicuro e responsabile di MCP sia per sviluppatori che per utenti finali.

MCP come standard di integrazione

Il Model Context Protocol nasce come ho giร  scritto con lโ€™obiettivo di standardizzare il modo in cui le applicazioni forniscono contesto e funzionalitร  ai modelli AI. La documentazione ufficiale lo paragona a una porta USB-C per le applicazioni AI: cosรฌ come USB-C offre un modo unificato per collegare dispositivi diversi, MCP definisce un modo uniforme per connettere agenti AI a servizi e strumenti eterogenei. In pratica, MCP permette a sviluppatori terzi di creare โ€œpluginโ€ o MCP server contenenti strumenti (funzioni) e risorse che un assistente AI puรฒ invocare in chat.

Questa standardizzazione comporta enormi vantaggi di interoperabilitร . I fornitori di assistenti (es. piattaforme come Claude, ChatGPT, Cursor, ecc.) possono concentrarsi sul migliorare lโ€™interfaccia utente e le capacitร  conversazionali, sapendo che esiste un linguaggio comune per estendere le funzionalitร . Dallโ€™altro lato, gli sviluppatori di terze parti possono costruire servizi integrativi in modo assistant-agnostic, plug-and-play su qualsiasi piattaforma compatibile con MCP.

Esempio: immaginiamo di poter dire al nostro assistente AI: โ€œTrova il mio paper di ricerca su Google Drive, controlla se mancano citazioni usando un motore di ricerca accademico, poi imposta la luce del soggiorno sul verde quando hai finito.โ€ In uno scenario tradizionale, integrare manualmente questi servizi (cloud storage, ricerca web, IoT) richiederebbe molto codice ad-hoc. Con MCP, basta collegare tre server MCP di terze parti (uno per Google Drive, uno per il motore di ricerca, uno per la lampadina smart): lโ€™assistente orchestrerร  da solo le operazioni tra i vari strumenti in maniera sequenziale. Questo abilita funzionalitร  complesse e workflow end-to-end autonomi prima impensabili: lโ€™LLM non solo elabora testo, ma puรฒ agire โ€“ cercare informazioni, richiamare dati privati, eseguire comandi โ€“ il tutto tramite un canale standardizzato.

Le potenzialitร  di MCP , senza dubbio, risiedono nella flessibilitร  (Bring-Your-Own-Tools: ognuno puรฒ aggiungere gli strumenti che preferisce), nella scalabilitร  dellโ€™ecosistema (una volta creato un tool MCP, puรฒ essere riusato ovunque) e in un accesso al contesto piรน ricco per gli LLM (possono attingere a dati e servizi esterni in tempo reale invece di essere limitati al prompt statico). Questa promessa di un “AI app store universale” ha giustamente attirato attenzione e adozione rapida.

Ma, come in tuti in grandi cambiamenti, anche questo introduce anche nuove sfide da non sottovalutare.

Rischi di sicurezza e trust: cosa puรฒ andare storto?

Aprire le porte dellโ€™LLM a strumenti esterni comporta inevitabilmente dei rischi di sicurezza. Diversi ricercatori hanno giร  dimostrato che lโ€™attuale design di MCP puรฒ esporre gli utenti a una varietร  di exploit. In particolare, รจ stato mostrato come persino modelli linguistici di punta possano essere indotti con opportuni prompt malevoli a utilizzare i tool MCP in modi imprevisti, compromettendo il sistema dellโ€™utente ( qui un esempio interessante e ben descritto MCP Safety Audit: LLMs with the Model Context Protocol Allow Major Security Exploits).

Tra i possibili attacchi documentati troviamo:

  • Esecuzione di codice malevolo (Malicious Code Execution): il modello potrebbe essere persuaso a eseguire codice arbitrario sul sistema locale tramite un tool di file system o terminale, ad esempio inserendo backdoor o comandi distruttivi nei file dellโ€™utente. Un esperimento ha mostrato che un LLM (Claude) connesso a un server MCP di filesystem a volte riesce addirittura a scrivere nel file di configurazione dellโ€™utente un comando per ottenere un accesso remoto ogni volta che si apre il terminale (nell’esempio condiviso sopra c’รจ proprio questo) . In altri casi fortunatamente il modello ha riconosciuto il tentativo e rifiutato lโ€™azione, ma basta una formulazione leggermente diversa perchรฉ esegua istruzioni pericolose senza allertare adeguatamente lโ€™utente. Questo evidenzia quanto siano fragili le attuali difese basate solo sulle policy interne del modello.
  • Accesso remoto non autorizzato (Remote Access Control): simile al caso sopra, un attaccante potrebbe ottenere il pieno controllo remoto della macchina vittima inducendo lโ€™LLM a eseguire comandi di networking (es. avviare un server, modificare firewall, rubare chiavi API, ecc.). In uno scenario multi-utente (es. uffici condivisi), un aggressore potrebbe direttamente interagire con lโ€™assistente di qualcun altro e sfruttare MCP per piantare accessi persistenti.
  • Furto di credenziali o dati sensibili: se il modello ha accesso a file di configurazione o variabili dโ€™ambiente tramite MCP, un prompt malevolo puรฒ istruirlo a leggere e inviare allโ€™esterno informazioni riservate (token, password, documenti privati). Ad esempio, un tool apparentemente innocuo potrebbe richiedere di โ€œpassare il contenuto di /etc/passwd per una verifica di sicurezzaโ€, inducendo lโ€™LLM a consegnare informazioni di sistema riservate a un servizio esterno.

Un elemento preoccupante รจ che questi attacchi possono avvenire senza che lโ€™utente se ne accorga immediatamente. MCP parte dal presupposto che i tool di terze parti siano affidabili e li integra profondamente nel flusso dellโ€™assistente. Di fatto, i tool MCP vengono spesso inseriti nel prompt di sistema (le istruzioni di controllo interne allโ€™LLM) anzichรฉ come input utente, conferendo loro un livello di fiducia piรน alto. Ciรฒ significa che un tool compromesso o costruito con intenti malevoli puรฒ facilmente aggirare le protezioni e influenzare il comportamento dellโ€™assistente, anche piรน di quanto potrebbe un normale input utente malizioso (prompt injection classico). Si parla infatti di prompt injection di terze o quarte parti: un server MCP puรฒ deliberatamente fornire output formattati in modo da manipolare lโ€™LLM o altri server a cascata. Un esempio ancore potrebbe esser un server che potrebbe riuscire a cambiare dinamicamente nome e descrizione di un tool dopo che lโ€™utente ha giร  autorizzato il suo utilizzo (rug pull attack), sfruttando il fatto che lโ€™LLM continuerร  a usarlo credendo sia affidabile.

Inoltre, con MCP un aggressore potrebbe concatenare servizi per aumentare lโ€™efficacia dellโ€™attacco. Immaginiamo un database aziendale esposto via MCP: un malintenzionato potrebbe inserire nel campo di testo di un record una stringa contenente un comando o una falsa eccezione che suggerisce una determinata azione (ad es. โ€œErrore: mancano alcune righe, eseguire UPDATE ... per correggereโ€).ย Se lโ€™assistente AI di un developer andrร  a leggere quel record tramite il tool MCP, potrebbe eseguire il comando suggerito credendo sia parte del flusso logico, causando potenzialmente un Remote Code Execution o modifiche indesiderate al database. Tutto ciรฒ pur non disponendo di un tool esplicito di esecuzione codice, ma sfruttando la capacitร  dellโ€™LLM di interpretare e seguire istruzioni testuali provenienti dai dati esterni.

Un altro rischio รจ la fuga involontaria di dati (data leakage). Anche senza attori malevoli, lโ€™autonomia conferita agli agenti puรฒ portare lโ€™assistente a divulgare informazioni sensibili a servizi di terze parti. Ad esempio, un utente potrebbe collegare il proprio Google Drive e un servizio di web publishing via MCP per farsi aiutare a redigere un post sul blog. Se lโ€™LLM, nel tentativo di essere utile, decide di leggere referti medici privati dal Drive per arricchire il post, potrebbe inviarne estratti a un servizio esterno (es. un correttore grammaticale online) senza unโ€™esplicita intenzione dellโ€™utente. In mancanza di controlli granulari, lโ€™AI puรฒ mescolare dati pubblici e privati violando le aspettative di privacy dellโ€™utente.

In parole povere l’ MCP amplia la superficie dโ€™attacco dei sistemi basati su LLM. Ogni tool aggiunto รจ un potenziale vettore di exploit se non viene validato e autorizzato con attenzione. Purtroppo, allo stato attuale MCP non prevede meccanismi standard di sandbox o gestione permessi: se lโ€™utente abilita un tool che cancella file, il modello potrebbe teoricamente usarlo senza ulteriore conferma. Questo impone molta fiducia sia nellโ€™LLM (che dovrebbe capire da solo quando non eseguire istruzioni pericolose) sia nei fornitori terzi dei tool. Come osservato da molti, combinare LLM con dati e azioni reali รจ โ€œintrinsecamente rischioso e amplifica rischi esistenti o ne crea di nuoviโ€.

Esperienza utente: assenza di conferme e costi nascosti

Oltre ai rischi di exploit deliberati, MCP presenta criticitร  sul piano UX (user experience) e di controllo da parte dellโ€™utente. Lโ€™idea di fondo di MCP รจ fornire unโ€™esperienza fluida, dove lโ€™assistente AI puรฒ chiamare strumenti esterni in autonomia per aiutare lโ€™utente a raggiungere un obiettivo.

Ma cosรฌ tanta autonomia, non รจ forse troppa autonomia?

Attualmente, il protocollo lascia molte decisioni critiche allโ€™assistente, senza livelli di avvertimento o conferma differenziati.

Una prima criticitร  รจ che MCP non definisce livelli di rischio per gli strumenti che il modello puรฒ utilizzare. Tutti i tool, dal piรน innocuo al piรน potente, vengono esposti allโ€™LLM sullo stesso piano. Immaginiamo una chat assistita da vari plugin: leggi_diario_personale(), prenota_volo(), elimina_file(). Alcune azioni sono banali o facilmente reversibili, altre costose o irreversibili e pericolose, ma il modello potrebbe non avere piena consapevolezza di questa differenza. Spetta allโ€™applicazione che implementa MCP chiedere conferma allโ€™utente, ma non esiste uno standard obbligatorio: un particolare client potrebbe limitarsi a elencare i tool disponibili e lasciare che lโ€™utente abiliti tutto in blocco.

รˆ facile inoltre che lโ€™utente sviluppi col tempo la pessima abitudine di confermare automaticamente (modality YOLO scherza qualcuno) tutte le azioni proposte, se la maggior parte delle volte sono innocue routine. Cosรฌ, il giorno in cui lโ€™LLM decide di usare elimina_file("foto_vacanze") o di โ€œaiutareโ€ prenotando e pagando un volo senza dettagli corretti, il danno รจ fatto in un click distratto. La mancanza di indicatori di rischio o di gravitร  per i tool รจ dunque un problema: lโ€™utente non riceve un segnale chiaro quando lโ€™agente sta per fare qualcosa di potenzialmente pericoloso o costoso.

Un secondo problema di UX legato a MCP รจ lโ€™assenza di conferme visive e preview per azioni sensibili. Poichรฉ il protocollo per design fa transitare i risultati dei tool come semplice testo non strutturato (o blob binari per immagini/audio), lโ€™interfaccia dellโ€™assistente spesso mostra solo la risposta finale dellโ€™LLM e pochi dettagli sullโ€™azione compiuta. Questo va bene per notifiche o dati testuali, ma diventa inadeguato in casi come: prenotare un taxi o un volo, pubblicare un post sui social, inviare unโ€™email importante. Lโ€™utente avrebbe bisogno di verificare dettagli cruciali โ€“ ad esempio confermare che lโ€™AI ha scelto lโ€™indirizzo giusto per il taxi, o vedere unโ€™anteprima formattata di un post prima di renderlo pubblico. Con lโ€™attuale MCP queste garanzie โ€œvisualiโ€ non sono integrate: il modello potrebbe dirci di aver fatto X, ma non cโ€™รจ un meccanismo standard per fornirci un link di conferma, una finestra di dialogo, o un risultato parziale strutturato. Tutto dipende dallโ€™implementazione del singolo tool e dallโ€™interfaccia dellโ€™applicazione host. Questo puรฒ portare a errori difficili da intercettare prima che sia troppo tardi, specie se lโ€™agente opera autonomamente in background.

Un terzo aspetto spesso trascurato รจ quello dei costi nascosti. A differenza di protocolli tradizionali dove i dati scambiati sono relativamente piccoli e a costo trascurabile, nellโ€™universo LLM il โ€œcontestoโ€ ha un costo computazionale ed economico significativo. MCP, ampliando il contesto con risultati di tool, puรฒ generare risposte voluminose. Un output di qualche centinaio di kilobyte puรฒ costare diversi centesimi di dollaro in termini di utilizzo del modello, e 1 MB di testo generato puรฒ arrivare a costare circa 1 dollaro per richiesta. Quel testo potrebbe venire incluso in ogni successivo prompt durante la conversazione, sommando piรน addebiti. Ciรฒ significa che se un tool MCP restituisce un risultato molto lungo (es. il contenuto di un lungo documento, o una lista di dati estesa), lโ€™utente potrebbe bruciare il proprio budget rapidamente senza accorgersene, finchรฉ non arriva la fattura o finchรฉ il servizio non inizia a rallentare. Sono giร  emerse lamentele da parte di utenti e sviluppatori di agenti AI riguardo a costi imprevedibili dovuti a integrazioni MCP token-inefficienti. Attualmente, sta al singolo sviluppatore di tool limitare prudentemente la quantitร  di dati restituiti (magari tagliando risultati o implementando paginazione), ma il protocollo in sรฉ non impone limiti di lunghezza. Un miglioramento proposto รจ di fissare un massimale sul risultato o quantomeno rendere visibile e configurabile la quantitร  di contesto aggiunto da ogni tool, cosรฌ da responsabilizzare chi sviluppa MCP server a essere efficiente.

Dal punto di vista UX MCP eccelle in comoditร , ma pecca in controlli e trasparenza verso lโ€™utente. Non fornisce per default nรฉ una graduatoria di pericolositร  dei tool, nรฉ un sistema strutturato di conferme per azioni critiche, nรฉ indicatori chiari dellโ€™impatto in termini di costi/risorse. Questo lascia spazio a errori umani (conferme affrettate, fiducia eccessiva nellโ€™agente) e a situazioni in cui lโ€™utente perde il controllo fine di ciรฒ che sta accadendo. Le implementazioni dovranno colmare queste lacune con soluzioni personalizzate, ma idealmente lo standard stesso potrebbe evolvere per includere best practice di sicurezza ed esperienza utente piรน robuste.

Limiti strutturali: LLM con troppi tool, interpretazione ed efficienza

Un altro tema emerso nelle analisi recenti รจ che MCP, pur estendendo le capacitร  degli LLM, non elimina i limiti intrinseci dei modelli โ€“ anzi, in certi casi li amplifica. Collegare “piรน strumenti possibile” potrebbe sembrare una buona idea per massimizzare la versatilitร  di un assistente AI, ma allโ€™atto pratico ci sono dei trade-off di performance e affidabilitร .

Innanzitutto, gli LLM attuali mostrano un calo di affidabilitร  man mano che cresce il contesto e la complessitร  delle istruzioni da seguire. Ogni tool MCP aggiunto porta con sรฉ descrizioni, parametri e possibili azioni che lโ€™AI deve tenere a mente. Se da un lato piรน strumenti significano piรน opportunitร , dallโ€™altro rappresentano piรน carico cognitivo per il modello. In effetti, รจ stato osservato che aumentando il numero di tool e di dati connessi, le prestazioni dellโ€™assistente possono degradare sensibilmente, mentre il costo per ogni singola richiesta aumenta (piรน informazioni da elaborare in input/output). In scenari reali, potrebbe diventare necessario far scegliere allโ€™utente quali integrazioni attivare di volta in volta, invece di tenerle tutte sempre attive, per evitare di appesantire inutilmente ogni risposta.

Va considerato poi che utilizzare correttamente degli strumenti tramite linguaggio naturale รจ di per sรฉ un compito non banale per gli LLM. Pochi dataset di addestramento contenevano esempi di agenti che chiamano API o funzioni esterne, quindi la capacitร  di tool use spesso non รจ innata ma deriva da fine-tuning o prompt engineering. Benchmark specializzati mostrano che anche modelli avanzati hanno un basso successo percentuale nel portare a termine correttamente task multi-step con strumenti. Ad esempio, su un set di compiti come prenotare un volo seguendo policy specifiche, uno dei migliori modelli disponibili nel 2025 riusciva a completare autonomamente solo circa il 16% delle operazioni previste. Ciรฒ implica che allโ€™aumentare della complessitร  delle azioni richieste (soprattutto se coinvolgono piรน strumenti in sequenza), lโ€™agente potrebbe fallire o doversi arrendere, restituendo risultati parziali o errati.

Un ulteriore limite รจ la comprensione contestuale dellโ€™AI rispetto a ciรฒ che i tool offrono. MCP presuppone che gli strumenti siano progettati per essere generici e assistant-agnostic, ma nella realtร  ogni assistente o utente potrebbe avere esigenze diverse. Ad esempio, un server MCP per Google Drive potrebbe fornire funzioni come list_file(nome), read_file(file_id), delete_file(file_id). Un utente inesperto potrebbe pensare che collegando questo server al suo ChatGPT, potrร  semplicemente chiedere: โ€œTrova il file FAQ che ho scritto ieri per il cliente Xโ€. In assenza di un vero motore di ricerca indicizzato nei contenuti, lโ€™LLM proverร  magari a chiamare list_file con vari nomi, fallendo se il file non ha โ€œFAQโ€ nel titolo.

Lโ€™utente rimane deluso perchรฉ si aspettava un comportamento piรน โ€œintelligenteโ€, mentre avrebbe bisogno che il tool stesso implementi una ricerca full-text o query semantiche โ€” funzionalitร  non previste senza unโ€™architettura aggiuntiva. Analogamente, richieste come โ€œQuante volte appare la parola โ€˜AIโ€™ nei documenti che ho scritto?โ€ mettono in crisi lโ€™assistente: potrebbe dover aprire decine di file (read_file) e contare, finendo il contesto disponibile dopo alcuni risultati e dando magari un numero incompleto. Operazioni di aggregazione o di join di dati attraverso piรน fonti (es. โ€œincrocia lโ€™ultimo report vendite con i profili LinkedIn dei candidatiโ€) sono ancora piรน proibitive: il modello non ha una memoria persistente su cui fare calcoli o confronti complessi oltre i limiti del prompt. Questi esempi illustrano come collegare un dato strumento non garantisce automaticamente che lโ€™AI sappia svolgere qualsiasi compito correlato โ€“ se il compito richiede logica o capacitร  oltre quelle offerte esplicitamente dai tool, lโ€™LLM tenterร  soluzioni sub-ottimali o dichiarerร  di non poterlo fare.

Cโ€™รจ poi una questione di compatibilitร  variabile tra modelli e formati di strumenti. MCP definisce lโ€™interfaccia, ma piccoli dettagli (come la descrizione testuale dei tool, gli schemi di risposta attesi, lโ€™uso di markdown o XML nei prompt) possono influire sul rendimento a seconda del modello usato. Ad esempio, si รจ notato che Claude (Anthropic) interpreta meglio descrizioni di tool strutturate in un certo modo, mentre GPT-4 preferisce altri formati. Quindi un set di tool potrebbe funzionare benissimo con un assistente e meno con un altro, confondendo lโ€™utente che tende a dare la colpa allโ€™applicazione (โ€œQuestโ€™app non รจ capace di fare Xโ€) quando in realtร  รจ una combinazione di design del tool e idiosincrasie del modello AI.

Riassumendo, MCP ha un grandissimo potenziale ma non รจ una bacchetta magica e come sempre “per i grandi poteri ricevuti, ci vuole una grande responsabilitร ” : rimane vincolato ai limiti attuali degli LLM in termini di capacitร  di ragionamento, contesto e azione. Aggiungere piรน fonti dati e piรน funzioni puรฒ dare lโ€™illusione di un โ€œsuper assistenteโ€ onnisciente, ma in pratica rischia di peggiorare lโ€™efficacia (assistente piรน lento, piรน costoso e talvolta confuso) se non progettato con criterio. Serve equilibrio nel numero di integrazioni attive contemporaneamente e consapevolezza che lโ€™AI potrebbe non sfruttarle appieno come farebbe un umano senza un lavoro ulteriore di ottimizzazione. Questi limiti strutturali suggeriscono che, accanto allโ€™entusiasmo, รจ necessaria prudenza e responsabilitร : ogni nuova integrazione va testata e compresa a fondo per evitare di sovraccaricare o disorientare il modello.

Trade-off tra facilitร  dโ€™uso e controllo/verificabilitร 

Un tema trasversale a quanto discusso sopra รจ il delicato bilanciamento tra comoditร  e controllo. MCP nasce per rendere facile ed immediato estendere le capacitร  di un modello โ€“ in altre parole, massimizzare la facilitร  dโ€™uso sia per chi sviluppa (standard unico, integrazioni plug-in) sia per lโ€™utente finale (chiedi in linguaggio naturale e lโ€™AI fa tutto). Tuttavia, questa facilitร  intrinseca porta con sรฉ una perdita di visibilitร  e governabilitร  sulle azioni dellโ€™agente AI.

Da un lato dello spettro abbiamo la โ€œcompleta autonomiaโ€: lโ€™utente collega molti tool e permette allโ€™agente di agire senza dover confermare ogni passo. Lโ€™esperienza รจ fluida e quasi โ€œmagicaโ€ โ€“ pochi input in linguaggio naturale producono output complessi e multi-step. Ma come abbiamo visto, ciรฒ puรฒ portare a comportamenti indesiderati o rischiosi non verificati, e rende difficile ricostruire a posteriori cosa sia andato storto ( scarsa verificabilitร ). Se qualcosa va storto โ€“ ad esempio dati sensibili inviati ad un servizio esterno, o un file cancellato โ€“ lโ€™utente o lโ€™amministratore si trovano a dover interpretare i log della conversazione e delle chiamate API per capire quale prompt o quale tool abbia causato lโ€™evento. Non cโ€™รจ una traccia strutturata facilmente consultabile di tutte le azioni autorizzate, a meno che lโ€™applicazione host non la implementi manualmente.

Dallโ€™altro lato cโ€™รจ la โ€œmassimo controllo/manualitร โ€: lโ€™utente mantiene il potere decisionale su ogni chiamata di tool (conferme frequenti, step intermedi mostrati, scelta esplicita di quali integrazioni usare per ciascun task). Questo approccio minimizza i rischi, ma sacrifica molta della comoditร . Lโ€™agente diventa meno autonomo e piรน un sistema di suggerimento, dove lโ€™utente deve comunque fare da supervisore costante. Inoltre, troppe interruzioni e richieste di conferma possono peggiorare lโ€™esperienza dโ€™uso, frustrando lโ€™utente o inducendolo ad aggirare le protezioni pur di non essere disturbato di continuo.

Verificabilitร ย e controllo piรน granulari spesso significano aggiungere complessitร  allโ€™ecosistema MCP. Ad esempio, si potrebbe voler un registro dettagliato di tutte le operazioni compiute tramite MCP (chi le ha scatenate, con quali parametri, risultati, timestamp) per poter effettuare audit di sicurezza. Realizzare ciรฒ richiede estensioni al framework o log robusti lato client/server, e magari strumenti di analisi dedicati. Allo stesso modo, introdurre livelli di permission per i tool (lettura/scrittura, accesso limitato a certe risorse, ecc.) rende il sistema piรน sicuro ma anche piรน macchinoso da configurare rispetto alla semplice plug-and-play attuale.

รˆ evidente che cโ€™รจ un trade-off: facilitร  dโ€™uso vs. complessitร  di controllo. MCP nella sua forma base ha scelto di ottimizzare la prima a scapito della seconda. Sta ora alla comunitร  e ai progettisti decidere come riequilibrare la bilancia. Nel prossimo e ultimo punto, discuteremo alcune possibili soluzioni e linee guida per mitigare i rischi senza rinunciare ai benefici di MCP.

Blockchain, una soluzione strutturale?

Per affrontare strutturalmente (ma che non risolverebbero a mio avviso tutti i problemi) i rischi di sicurezza e i limiti di verificabilitร  evidenziati finora, una soluzione potenziale potrebbe arrivare dalla blockchain e dall’uso di un sistema di identitร  decentralizzata (DID).ย La blockchain offre naturalmente risposte alle criticitร  che MCP manifesta:

  • Autenticazione robusta e decentralizzata: ogni utente e tool MCP potrebbe disporre di un’identitร  registrata su blockchain tramite DID (Decentralized Identifier), che garantisce l’origine e l’integritร  delle richieste senza affidarsi a un’unica autoritร  centralizzata.

  • Audit e tracciabilitร  immutabile: le operazioni effettuate tramite MCP verrebbero registrate su blockchain creando un log immodificabile, utile per audit, debugging e risoluzione di controversie.

  • Autorizzazioni granulari tramite smart contract: le regole sui permessi e sulle operazioni consentite ai tool MCP potrebbero essere gestite da smart contract trasparenti e verificabili, eliminando il rischio di esecuzioni incontrollate o dannose.

Come potrebbe funzionare un sistema MCP basato su blockchain?

Unโ€™implementazione pratica potrebbe basarsi su:

  • Identitร  decentralizzata (DID): gli utenti e gli sviluppatori registrano le loro identitร  utilizzando un sistema decentralizzato (es. Ethereum Name Service, Solana DID), firmando digitalmente ogni richiesta MCP con una chiave privata.

  • Smart contract di autorizzazione: i permessi per ciascun tool MCP vengono definiti esplicitamente in smart contract che limitano automaticamente le azioni eseguibili. Le azioni ad alto rischio potrebbero richiedere una firma esplicita aggiuntiva dellโ€™utente.

  • Registrazione delle operazioni: ogni chiamata agli strumenti MCP genererebbe eventi registrati permanentemente, facilitando controlli retroattivi e audit automatici.

Perchรฉ tale soluzione sia sostenibile nel tempo e facilmente adottabile, รจ fondamentale definire ulteriori requisiti:

  • Standardizzazione: scegliere blockchain ad alta interoperabilitร  (ad esempio Ethereum, Solana, o altre chain compatibili) e definire chiaramente gli standard DID utilizzabili.

  • Privacy e riservatezza: adottare tecniche avanzate (zero-knowledge proofs) per garantire la riservatezza di dati sensibili, evitando di renderli pubblicamente visibili sulla blockchain.

  • Usabilitร  e gestione chiavi: semplificare il recupero degli account smarriti e implementare meccanismi di backup sicuri per la gestione delle chiavi private, evitando complessitร  eccessiva per gli utenti non tecnici.

  • Governance decentralizzata: prevedere modalitร  per aggiornamenti dello standard MCP e dei relativi smart contract tramite governance decentralizzata (es. DAO), per garantire evoluzione e sicurezza nel tempo.

L’integrazione della blockchain in MCP rappresenterebbe a mio avviso un ulteriore passo importante verso quella convergenza di cui parlo da un po’ e vero la creazione di uno standard realmente maturo, sicuro e scalabile. La capacitร  di autenticare richieste, autorizzare operazioni e tracciare eventi in modo decentralizzato potrebbe trasformare MCP da semplice protocollo di integrazione a piattaforma completa e (piรน) sicura per l’automazione avanzata con LLM.

Verso un uso responsabile e sicuro di MCP: proposte e principi

Nonostante le criticitร  evidenziate, il Model Context Protocol rimane dal mio punto di vista unโ€™innovazione importante e utile, oltre che un cambio radicale di modelli ed ecosistemi inteeri. La chiave sta nellโ€™adottarlo in modo responsabile, implementando misure di sicurezza e di design che ne mitigano i difetti. Di seguito provo a buttare giuย  alcune proposte e principi โ€“ rivolti sia a sviluppatori di tool/applicazioni, sia a utenti avanzati โ€“ per migliorare la progettazione della sicurezza e lโ€™affidabilitร  di MCP senza perdere i vantaggi della standardizzazione:

  • Classificazione del rischio dei tool e conferme contestuali: Gli strumenti MCP andrebbero categorizzati per livello di rischio (basso, medio, alto) in base alle azioni che compiono. Ad esempio, leggere dati pubblici puรฒ essere low risk, modificare dati sensibili high risk. Lโ€™interfaccia utente dovrebbe poi modulare le conferme di conseguenza: niente conferma per azioni sicure di routine, conferma obbligatoria (con chiaro avviso) per operazioni distruttive o finanziariamente impegnative. In mancanza di uno standard ufficiale, alcune implementazioni iniziano a muoversi in questa direzione introducendo livelli di esecuzione: ad esempio, eseguire direttamente le azioni a basso rischio, ma richiedere un permesso esplicito per quelle medie e addirittura isolare in sandbox (es. in un container Docker) quelle ad alto rischio ().
  • Sandboxing e scope limitato: Per i tool piรน potenti (come quelli che eseguono codice o modificano file), รจ consigliabile limitarne il campo dโ€™azione. Ciรฒ puรฒ avvenire tramite sandboxing (esecuzione in un ambiente chiuso che impedisca danni al sistema host) o definendo scope ristretti โ€“ ad esempio un tool delete_file() potrebbe essere vincolato a operare solo in una directory predefinita, impedendo cancellazioni arbitrarie in tutto il file system. Idealmente, MCP potrebbe supportare in futuro una sorta di policy di autorizzazione dichiarativa, in cui lโ€™utente concede a un tool solo certi permessi (lettura sola, accesso solo a un certo dataset, ecc.). Nel frattempo, sta ai singoli server MCP implementare tali controlli internamente.
  • Verifica e fiducia nei server MCP di terze parti: Prima di collegare un qualsiasi MCP server esterno al proprio assistente, occorre valutarne lโ€™affidabilitร . Preferire tool open source il cui codice รจ ispezionabile, oppure servizi di provider noti con solide politiche di sicurezza. Evitare di usare plugin da fonti sconosciute o poco trasparenti, specialmente se richiedono accesso a dati sensibili. Gli sviluppatori della piattaforma potrebbero creare un registry pubblico di server MCP verificati o con recensioni, facilitando agli utenti la scelta di integrazioni sicure.
  • Trasparenza delle azioni dellโ€™agente: Lโ€™applicazione host (es. lโ€™interfaccia chat) dovrebbe fornire strumenti per monitorare e loggare le azioni che lโ€™LLM compie tramite MCP. Ciรฒ puรฒ includere un pannello di attivitร  in tempo reale (โ€œLโ€™assistente sta chiamando lo strumento X con questi parametriโ€ฆโ€), e log dettagliati consultabili successivamente. Questo aiuta sia a tranquillizzare lโ€™utente durante operazioni lunghe o complesse (sapendo cosa sta succedendo dietro le quinte), sia a effettuare audit in caso di comportamenti sospetti o malfunzionamenti. Alcune implementazioni visualizzano giร  il โ€œchain of thoughtโ€ o i passi compiuti dallโ€™agente: estenderlo con dettagli specifici dei tool MCP usati sarebbe unโ€™ottima pratica.
  • Limitare lโ€™autonomia in contesti critici: Per task particolarmente delicati โ€“ ad esempio operazioni finanziarie, modifiche di sistema, invio di mail a larga diffusione โ€“ รจ saggio mantenere lโ€™umano nel loop. Ciรฒ significa progettare lโ€™agent affinchรฉ si fermi prima di un punto di non ritorno e chieda conferma finale allโ€™utente, magari mostrando un riepilogo di cosa intende fare. Questo principio si riallaccia ai livelli di rischio: nessun modello AI dovrebbe effettuare transazioni bancarie o cancellazioni massicce senza un โ€œOKโ€ umano, anche se in generale gli si concede autonomia su altre cose.
  • Educazione dellโ€™utente e best practice dโ€™uso: Lโ€™utente finale va reso consapevole che uno strumento come MCP non รจ infallibile e richiede uso accorto. I provider di assistenti dovrebbero educare tramite documentazione e tutorial sui rischi possibili (es. evidenziando il pericolo di prompt injection attraverso esempi) e sulle funzionalitร  di sicurezza messe a disposizione. Un utente informato sarร  piรน propenso a configurare correttamente i permessi, a scegliere con giudizio quali integrazioni attivare e a riconoscere eventuali segnali di comportamento anomalo dellโ€™agente.

Lโ€™MCP rappresenta un passo significativo verso ecosistemi AI modulari e integrati, analoghi a un sistema operativo per agenti intelligenti. Le sue promesse di standardizzazione e versatilitร  sono reali, ma altrettanto vere sono le sfide emerse e che emergeranno in termini di sicurezza e UX. La buona notizia รจ che, come tutti i grandi progetti di cambiamento, vedono una partecipazione di diverse comunitร  che stanno giร  affrontando questi temi e approfondendo tecnicamente molti aspetti: dallโ€™analisi delle vulnerabilitร  (esempio riportato in questo articolo MCP Safety Audit: LLMs with the Model Context Protocol Allow Major Security Exploits) alla creazione di sistemi di validazione di sicurezza automatici per server MCP, fino al dibattito su come migliorare il protocollo stesso (Everything Wrong with MCP – by Shrivu Shankar).

รˆ probabile che vedremo evolvere sia lo standard MCP (con estensioni per gestione permessi, formati di risposta piรน strutturati, ecc.), sia le implementazioni lato applicazione (assistenti che guideranno meglio lโ€™utente, magari con interfacce piรน ricche e controlli). Fino ad allora, il principio guida devโ€™essere la cautela consapevole: adottare MCP con entusiasmo, ma progettare sempre con una โ€mentalitร  di sicurezzaโ€ e usare lโ€™autonomia dellโ€™AI entro limiti che possiamo gestire.

Come spesso accade nella tecnologia, la chiave รจ trovare il giusto equilibrio tra innovazione e controllo: sfruttare lโ€™automazione offerta da MCP senza mai rinunciare del tutto alla supervisione umana e a misure preventive. In questo modo potremo godere dei benefici dellโ€™AI aumentata dai tool, minimizzando al contempo i rischi per sistemi e persone.