debugtron-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
No arguments | |||
Capabilities
Features and capabilities supported by this server
| Capability | Details |
|---|---|
| tools | {
"listChanged": true
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| list_appsA | List installed Electron apps discovered on a target (local machine by default). Returns app id, name and executable path. Use the app id with launch_app. |
| launch_appA | Launch an Electron app with debug ports (--inspect for the main process, --remote-debugging-port for renderers) and create a debug session. Provide either appId (from list_apps) or a direct exePath. Returns the sessionId and debug ports. |
| stop_sessionA | Stop a debug session: close CDP connections and terminate the app process. Safe to call twice. |
| list_sessionsA | List active debug sessions with their app, status and debug ports. |
| get_app_infoA | Get Electron app details from the main process: Electron/Chromium/Node versions, app name/version, standard paths (userData etc.), and the list of BrowserWindows with title, URL and bounds. |
| monitor_ipcA | Start or stop IPC monitoring in the main process. Captures ipcMain messages (send/invoke) and webContents.send traffic into a buffer; read it with get_ipc_log. Note: invoke handlers registered before monitoring started are not captured (Electron dispatches them internally); 'send' messages are always captured. |
| get_ipc_logA | Read IPC traffic captured by monitor_ipc. Optionally clears the buffer after reading. |
| monitor_eventsA | Start or stop capturing Electron lifecycle events in the main process: render-process-gone (crashes), unresponsive, navigation (did/will-navigate, redirects), window and webContents creation, child-process-gone. Read with get_event_log. |
| get_event_logA | Read Electron lifecycle events captured by monitor_events (crashes, hangs, navigation, window/webContents lifecycle). Optionally clears the buffer after reading. |
| get_process_metricsA | Get per-process CPU and memory metrics of the app (app.getAppMetrics): Browser (main), renderer, GPU and utility processes with pid, CPU % and working set size. |
| evaluate_in_mainA | Evaluate a JavaScript expression in the app's main (Node/Electron) process via the inspector protocol. Electron APIs like |
| evaluate_in_rendererA | Evaluate a JavaScript expression in a renderer page via CDP. Use list_pages to find page ids. |
| list_pagesA | Refresh and list the debuggable targets of a session: renderer pages, webviews, workers, service workers. Pages can take a few seconds to appear after launch — retry if empty. Page-only tools (screenshot, DOM, input) do not work on worker targets. |
| get_process_logsC | Get the app process stdout/stderr output captured since launch. Works even after the process has exited. |
| get_console_logsB | Get console messages and uncaught exceptions captured from the main process and renderer pages (console.* calls, CDP log entries). |
| get_network_logA | Get network requests captured from renderer pages (Network domain). A page's requests are recorded once any page tool has attached to it. Entries include requestId for get_response_body. |
| get_response_bodyA | Get the response body of a captured network request. Use get_network_log to find requestIds. Only works for requests whose loading has finished while a page client was attached. |
| get_cookiesA | Get cookies from the browser network stack visible to a page (Network.getAllCookies). Includes HttpOnly cookies that document.cookie cannot see. |
| get_local_storageB | Read localStorage or sessionStorage entries of a renderer page. |
| navigateA | Navigate a renderer page to a URL. Waits up to 5s for the load event (non-fatal). |
| reloadC | Reload a renderer page. |
| screenshotB | Capture a screenshot of a renderer page. Returns a PNG (default) or JPEG image. |
| get_dom_snapshotA | Get the outerHTML of a renderer page (or of a specific element via selector). Truncated to maxLength characters. |
| query_selectorA | Query a single element by CSS selector in a renderer page. Returns tag name, text, attributes and bounding rect. |
| clickA | Click in a renderer page, either by CSS selector (scrolled into view, clicked at its center) or by raw CSS-pixel coordinates. |
| typeA | Type text into a renderer page. If a selector is given, the element is clicked first to focus it. Uses Input.insertText, which is unicode-safe (CJK, emoji). |
| get_performance_metricsB | Get renderer performance metrics (Performance.getMetrics): JS heap size, DOM node count, layout/recalc counts, timestamps, etc. |
| set_breakpointA | Set a breakpoint by script URL or URL regex in the main process or a renderer page. Works on bundled scripts too — use urlRegex to match a distinctive part of the script path (e.g. "app.asar.*main"). Use get_paused_state to observe hits. |
| remove_breakpointA | Remove a breakpoint previously set with set_breakpoint. |
| list_breakpointsA | List breakpoints set via this server on the main process or a renderer page. |
| pauseA | Pause execution at the next statement in the main process or a renderer page. |
| resumeA | Resume execution after a pause or breakpoint hit. |
| get_paused_stateA | Get the current paused state (reason + call stack with callFrameIds) of the main process or a renderer page, if it is paused on a breakpoint or Debugger.pause. |
| list_scriptsA | List scripts known to the Debugger domain (collected via scriptParsed). Use urlFilter to narrow down, then get_script_source to read source code. |
| get_script_sourceB | Get the source code of a script by scriptId (from list_scripts). Useful for static analysis of app.asar bundles. |
| evaluate_on_call_frameA | Evaluate an expression in the context of a paused call frame (access local variables). Requires the target to be paused — get callFrameId from get_paused_state. |
| step_overA | Step over the current statement while paused. Use get_paused_state to observe the new location. |
| step_intoB | Step into the current function call while paused. Use get_paused_state to observe the new location. |
| step_outA | Step out of the current function while paused. Use get_paused_state to observe the new location. |
| get_heap_snapshotA | Take a V8 heap snapshot of the main process or a renderer page. The snapshot can be large, so it is written to a .heapsnapshot file (loadable in Chrome DevTools Memory panel); the file path is returned. |
| start_cpu_profileA | Start CPU profiling on the main process or a renderer page. Call stop_cpu_profile to collect the result. |
| stop_cpu_profileA | Stop CPU profiling and collect the profile. The full profile is written to a .cpuprofile file (loadable in Chrome DevTools Performance panel); a summary of the hottest functions is returned inline. |
| list_workersA | List worker targets (service workers, shared workers, dedicated workers) discovered via the browser-level Target domain. Use evaluate_in_worker to run JS in them. |
| evaluate_in_workerA | Evaluate a JavaScript expression in a worker target (service worker, shared worker, dedicated worker) using the flatten protocol. Get workerTargetId from list_workers. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/xrntkk/debugtron-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server