Il problema che nessuno voleva ammettere
Parliamoci chiaro: gli agent AI sono diventati bravissimi a orchestrare tool, chiamare API, ragionare su problemi complessi. Ma poi? L’output rimane confinato in muri di testo o JSON incomprensibili. Avete presente quella sensazione quando chiedete a un assistant di mostrarvi un grafico e lui vi risponde con tre paragrafi di numeri? Ecco, quello.
La community MCP – quel gruppo di sviluppatori che sta costruendo l’infrastruttura per far parlare i modelli AI con gli strumenti esterni – si è stancata di questo limite. Volevano interfacce interattive vere, non link a dashboard esterne o hack custom che funzionavano solo sul loro specifico prodotto.
Cos’è MCP Apps, senza giri di parole
MCP Apps è un’estensione ufficiale del Model Context Protocol che permette ai tool di restituire vere pagine HTML interattive, renderizzate in un iframe sandboxato direttamente dentro il client MCP. Che sia Claude, ChatGPT, VS Code o un’app custom, poco importa.
In pratica: invece di ricevere solo testo, un tool può dire “ehi, per questa risposta ho bisogno di mostrarti un’app” – e boom, compare un form, un dashboard, un configuratore, quello che serve. Tutto inline nella conversazione.
La parte che mi ha colpito: l’interfaccia non è statica. C’è un canale JSON-RPC dedicato che permette comunicazione bidirezionale tra l’app e l’host. Eventi, richieste di tool call, aggiornamenti di stato – tutto passa da lì mentre il modello resta nel loop.
L’architettura sotto il cofano
Ok, divento tecnico per un minuto. La specifica vive nel repo ufficiale modelcontextprotocol/ext-apps, con sia la descrizione formale (SEP-1865) che l’SDK TypeScript per costruire server e app.
Il cuore del sistema sono le “risorse UI” – identificate tramite URI con schema tipo ui://. I server MCP le dichiarano esplicitamente, gli host le valutano, le approvano, gestiscono il lifecycle. Niente magia nera.
Dal lato client, quando un tool espone una UI:
- Il client crea un iframe isolato
- Applica una Content Security Policy configurabile
- Apre un canale
postMessageverso la UI
Su questo canale gira un dialetto MCP basato su JSON-RPC. Alcune chiamate sono condivise col protocollo base (tools/call), altre sono specifiche della UI (ui/initialize, notifiche varie). L’app può chiedere tool call, aggiornare il contesto del modello, ricevere dati dal server.
Per il frontend, lo SDK @modelcontextprotocol/ext-apps espone una classe App che incapsula tutto questo. Ma – e qui sta il bello – potete implementare il protocollo a mano usando solo postMessage se volete zero dipendenze.
Dalla chat alle mini-app: cosa cambia davvero
Il salto concettuale è grosso. Si passa da “chiedo qualcosa e leggo una risposta” a “interagisco con una vera app, guidata dal modello, senza uscire dalla conversazione”.
Un tool di analytics può mostrare un dashboard con grafici, filtri, pulsanti – gestendo aggiornamenti in tempo reale mentre il modello spiega, suggerisce, automatizza. Un’azienda di e-commerce può esporre selettori di prodotti, gallerie, configuratori, carrelli, flussi di checkout. Tutto in-chat.
Esempio concreto che mi ha fatto alzare le sopracciglia: immaginate un “Scenario Modeler” che appare come pannello interattivo dentro la chat. Slider per gli assunti, grafici what-if, pulsanti per salvare scenari. Dietro le quinte la UI invia eventi al server MCP, che lancia tool di calcolo, aggiorna i grafici, mantiene il modello informato su ogni cambiamento.
Non è fantascienza – è già nella documentazione ufficiale come caso d’uso supportato.
La questione sicurezza (spoiler: l’hanno presa sul serio)
Un punto che spesso viene trascurato quando si parla di UI embeddate: la sicurezza. MCP Apps specifica che le UI girano in iframe sandboxati, con CSP che definisce esplicitamente quali origini sono permesse per script, asset, richieste esterne.
L’uso di JSON-RPC su postMessage permette di tracciare e auditare tutte le interazioni. I team di sicurezza possono vedere chiaramente quali azioni una MCP App può compiere – specialmente quando chiede tool call o accesso a dati sensibili.
Le risorse UI, essendo pre-dichiarate tramite URI, possono essere sottoposte a review e approvazione prima dell’esecuzione. In linea con i processi di governance che le aziende già usano per widget, estensioni, integrazioni.
Questo rende MCP Apps appetibile per casi enterprise: approvazioni di spesa, workflow HR, processi regolamentati dove serve un mix di automazione agentica, UI dedicata e controlli forti su chi può fare cosa.
MCP Apps vs MCP-UI: facciamo chiarezza
Confusione comprensibile. MCP Apps è lo standard ufficiale; MCP-UI è il progetto community che ha inventato il modello e oggi funge da implementazione di riferimento.
Per capirci:
- MCP Apps è la specifica formale (SEP-1865) – il “cosa” e il “come”
- MCP-UI è il toolkit concreto, nato in Shopify e poi adottato da Postman, Hugging Face, ElevenLabs
MCP-UI ha introdotto feature come l’intent system – eventi tipo add_to_cart, checkout, view_details – per mantenere l’agente al centro. MCP Apps ha incorporato questi pattern in un’estensione general purpose, applicabile a qualunque dominio.
Una frase che riassume bene: “MCP-UI è stato il laboratorio che ha dimostrato che le agentic app funzionano; MCP Apps è lo standard che rende quei concetti portabili in tutto l’ecosistema.”
Esempi pronti all’uso e strumenti di sviluppo
Il repo ext-apps include una serie di esempi che coprono diversi domini:
- Visualizzazioni 3D (globi CesiumJS, scene Three.js)
- Data exploration (heatmap di cohort, segmentazione clienti, explorer wiki)
- Applicazioni business (modeler di scenari, budget allocator)
- Media (viewer PDF, server video, musica, text-to-speech)
- Utility (QR code, system monitor, trascrizione audio)
Per il bootstrap ci sono template per React, Vue, Svelte, Preact, Solid, vanilla JS. Puoi iniziare creando un’app MCP come se fosse una normale SPA e poi collegarla al server via SDK.
Per debugging, il repo fornisce un “basic host” che simula un client MCP – utile per testare il flusso completo senza dipendere da client di terze parti. VS Code ha già annunciato supporto a MCP Apps per pannelli e strumenti integrati.
Perché questo cambia le carte in tavola
MCP di base risolve il problema “ogni modello parla con ogni tool in modo standard”. MCP Apps aggiunge il pezzo mancante: esperienze utente paragonabili alle app tradizionali, ma orchestrate da un agente, dentro un’unica interfaccia conversazionale.
Il baricentro si sposta. Da “assistant dentro le app” (un copilot diverso per ogni prodotto) a “app come plugin dentro l’assistant”. MCP fornisce il layer di integrazione, MCP Apps quello di presentazione interattiva.
La combinazione apre la porta a prodotti dove la chat non è solo un canale di supporto, ma il runtime principale per applicazioni complesse – con UI rich e workflow guidati che si adattano dinamicamente a contesto, ruolo e obiettivi dell’utente.
Non so voi, ma io continuo a tornare su questo punto: stiamo assistendo a un cambio di paradigma nell’interazione uomo-macchina. E MCP Apps è uno dei mattoni fondamentali.
