VSCode MCP Server
Uma extensão do VSCode que atua como um servidor MCP, fornecendo acesso a ferramentas de diagnóstico e gerenciamento de sessões de depuração.
Documentação
Servidor MCP do VSCode
Visão Geral
O Servidor MCP do VSCode é uma extensão do VSCode que atua como um servidor de Protocolo de Contexto de Modelo (MCP) integrado diretamente no VSCode. Seu objetivo principal é expor uma ferramenta de diagnóstico de codificação—nomeadamente, o code_checker—que agrega mensagens de diagnóstico (semelhantes às exibidas no painel de Problemas do VSCode) e as torna acessíveis a um assistente de IA externo via Eventos Enviados pelo Servidor (SSE). Isso permite que seu assistente invoque métodos MCP e recupere informações de diagnóstico oportunas do seu espaço de trabalho.
Recursos
-
Inicialização Automática: A extensão é ativada automaticamente na inicialização do VSCode (usando
"activationEvents": ["*"]empackage.json), garantindo que o servidor MCP esteja sempre em execução sem intervenção manual. -
Integração com o Servidor MCP: Construído usando o SDK TypeScript do MCP (
@modelcontextprotocol/sdk), a extensão instancia um servidor MCP que registra ferramentas de diagnóstico e lida com mensagens do protocolo MCP. -
Ferramenta de Diagnóstico (
code_checker): A ferramenta registradacode_checkercoleta diagnósticos dos serviços de linguagem integrados do VSCode, filtrando arquivos sem erros. Quando invocada, retorna um objeto JSON formatado contendo informações de diagnóstico (apenas para arquivos com problemas). -
Ferramenta de Foco no Editor (
focus_editor): Abre um arquivo específico no editor do VSCode e navega para uma linha e coluna designadas. Útil para trazer arquivos para foco visual para o usuário, mas não inclui o conteúdo do arquivo no resultado da chamada da ferramenta. -
Ferramenta de Busca de Símbolos (
search_symbol): Busca símbolos no espaço de trabalho, usando principalmente "Ir para Definição", com fallback para busca de texto (semelhante a Ctrl+Shift+F). Pode opcionalmente abrir os resultados no editor usando a ferramentafocus_editor. -
Ferramentas de Gerenciamento de Sessão de Depuração: A extensão fornece ferramentas para gerenciar sessões de depuração do VSCode diretamente usando MCP:
list_debug_sessions: Recupera todas as sessões de depuração ativas no espaço de trabalho.start_debug_session: Inicia uma nova sessão de depuração com a configuração fornecida.stop_debug_session: Interrompe sessões de depuração que correspondem a um nome de sessão específico.restart_debug_session: Reinicia uma sessão de depuração interrompendo-a e iniciando-a com a configuração fornecida (novo!).
-
Comunicação SSE: Um servidor HTTP baseado em Express é executado em uma porta configurável (padrão: 6010) e lida dinamicamente com conflitos de porta. Ele expõe:
- Um endpoint GET
/ssepara estabelecer uma conexão de longa duração de Eventos Enviados pelo Servidor (SSE). Se a porta padrão (6010) estiver indisponível, os usuários podem configurar uma nova através das configurações do VSCode (veja Configuração Dinâmica de Porta abaixo). - Um endpoint POST
/messagespara receber mensagens MCP de clientes externos (como seu assistente de IA). Cuidado especial é tomado para lidar adequadamente com o corpo da solicitação—graças à passagem doreq.bodyjá analisado para evitar erros relacionados a fluxos.
- Um endpoint GET
-
Registro Detalhado: Toda a atividade, incluindo inicialização do servidor, status da conexão SSE e eventos de manipulação de mensagens, é registrada em um canal de saída chamado "Servidor MCP do VSCode" para auxiliar na depuração e transparência.
Usando a Extensão do Claude Desktop (Cliente MCP)
Para usar o Servidor MCP do VSCode com o Claude Desktop, você precisa configurar o Claude Desktop para se conectar ao servidor MCP em execução no VSCode. Como a implementação do servidor MCP usa transporte SSE, e o Claude Desktop só suporta transporte stdio, você precisa usar um mcp-proxy para fazer a ponte de comunicação entre os dois.
-
Instale o Proxy MCP:
-
Opção 1: Com uv (recomendado)
uv tool install mcp-proxy -
Opção 2: Com pipx (alternativa)
pipx install mcp-proxy
-
-
Configure o Claude Desktop:
-
Abra o Claude Desktop e navegue até a aba Arquivo > Configurações > Desenvolvedor.
-
Clique em Editar Config para abrir o arquivo de configuração, inicie seu editor desejado para modificar o conteúdo do arquivo de configuração.
-
Adicione uma nova entrada em mcpServers com os seguintes detalhes:
{ "mcpServers": { "vscode": { "command": "mcp-proxy", "args": ["http://127.0.0.1:6010/sse"] } } }
-
-
Reinicie o Claude Desktop:
- Você deve reiniciar o Claude Desktop para que as alterações tenham efeito usando a opção Arquivo > Sair.
- NOTA: Isso é diferente de apenas fechar a janela ou usar Arquivo > Fechar, que deixa o aplicativo em execução em segundo plano.
- Após sair e iniciar novamente, o Claude Desktop deve agora ser capaz de se conectar ao servidor MCP em execução no VSCode.
Gerenciamento do Servidor MCP
O status do Servidor MCP agora pode ser gerenciado diretamente da Paleta de Comandos:
- Parar Servidor MCP (
mcpServer.stopServer): Interrompe o Servidor MCP atualmente em execução. - Iniciar Servidor MCP (
mcpServer.startServer): Inicia o servidor na porta configurada ou na próxima disponível.
Esses comandos ajudam a gerenciar o ciclo de vida do servidor dinamicamente, sem exigir reinicialização do VSCode.
Configuração Dinâmica de Porta
Se a porta já estiver em uso, a extensão sugerirá a próxima porta disponível e a aplicará dinamicamente. Os logs refletindo a porta selecionada podem ser encontrados no canal de saída Logs do Servidor MCP.
Os usuários podem configurar ou alterar a porta do Servidor MCP em tempo de execução usando a Paleta de Comandos:
- Abra a Paleta de Comandos (
Ctrl+Shift+PouCmd+Shift+Pno macOS). - Procure por
Set MCP Server Port. - Digite o número de porta desejado na caixa de entrada e confirme.
O servidor será reiniciado dinamicamente na porta recém-selecionada, e a configuração será atualizada para sessões futuras.
A porta do servidor HTTP também pode ser definida através das configurações do VSCode:
- Abra as configurações do VSCode (
File > Preferences > SettingsouCtrl+,). - Procure por
mcpServer.port. - Defina o número de porta desejado.
- Reinicie o VSCode para que as alterações tenham efeito.
Inicialização Automática do Servidor MCP
O Servidor MCP inicia automaticamente na ativação do VSCode por padrão. Para desativar este recurso:
- Abra as configurações do VSCode (
File > Preferences > SettingsouCtrl+,). - Procure por
mcpServer.startOnActivate. - Alterne a configuração para
false.
Isso pode ser útil se você preferir iniciar o servidor manualmente usando o comando Start MCP Server.
Desenvolvimento da Extensão
Etapas para desenvolver e depurar a extensão, código-fonte disponível no GitHub.
Pré-requisitos
-
Clone o Repositório: Clone o repositório do Semantic Workbench para sua máquina local:
git clone https://github.com/microsoft/semanticworkbench.git -
Navegue até o Diretório do Projeto:
cd semanticworkbench/mcp-servers/mcp-server-vscode -
Instale as Dependências: Certifique-se de ter o Node.js (v16 ou superior) e o pnpm instalados. Em seguida, a partir do diretório do projeto, execute:
pnpm install -
Empacote a Extensão: Para empacotar a extensão, execute:
pnpm run package-extensionIsso gerará um arquivo
.vsixna raiz do projeto.
Instalando a Extensão Localmente
-
Abra Sua Instância Principal do VSCode:
Inicie seu VSCode principal (fora do Host de Desenvolvimento de Extensão).
-
Instale o Pacote VSIX:
- Pressione Ctrl+Shift+P (ou Cmd+Shift+P no macOS) para abrir a Paleta de Comandos.
- Digite e selecione "Extensões: Instalar do VSIX...".
- Navegue até e selecione o arquivo .vsix gerado.
-
Recarregue e Verifique:
Após a instalação, recarregue o VSCode (via "Desenvolvedor: Recarregar Janela" na Paleta de Comandos) e verifique se a extensão está ativa. Verifique o canal de saída "Logs do Servidor MCP" para ver logs confirmando que o servidor MCP foi iniciado e está ouvindo na porta configurada (padrão: 6010, ou a próxima disponível).
Depurando a Extensão
-
Inicie a Depuração: Abra o projeto no VSCode e pressione F5 para iniciar o Host de Desenvolvimento de Extensão. Isso ativará automaticamente a extensão com base na configuração
"activationEvents": ["*"]. -
Operação do Servidor MCP: Na ativação, a extensão:
- Inicia o servidor MCP que registra a ferramenta
code_checker. - Configura um servidor HTTP Express na porta 6010 com:
- GET
/sse: Para estabelecer uma conexão SSE (clientes externos se conectam aqui). - POST
/messages: Para processar mensagens de protocolo MCP recebidas.
- GET
- Envia toda a atividade para o canal "Logs do Servidor MCP" (que será exibido automaticamente).
- Inicia o servidor MCP que registra a ferramenta
Instalando a Extensão Localmente
-
Abra Sua Instância Principal do VSCode:
Inicie seu VSCode principal (fora do Host de Desenvolvimento de Extensão).
-
Instale o Pacote VSIX:
- Pressione Ctrl+Shift+P (ou Cmd+Shift+P no macOS) para abrir a Paleta de Comandos.
- Digite e selecione "Extensões: Instalar do VSIX...".
- Navegue até e selecione o arquivo .vsix gerado.
-
Recarregue e Verifique:
Após a instalação, recarregue o VSCode (via "Desenvolvedor: Recarregar Janela" na Paleta de Comandos) e verifique se a extensão está ativa. Verifique o canal de saída "Logs do Servidor MCP" para ver logs confirmando que o servidor MCP foi iniciado e está ouvindo na porta 6010.
Testando o Servidor MCP
Você pode usar curl para testar o serviço:
Etapa 1: Estabeleça a Conexão SSE
Abra o Terminal 1 e execute:
curl -N http://127.0.0.1:6010/sse
Você deve ver uma saída semelhante a:
event: endpoint
data: /messages?sessionId=your-session-id
Etapa 2: Envie uma Solicitação de Inicialização
No Terminal 2, usando o ID de sessão obtido no Terminal 1 (se necessário), envie uma solicitação POST (inclua quaisquer campos necessários, como espaço de trabalho, se necessário):
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": []
}
}
}'
Se tudo estiver configurado corretamente, o servidor MCP deve processar sua mensagem de inicialização sem erros.