MCP no VS Code, Zed e Windsurf: onde fica a configuração

Três editores, três respostas diferentes para a mesma pergunta. O VS Code guarda os servidores MCP sob uma chave de primeiro nível chamada servers, o Zed chama a mesma coisa de context_servers, e o Windsurf — que se chama Devin Desktop desde 2 de junho de 2026 — usa mcpServers, a chave que a maioria dos outros clientes usa. Erre a chave e o cliente sobe em silêncio: sem ferramentas e sem erro nenhum.

O servidor em si não muda. Um servidor MCP local é um programa iniciado por stdio com um comando e alguns argumentos, e cada um desses editores executa o mesmo binário do mesmo jeito. O que você realmente faz em cada editor é registrar dois valores — command e args — dentro do formato de configuração daquele editor. Este guia dá o arquivo exato, a chave exata e o passo de verificação exato de cada um, tudo conferido na documentação dos fornecedores em 14 de agosto de 2026.

Se o protocolo em si é novidade para você, o que é um servidor MCP cobre o vocabulário primeiro. Se você usa Claude ou Cursor, esses têm os próprios guias e costumam instalar com um clique; este artigo é sobre os três que não.

A parte que é igual em todo lugar

Todo servidor MCP local é descrito pelos mesmos dois valores:

command = "/absolute/path/to/the/executable"
args    = ["--some-flag"]

É essa a carga inteira. O caminho absoluto importa mais do que parece: o editor inicia o processo por conta própria, muitas vezes sem passar pelo seu shell de login, então tudo que depende do PATH ou de um alias de shell vai funcionar no seu terminal e falhar no cliente. Copie o caminho completo.

Todo o resto deste guia é empacotamento: em qual arquivo os dois valores entram e como se chama a chave em volta deles.

VS Code: a chave é servers, não mcpServers

O VS Code lê a configuração de MCP de um arquivo chamado mcp.json, em um de dois lugares:

O primeiro nível do arquivo tem servers, mais as seções opcionais inputs e sandbox. Um servidor local fica assim:

{
  "servers": {
    "my-server": {
      "type": "stdio",
      "command": "/absolute/path/to/the/executable",
      "args": ["--mcp"]
    }
  }
}

Duas coisas surpreendem quem vem de outro cliente. A primeira é que a chave é mesmo servers: um bloco mcpServers colado ali não é um erro que o VS Code reporte, é simplesmente uma chave que ele não lê. A segunda é que o VS Code limita cada requisição de chat a 128 ferramentas ativas, de modo que uma máquina com muitos servidores registrados pode precisar que alguns sejam desligados antes que o seu fique alcançável; o botão Configure Tools na visão de Chat é onde isso acontece.

Há também um formato portável: para a configuração compartilhada com o Agent Host e com o restante do ferramental do Copilot, o VS Code documenta um .mcp.json do espaço de trabalho ou um ~/.copilot/mcp-config.json do usuário, que o Agent Host lê nativamente.

Para verificar: rode MCP: List Servers pela Command Palette, selecione o seu servidor e use Show Output para ler o log dele. Um servidor que não subiu diz isso ali, normalmente junto com o caminho que não conseguiu executar.

Zed: outro nome para a mesma ideia

O Zed chama os servidores MCP de context servers, e a chave de ajustes acompanha: context_servers. Abra o arquivo de ajustes com a ação zed: open settings file em vez de caçar o caminho, e então acrescente:

{
  "context_servers": {
    "my-server": {
      "command": "/absolute/path/to/the/executable",
      "args": ["--mcp"],
      "env": {}
    }
  }
}

Servidores remotos usam url e, opcionalmente, headers no mesmo bloco, o que faz de context_servers o único lugar onde os dois transportes convivem. O Zed também tem um caminho pela interface: Settings → AI → MCP Servers e depois Add Server → Add Local Server, que escreve a mesma entrada por você. Muitos servidores populares vêm ainda empacotados como extensões do Zed, instaláveis por essa tela, mas um servidor que é entregue dentro de um aplicativo de desktop não vai estar nessa lista, e a entrada manual acima é o caminho.

Para verificar: abra Settings → AI → MCP Servers e olhe o indicador ao lado do seu servidor. Um ponto verde com a dica Server is active quer dizer que o aperto de mão deu certo.

O Windsurf agora é Devin Desktop, e isso muda onde fica o arquivo

Esta é a parte com a qual a maioria dos guias da web ainda não se atualizou. A Cognition renomeou o Windsurf para Devin Desktop em 2 de junho de 2026, na forma de uma atualização remota comum: sem reinstalar, sem assistente de migração, e com planos, extensões e atalhos de teclado preservados. Os antigos domínios de marketing agora redirecionam para devin.ai, e a documentação vive em docs.devin.ai.

Para MCP, a consequência prática é que agora existem dois destinos possíveis, e qual deles é o certo depende do agente com quem você está falando:

Agente Arquivo de configuração MCP Chave de primeiro nível
Cascade (legado) ~/.codeium/windsurf/mcp_config.json mcpServers
Devin Local (atual) ~/.config/devin/mcp_config.json mcpServers

A documentação do Cascade ainda descreve o caminho ~/.codeium/windsurf/: ele permaneceu disponível até 1 de julho de 2026 para permitir uma migração gradual. O sucessor, o Devin Local, é uma reescrita em Rust que a Cognition descreve como até 30% mais eficiente em tokens e com suporte a subagentes, e é o agente padrão das abas novas. O Devin Local não lê o arquivo do Cascade: ele usa a configuração da CLI do Devin, na qual os servidores no escopo do projeto ficam em .devin/mcp_config.json e os pessoais, com chaves de API, no .devin/mcp_config.local.json, que fica fora do repositório pelo gitignore.

Se você acrescentou um servidor meses atrás e o seu agente parou de enxergá-lo, esta é a explicação mais provável: o arquivo está certo, quem mudou foi o agente que o lê.

Mais um limite que vale conhecer: o Cascade limita o agente a 100 ferramentas no total por vez. Como no VS Code, uma configuração cheia pode empurrar as ferramentas do seu servidor para fora do alcance sem que nada pareça quebrado.

Para verificar: clique no ícone MCPs no canto superior direito do painel do Cascade para abrir a página de ajustes de MCP, onde as ferramentas de cada servidor são listadas e podem ser ligadas uma a uma. Um servidor sem ferramenta alguma listada não subiu.

Lado a lado

VS Code Zed Devin Desktop (Windsurf)
Arquivo .vscode/mcp.json ou o mcp.json do perfil do usuário arquivo de ajustes (zed: open settings file) ~/.codeium/windsurf/mcp_config.json (Cascade) ou ~/.config/devin/mcp_config.json (Devin Local)
Chave servers context_servers mcpServers
Precisa de type: stdio Sim Não Não
Caminho pela interface MCP: Add Server Settings → AI → MCP Servers Ícone MCPs no painel do Cascade
Teto de ferramentas 128 por requisição Não documentado 100 no total (Cascade)

A linha para ler duas vezes é a da chave. Toda outra diferença se anuncia com uma mensagem de erro; uma chave errada, não.

O que muda em relação a Claude e Cursor

Claude Desktop, Claude Code e Cursor usam todos mcpServers e todos guardam o arquivo em um lugar previsível: claude_desktop_config.json na pasta de suporte do aplicativo, ~/.claude.json e ~/.cursor/mcp.json, respectivamente. É essa consistência que explica por que tantos aplicativos entregam um instalador de um clique para esses três e param por aí.

Os três editores deste guia desviam cada um em um eixo: o VS Code no nome da chave, o Zed no nome da chave e no vocabulário, o Devin Desktop no local do arquivo depois da troca de nome. Nada disso é difícil, mas nada disso é adivinhável, e é por isso que copiar o JSON direto do README de um fornecedor produz tantas vezes um cliente que sobe sem ferramenta nenhuma.

Depois de editar qualquer um desses arquivos à mão, reinicie o editor. A maioria dos clientes lê a configuração de MCP na inicialização, e uma configuração que parece correta mas nunca foi relida é a causa isolada mais comum do «o assistente não vê os meus dados».

Como isso funciona no Speak-Y

O Speak-Y traz o servidor MCP dentro do aplicativo de macOS, então não há nada para instalar do npm nem token para emitir. Em Configurações → Integrações, o Instalar ao lado de um cliente detectado escreve a configuração de Claude Code, Claude Desktop e Cursor, cada uma no formato do próprio cliente. VS Code, Zed e Devin Desktop não estão nessa lista: para eles, você copia os mesmos dois valores nos formatos acima:

command = "/Applications/Speak-Y.app/Contents/MacOS/Speak-Y"
args    = ["--mcp"]

Acrescentar --read-only como segundo argumento sobe o servidor sem nenhuma das ferramentas que alteram dados — útil quando você quer que o agente de um editor busque nas transcrições sem nunca tocar em tags, nomes de participantes ou canais de equipe. As instalações de um clique de propósito não acrescentam essa opção: somente leitura é uma decisão, então você a toma de forma explícita.

O que o assistente ganha, então, são treze ferramentas: cinco que leem — busca nas gravações, transcrições, resumos, itens de ação, tags — e oito que alteram alguma coisa, declaradas ao cliente como alteradoras de dados para que ele pergunte antes de chamá-las. A leitura acontece localmente, contra a biblioteca na sua máquina; os comandos que alteram passam pelo aplicativo em execução e ficam registrados onde você pode lê-los depois. O servidor é gratuito em todos os planos.

O motivo de isso pesar mais em um editor do que em um aplicativo de conversa é o contexto. Um agente de código que consegue ler o que de fato foi decidido na reunião de terça não precisa que você redigite a decisão em um prompt: é o mesmo argumento de Cursor e o contexto das reuniões, que vale sem alteração para VS Code e Zed assim que a configuração acima estiver no lugar.

Se o seu servidor está registrado e o assistente continua sem relatar nada, a causa é quase sempre uma de quatro: o editor não foi reiniciado, o caminho ficou velho depois de uma atualização do aplicativo, o teto de ferramentas está cheio, ou o nome da chave está errado para aquele cliente. Confira nessa ordem antes de reescrever qualquer coisa.

FAQ

Onde fica o arquivo de configuração do MCP no VS Code?

O VS Code guarda os servidores MCP em um arquivo chamado mcp.json: ou .vscode/mcp.json dentro de um espaço de trabalho, ou um mcp.json no seu perfil de usuário, que você abre com o comando MCP: Open User Configuration. Diferente da maioria dos clientes, a chave de primeiro nível dele é servers, e não mcpServers.

Qual é a chave JSON dos servidores MCP no Zed?

O Zed usa context_servers no arquivo de ajustes, e não mcpServers. Uma entrada local leva command, args e env; uma remota leva url e headers. Abra o arquivo com a ação zed: open settings file, ou acrescente o servidor por Settings → AI → MCP Servers.

O Windsurf ainda se chama Windsurf?

Não. A Cognition renomeou o Windsurf para Devin Desktop em 2 de junho de 2026, na forma de uma atualização remota que preservou planos, extensões e ajustes. O Cascade, o agente que lia ~/.codeium/windsurf/mcp_config.json, continuou disponível até 1 de julho de 2026; o sucessor dele, o Devin Local, lê os arquivos de configuração da CLI do Devin.

Preciso de um servidor MCP diferente para cada editor?

Não. O mesmo binário stdio funciona em todos os clientes; o que muda é o arquivo em que você o registra e o nome da chave de primeiro nível. Você escreve o comando e os argumentos uma vez e cola esses mesmos dois valores no formato de configuração de cada editor.

Como conferir que um servidor MCP realmente conectou?

Cada cliente tem o próprio indicador: no VS Code, rode MCP: List Servers pela Command Palette e use Show Output para ler o log; no Zed, abra Settings → AI → MCP Servers e procure o ponto verde com Server is active; e no Devin Desktop, abra o ícone MCPs no painel do Cascade para ver as ferramentas do servidor listadas.