La domanda sembra di quelle con una risposta per azienda, e invece non lo è. Nel 2026 la linea di divisione passa tra superfici, non tra fornitori: l'app desktop di ChatGPT può avviare un server MCP sulla macchina di chi la usa, ChatGPT in una scheda del browser no. Claude Code e Claude Desktop possono entrambi. Ogni editor di codice con un client MCP — Cursor, VS Code, Zed, Devin Desktop — può. Tutto ciò che gira nel cloud di qualcun altro, per definizione, no.
La distinzione conta più di quanto sembri. Un server locale è un programma che il client avvia e con cui parla tramite standard input e output; nessuna porta resta aperta, nessuna credenziale viene emessa e i dati non lasciano mai la macchina per arrivare agli strumenti dell'assistente. Un server remoto è un URL, cioè un operatore, un token e un percorso di rete. Scegliere un client significa quindi anche scegliere dove devono trovarsi i propri dati prima che un assistente possa usarli.
Questa è una ricognizione di chi supporta che cosa, verificata sulla documentazione di ciascun fornitore il 15 agosto 2026. Se il protocollo in sé è nuovo, che cos'è un server MCP copre il vocabolario; se il client è già scelto e serve solo il percorso di configurazione, configurare MCP in VS Code, Zed e Devin Desktop è la versione file per file.
| Client | stdio locale | Remoto | Come chiede conferma |
|---|---|---|---|
| Claude Code | Sì | HTTP, SSE, WebSocket | Chiede; i server con ambito di progetto vanno approvati prima |
| Claude Desktop | Sì | Sì | Approvazione esplicita prima di ogni azione |
| App desktop di ChatGPT | Sì | Sì | Quattro modalità di approvazione, condivise con Codex |
| Codex CLI / estensione IDE | Sì | Sì | default_tools_approval_mode |
| ChatGPT sul web | No | Sì, solo HTTPS | A livello di connettore, legata al piano |
| Cursor | Sì | SSE, Streamable HTTP | Chiede per impostazione predefinita; i Run Modes consentono liste di permessi |
| VS Code | Sì | HTTP | Fiducia al server una volta, poi a ogni invocazione |
| Zed | Sì | Sì | Chiede prima di qualsiasi azione di uno strumento |
| Devin Desktop | Sì | Streamable HTTP, SSE | Chiede per impostazione predefinita; regole per singolo strumento |
Una riga di quella tabella è il motivo per cui esiste questo articolo.
Cercando questa domanda si trovano affermazioni sicure in entrambe le direzioni, spesso su pagine aggiornate quest'anno. Entrambe sono state vere a un certo punto, ed è per questo che resistono.
Lo stato attuale, dalla documentazione di OpenAI: «L'app desktop di ChatGPT,
Codex CLI e l'estensione IDE supportano i server MCP e condividono la
configurazione MCP dello stesso host Codex.» Quella configurazione condivisa si
trova in ~/.codex/config.toml, oppure in un .codex/config.toml con ambito di
progetto per i progetti attendibili, e supporta esplicitamente «server STDIO:
server che girano come processo locale (avviato da un comando)».
Quindi l'app desktop è un client MCP locale. Si configura un server una volta sola e lo vedono la CLI, l'estensione per l'editor e l'app desktop — non serve ripetere la configurazione tre volte.
ChatGPT sul web è un prodotto diverso con una risposta diversa. Lì un connettore personalizzato è un server MCP remoto raggiunto via HTTPS con SSE o Streamable HTTP: si incolla un URL, non si punta a un comando. ChatGPT gira nel cloud di OpenAI, quindi può raggiungere solo server esposti su internet, e usarne uno locale significa metterci davanti un tunnel. I connettori personalizzati dipendono anche dal piano — disponibili su Plus, Pro, Business, Enterprise ed Edu, non su Free o Go.
Nessuna delle due metà della risposta che circola è sbagliata. Sono risposte a domande diverse, e la domanda da porsi è davanti a quale ChatGPT si è seduti.
Claude Code accetta server stdio con claude mcp add --transport stdio e server
remoti via HTTP, SSE — deprecato a favore di HTTP — e WebSocket. La
configurazione ha tre ambiti: locale, di progetto (.mcp.json, versionato) e
utente (~/.claude.json). Un .mcp.json versionato non si collega in silenzio:
i server che arrivano da lì restano in «Pending approval» finché non si esegue
Claude in modo interattivo in uno spazio di lavoro attendibile e non li si
approva, un'impostazione predefinita sensata per un file che arriva con un
git clone.
Claude Desktop legge claude_desktop_config.json — su macOS in
~/Library/Application Support/Claude/, su Windows in %APPDATA%\Claude\ — e
avvia ogni server configurato all'apertura dell'app. Il modello documentato è
l'approvazione per singola azione: «Tutte le azioni richiedono un'approvazione
esplicita prima dell'esecuzione, in modo da mantenere il pieno controllo su ciò
a cui Claude può accedere e su ciò che può modificare.» Le estensioni installate
da Settings → Extensions sono la versione impacchettata della stessa cosa, ed è
per questo che le installazioni con un clic e il JSON scritto a mano finiscono
nello stesso posto.
Cursor documenta tre trasporti — stdio, SSE e Streamable HTTP — con la
configurazione di progetto in .cursor/mcp.json e quella globale in
~/.cursor/mcp.json. Sul consenso è esplicito: «Per impostazione predefinita
Cursor chiede l'approvazione prima di usare gli strumenti MCP.» L'automazione va
abilitata di proposito tramite i Run Modes, dove gli strumenti MCP in lista di
permessi vengono eseguiti subito in modalità Auto-review e tutto il resto passa
da un classificatore.
VS Code supporta sia server HTTP remoti sia server stdio locali, configurati a
livello di spazio di lavoro in .vscode/mcp.json o a livello utente con il
comando MCP: Open User Configuration. Aggiunge un passaggio che gli altri non
sottolineano: prima che un server parta per la prima volta occorre confermare di
considerarlo attendibile, con la possibilità di esaminarne la configurazione
dalla finestra di dialogo. L'attendibilità è una proprietà del server, non di
ogni singola chiamata.
Zed configura i server MCP da Settings → AI → MCP Servers, con una forma
command/args/env per i server locali e una forma url/headers per
quelli remoti. I permessi sono i più granulari del gruppo:
agent.tool_permissions.default chiede l'approvazione prima di eseguire
qualsiasi azione di uno strumento, comprese le chiamate agli strumenti MCP, e si
possono scrivere regole individuali su mcp:<server>:<tool_name> — così si può
pre-approvare la lettura e tenere una richiesta di conferma su tutto ciò che
scrive.
Devin Desktop è quello che ha cambiato nome. Cognition ha rinominato Windsurf in Devin Desktop il 2 giugno 2026 con un aggiornamento over-the-air; piani, estensioni, scorciatoie da tastiera e connessioni MCP esistenti sono passati senza alcun intervento dell'utente, e l'agente locale Cascade è stato sostituito da Devin Local, con Cascade deprecato il 1º luglio 2026. Il supporto MCP è rimasto intatto: i server «possono essere configurati in due modi: come comando locale (trasporto stdio) o come server remoto (trasporto HTTP)», con file utente, di progetto e di override locale esclusi da git, e gli strumenti MCP chiedono l'approvazione per impostazione predefinita. Se si sta seguendo un vecchio tutorial su Windsurf, i consigli sul protocollo restano validi: sono cambiati solo il nome del prodotto e i percorsi dei file.
Ogni client di questo confronto chiede conferma per impostazione predefinita. Questa è la buona notizia, ed è anche il punto in cui si nasconde il dettaglio utile, perché una richiesta a ogni chiamata è inutilizzabile e nessuna richiesta è insicura. La domanda di progettazione interessante è che cosa fa un client nella zona intermedia.
I meccanismi in uso sono tre, e la maggior parte dei client li combina:
.mcp.json
funzionano così.writes di Codex «chiede conferma per gli
strumenti che non sono marcati come di sola lettura» — cercare è silenzioso,
modificare no.mcp:<server>:<tool_name> di Zed e
tools.<tool>.approval_mode di Codex permettono di decidere strumento per
strumento, l'unico meccanismo abbastanza preciso quando un solo server offre
entrambi i tipi.L'asimmetria è l'aspetto che conviene capire, perché dipende dall'onestà del server nel dichiarare quali dei suoi strumenti modificano qualcosa. Un server che dichiara tutto di sola lettura vanifica ogni politica del client sopra di esso. Quando si collega un server scritto da altri, quella dichiarazione fa parte di ciò a cui si accorda fiducia — la stessa valutazione trattata in che cosa rende sicuro l'accesso in scrittura via MCP.
I server locali non sono automaticamente la scelta migliore, e un confronto che concludesse il contrario starebbe vendendo qualcosa.
Un server remoto è la forma giusta quando i dati non si trovano sulla macchina in partenza — un issue tracker ospitato, un'API di pagamenti, una dashboard di monitoraggio. Mettere un processo locale davanti a un servizio cloud aggiunge un salto e non risolve nulla. I server remoti funzionano anche da un browser, da un telefono e dal portatile di un collega senza che nessuno installi niente, e un unico operatore corregge un bug per tutti in una volta. Se il vincolo di un team è «deve funzionare per cinquanta persone senza diritti di amministratore», il solo remoto non è una limitazione: è il requisito.
I server locali vincono su un insieme di casi più stretto ma più netto: i dati sono già sulla macchina, sono abbastanza sensibili da preferire che non viaggino, oppure non esiste una versione ospitata a cui collegarsi. Le registrazioni delle proprie riunioni sono tutte e tre le cose insieme.
Il server MCP di Speak-Y è un processo stdio locale, ed è questo a collocarlo nella colonna di sinistra della tabella per ogni client che ne ha una. L'assistente cerca tra le registrazioni e legge trascrizioni, riassunti e action item direttamente dalla libreria presente sulla macchina, senza alcun ponte cloud nel percorso e senza niente da esporre con un tunnel.
La separazione tra lettura e scrittura si allinea ai meccanismi dei client
descritti sopra. Per leggere non serve altro in esecuzione. I comandi che
modificano qualcosa — tag, titoli, nomi dei partecipanti, ritrascrizione,
condivisione in un canale di team — passano dall'app Speak-Y in esecuzione, sono
dichiarati al client MCP come operazioni che modificano dati, così il client
chiede conferma prima di eseguirli a meno che non si conceda un permesso
permanente, e vengono registrati nell'app, dove possono anche essere
disattivati. Se si preferisce che un assistente possa soltanto leggere, avviare
il server con --read-only nella configurazione di quel client fa sì che i
comandi che modificano non gli vengano nemmeno pubblicati.
L'installazione richiede un clic da Impostazioni → Integrazioni ed è gratuita su tutti i piani, incluso Free — cosa non scontata tra gli strumenti per gli appunti delle riunioni, dove MCP tende a stare dietro a un livello cloud a pagamento.
Per ChatGPT in particolare, la conseguenza pratica di tutto questo è che la superficie da usare è l'app desktop. Condivide la configurazione di Codex, quindi il server aggiunto per Codex CLI è già lì. La guida ChatGPT desktop e i dati personali percorre quella configurazione e, per valutare più in generale le due forme l'una contro l'altra, MCP locale o cloud parla di che cosa espone ciascuna e a chi.
Dipende da quale ChatGPT. L'app desktop può farlo: condivide la configurazione MCP con Codex CLI e l'estensione IDE attraverso lo stesso host Codex, e quella configurazione supporta server STDIO avviati da un comando sulla macchina locale. ChatGPT sul web non può — un connettore web è un server MCP remoto raggiunto via HTTPS, quindi un server locale va prima esposto attraverso un tunnel. Verificato il 15 agosto 2026.
Un server stdio locale è un programma che il client avvia sulla macchina e con cui parla tramite standard input e output. Nessun processo resta in ascolto su una porta di rete e nessun dato esce dal computer per raggiungerlo. Un server remoto è un endpoint HTTPS a cui il client si collega via internet, di solito con un token di autenticazione, e le richieste viaggiano fino a chi lo gestisce.
Tutti i client principali chiedono conferma per impostazione predefinita, ma la granularità cambia. Cursor chiede l'approvazione prima di usare gli strumenti MCP e in modalità Auto-review esegue subito quelli in lista di permessi; Zed chiede conferma prima di qualsiasi azione di uno strumento e accetta regole per singolo strumento come mcp:server:tool_name; Codex ha quattro modalità di approvazione, di cui writes chiede conferma solo per gli strumenti non marcati come di sola lettura. Anche i server possono marcare i singoli strumenti come di sola lettura, così il client sa quali sono sicuri.
No. Cognition ha rinominato Windsurf in Devin Desktop il 2 giugno 2026 con un aggiornamento over-the-air, e l'agente locale che prima si chiamava Cascade è stato sostituito da Devin Local, con Cascade deprecato il 1º luglio 2026. Piani, estensioni, scorciatoie da tastiera e connessioni MCP esistenti sono passati senza alcun intervento da parte dell'utente.
Tutti quelli di questo confronto in grado di avviare un server locale, perché il server MCP di Speak-Y è un processo locale e non un endpoint ospitato: Claude Code, Claude Desktop, l'app desktop di ChatGPT e Codex, Cursor, VS Code, Zed e Devin Desktop. È gratuito su ogni piano, incluso Free, e si installa con un clic da Impostazioni → Integrazioni.