Node.js 后端调试技能。
用途
该技能用于调试 Node.js 后端进程,采用非阻塞的 tracepoint、logpoint、exceptionpoint 和 JavaScript 执行方式。当需要调试 API 服务器、worker 或后端脚本时使用。
触发场景
该技能在以下情况被激活:
- 用户要求调试 Node.js 后端或 API
- 用户想要在运行中的服务器里跟踪函数调用
- 用户需要检查 Node 进程中的变量或状态
- 用户提及后端错误、API bug 或服务端问题
- 用户想在已连接的 Node 进程中运行 JavaScript
前置条件
- 使用 MCP 并设置 PLATFORM=node,或单独运行 node-devtools-mcp
- 在其他调试命令之前先连接目标进程(debug_connect)
主要能力
连接
- 按 PID 连接(debug_connect 传 pid)
- 按进程名连接(debug_connect 传 processName)
- 按 Docker 容器连接(debug_connect 传 containerName 或 containerId)
- 按 inspector 端口或 WebSocket URL 连接
- 对于 Docker:当 MCP 运行在容器中时,使用 host.docker.internal 或容器名。在 MCP 容器中挂载 /var/run/docker.sock。
非阻塞调试
- 跟踪点(debug_put-tracepoint):在代码位置捕获调用栈和局部变量
- 日志点(debug_put-logpoint):评估并记录表达式
- 异常点(debug_put-exceptionpoint):在未捕获异常或全部异常时捕获
- 监视表达式(debug_add-watch):在每次跟踪点命中时评估
快照获取
- debug_get-probe-snapshots(类型:tracepoint、logpoint、exceptionpoint;返回 tracepointSnapshots、logpointSnapshots、exceptionpointSnapshots)
- debug_clear-probe-snapshots —— 完成后清理以释放内存
控制台与 Source Map
- 控制台日志(debug_get-logs):捕获 Node 进程中的 console.log、error、warn
- Source map(debug_resolve-source-location):将打包后的代码解析回原始源码
JavaScript 执行
- 在 Node 平台上使用 execute 进行批量工具调用(仅 callTool;无 page)。参见 commands/node/execute.md。
调试工作流
- 连接:使用 pid、processName 或 containerName 执行 debug_connect
- 设置探针:在路由处理函数上设置跟踪点,为错误设置异常点
- 触发:发起 API 请求或触发代码路径
- 收集:debug_get-probe-snapshots(类型:tracepoint、exceptionpoint)
- 调查:在 Node 平台上使用 execute 进行动态检查(callTool;无 page 绑定)
- 清理:debug_clear-probes、debug_disconnect
最佳实践
- 使用 urlPattern 匹配脚本路径(例如 routes/api.ts、server.js)
- 先从异常点开始,优先捕获错误
- 使用日志点做轻量监控
- 使用 fromSequence 轮询快照以增量获取
- 完成后清理探针以避免额外开销