Tre editor, tre risposte diverse alla stessa domanda. VS Code registra i server
MCP sotto una chiave di primo livello chiamata servers, Zed chiama la stessa
cosa context_servers, e Windsurf — che dal 2 giugno 2026 si chiama Devin
Desktop — usa mcpServers, la chiave adottata dalla maggior parte degli altri
client. Se la chiave è sbagliata, il client parte in silenzio, senza strumenti e
senza alcun errore.
Il server in sé non cambia. Un server MCP locale è un programma avviato su stdio
con un comando e qualche argomento, e ognuno di questi editor esegue lo stesso
binario allo stesso modo. Quello che si fa davvero in ciascun editor è registrare
due valori — command e args — dentro la forma di configurazione di
quell'editor. Questa guida indica per ognuno il file esatto, la chiave esatta e
il passaggio di verifica esatto, tutto controllato sulla documentazione dei
fornitori il 14 agosto 2026.
Se il protocollo in sé è una novità, che cos'è un server MCP chiarisce prima il vocabolario. Per Claude e Cursor esistono guide dedicate e di solito basta un clic; questo articolo riguarda i tre casi in cui non è così.
Ogni server MCP locale è descritto dagli stessi due valori:
command = "/absolute/path/to/the/executable"
args = ["--some-flag"]
È tutto qui il contenuto. Un percorso assoluto conta più di quanto sembri: è
l'editor ad avviare il processo, spesso senza la shell di login, quindi tutto ciò
che dipende da PATH o da un alias della shell funziona nel terminale e
fallisce nel client. Conviene copiare il percorso completo.
Tutto il resto di questa guida è confezionamento: in quale file finiscono i due valori e come si chiama la chiave che li racchiude.
servers, non mcpServersVS Code legge la configurazione MCP da un file chiamato mcp.json, in uno di due
posti:
.vscode/mcp.json — viaggia insieme al repository, quindi
è il posto giusto per i server che deve avere tutta la squadra.mcp.json che si apre con il comando
MCP: Open User Configuration dalla Command Palette — il posto giusto per le
fonti di dati personali.Il primo livello del file contiene servers, più le sezioni facoltative inputs
e sandbox. Un server locale si presenta così:
{
"servers": {
"my-server": {
"type": "stdio",
"command": "/absolute/path/to/the/executable",
"args": ["--mcp"]
}
}
}
Chi arriva da un altro client trova due sorprese. La prima è che la chiave è
davvero servers: un blocco mcpServers incollato non è un errore che VS Code
segnala, è semplicemente una chiave che non legge. La seconda è che VS Code
limita una singola richiesta di chat a 128 strumenti attivi, quindi su una
macchina con molti server registrati può essere necessario disattivarne qualcuno
prima che il proprio diventi raggiungibile; il pulsante Configure Tools nella
vista Chat è il posto dove farlo.
Esiste anche una forma portabile: per la configurazione condivisa con l'Agent
Host e con gli altri strumenti Copilot, VS Code documenta un .mcp.json
nell'area di lavoro oppure un ~/.copilot/mcp-config.json nel profilo utente,
che l'Agent Host legge nativamente.
Per verificare: si esegue MCP: List Servers dalla Command Palette, si seleziona il proprio server e con Show Output se ne legge il registro. Un server che non è riuscito a partire lo dichiara lì, di solito indicando il percorso che non ha potuto eseguire.
Zed chiama i server MCP context server, e la chiave delle impostazioni segue:
context_servers. Conviene aprire il file delle impostazioni con l'azione
zed: open settings file invece di cercarne il percorso, poi aggiungere:
{
"context_servers": {
"my-server": {
"command": "/absolute/path/to/the/executable",
"args": ["--mcp"],
"env": {}
}
}
}
I server remoti usano url e, facoltativamente, headers nello stesso blocco:
è questo che rende context_servers l'unico posto in cui convivono entrambi i
trasporti. Zed offre anche una via dall'interfaccia:
Settings → AI → MCP Servers, poi Add Server → Add Local Server, che
scrive la stessa voce. Molti server diffusi sono inoltre confezionati come
estensioni di Zed, installabili da quella schermata, ma un server che viaggia
dentro un'applicazione desktop non compare in quell'elenco: la strada è la voce
manuale qui sopra.
Per verificare: si apre Settings → AI → MCP Servers e si guarda l'indicatore accanto al proprio server. Un pallino verde con il suggerimento Server is active significa che l'handshake è riuscito.
È la parte che gran parte delle guide in rete non ha ancora recepito. Cognition
ha rinominato Windsurf in Devin Desktop il 2 giugno 2026, con un normale
aggiornamento over-the-air: nessuna reinstallazione, nessuna procedura guidata di
migrazione, e piani, estensioni e scorciatoie da tastiera sono passati invariati.
I vecchi domini di marketing ora reindirizzano a devin.ai e la documentazione
vive su docs.devin.ai.
Per MCP la conseguenza pratica è che ora le destinazioni possibili sono due, e quale sia quella giusta dipende dall'agente con cui si sta parlando:
| Agente | File di configurazione MCP | Chiave di primo livello |
|---|---|---|
| Cascade (versione precedente) | ~/.codeium/windsurf/mcp_config.json |
mcpServers |
| Devin Local (versione attuale) | ~/.config/devin/mcp_config.json |
mcpServers |
La documentazione di Cascade descrive ancora il percorso
~/.codeium/windsurf/: l'agente è rimasto disponibile fino al 1º luglio 2026,
per consentire una migrazione graduale. Il suo successore, Devin Local, è una
riscrittura in Rust che Cognition descrive come fino al 30% più efficiente
nell'uso dei token e con supporto per i subagenti, ed è l'agente predefinito per
le nuove schede. Devin Local non legge il file di Cascade: usa la configurazione
della Devin CLI, dove i server legati al progetto stanno in
.devin/mcp_config.json e quelli personali con le chiavi API nel file
.devin/mcp_config.local.json, escluso dal versionamento.
Se un server aggiunto mesi fa ha smesso di essere visto dall'agente, il motivo più probabile è questo: il file va bene, è cambiato l'agente che lo legge.
Un altro limite da conoscere: Cascade tiene l'agente a un massimo di 100 strumenti complessivi alla volta. Come in VS Code, una configurazione affollata può spingere gli strumenti del proprio server fuori portata senza che nulla sembri rotto.
Per verificare: si clicca l'icona MCPs in alto a destra nel pannello di Cascade per aprire la pagina delle impostazioni MCP, dove gli strumenti di ogni server sono elencati e disattivabili singolarmente. Un server senza strumenti elencati non è partito.
| VS Code | Zed | Devin Desktop (Windsurf) | |
|---|---|---|---|
| File | .vscode/mcp.json, oppure mcp.json nel profilo utente |
file delle impostazioni (zed: open settings file) |
~/.codeium/windsurf/mcp_config.json (Cascade) oppure ~/.config/devin/mcp_config.json (Devin Local) |
| Chiave | servers |
context_servers |
mcpServers |
Serve type: stdio |
Sì | No | No |
| Via dall'interfaccia | MCP: Add Server | Settings → AI → MCP Servers | icona MCPs nel pannello di Cascade |
| Tetto degli strumenti | 128 per richiesta | Non documentato | 100 in totale (Cascade) |
L'unica riga da leggere due volte è quella della chiave. Ogni altra differenza si annuncia con un messaggio di errore; una chiave sbagliata no.
Claude Desktop, Claude Code e Cursor usano tutti mcpServers e tengono il file
in un posto prevedibile: rispettivamente claude_desktop_config.json nella
cartella di supporto dell'app, ~/.claude.json e ~/.cursor/mcp.json. È per
questa coerenza che tante applicazioni offrono un installatore a un clic per quei
tre e si fermano lì.
I tre editor di questa guida deviano ciascuno su un asse: VS Code sul nome della chiave, Zed sul nome della chiave e sul vocabolario, Devin Desktop sulla posizione del file dopo il cambio di nome. Niente di difficile, ma niente di indovinabile: ed è per questo che copiare il JSON direttamente dal README di un fornitore produce così spesso un client che parte senza strumenti.
Dopo aver modificato a mano uno di questi file, conviene riavviare l'editor. Quasi tutti i client leggono la configurazione MCP all'avvio, e una configurazione che sembra corretta ma non è mai stata riletta è di gran lunga la causa più comune di «l'assistente non vede i miei dati».
Speak-Y include il proprio server MCP dentro l'applicazione macOS, quindi non c'è nulla da installare da npm né alcun token da emettere. Da Impostazioni → Integrazioni, Installa accanto a un client rilevato scrive la configurazione per Claude Code, Claude Desktop e Cursor, ciascuna nel formato di quel client. VS Code, Zed e Devin Desktop non sono in quell'elenco: per loro si copiano gli stessi due valori nelle forme viste sopra:
command = "/Applications/Speak-Y.app/Contents/MacOS/Speak-Y"
args = ["--mcp"]
Aggiungere --read-only come secondo argomento avvia il server senza nessuno
degli strumenti che modificano i dati: utile quando si vuole che l'agente di un
editor cerchi nelle trascrizioni senza mai toccare tag, nomi degli interlocutori
o canali del team. Le installazioni a un clic non aggiungono quel flag
di proposito: la sola lettura è una scelta, e come tale va fatta esplicitamente.
Quello che l'assistente riceve sono tredici strumenti: cinque che leggono — ricerca fra le registrazioni, trascrizioni, riassunti, punti d'azione, tag — e otto che modificano qualcosa, dichiarati al client come modificanti dei dati perché chieda prima di chiamarli. La lettura avviene in locale sulla libreria presente sulla macchina; i comandi che modificano passano dall'applicazione in esecuzione e restano registrati dove è possibile rileggerli. Il server è gratuito con qualsiasi piano.
Il motivo per cui in un editor questo pesa più che in un'applicazione di chat è il contesto. Un agente di programmazione capace di leggere che cosa è stato deciso davvero nella riunione di martedì non ha bisogno che la decisione venga ridigitata in un prompt: è lo stesso argomento di Cursor e il contesto delle riunioni, valido senza modifiche per VS Code e Zed una volta sistemata la configurazione qui sopra.
Se il server è registrato e l'assistente continua a non riportare nulla, la causa è quasi sempre una di quattro: l'editor non è stato riavviato, il percorso è rimasto vecchio dopo un aggiornamento dell'applicazione, il tetto degli strumenti è pieno, oppure il nome della chiave non è quello giusto per quel client. Conviene controllarle in quest'ordine prima di riscrivere qualsiasi cosa.
VS Code tiene i server MCP in un file chiamato mcp.json: o .vscode/mcp.json dentro un'area di lavoro, oppure un mcp.json nel profilo utente, che si apre con il comando MCP: Open User Configuration. A differenza della maggior parte dei client, la sua chiave di primo livello è servers e non mcpServers.
Zed usa context_servers nel file delle impostazioni, non mcpServers. La voce di un server locale prende command, args ed env; quella di un server remoto prende url e headers. Il file si apre con l'azione zed: open settings file, oppure il server si aggiunge da Settings → AI → MCP Servers.
No. Cognition ha rinominato Windsurf in Devin Desktop il 2 giugno 2026, con un aggiornamento over-the-air che ha lasciato intatti piani, estensioni e impostazioni. Cascade, l'agente che leggeva ~/.codeium/windsurf/mcp_config.json, è rimasto disponibile fino al 1º luglio 2026; il suo successore Devin Local legge invece i file di configurazione della Devin CLI.
No. Lo stesso binario di un server stdio funziona in ogni client: cambiano il file in cui va registrato e il nome della chiave di primo livello. Si scrivono command e args una volta sola e si incollano gli stessi due valori nella forma di configurazione di ciascun editor.
Ogni client ha il suo indicatore: in VS Code si esegue MCP: List Servers dalla Command Palette e si usa Show Output per leggere i registri, in Zed si apre Settings → AI → MCP Servers cercando il pallino verde con la scritta Server is active, e in Devin Desktop si apre l'icona MCPs nel pannello di Cascade per vedere elencati gli strumenti del server.