MCP en VS Code, Zed y Windsurf: dónde está la configuración

Tres editores, tres respuestas distintas a la misma pregunta. VS Code guarda los servidores MCP bajo una clave de primer nivel llamada servers, Zed llama a lo mismo context_servers, y Windsurf — que se llama Devin Desktop desde el 2 de junio de 2026 — usa mcpServers, la clave que emplea la mayoría de los demás clientes. Si se equivoca de clave, el cliente arranca en silencio: sin herramientas y sin ningún error.

El servidor en sí no cambia. Un servidor MCP local es un programa que se inicia por stdio con un comando y unos argumentos, y cada uno de estos editores ejecuta el mismo binario de la misma manera. Lo que usted hace realmente en cada editor es registrar dos valores — command y args — dentro de la forma de configuración propia de ese editor. Esta guía da el archivo exacto, la clave exacta y el paso de verificación exacto de cada uno, todo contrastado con la documentación de cada proveedor a 14 de agosto de 2026.

Si el protocolo en sí le resulta nuevo, qué es un servidor MCP cubre primero el vocabulario. Si usa Claude o Cursor, esos tienen sus propias guías y suelen instalarse con un clic; este artículo trata de los tres que no.

La parte que es idéntica en todas partes

Todo servidor MCP local se describe con los dos mismos valores:

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

Eso es toda la carga útil. La ruta absoluta importa más de lo que parece: el editor lanza el proceso por su cuenta, a menudo sin pasar por el shell de inicio de sesión, así que cualquier cosa que dependa de PATH o de un alias del shell funcionará en su terminal y fallará en el cliente. Copie la ruta completa.

Todo lo demás en esta guía es empaquetado: en qué archivo van esos dos valores y cómo se llama la clave que los envuelve.

VS Code: la clave es servers, no mcpServers

VS Code lee la configuración de MCP de un archivo llamado mcp.json, en uno de estos dos sitios:

El primer nivel del archivo contiene servers, más las secciones opcionales inputs y sandbox. Un servidor local tiene este aspecto:

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

Hay dos cosas que sorprenden a quien viene de otro cliente. La primera es que la clave es de verdad servers: un bloque mcpServers pegado tal cual no es un error que VS Code señale, es sencillamente una clave que no lee. La segunda es que VS Code limita cada petición de chat a 128 herramientas activas, de modo que en una máquina con muchos servidores registrados quizá haya que desactivar algunos para que el suyo sea alcanzable; el botón Configure Tools de la vista Chat es donde se hace eso.

También hay una forma portable: para la configuración compartida con el Agent Host y el resto de las herramientas de Copilot, VS Code documenta un .mcp.json del espacio de trabajo o un ~/.copilot/mcp-config.json de usuario, que el Agent Host lee de forma nativa.

Para comprobarlo: ejecute MCP: List Servers desde la Command Palette, seleccione su servidor y use Show Output para leer su registro. Un servidor que no arrancó lo dice ahí, normalmente junto con la ruta que no pudo ejecutar.

Zed: otro nombre para la misma idea

Zed llama a los servidores MCP context servers, y la clave de ajustes va en consecuencia: context_servers. Abra el archivo de ajustes con la acción zed: open settings file en lugar de buscar la ruta a mano, y añada:

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

Los servidores remotos usan url y, opcionalmente, headers en el mismo bloque, lo que convierte a context_servers en el único sitio donde conviven los dos transportes. Zed también tiene una ruta por interfaz: Settings → AI → MCP Servers y luego Add Server → Add Local Server, que escribe la misma entrada por usted. Muchos servidores populares vienen además empaquetados como extensiones de Zed, instalables desde esa pantalla, pero un servidor que se entrega dentro de una aplicación de escritorio no aparecerá en esa lista, y la entrada manual de arriba es el camino.

Para comprobarlo: abra Settings → AI → MCP Servers y mire el indicador que hay junto a su servidor. Un punto verde con el mensaje emergente Server is active significa que el saludo inicial funcionó.

Windsurf ahora es Devin Desktop, y eso cambia dónde está el archivo

Esta es la parte con la que la mayoría de las guías de la red no se ha puesto al día. Cognition renombró Windsurf como Devin Desktop el 2 de junio de 2026, en forma de actualización remota corriente: sin reinstalar, sin asistente de migración, y con los planes, las extensiones y los atajos de teclado intactos. Los antiguos dominios comerciales ahora redirigen a devin.ai, y la documentación vive en docs.devin.ai.

Para MCP, la consecuencia práctica es que ahora hay dos destinos posibles, y cuál es el correcto depende del agente con el que esté hablando:

Agente Archivo de configuración MCP Clave de primer nivel
Cascade (heredado) ~/.codeium/windsurf/mcp_config.json mcpServers
Devin Local (actual) ~/.config/devin/mcp_config.json mcpServers

La documentación de Cascade sigue describiendo la ruta ~/.codeium/windsurf/: el agente siguió disponible hasta el 1 de julio de 2026 para permitir una migración gradual. Su sucesor, Devin Local, es una reescritura en Rust que Cognition describe como hasta un 30 % más eficiente en tokens y con soporte de subagentes, y es el agente por defecto de las pestañas nuevas. Devin Local no lee el archivo de Cascade: usa la configuración de la CLI de Devin, donde los servidores del ámbito del proyecto van en .devin/mcp_config.json y los personales con claves de API en .devin/mcp_config.local.json, excluido por gitignore.

Si añadió un servidor hace meses y su agente dejó de verlo, esta es la razón más probable: el archivo está bien, lo que cambió es el agente que lo lee.

Otro límite que conviene conocer: Cascade limita el agente a 100 herramientas en total en un momento dado. Igual que en VS Code, una configuración cargada puede dejar las herramientas de su servidor fuera de alcance sin que nada parezca roto.

Para comprobarlo: pulse el icono MCPs de la esquina superior derecha del panel de Cascade para abrir la página de ajustes de MCP, donde se listan las herramientas de cada servidor y se pueden activar una a una. Un servidor sin herramientas listadas no arrancó.

Uno al lado del otro

VS Code Zed Devin Desktop (Windsurf)
Archivo .vscode/mcp.json o el mcp.json del perfil de usuario archivo de ajustes (zed: open settings file) ~/.codeium/windsurf/mcp_config.json (Cascade) o ~/.config/devin/mcp_config.json (Devin Local)
Clave servers context_servers mcpServers
Hace falta type: stdio No No
Ruta por interfaz MCP: Add Server Settings → AI → MCP Servers Icono MCPs del panel de Cascade
Tope de herramientas 128 por petición Sin documentar 100 en total (Cascade)

La fila que hay que leer dos veces es la de la clave. Cualquier otra diferencia se anuncia con un mensaje de error; una clave equivocada, no.

Qué cambia respecto a Claude y Cursor

Claude Desktop, Claude Code y Cursor usan todos mcpServers y todos guardan el archivo en un sitio predecible: claude_desktop_config.json en la carpeta de soporte de la aplicación, ~/.claude.json y ~/.cursor/mcp.json, respectivamente. Esa coherencia es la razón de que tantas aplicaciones incluyan un instalador de un clic para esos tres y ahí se detengan.

Los tres editores de esta guía se desvían cada uno en un eje: VS Code en el nombre de la clave, Zed en el nombre de la clave y en el vocabulario, y Devin Desktop en la ubicación del archivo tras el cambio de nombre. Nada de esto es difícil, pero nada de esto se adivina, y por eso copiar el JSON directamente del README de un proveedor produce tan a menudo un cliente que arranca sin herramientas.

Después de editar a mano cualquiera de estos archivos, reinicie el editor. La mayoría de los clientes leen la configuración de MCP al arrancar, y una configuración que parece correcta pero que nunca se volvió a leer es la causa más frecuente del «el asistente no ve mis datos».

Cómo se ve esto en Speak-Y

Speak-Y incluye su servidor MCP dentro de la aplicación de macOS, así que no hay nada que instalar desde npm ni ningún token que emitir. Desde Configuración → Integraciones, Instalar junto a un cliente detectado escribe la configuración de Claude Code, Claude Desktop y Cursor, cada una en su propio formato. VS Code, Zed y Devin Desktop no están en esa lista: para ellos copie los dos mismos valores en las formas de arriba:

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

Añadir --read-only como segundo argumento arranca el servidor sin ninguna de las herramientas que cambian datos, algo útil cuando quiere que el agente de un editor busque en las transcripciones pero no toque nunca las etiquetas, los nombres de los participantes ni los canales de equipo. Las instalaciones de un clic no añaden esa opción a propósito: la lectura sola es una decisión, así que la toma usted de forma explícita.

Lo que el asistente recibe entonces son trece herramientas: cinco que leen — búsqueda en las grabaciones, transcripciones, resúmenes, tareas pendientes, etiquetas — y ocho que cambian algo, declaradas al cliente como modificadoras de datos para que pregunte antes de llamarlas. La lectura ocurre en local contra la biblioteca de su máquina; los comandos que cambian algo pasan por la aplicación en ejecución y quedan registrados donde usted puede leerlos después. El servidor es gratuito en todos los planes.

Que esto importe más en un editor que en una aplicación de chat es una cuestión de contexto. Un agente de código capaz de leer lo que de verdad se decidió en la llamada del martes no necesita que usted vuelva a teclear la decisión en un prompt: es el mismo argumento de Cursor y el contexto de las reuniones, que se aplica sin cambios a VS Code y a Zed en cuanto la configuración de arriba está puesta.

Si su servidor está registrado y el asistente sigue sin informar de nada, la causa es casi siempre una de estas cuatro: no se reinició el editor, la ruta quedó obsoleta tras actualizar la aplicación, el tope de herramientas está lleno, o el nombre de la clave no es el que corresponde a ese cliente. Compruébelas en ese orden antes de reescribir nada.

FAQ

¿Dónde está el archivo de configuración de MCP en VS Code?

VS Code guarda los servidores MCP en un archivo llamado mcp.json: o bien .vscode/mcp.json dentro de un espacio de trabajo, o bien un mcp.json en su perfil de usuario, que se abre con el comando MCP: Open User Configuration. A diferencia de la mayoría de los clientes, su clave de primer nivel es servers y no mcpServers.

¿Cuál es la clave JSON de los servidores MCP en Zed?

Zed usa context_servers en su archivo de ajustes, no mcpServers. Una entrada local lleva command, args y env; una remota lleva url y headers. Abra el archivo con la acción zed: open settings file, o añada el servidor desde Settings → AI → MCP Servers.

¿Windsurf se sigue llamando Windsurf?

No. Cognition renombró Windsurf como Devin Desktop el 2 de junio de 2026, mediante una actualización remota que mantuvo intactos los planes, las extensiones y los ajustes. Cascade, el agente que leía ~/.codeium/windsurf/mcp_config.json, siguió disponible hasta el 1 de julio de 2026; su sucesor, Devin Local, lee en su lugar los archivos de configuración de la CLI de Devin.

¿Hace falta un servidor MCP distinto para cada editor?

No. El mismo binario stdio funciona en todos los clientes; lo que cambia es el archivo donde lo registra y el nombre de la clave de primer nivel. Usted escribe el comando y los argumentos una vez y pega esos dos mismos valores en la forma de configuración propia de cada editor.

¿Cómo compruebo que un servidor MCP se conectó de verdad?

Cada cliente tiene su propio indicador: en VS Code ejecute MCP: List Servers desde la Command Palette y use Show Output para leer el registro; en Zed abra Settings → AI → MCP Servers y busque el punto verde que indica Server is active; y en Devin Desktop abra el icono MCPs del panel de Cascade para ver las herramientas del servidor.