mcp-js-debugger

johngrimes/mcp-js-debugger

3.3

If you are the rightful owner of mcp-js-debugger and would like to certify it and/or have it hosted online, please leave a comment on the right or send an email to dayong@mcphub.com.

The MCP JS Debugger is a server that leverages the Chrome DevTools Protocol to provide debugging capabilities for JavaScript and TypeScript applications, facilitating AI assistants in the debugging process.

Tools
18
Resources
0
Prompts
0

MCP JS Debugger

An MCP (Model Context Protocol) server that exposes Chrome DevTools Protocol debugging capabilities, enabling AI assistants to debug JavaScript and TypeScript applications.

Features

  • Connect to any CDP-compatible debugger (Node.js, Chrome, Edge)
  • Set, list, and remove breakpoints
  • Step through code (over, into, out)
  • Inspect call stacks with source map support
  • Evaluate expressions in any stack frame
  • View and modify variables
  • Pause on exceptions
  • Full source map support for debugging transpiled code

Installation

npm install
npm run build

Claude Code integration

Add to your Claude Code configuration:

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

Or add to .mcp.json:

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

Usage

Starting a debug target

Start your Node.js application with the 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

Available tools

ToolDescription
connect_debuggerConnect to a CDP endpoint via WebSocket URL
disconnect_debuggerDisconnect from a debugging session
set_breakpointSet a breakpoint by URL and line number
remove_breakpointRemove a breakpoint by ID
list_breakpointsList all breakpoints in a session
resume_executionResume execution after pause
step_overStep over the current statement
step_intoStep into a function call
step_outStep out of the current function
pause_executionPause running execution
get_call_stackGet the current call stack with source locations
evaluate_expressionEvaluate a JavaScript expression
get_scope_variablesGet variables in a scope
set_variable_valueModify a variable's value
set_pause_on_exceptionsConfigure exception handling
get_original_locationMap generated to original source location
get_script_sourceGet script source code
list_scriptsList loaded scripts

Example workflow

  1. Start your application with --inspect-brk:

    node --inspect-brk=9229 app.js
    
  2. Get the WebSocket URL:

    curl http://localhost:9229/json
    
  3. Connect the debugger:

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

    set_breakpoint(session_id: "...", url: "file:///path/to/app.js", line_number: 10)
    
  5. Resume execution to hit the breakpoint:

    resume_execution(session_id: "...")
    
  6. Inspect state when paused:

    get_call_stack(session_id: "...")
    get_scope_variables(session_id: "...", call_frame_id: "...", scope_index: 0)
    evaluate_expression(session_id: "...", expression: "myVariable")
    
  7. Continue debugging:

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

Source map support

The server automatically loads source maps for transpiled code (TypeScript, bundled JavaScript, etc.). When source maps are available:

  • Call stacks show original source locations
  • Breakpoints can be set on original source files
  • get_original_location maps generated positions to original source
  • get_script_source can return original source content

Development

# Build
npm run build

# Run tests
npm test

# Run tests with coverage
npm run test:coverage

# Watch mode for development
npm run dev

Architecture

  • cdp-client.ts - Low-level Chrome DevTools Protocol client wrapper
  • session-manager.ts - Manages multiple debugging sessions
  • source-map-manager.ts - Handles source map loading and position mapping
  • server.ts - MCP server implementation with tool handlers
  • types.ts - TypeScript type definitions

Requirements

  • Node.js 18.0.0 or later
  • A CDP-compatible debug target (Node.js, Chrome, Edge, etc.)

Licence

Apache-2.0