MCP instellen in VS Code, Zed en Windsurf: waar staat het bestand

Drie editors, drie verschillende antwoorden op dezelfde vraag. VS Code bewaart MCP-servers onder een sleutel op het hoogste niveau die servers heet, Zed noemt datzelfde context_servers, en Windsurf — dat sinds 2 juni 2026 Devin Desktop heet — gebruikt mcpServers, de sleutel die de meeste andere clients aanhouden. Staat de sleutel verkeerd, dan start de client stilletjes op zonder tools en zonder foutmelding.

De server zelf verandert daarbij niet. Een lokale MCP-server is een programma dat via stdio wordt gestart met een commando en een paar argumenten, en elk van deze editors draait hetzelfde binaire bestand op dezelfde manier. Wat u in elke editor eigenlijk doet, is twee waarden vastleggen — command en args — binnen de configuratievorm van die editor. Deze handleiding geeft per editor het exacte bestand, de exacte sleutel en de exacte controlestap, alles op 14 augustus 2026 gecontroleerd in de documentatie van de leveranciers.

Is het protocol zelf nieuw voor u, dan behandelt wat een MCP-server is eerst de begrippen. Voor Claude en Cursor bestaan eigen handleidingen en meestal volstaat één klik; dit artikel gaat over de drie waarvoor dat niet geldt.

Het deel dat overal hetzelfde is

Elke lokale MCP-server wordt door dezelfde twee waarden beschreven:

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

Dat is de hele inhoud. Een absoluut pad weegt zwaarder dan het lijkt: de editor start het proces zelf, vaak zonder uw login-shell, dus alles wat op PATH of op een shell-alias leunt werkt in uw terminal en faalt in de client. Kopieer het volledige pad.

Al het overige in deze handleiding is verpakking — in welk bestand de twee waarden terechtkomen en hoe de omliggende sleutel heet.

VS Code: de sleutel is servers, niet mcpServers

VS Code leest de MCP-configuratie uit een bestand met de naam mcp.json, op een van twee plekken:

Op het hoogste niveau staan servers en verder de optionele secties inputs en sandbox. Een lokale server ziet er zo uit:

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

Twee dingen verrassen wie van een andere client overstapt. Ten eerste is de sleutel echt servers — een geplakt mcpServers-blok is geen fout die VS Code meldt, het is gewoon een sleutel die het niet leest. Ten tweede beperkt VS Code één chatverzoek tot 128 ingeschakelde tools, dus op een machine met veel geregistreerde servers moeten er misschien een paar uit voordat de uwe bereikbaar is; de knop Configure Tools in de Chat-weergave is daarvoor de plek.

Er is ook een draagbare vorm: voor configuratie die u deelt met de Agent Host en de overige Copilot-tooling documenteert VS Code een .mcp.json in de werkruimte of een ~/.copilot/mcp-config.json in het gebruikersprofiel, die de Agent Host zelf leest.

Controleren: voer MCP: List Servers uit vanuit de Command Palette, kies uw server en lees het logboek via Show Output. Een server die niet kon starten, meldt dat daar, meestal met het pad dat hij niet kon uitvoeren.

Zed: een andere naam voor hetzelfde idee

Zed noemt MCP-servers context servers, en de instellingssleutel volgt daarop: context_servers. Open het instellingenbestand met de actie zed: open settings file in plaats van naar het pad te zoeken, en voeg toe:

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

Servers op afstand gebruiken url en optioneel headers in hetzelfde blok, waardoor context_servers de enige plek is waar beide transporten wonen. Zed heeft ook een route via de interface: Settings → AI → MCP Servers, dan Add Server → Add Local Server, wat dezelfde regel voor u schrijft. Veel gangbare servers zijn daarnaast als Zed-extensie verpakt en vanaf dat scherm te installeren — maar een server die in een desktopapplicatie meekomt, staat niet in die lijst, en dan is de handmatige regel hierboven de weg.

Controleren: open Settings → AI → MCP Servers en kijk naar de indicator naast uw server. Een groene stip met de tooltip Server is active betekent dat de handshake is gelukt.

Windsurf heet nu Devin Desktop, en dat verplaatst het bestand

Dit is het deel dat de meeste handleidingen op internet nog niet hebben ingehaald. Cognition heeft Windsurf op 2 juni 2026 hernoemd tot Devin Desktop, uitgeleverd als een gewone over-the-air update — geen herinstallatie, geen migratiewizard, en abonnementen, extensies en sneltoetsen gingen ongewijzigd mee. De oude marketingdomeinen leiden nu door naar devin.ai en de documentatie staat op docs.devin.ai.

Voor MCP is het praktische gevolg dat er nu twee mogelijke bestemmingen zijn, en welke de juiste is hangt af van de agent waarmee u praat:

Agent MCP-configuratiebestand Sleutel op hoogste niveau
Cascade (oud) ~/.codeium/windsurf/mcp_config.json mcpServers
Devin Local (huidig) ~/.config/devin/mcp_config.json mcpServers

De documentatie van Cascade beschrijft nog steeds het pad ~/.codeium/windsurf/ — de agent bleef tot 1 juli 2026 beschikbaar zodat mensen stapsgewijs konden overstappen. Zijn opvolger, Devin Local, is een herschrijving in Rust die Cognition omschrijft als tot 30% zuiniger met tokens en met ondersteuning voor subagents, en hij is de standaardagent voor nieuwe tabbladen. Devin Local leest het Cascade-bestand niet; hij gebruikt de configuratie van de Devin CLI, waarin projectgebonden servers in .devin/mcp_config.json staan en persoonlijke met API-sleutels in het door gitignore uitgesloten .devin/mcp_config.local.json.

Hebt u maanden geleden een server toegevoegd en ziet uw agent hem opeens niet meer, dan is dit de waarschijnlijkste reden: het bestand klopt nog, de agent die het leest is veranderd.

Nog een grens die het weten waard is: Cascade houdt de agent op maximaal 100 tools tegelijk. Net als bij VS Code kan een volle configuratie de tools van uw server buiten bereik duwen zonder dat er iets kapot lijkt.

Controleren: klik op het icoon MCPs rechtsboven in het Cascade-paneel om de MCP-instellingenpagina te openen, waar de tools van elke server staan opgesomd en afzonderlijk uit te zetten zijn. Een server zonder tools in die lijst is niet gestart.

Naast elkaar

VS Code Zed Devin Desktop (Windsurf)
Bestand .vscode/mcp.json, of mcp.json in het gebruikersprofiel instellingenbestand (zed: open settings file) ~/.codeium/windsurf/mcp_config.json (Cascade) of ~/.config/devin/mcp_config.json (Devin Local)
Sleutel servers context_servers mcpServers
type: stdio nodig Ja Nee Nee
Route via de interface MCP: Add Server Settings → AI → MCP Servers MCPs-icoon in het Cascade-paneel
Toolplafond 128 per verzoek Niet gedocumenteerd 100 in totaal (Cascade)

De ene rij om twee keer te lezen is de rij met de sleutel. Elk ander verschil kondigt zichzelf aan met een foutmelding; een verkeerde sleutel niet.

Wat anders is dan bij Claude en Cursor

Claude Desktop, Claude Code en Cursor gebruiken alle drie mcpServers en bewaren het bestand op een voorspelbare plek — respectievelijk claude_desktop_config.json in de supportmap van de app, ~/.claude.json en ~/.cursor/mcp.json. Door die eenvormigheid leveren zoveel apps een installatie met één klik voor precies die drie en houden ze daarna op.

De drie editors uit deze handleiding wijken elk op één as af: VS Code op de naam van de sleutel, Zed op zowel de naam als het vocabulaire, Devin Desktop op de locatie van het bestand na de naamswijziging. Niets ervan is moeilijk, maar niets ervan valt te raden — en precies daarom levert het rechtstreeks kopiëren van JSON uit de README van een leverancier zo vaak een client op die zonder tools start.

Start de editor opnieuw op nadat u een van deze bestanden met de hand hebt bewerkt. De meeste clients lezen de MCP-configuratie bij het opstarten, en een configuratie die klopt maar nooit opnieuw is gelezen, is veruit de meest voorkomende oorzaak van "de assistent ziet mijn gegevens niet".

Hoe dit er in Speak-Y uitziet

Speak-Y levert zijn MCP-server mee in de macOS-app, dus er is niets uit npm te installeren en geen token uit te geven. Vanuit Instellingen → Integraties schrijft Installeren naast een herkende client de configuratie voor Claude Code, Claude Desktop en Cursor, elk in de eigen vorm van die client. VS Code, Zed en Devin Desktop staan niet in die lijst — daarvoor kopieert u dezelfde twee waarden naar de vormen hierboven:

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

--read-only als tweede argument start de server zonder alle tools die gegevens wijzigen — handig wanneer de agent van een editor wel transcripten mag doorzoeken, maar nooit tags, sprekersnamen of teamkanalen mag aanraken. Installaties met één klik zetten die vlag bewust niet: alleen-lezen is een keuze, dus maakt u hem uitdrukkelijk.

Wat de assistent vervolgens krijgt, zijn dertien tools: vijf die lezen — zoeken door opnames, transcripten, samenvattingen, actiepunten, tags — en acht die iets wijzigen, die aan de client als gegevenswijzigend worden aangemerkt zodat hij eerst vraagt voordat hij ze aanroept. Lezen gebeurt lokaal tegen de bibliotheek op uw machine; de wijzigende opdrachten lopen via de draaiende app en worden vastgelegd op een plek waar u ze achteraf kunt teruglezen. De server is gratis in elk abonnement.

Dat dit in een editor zwaarder weegt dan in een chat-app, komt door context. Een codeeragent die kan lezen wat er dinsdag in het gesprek werkelijk is besloten, hoeft die beslissing niet opnieuw in een prompt getypt te krijgen — hetzelfde argument als in Cursor en vergadercontext, dat onveranderd geldt voor VS Code en Zed zodra de configuratie hierboven staat.

Is uw server geregistreerd en meldt de assistent nog steeds niets, dan ligt het bijna altijd aan een van vier dingen: de editor is niet opnieuw gestart, het pad is verouderd na een app-update, het toolplafond zit vol, of de sleutelnaam klopt niet voor die client. Loop ze in die volgorde na voordat u iets herschrijft.

FAQ

Waar staat het MCP-configuratiebestand in VS Code?

VS Code bewaart MCP-servers in een bestand met de naam mcp.json — of .vscode/mcp.json binnen een werkruimte, of een mcp.json in uw gebruikersprofiel, die u opent met het commando MCP: Open User Configuration. Anders dan bij de meeste clients is de sleutel op het hoogste niveau servers en niet mcpServers.

Wat is de JSON-sleutel voor MCP-servers in Zed?

Zed gebruikt context_servers in het instellingenbestand, niet mcpServers. Een regel voor een lokale server neemt command, args en env; een server op afstand neemt url en headers. Open het bestand met de actie zed: open settings file, of voeg de server toe via Settings → AI → MCP Servers.

Heet Windsurf nog steeds Windsurf?

Nee. Cognition heeft Windsurf op 2 juni 2026 hernoemd tot Devin Desktop, uitgeleverd als een over-the-air update waarbij abonnementen, extensies en instellingen intact bleven. Cascade, de agent die ~/.codeium/windsurf/mcp_config.json las, bleef beschikbaar tot 1 juli 2026; zijn opvolger Devin Local leest in plaats daarvan de configuratiebestanden van de Devin CLI.

Heb ik voor elke editor een andere MCP-server nodig?

Nee. Hetzelfde binaire bestand van een stdio-server werkt in elke client — wat verschilt is het bestand waarin u hem vastlegt en de naam van de sleutel op het hoogste niveau. U schrijft command en args één keer en plakt diezelfde twee waarden in de configuratievorm van elke editor.

Hoe controleer ik of een MCP-server echt verbinding heeft gemaakt?

Elke client heeft zijn eigen indicator: in VS Code voert u MCP: List Servers uit vanuit de Command Palette en gebruikt u Show Output voor de logs, in Zed opent u Settings → AI → MCP Servers en let u op een groene stip met de tekst Server is active, en in Devin Desktop opent u het MCPs-icoon in het Cascade-paneel om de tools van de server opgesomd te zien.