VSCode MCP Server
Una extensión de VSCode que actúa como un servidor MCP, proporcionando acceso a herramientas de diagnóstico y gestión de sesiones de depuración.
Documentación
Servidor MCP de VSCode
Descripción General
El Servidor MCP de VSCode es una extensión de VSCode que actúa como un servidor de Protocolo de Contexto de Modelo (MCP) integrado directamente dentro de VSCode. Su propósito principal es exponer una herramienta de diagnóstico de código—concretamente, la code_checker—que agrega mensajes de diagnóstico (similares a los que se muestran en el panel de Problemas de VSCode) y los hace accesibles a un asistente de IA externo mediante Eventos Enviados por el Servidor (SSE). Esto permite que tu asistente invoque métodos MCP y recupere información de diagnóstico oportuna desde tu espacio de trabajo.
Características
-
Inicio Automático: La extensión se activa automáticamente al iniciar VSCode (usando
"activationEvents": ["*"]enpackage.json), asegurando que el servidor MCP esté siempre en ejecución sin intervención manual. -
Integración del Servidor MCP: Construido usando el SDK de TypeScript de MCP (
@modelcontextprotocol/sdk), la extensión instancia un servidor MCP que registra herramientas de diagnóstico y maneja mensajes del protocolo MCP. -
Herramienta de Diagnóstico (
code_checker): La herramienta registradacode_checkerrecopila diagnósticos de los servicios de lenguaje integrados de VSCode, filtrando archivos sin errores. Cuando se invoca, devuelve un objeto JSON formateado que contiene información de diagnóstico (solo para archivos con problemas). -
Herramienta de Enfoque de Editor (
focus_editor): Abre un archivo específico en el editor de VSCode y navega a una línea y columna designadas. Útil para traer archivos al enfoque visual del usuario, pero no incluye el contenido del archivo en el resultado de la llamada a la herramienta. -
Herramienta de Búsqueda de Símbolos (
search_symbol): Busca símbolos en el espacio de trabajo, usando principalmente "Ir a Definición", con una alternativa de búsqueda de texto (similar a Ctrl+Shift+F). Opcionalmente puede abrir los resultados en el editor usando la herramientafocus_editor. -
Herramientas de Gestión de Sesiones de Depuración: La extensión proporciona herramientas para gestionar sesiones de depuración de VSCode directamente usando MCP:
list_debug_sessions: Recuperar todas las sesiones de depuración activas en el espacio de trabajo.start_debug_session: Iniciar una nueva sesión de depuración con la configuración proporcionada.stop_debug_session: Detener sesiones de depuración que coincidan con un nombre de sesión específico.restart_debug_session: Reiniciar una sesión de depuración deteniéndola y luego iniciándola con la configuración proporcionada (¡nuevo!).
-
Comunicación SSE: Un servidor HTTP basado en Express se ejecuta en un puerto configurable (predeterminado: 6010) y maneja dinámicamente conflictos de puertos. Expone:
- Un endpoint GET
/ssepara establecer una conexión de larga duración de Eventos Enviados por el Servidor (SSE). Si el puerto predeterminado (6010) no está disponible, los usuarios pueden configurar uno nuevo a través de la configuración de VSCode (ver Configuración Dinámica de Puertos a continuación). - Un endpoint POST
/messagespara recibir mensajes MCP de clientes externos (como tu asistente de IA). Se tiene especial cuidado en manejar adecuadamente el cuerpo de la solicitud—gracias a pasar elreq.bodyya analizado para evitar errores relacionados con flujos.
- Un endpoint GET
-
Registro Detallado: Toda la actividad, incluido el inicio del servidor, el estado de la conexión SSE y los eventos de manejo de mensajes, se registra en un canal de salida llamado "Servidor MCP de VSCode" para ayudar en la depuración y la transparencia.
Uso de la Extensión desde Claude Desktop (Cliente MCP)
Para usar el Servidor MCP de VSCode con Claude Desktop, debes configurar Claude Desktop para conectarse al servidor MCP que se ejecuta en VSCode. Dado que la implementación del servidor MCP usa transporte SSE, y Claude Desktop solo admite transporte stdio, necesitas usar un mcp-proxy para puentear la comunicación entre ambos.
-
Instalar MCP Proxy:
-
Opción 1: Con uv (recomendado)
uv tool install mcp-proxy -
Opción 2: Con pipx (alternativa)
pipx install mcp-proxy
-
-
Configurar Claude Desktop:
-
Abre Claude Desktop y navega a la pestaña Archivo > Configuración > Desarrollador.
-
Haz clic en Editar Config para abrir el archivo de configuración, inicia tu editor deseado para modificar el contenido del archivo de configuración.
-
Agrega una nueva entrada a mcpServers con los siguientes detalles:
{ "mcpServers": { "vscode": { "command": "mcp-proxy", "args": ["http://127.0.0.1:6010/sse"] } } }
-
-
Reiniciar Claude Desktop:
- Debes reiniciar Claude Desktop para que los cambios surtan efecto usando la opción Archivo > Salir.
- NOTA: Esto es diferente a solo cerrar la ventana o usar Archivo > Cerrar, lo que deja la aplicación ejecutándose en segundo plano.
- Después de salir y volver a iniciar, Claude Desktop debería poder conectarse al servidor MCP que se ejecuta en VSCode.
Gestión del Servidor MCP
El estado del Servidor MCP ahora se puede gestionar directamente desde la Paleta de Comandos:
- Detener Servidor MCP (
mcpServer.stopServer): Detiene el Servidor MCP actualmente en ejecución. - Iniciar Servidor MCP (
mcpServer.startServer): Inicia el servidor en el puerto configurado o en el siguiente disponible.
Estos comandos ayudan a gestionar el ciclo de vida del servidor dinámicamente, sin requerir un reinicio de VSCode.
Configuración Dinámica de Puertos
Si el puerto ya está en uso, la extensión sugerirá el siguiente puerto disponible y lo aplicará dinámicamente. Los registros que reflejan el puerto seleccionado se pueden encontrar en el canal de salida Registros del Servidor MCP.
Los usuarios pueden configurar o cambiar el puerto del Servidor MCP en tiempo de ejecución usando la Paleta de Comandos:
- Abre la Paleta de Comandos (
Ctrl+Shift+PoCmd+Shift+Pen macOS). - Busca
Set MCP Server Port. - Ingresa el número de puerto deseado en el cuadro de entrada y confirma.
El servidor se reiniciará dinámicamente en el puerto recién seleccionado, y la configuración se actualizará para futuras sesiones.
El puerto del servidor HTTP también se puede configurar a través de la configuración de VSCode:
- Abre la configuración de VSCode (
File > Preferences > SettingsoCtrl+,). - Busca
mcpServer.port. - Establece el número de puerto deseado.
- Reinicia VSCode para que los cambios surtan efecto.
Inicio Automático del Servidor MCP
El Servidor MCP se inicia automáticamente en la activación de VSCode de forma predeterminada. Para deshabilitar esta función:
- Abre la configuración de VSCode (
File > Preferences > SettingsoCtrl+,). - Busca
mcpServer.startOnActivate. - Cambia la configuración a
false.
Esto puede ser útil si prefieres iniciar el servidor manualmente usando el comando Start MCP Server.
Desarrollo de la Extensión
Pasos para desarrollar y depurar la extensión, código fuente disponible en GitHub.
Requisitos Previos
-
Clonar el Repositorio: Clona el repositorio de Semantic Workbench en tu máquina local:
git clone https://github.com/microsoft/semanticworkbench.git -
Navegar al Directorio del Proyecto:
cd semanticworkbench/mcp-servers/mcp-server-vscode -
Instalar Dependencias: Asegúrate de tener Node.js (v16 o superior) y pnpm instalados. Luego, desde el directorio del proyecto, ejecuta:
pnpm install -
Empaquetar la Extensión: Para empaquetar la extensión, ejecuta:
pnpm run package-extensionEsto generará un archivo
.vsixen la raíz del proyecto.
Instalación Local de la Extensión
-
Abrir Tu Instancia Principal de VSCode:
Inicia tu VSCode principal (fuera del Host de Desarrollo de Extensiones).
-
Instalar el Paquete VSIX:
- Presiona Ctrl+Shift+P (o Cmd+Shift+P en macOS) para abrir la Paleta de Comandos.
- Escribe y selecciona "Extensiones: Instalar desde VSIX...".
- Navega y selecciona el archivo .vsix generado.
-
Recargar y Verificar:
Después de la instalación, recarga VSCode (a través de "Desarrollador: Recargar Ventana" desde la Paleta de Comandos) y verifica que la extensión esté activa. Revisa el canal de salida "Registros del Servidor MCP" para ver registros que confirmen que el servidor MCP se ha iniciado y está escuchando en el puerto configurado (predeterminado: 6010, o el siguiente disponible).
Depuración de la Extensión
-
Iniciar la Depuración: Abre el proyecto en VSCode, luego presiona F5 para iniciar el Host de Desarrollo de Extensiones. Esto activará automáticamente la extensión según la configuración
"activationEvents": ["*"]. -
Operación del Servidor MCP: Al activarse, la extensión:
- Inicia el servidor MCP que registra la herramienta
code_checker. - Configura un servidor HTTP Express en el puerto 6010 con:
- GET
/sse: Para establecer una conexión SSE (los clientes externos se conectan aquí). - POST
/messages: Para procesar mensajes entrantes del protocolo MCP.
- GET
- Envía toda la actividad al canal "Registros del Servidor MCP" (que se mostrará automáticamente).
- Inicia el servidor MCP que registra la herramienta
Instalación Local de la Extensión
-
Abrir Tu Instancia Principal de VSCode:
Inicia tu VSCode principal (fuera del Host de Desarrollo de Extensiones).
-
Instalar el Paquete VSIX:
- Presiona Ctrl+Shift+P (o Cmd+Shift+P en macOS) para abrir la Paleta de Comandos.
- Escribe y selecciona "Extensiones: Instalar desde VSIX...".
- Navega y selecciona el archivo .vsix generado.
-
Recargar y Verificar:
Después de la instalación, recarga VSCode (a través de "Desarrollador: Recargar Ventana" desde la Paleta de Comandos) y verifica que la extensión esté activa. Revisa el canal de salida "Registros del Servidor MCP" para ver registros que confirmen que el servidor MCP se ha iniciado y está escuchando en el puerto 6010.
Pruebas del Servidor MCP
Puedes usar curl para probar el servicio:
Paso 1: Establecer la Conexión SSE
Abre la Terminal 1 y ejecuta:
curl -N http://127.0.0.1:6010/sse
Deberías ver una salida similar a:
event: endpoint
data: /messages?sessionId=your-session-id
Paso 2: Enviar una Solicitud de Inicialización
En la Terminal 2, usando el ID de sesión obtenido de la Terminal 1 (si es necesario), envía una solicitud POST (incluye cualquier campo requerido como workspace si es necesario):
curl -X POST "http://127.0.0.1:6010/messages?sessionId=your-session-id" \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"method": "initialize",
"id": 0,
"params": {
"protocolVersion": "2024-11-05",
"capabilities": {
"roots": { "listChanged": true }
},
"clientInfo": {
"name": "mcp",
"version": "0.1.0"
},
"workspace": {
"folders": []
}
}
}'
Si todo está configurado correctamente, el servidor MCP debería procesar tu mensaje de inicialización sin errores.