项目简介
'devtools-debugger-mcp' 是一个将Node.js调试功能封装为Model Context Protocol (MCP) 工具的服务器。它允许MCP客户端(如LLM)通过标准化的JSON-RPC接口与Node.js应用程序进行交互式调试。服务器内部使用Chrome DevTools Protocol (CDP) 来控制Node.js进程。
主要功能点
- 启动/停止调试会话:灵活启动和终止Node.js应用的调试会话。
- 断点管理:支持设置普通断点、条件断点和日志点(logpoint),以便在特定代码行暂停或输出信息。
- 程序执行控制:提供恢复执行、单步跳过、单步进入、单步退出以及继续执行到指定位置等操作。
- 状态检查:能够获取当前调用栈(Call Stack)、检查作用域内的变量(Scopes)、查看对象属性,并读取控制台输出。
- 运行时表达式评估:在程序暂停时,可以在当前上下文中评估任意JavaScript表达式,即时获取结果。
- 脚本源获取与黑盒化:可以获取已加载脚本的源代码,并支持将特定脚本模式列入黑盒,使其在单步调试时被跳过。
- 异常处理:支持设置在捕获或未捕获异常时暂停。
- 帧重启:允许重启调用栈中的特定帧,重新执行该帧。
安装步骤
要运行此MCP服务器,您需要具备Node.js环境。
- 克隆仓库:
git clone https://github.com/Gulhidayat/devtools-debugger-mcp.git cd devtools-debugger-mcp - 安装依赖:
npm install - 编译项目:
这将在 'dist/src' 目录下生成可执行的JavaScript文件 'index.js'。npm run build
服务器配置
MCP客户端需要以下配置信息来连接并使用 'devtools-debugger-mcp' 服务器:
{ "name": "devtools-debugger-mcp", "command": "node", "args": ["dist/src/index.js"], "description": "一个用于调试Node.js应用的MCP服务器,通过标准输入输出与LLM客户端通信。", "transport": "stdio" }
- 'name': 服务器的唯一名称。
- 'command': 启动服务器的命令,这里是Node.js运行时。
- 'args': 传递给Node.js命令的参数,指定要运行的服务器入口文件。
- 'description': 服务器功能的简要描述。
- 'transport': 通信协议类型,此处为标准输入输出(Stdio)。
基本使用方法
一旦MCP客户端连接到 'devtools-debugger-mcp' 服务器,就可以通过调用其暴露的工具来进行Node.js应用的调试。
- 启动调试会话: 调用 'start_node_debug' 工具,提供要调试的Node.js脚本路径。服务器将启动脚本并暂停在第一行或第一个 'debugger' 语句处。 'tool_code('start_node_debug', {'scriptPath': './my-app.js'})'
- 设置断点: 使用 'set_breakpoint' 工具在特定文件和行号设置断点。 'tool_code('set_breakpoint', {'filePath': './my-app.js', 'line': 10})'
- 控制执行流程:
- 'resume_execution': 继续执行直到下一个断点或程序结束。
- 'step_over': 单步跳过当前行。
- 'step_into': 单步进入函数调用。
- 'step_out': 单步跳出当前函数。
- 检查程序状态:
- 'inspect_scopes': 查看当前暂停位置的局部变量和闭包变量。
- 'list_call_stack': 获取当前的调用栈信息。
- 'evaluate_expression': 在当前上下文中评估JavaScript表达式,例如 'tool_code('evaluate_expression', {'expr': 'myVariable + 1'})'。
- 'read_console': 获取在程序执行过程中产生的控制台输出。
- 结束调试: 完成调试后,调用 'stop_debug_session' 工具来终止Node.js进程和调试会话。 'tool_code('stop_debug_session', {})'
信息
分类
开发者工具