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/passwdper 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.