MCP JS Debugger

Depure aplicações JavaScript e TypeScript através do Protocolo Chrome DevTools com suporte completo a source maps.

Documentação

MCP JS Debugger

Um servidor MCP (Model Context Protocol) que expõe recursos de depuração do Chrome DevTools Protocol, permitindo que assistentes de IA depurem aplicações JavaScript e TypeScript.

Recursos

  • Conecte-se a qualquer depurador compatível com CDP (Node.js, Chrome, Edge)
  • Definir, listar e remover breakpoints
  • Percorrer o código (passar por cima, entrar, sair)
  • Inspecionar pilhas de chamadas com suporte a source maps
  • Avaliar expressões em qualquer frame da pilha
  • Visualizar e modificar variáveis
  • Pausar em exceções
  • Suporte completo a source maps para depurar código transpilado

Instalação

npm install
npm run build

Integração com Claude Code

Adicione à sua configuração do Claude Code:

claude mcp add mcp-js-debugger -- npx mcp-js-debugger

Ou adicione ao .mcp.json:

{
  "mcpServers": {
    "mcp-js-debugger": {
      "command": "npx",
      "args": ["mcp-js-debugger"]
    }
  }
}

Uso

Iniciando um alvo de depuração

Inicie sua aplicação Node.js com o inspector:

# Pause on first line (recommended for setting initial breakpoints)
node --inspect-brk=9229 your-script.js

# Or start without pausing
node --inspect=9229 your-script.js

Ferramentas disponíveis

FerramentaDescrição
connect_debuggerConectar a um endpoint CDP via URL WebSocket
disconnect_debuggerDesconectar de uma sessão de depuração
set_breakpointDefinir um breakpoint por URL e número de linha
remove_breakpointRemover um breakpoint por ID
list_breakpointsListar todos os breakpoints em uma sessão
resume_executionRetomar a execução após pausa
step_overPassar por cima da instrução atual
step_intoEntrar em uma chamada de função
step_outSair da função atual
pause_executionPausar a execução em andamento
get_call_stackObter a pilha de chamadas atual com localizações de origem
evaluate_expressionAvaliar uma expressão JavaScript
get_scope_variablesObter variáveis em um escopo
set_variable_valueModificar o valor de uma variável
set_pause_on_exceptionsConfigurar o tratamento de exceções
get_original_locationMapear localização gerada para a origem original
get_script_sourceObter o código-fonte do script
list_scriptsListar scripts carregados

Fluxo de trabalho de exemplo

  1. Inicie sua aplicação com --inspect-brk:

    node --inspect-brk=9229 app.js
    
  2. Obtenha a URL WebSocket:

    curl http://localhost:9229/json
    
  3. Conecte o depurador:

    connect_debugger(websocket_url: "ws://localhost:9229/<id>")
    
  4. Defina breakpoints:

    set_breakpoint(session_id: "...", url: "file:///path/to/app.js", line_number: 10)
    
  5. Retome a execução para atingir o breakpoint:

    resume_execution(session_id: "...")
    
  6. Inspecione o estado quando pausado:

    get_call_stack(session_id: "...")
    get_scope_variables(session_id: "...", call_frame_id: "...", scope_index: 0)
    evaluate_expression(session_id: "...", expression: "myVariable")
    
  7. Continue a depuração:

    step_over(session_id: "...")
    resume_execution(session_id: "...")
    

Suporte a source maps

O servidor carrega automaticamente source maps para código transpilado (TypeScript, JavaScript empacotado, etc.). Quando source maps estão disponíveis:

  • Pilhas de chamadas mostram localizações de origem originais
  • Breakpoints podem ser definidos em arquivos de origem originais
  • get_original_location mapeia posições geradas para a origem original
  • get_script_source pode retornar o conteúdo da origem original

Desenvolvimento

# Build
npm run build

# Run tests
npm test

# Run tests with coverage
npm run test:coverage

# Watch mode for development
npm run dev

Arquitetura

  • cdp-client.ts - Wrapper de cliente de protocolo Chrome DevTools de baixo nível
  • session-manager.ts - Gerencia múltiplas sessões de depuração
  • source-map-manager.ts - Lida com carregamento de source maps e mapeamento de posições
  • server.ts - Implementação do servidor MCP com manipuladores de ferramentas
  • types.ts - Definições de tipos TypeScript

Requisitos

  • Node.js 18.0.0 ou posterior
  • Um alvo de depuração compatível com CDP (Node.js, Chrome, Edge, etc.)

Licença

Apache-2.0