Token导航 LogoToken导航TokenDH.com
MCP Debugger Server logo
运维云端stdio官方级别未说明来源级核验

MCP Debugger Server

MCP Server

@ai-capabilities-suite/mcp-debugger-server

MCP调试服务器是一个企业级的Node.js和JavaScript调试工具,通过Chrome DevTools协议提供全面的调试功能,支持AI代理交互式调试。

工具数

21

提示词数

0

GitHub Stars

0

资源数

0
TypeScriptClaude性能分析Claude DesktopClaudeVS Code

安装说明

本站只整理中文说明和来源信息,不托管安装包,也不代用户安装。

作者 / 组织

Digital-Defiance

提供方

Digital-Defiance

最后核验

2026/5/17 20:21

运行时

Node.js

快速接入

先看主来源和安装命令,再打开仓库或文档;下面只保留这个条目的关键接入事实。

命令预览

npx @ai-capabilities-suite/mcp-debugger-server

详细介绍

MCP调试器服务器

](https://www.npmjs.com/package/@ai-capabilities-suite/mcp-debugger-server) ](https://github.com/digital-defiance/mcp-debugger-server/releases) ![License: MIT](https://opensource.org/licenses/MIT) ](https://nodejs.org/) ](https://hub.docker.com/r/digitaldefiance/mcp-debugger-server)

🔗 仓库

此包现在保存在自己的存储库中: ****

此存储库是 AI 能力套件 在GitHub上。

一个企业级模型上下文协议(MCP)服务器,通过Chrome DevTools协议为Node.js和JavaScript应用程序提供全面的调试功能。该服务器使AI代理(Kiro、Amazon Q、GitHub Copilot)能够使用25多种专用工具交互式调试Node.js代码,提供从基本断点管理到高级CPU/内存分析和挂起检测的所有功能。对于多语言调试(Python、Java、Go等),请使用利用调试适配器协议的VS Code扩展。

🎯 主要特点

核心调试功能

  • Node.js/JavaScript支持:通过Chrome DevTools协议调试Node.js应用程序和JavaScript代码
  • TypeScript支持:使用源代码映射解析进行完整的TypeScript调试
  • 断点管理:使用可选条件、点击次数和日志点设置、删除、切换和列出断点
  • 执行控制:通过精确控制继续、跳过、进入、退出和暂停执行
  • 计量检验:检查局部和全局变量,计算表达式,并通过变化检测监视变量
  • 调用堆栈导航:通过上下文切换查看和导航调用堆栈帧

高级功能

  • 挂起检测:使用可配置的超时和采样间隔检测无限循环和挂起进程
  • 源地图支持:完全支持调试TypeScript和带有原始源代码位置的转译JavaScript的源代码映射
  • 性能分析:CPU分析、内存分析、堆快照和性能时间线跟踪
  • 测试框架集成:调试Jest、Mocha和Vitest测试
  • 会话管理:支持多个并发调试会话,完全隔离
  • Chrome DevTools协议:与Node.js Inspector协议直接集成,用于低级调试

企业功能

  • 可观测性:结构化日志记录、指标收集、健康检查端点和Prometheus指标导出
  • 安全:身份验证、速率限制、敏感数据屏蔽、审核日志记录和会话超时强制
  • 生产就绪:断路器、具有指数回退的重试逻辑、优雅关机和资源限制
  • 监控:性能指标、会话记录和全面的错误跟踪

📦 安装

系统要求

  • Node.js: >= 18.0.0
  • NPM: >= 8.0.0
  • 操作系统:macOS、Linux、Windows
  • CPU架构:x64,臂64

快速入门(NPM-推荐)

# Install globally
npm install -g @ai-capabilities-suite/mcp-debugger-server

# Verify installation
ts-mcp-server --version

替代安装方法

使用NPX(无需安装)

# Run directly without installing
npx @ai-capabilities-suite/mcp-debugger-server

使用Docker

# Pull and run the Docker image
docker pull digitaldefiance/mcp-debugger-server:latest
docker run -d --name mcp-debugger digitaldefiance/mcp-debugger-server:latest

# Or use docker-compose (see DOCKER-DEPLOYMENT.md)
docker-compose up -d

来源

# Clone the repository
git clone https://github.com/digital-defiance/ai-capabilities-suite.git
cd ai-capabilities-suite

# Install dependencies
npm install

# Build the packages
npx nx build @ai-capabilities-suite/mcp-debugger-core
npx nx build @ai-capabilities-suite/mcp-debugger-server

# Run the server
node packages/mcp-debugger-server/dist/src/cli.js

⚙️ 配置

Kiro配置

添加到 .kiro/settings/mcp.json:

{
  "mcpServers": {
    "debugger": {
      "command": "ts-mcp-server",
      "args": [],
      "env": {
        "NODE_ENV": "production"
      },
      "disabled": false,
      "autoApprove": [
        "debugger_start",
        "debugger_set_breakpoint",
        "debugger_continue",
        "debugger_step_over",
        "debugger_inspect",
        "debugger_get_stack"
      ]
    }
  }
}

Claude桌面配置

添加到 ~/Library/Application Support/Claude/claude_desktop_config.json (macOS)或 %APPDATA%\Claude\claude_desktop_config.json (Windows):

{
  "mcpServers": {
    "debugger": {
      "command": "ts-mcp-server",
      "args": []
    }
  }
}

VS代码配置

添加到 .vscode/settings.json:

{
  "mcp.servers": {
    "debugger": {
      "command": "ts-mcp-server",
      "args": [],
      "enabled": true
    }
  }
}

环境变量

高级配置的可选环境变量:

# Enable debug logging
DEBUG=mcp:*

# Set custom timeout (milliseconds)
MCP_DEBUGGER_TIMEOUT=60000

# Enable authentication
MCP_DEBUGGER_AUTH_TOKEN=your-secret-token

# Enable rate limiting
MCP_DEBUGGER_RATE_LIMIT=100

# Enable audit logging
MCP_DEBUGGER_AUDIT_LOG=true

🛠️ 可用工具

MCP调试器服务器提供 25种专用工具 分为8类:

会话管理

1. debugger_start

使用Node.js进程启动新的调试会话。

参数:

  • command (string,必填):要执行的命令(例如“node”、“npm”)
  • args (string\[\],可选):命令参数(例如,\[“test.js”\])
  • cwd (string,可选):进程的工作目录
  • timeout (数字,可选):超时时间(毫秒)(默认值:30000)

例子:

{
  "command": "node",
  "args": ["app.js"],
  "cwd": "/path/to/project",
  "timeout": 30000
}

答复:

{
  "status": "success",
  "sessionId": "session-123",
  "state": "paused",
  "pid": 12345
}

2. debugger_stop_session

停止调试会话并清理所有资源。

参数:

  • sessionId (字符串,必填):调试会话ID

例子:

{
  "sessionId": "session-123"
}

断点管理

3. debugger_set_breakpoint

在特定文件和行号处设置断点。

参数:

  • sessionId (字符串,必填):调试会话ID
  • file (string,必填):文件路径(绝对或相对)
  • line (数字,必填):行号(1-索引)
  • condition (字符串,可选):可选条件表达式(例如,“x>10”)

例子:

{
  "sessionId": "session-123",
  "file": "/path/to/file.js",
  "line": 42,
  "condition": "count > 5"
}

4. debugger_remove_breakpoint

从会话中删除断点。

参数:

  • sessionId (字符串,必填):调试会话ID
  • breakpointId (字符串,必填):要删除的断点ID

5. debugger_toggle_breakpoint

在启用和禁用状态之间切换断点。

参数:

  • sessionId (字符串,必填):调试会话ID
  • breakpointId (字符串,必填):要切换的断点ID

6. debugger_list_breakpoints

获取调试会话的所有断点。

参数:

  • sessionId (字符串,必填):调试会话ID

答复:

{
  "status": "success",
  "breakpoints": [
    {
      "id": "bp-1",
      "file": "/path/to/file.js",
      "line": 42,
      "condition": "x > 10",
      "enabled": true,
      "verified": true
    }
  ]
}

执行控制

7. debugger_continue

继续执行,直到下一个断点或程序终止。

参数:

  • sessionId (字符串,必填):调试会话ID

8. debugger_step_over

执行当前行,并在同一范围内的下一行暂停。

参数:

  • sessionId (字符串,必填):调试会话ID

9. debugger_step_into

执行当前行,并在任何被调用函数的第一行暂停。

参数:

  • sessionId (字符串,必填):调试会话ID

10. debugger_step_out

执行直到当前函数返回并在调用位置暂停。

参数:

  • sessionId (字符串,必填):调试会话ID

11. debugger_pause

暂停正在运行的调试会话。

参数:

  • sessionId (字符串,必填):调试会话ID

计量检验

12. debugger_inspect

在当前执行上下文中计算JavaScript表达式。

参数:

  • sessionId (字符串,必填):调试会话ID
  • expression (string,必填):要计算的JavaScript表达式

例子:

{
  "sessionId": "session-123",
  "expression": "user.name + ' ' + user.age"
}

13. debugger_get_local_variables

获取当前作用域中的所有局部变量。

参数:

  • sessionId (字符串,必填):调试会话ID

14. debugger_get_global_variables

获取可从当前作用域访问的全局变量。

参数:

  • sessionId (字符串,必填):调试会话ID

15. debugger_inspect_object

使用嵌套分辨率检查对象的属性。

参数:

  • sessionId (字符串,必填):调试会话ID
  • objectId (string,必填):上次检查的对象ID
  • maxDepth (数字,可选):要遍历的最大深度(默认值:2)

变量监视

16. debugger_add_watch

将表达式添加到观察列表中。

参数:

  • sessionId (字符串,必填):调试会话ID
  • expression (string,必填):要查看的表达式

17. debugger_remove_watch

从观察列表中删除表达式。

参数:

  • sessionId (字符串,必填):调试会话ID
  • watchId (string,必填):要删除的手表ID(表达式)

18. debugger_get_watches

获取所有已观看的表达式及其当前值。

参数:

  • sessionId (字符串,必填):调试会话ID

调用栈

19. debugger_get_stack

获取包含函数名和文件位置的当前调用堆栈。

参数:

  • sessionId (字符串,必填):调试会话ID

答复:

{
  "status": "success",
  "stack": [
    {
      "function": "myFunction",
      "file": "/absolute/path/to/file.js",
      "line": 42,
      "column": 10
    }
  ]
}

20. debugger_switch_stack_frame

将执行上下文切换到特定的堆栈帧。

参数:

  • sessionId (字符串,必填):调试会话ID
  • frameIndex (数字,必填):帧索引(0=顶部帧)

挂起检测

21. debugger_detect_hang

检测进程是否挂起或进入无限循环。

参数:

  • command (string,必填):要执行的命令
  • args (string\[\],可选):命令参数
  • cwd (字符串,可选):工作目录
  • timeout (数字,必填):超时(毫秒)
  • sampleInterval (数字,可选):循环检测的采样间隔(默认值:100ms)

例子:

{
  "command": "node",
  "args": ["script.js"],
  "timeout": 5000,
  "sampleInterval": 100
}

响应(挂起):

{
  "status": "success",
  "hung": true,
  "location": "/path/to/file.js:42",
  "stack": [...],
  "message": "Process hung at /path/to/file.js:42",
  "duration": 5000
}

回复(已完成):

{
  "status": "success",
  "hung": false,
  "completed": true,
  "exitCode": 0,
  "duration": 1234
}

🚀 快速入门指南

1.安装服务器

npm install -g @ai-capabilities-suite/mcp-debugger-server

2.配置您的AI代理

添加到您的MCP配置文件中(例如。, .kiro/settings/mcp.json):

{
  "mcpServers": {
    "debugger": {
      "command": "ts-mcp-server",
      "args": []
    }
  }
}

3.开始调试

让你的AI代理调试你的代码:

"Debug my Node.js script app.js and set a breakpoint at line 42"

AI代理将使用MCP调试器服务器来:

  1. 启动调试会话
  2. 设置断点
  3. 运行你的代码
  4. 在断点处暂停
  5. 检查变量并帮助您解决问题

📚 常见调试场景

场景1:调试一个简单脚本

// 1. Start a debug session
{
  "tool": "debugger_start",
  "args": {
    "command": "node",
    "args": ["my-script.js"]
  }
}
// Returns: { sessionId: "session-123", state: "paused" }

// 2. Set a breakpoint
{
  "tool": "debugger_set_breakpoint",
  "args": {
    "sessionId": "session-123",
    "file": "/path/to/my-script.js",
    "line": 10
  }
}

// 3. Continue execution
{
  "tool": "debugger_continue",
  "args": {
    "sessionId": "session-123"
  }
}

// 4. When paused at breakpoint, inspect variables
{
  "tool": "debugger_get_local_variables",
  "args": {
    "sessionId": "session-123"
  }
}

// 5. Step through code
{
  "tool": "debugger_step_over",
  "args": {
    "sessionId": "session-123"
  }
}

// 6. Stop the session
{
  "tool": "debugger_stop_session",
  "args": {
    "sessionId": "session-123"
  }
}

场景2:调试失败的测试

// 1. Start debugging a Jest test
{
  "tool": "debugger_start",
  "args": {
    "command": "node",
    "args": ["node_modules/.bin/jest", "my-test.spec.js", "--runInBand"],
    "timeout": 60000
  }
}

// 2. Set breakpoint in test file
{
  "tool": "debugger_set_breakpoint",
  "args": {
    "sessionId": "session-123",
    "file": "/path/to/my-test.spec.js",
    "line": 25
  }
}

// 3. Continue to breakpoint
{
  "tool": "debugger_continue",
  "args": {
    "sessionId": "session-123"
  }
}

// 4. Inspect test variables
{
  "tool": "debugger_inspect",
  "args": {
    "sessionId": "session-123",
    "expression": "expect.getState()"
  }
}

场景3:检测无限循环

// Use hang detection to identify infinite loops
{
  "tool": "debugger_detect_hang",
  "args": {
    "command": "node",
    "args": ["potentially-hanging-script.js"],
    "timeout": 5000,
    "sampleInterval": 100
  }
}
// Returns hang location and stack trace if hung

场景4:调试TypeScript代码

// TypeScript debugging works automatically with source maps
// 1. Ensure your tsconfig.json has "sourceMap": true

// 2. Start debugging the compiled JavaScript
{
  "tool": "debugger_start",
  "args": {
    "command": "node",
    "args": ["--enable-source-maps", "dist/app.js"]
  }
}

// 3. Set breakpoints using TypeScript file paths
{
  "tool": "debugger_set_breakpoint",
  "args": {
    "sessionId": "session-123",
    "file": "/path/to/src/app.ts",  // TypeScript source file
    "line": 42
  }
}
// The debugger automatically maps to the compiled JavaScript location

场景5:观察变量变化

// 1. Start session and set breakpoint
// ... (as in Scenario 1)

// 2. Add watched variables
{
  "tool": "debugger_add_watch",
  "args": {
    "sessionId": "session-123",
    "expression": "user.balance"
  }
}

// 3. Continue execution
{
  "tool": "debugger_continue",
  "args": {
    "sessionId": "session-123"
  }
}

// 4. Check watched variables at each pause
{
  "tool": "debugger_get_watches",
  "args": {
    "sessionId": "session-123"
  }
}
// Returns: { watches: [{ watchId: "user.balance", value: 100, changed: true, oldValue: 50, newValue: 100 }] }

🎬 演示和截图

调试在行动

Debugging Session _在Node.js应用程序中设置断点和检查变量_

Hang Detection _检测和诊断无限循环_

TypeScript Debugging _使用源代码映射支持调试TypeScript代码_

备注:用实际屏幕截图或演示调试器运行的动画GIF替换占位符图像。看 图片/README.md 作为指导方针。

🔧 故障排除

常见问题及解决方法

问题:“未找到会话”

症状:尝试使用会话ID时出错 原因:会话ID无效或会话已终止 解决方案:

# Start a new debug session
{
  "tool": "debugger_start",
  "arguments": {
    "command": "node",
    "args": ["your-script.js"]
  }
}

问题:“进程必须暂停”

症状:无法检查变量或计算表达式 原因:尝试在进程运行时检查变量 解决方案:

  • 设置断点并继续,或者
  • 使用 debugger_pause 立即暂停执行

问题:断点未命中

症状:执行不会在断点处停止 原因:断点位置无效或未执行代码路径 解决方案:

  1. 验证文件路径是否正确(使用绝对路径):
   "file": "/absolute/path/to/your/file.js"  // ✅ Good
   "file": "file.js"                          // ❌ Avoid
  1. 检查行号是否有可执行代码(不是注释或空行)
  2. 验证断点是否已设置并验证:
   {
     "tool": "debugger_list_breakpoints",
     "arguments": { "sessionId": "your-session-id" }
   }

问题:悬挂检测假阳性

症状:挂起检测在脚本正常运行时报告挂起 原因:超时时间对于脚本的正常执行时间来说太短 解决方案:

{
  "tool": "debugger_detect_hang",
  "arguments": {
    "command": "node",
    "args": ["script.js"],
    "timeout": 60000,  // Increase timeout to 60 seconds
    "sampleInterval": 200  // Increase sample interval
  }
}

问题:TypeScript断点不起作用

症状:.ts文件中的断点不会暂停执行 原因:未启用或找不到源映射 解决方案:

  1. 确保 "sourceMap": true 在tsconfig.json中:
   {
     "compilerOptions": {
       "sourceMap": true
     }
   }
  1. 使用 --enable-source-maps 启动Node.js时的标志:
   node --enable-source-maps dist/app.js
  1. 验证.map文件是否与编译的JavaScript一起存在:
   ls dist/*.js.map

问题:“找不到模块”错误

症状:启动服务器时未发现模块错误 原因:尚未构建包或未安装依赖项 解决方案:

# Install dependencies
npm install

# Build the packages
npx nx build @ai-capabilities-suite/mcp-debugger-core
npx nx build @ai-capabilities-suite/mcp-debugger-server

# Or if installed globally, reinstall
npm install -g @ai-capabilities-suite/mcp-debugger-server

问题:WebSocket连接错误

症状:“无法连接到检查器”或WebSocket错误 原因:检查器协议启动失败 解决方案:

  1. 确保Node.js版本为18或更高:
   node --version  # Should be >= 18.0.0
  1. 检查进程中没有附加其他调试器
  2. 验证流程是否成功启动:
   node --inspect-brk your-script.js
   # Should output: Debugger listening on ws://...

问题:内存使用率高

症状:服务器占用过多内存 原因:并发会话太多或堆快照太大 解决方案:

  1. 限制并发会话
  2. 停止未使用的会话:
   {
     "tool": "debugger_stop_session",
     "arguments": { "sessionId": "session-id" }
   }
  1. 配置资源限制(请参阅环境变量部分)

问题:性能缓慢

症状:调试操作缓慢 原因:大型物体、深度检查或多个断点 解决方案:

  1. 限制物体检查深度:
   {
     "tool": "debugger_inspect_object",
     "arguments": {
       "sessionId": "session-id",
       "objectId": "obj-id",
       "maxDepth": 2  // Limit depth
     }
   }
  1. 使用条件断点来减少暂停
  2. 删除不必要的断点

获取帮助

如果您遇到此处未涵盖的问题:

  1. 检查日志:使用启用调试日志记录 DEBUG=mcp:*
  2. 搜索现有问题:
  3. 创建新问题:包括:

- Node.js版本(node --version) - 服务器版本(ts-mcp-server --version) - 错误消息和堆栈跟踪 - 重现步骤

  1. 电子邮件支持: info@digitaldefiance.org

💡 用例

1.人工智能辅助调试

使AI代理能够自主调试您的代码:

  • 基罗:“调试我失败的测试,并告诉我失败的原因”
  • 亚马逊Q:“在我的脚本中找到无限循环”
  • GitHub Copilot:“设置断点并检查用户对象”

2.自动化测试和CI/CD

将调试集成到CI/CD管道中:

  • 自动调试失败的测试
  • 检测性能回归
  • 部署前识别内存泄漏

3.生产问题调查

安全调试类生产环境:

  • 在本地复制生产问题
  • 检查状态,不修改代码
  • 分析性能瓶颈

4.学习与教育

帮助开发人员学习调试技术:

  • 逐步执行代码
  • 了解调用堆栈和范围
  • 可视化变量变化

5.性能优化

识别并解决性能问题:

  • 配置文件CPU使用率
  • 分析内存分配
  • 检测内存泄漏
  • 跟踪绩效指标

📊 功能对比

功能MCP调试器服务器VS代码调试器Chrome DevTools节点检查器
AI代理集成✅ 完全MCP支持❌ 否❌ 否❌ 没有
断点✅ 高级(条件、点击数、日志点)✅ 是✅ 是✅ 基础
变量检查✅ 带类型信息的深度检查✅ 是✅ 是✅ 基础
TypeScript支持✅ 完全源代码映射支持✅ 是✅ 是⚠️ 有限
悬挂检测✅ 自动采样❌ 否❌ 否❌ 没有
CPU性能分析✅ 是✅ 是✅ 是❌ 没有
内存分析✅ 有泄漏检测✅ 是✅ 是❌ 没有
多个会话✅ 孤立的并发会话⚠️ 有限⚠️ 有限❌ 没有
测试框架集成✅ 杰斯特、摩卡、维特✅ 是❌ 否❌ 没有
远程调试✅ 通过MCP协议✅ 是✅ 是✅ 是的
审核日志记录✅ 企业级❌ 否❌ 否❌ 没有
速率限制✅ 是❌ 否❌ 否❌ 没有
指标导出✅ 普罗米修斯❌ 否❌ 否❌ 没有

📋 错误代码

服务器返回包含以下代码的结构化错误响应:

错误代码描述常见原因解决方案
SESSION_NOT_FOUND会话ID不存在无效ID或已终止会话启动新会话
SESSION_START_FAILED启动调试会话失败命令或权限无效检查命令和文件路径
BREAKPOINT_SET_FAILED设置断点失败文件路径或行号无效使用绝对路径和有效行
BREAKPOINT_NOT_FOUND断点不存在断点ID无效列出断点以验证ID
CONTINUE_FAILED恢复执行失败进程崩溃或终止检查进程状态
STEP_OVER_FAILED跨步失败未暂停或状态无效确保进程已暂停
STEP_INTO_FAILED无法进入未暂停或没有函数调用在函数调用时确保
STEP_OUT_FAILED退出失败不在函数中检查调用堆栈
PAUSE_FAILED暂停执行失败进程未运行确保进程正在运行
INSPECT_FAILED计算表达式失败表达式无效或未暂停检查语法和暂停状态
GET_STACK_FAILED获取调用堆栈失败未暂停先暂停执行
NOT_PAUSED操作需要暂停状态进程正在运行暂停或设置断点
HANG_DETECTION_FAILED检测挂起失败参数无效检查超时和间隔
WATCH_NOT_FOUND监视表达式不存在监视ID无效列出监视以验证ID
RATE_LIMIT_EXCEEDED请求太多超过速率限制等待并重试
AUTH_FAILED身份验证失败令牌无效检查身份验证令牌

测试

运行单元测试

npx nx test @ai-capabilities-suite/mcp-core
npx nx test @ai-capabilities-suite/mcp-server

运行E2E测试

npx nx test @ai-capabilities-suite/mcp-server --testPathPattern=e2e --testTimeout=60000

手动测试

node packages/mcp-server/test-mcp-manual.js

测试.md 获取全面的测试文档。

🏗️ 建筑

技术栈

MCP调试器服务器基于企业级技术构建:

  • MCP-SDK:用于AI代理通信的模型上下文协议实现
  • Chrome DevTools协议(CDP):用于低级调试的Node.js检查器协议
  • 双向通信:与Node.js检查器进行实时双向通信
  • TypeScript:具有完整类型定义的类型安全实现
  • 萨德:工具参数的运行时类型验证
  • 普罗米修斯:指标收集和导出

组件体系结构

┌─────────────────────────────────────────────────────────────┐
│                        AI Agent Layer                        │
│  (Kiro, Amazon Q, GitHub Copilot, Claude Desktop)          │
└────────────────────────┬────────────────────────────────────┘
                         │ MCP Protocol (stdio/JSON-RPC)
                         │
┌────────────────────────▼────────────────────────────────────┐
│                   MCP Debugger Server                        │
│  ┌──────────────┐  ┌──────────────┐  ┌──────────────┐     │
│  │   Session    │  │  Breakpoint  │  │   Variable   │     │
│  │   Manager    │  │   Manager    │  │  Inspector   │     │
│  └──────────────┘  └──────────────┘  └──────────────┘     │
│  ┌──────────────┐  ┌──────────────┐  ┌──────────────┐     │
│  │     Hang     │  │     CPU      │  │    Memory    │     │
│  │   Detector   │  │   Profiler   │  │   Profiler   │     │
│  └──────────────┘  └──────────────┘  └──────────────┘     │
│  ┌──────────────┐  ┌──────────────┐  ┌──────────────┐     │
│  │   Source     │  │    Audit     │  │    Metrics   │     │
│  │  Map Manager │  │    Logger    │  │  Collector   │     │
│  └──────────────┘  └──────────────┘  └──────────────┘     │
└────────────────────────┬────────────────────────────────────┘
                         │ Inspector Protocol (CDP/WebSocket)
                         │
┌────────────────────────▼────────────────────────────────────┐
│                   Node.js Inspector                          │
│  ┌──────────────┐  ┌──────────────┐  ┌──────────────┐     │
│  │   Debugger   │  │   Runtime    │  │   Profiler   │     │
│  │    Domain    │  │    Domain    │  │    Domain    │     │
│  └──────────────┘  └──────────────┘  └──────────────┘     │
└────────────────────────┬────────────────────────────────────┘
                         │
┌────────────────────────▼────────────────────────────────────┐
│                   Target Node.js Process                     │
│              (Application, Test Runner, etc.)                │
└─────────────────────────────────────────────────────────────┘

数据流

  1. AI代理请求:代理通过stdio发送MCP工具请求
  2. 工具验证:服务器使用Zod模式验证参数
  3. 会话管理:服务器创建或检索调试会话
  4. CDP通信:服务器通过WebSocket发送CDP命令
  5. 检查员响应:Node.js检查器返回调试数据
  6. 数据处理:服务器进程和格式响应
  7. MCP响应:服务器向代理返回结构化JSON响应

安全架构

┌─────────────────────────────────────────────────────────────┐
│                      Security Layer                          │
│  ┌──────────────┐  ┌──────────────┐  ┌──────────────┐     │
│  │     Auth     │  │     Rate     │  │     Data     │     │
│  │   Manager    │  │   Limiter    │  │    Masker    │     │
│  └──────────────┘  └──────────────┘  └──────────────┘     │
│  ┌──────────────┐  ┌──────────────┐  ┌──────────────┐     │
│  │   Session    │  │    Audit     │  │   Circuit    │     │
│  │   Timeout    │  │    Logger    │  │   Breaker    │     │
│  └──────────────┘  └──────────────┘  └──────────────┘     │
└─────────────────────────────────────────────────────────────┘

⚡ 演出

基准测试

MacBook Pro(M1,16GB RAM)的性能指标:

操作平均延迟吞吐量备注
会话开始150ms6.6/sec包括进程生成
设置断点5ms200/sec单断点
继续执行2ms500/sec恢复到下一个断点
跨步8ms125/sec单步操作
变量检查12ms83/sec仅限局部变量
表达式求值15ms66/sec简单表达式
调用堆栈检索10ms100/sec全堆栈跟踪
挂起检测5000ms0.2/sec超时5s
CPU配置文件开始3ms333/sec开始配置文件
CPU配置文件停止50ms20/sec包括分析
堆快照200ms5/sec10MB堆

资源使用情况

典型资源消耗:

  • 记忆:50-100MB基础+每个活动会话10-20MB
  • 中央处理器:\=18.0.0。我们建议使用最新的LTS版本。

Q: 这适用于TypeScript吗? A: 是的!完全支持TypeScript和源代码映射。在.ts文件中设置断点,并使用其原始TypeScript名称检查变量。

Q: 我可以调试远程进程吗? A: 服务器通过检查器协议连接到本地Node.js进程。对于远程调试,请使用SSH隧道或在远程计算机上部署服务器。

Q: 我可以运行多少个并发调试会话? A: 服务器支持100多个并发会话。每个会话都是隔离的,不会干扰其他会话。

Q: 这适用于Docker容器吗? A: 是的!我们提供官方Docker镜像。看 医生-医生.md 了解详情。

调试问题

Q: 为什么我的断点没有命中? A: 常见原因:

  1. 文件路径是相对路径而不是绝对路径
  2. 行号没有可执行代码
  3. 未执行代码路径
  4. 缺少源代码映射(对于TypeScript)

Q: 如何调试特定的测试? A: 使用测试运行器启动调试会话:

{
  "tool": "debugger_start",
  "arguments": {
    "command": "node",
    "args": ["node_modules/.bin/jest", "my-test.spec.js", "--runInBand"]
  }
}

Q: 我可以调试异步代码吗? A: 是的!调试器完全支持async/await、Promises和回调。在异步函数中设置断点,并正常遍历它们。

Q: 如何检测内存泄漏? A: 使用内存分析工具:

  1. 在开始时拍摄堆快照
  2. 运行你的代码
  3. 拍摄另一个堆快照
  4. 比较快照以识别不断增长的对象

性能问题

Q: 调试会减慢我的应用程序吗? A: 是的,调试会增加开销。主动调试时,预计速度会减慢2-5倍。使用条件断点并禁用不必要的断点,以尽量减少影响。

Q: 服务器使用了多少内存? A: 基本内存使用量为50-100MB,每个活动调试会话加10-20MB。

Q: 我可以在CI/CD管道中使用它吗? A: 是的!服务器是为自动化而设计的。在CI/CD管道中使用挂起检测和测试调试,以便及早发现问题。

安全问题

Q: 在生产中使用安全吗? A: 服务器包括企业安全功能(身份验证、速率限制、审计日志),但生产中的调试应谨慎进行,仅在必要时进行。

Q: 如何保护敏感数据? A: 该服务器包括用于常见模式(电子邮件、SSN、信用卡)的自动PII掩码。根据需要配置其他掩码规则。

Q: 我可以限制哪些操作是允许的吗? A: 是的!使用身份验证并为每个用户/令牌配置允许的操作。请参阅文档中的“安全”部分。

集成问题

Q: 如何与VS Code集成? A: 请参阅 VSCODE-集成.md 获取详细的集成说明。

Q: 我可以在GitHub Copilot上使用这个吗? A: 是的!GitHub Copilot可以使用MCP服务器。在Copilot设置中配置服务器。

Q: 这适用于Mocha/Jest/Vitest吗? A: 是的!该服务器内置了对所有主要测试框架的支持。只需使用您的测试运行器命令启动调试会话。

💬 支持与社区

获取帮助

  • 📖 文档: 完整文档
  • 🐛 错误报告:
  • 💡 功能请求:
  • 📧 电子邮件支持: info@digitaldefiance.org
  • 💬 社区聊天: 加入我们的Discord _(即将推出)_

资源

贡献

我们欢迎捐款!看 贡献.md 作为指导方针。

赞助

支持项目:

📝 更新日志

版本1.0.4(当前)

发布日期:2025年12月

新功能:

  • 通过综合示例增强文档
  • 改进了错误消息和故障排除指南
  • 增加了性能基准和指标
  • 增强的安全功能文档

漏洞修补:

  • 修复了WebSocket连接稳定性问题
  • 改进了边缘情况下的源图分辨率
  • 修复了长时间运行的会话中的内存泄漏问题

演出:

  • 会话启动时间减少20%
  • 大型物体的优化变量检测
  • 提高了CPU分析的准确性

版本1.0.2

发布日期2024年11月

新功能:

  • 通过官方镜像添加Docker支持
  • 实现了Prometheus指标导出
  • 添加了健康检查端点
  • 采用结构化格式增强审计日志记录

改进:

  • 更好地处理CDP协议错误
  • 改进的TypeScript源代码映射支持
  • 增强会话隔离

版本1.0.1

发布日期2024年11月

新功能:

  • 添加了CPU性能分析支持
  • 添加了内存分析和堆快照
  • 实施绩效时间表跟踪
  • 添加了高级断点类型(日志点、点击数)

改进:

  • 增强的挂起检测算法
  • 改进了可变检查性能
  • 更好地处理异步代码

版本1.0.0

发布日期2024年10月

初始版本:

  • 25个综合调试工具
  • 完全支持TypeScript和源代码映射
  • 悬挂检测,可配置采样
  • 多个隔离的并发会话
  • 测试框架集成(Jest、Mocha、Vitest)
  • 具有变化检测功能的可变监视
  • 调用堆栈导航
  • 条件断点
  • 嵌套分辨率的对象检查
  • 企业安全功能
  • 可观察性和监测

🗺️ 路线图

版本1.1.0(计划于2025年第一季度发布)

  • \[\]时间旅行调试(记录和回放)
  • \[\]使用AI的智能断点建议
  • \[\]增强的VS代码扩展
  • \[\]WebAssembly调试支持
  • \[\]分布式跟踪集成

版本1.2.0(计划于2025年第二季度发布)

  • \[\]浏览器调试支持(Chrome、Firefox)
  • \[\]移动端调试(React Native)
  • \[\]协作调试会话
  • \[\]高级可视化工具
  • \[\]自定义工具插件系统

2.0.0版本(计划于2025年第三季度发布)

  • \[\]多语言支持(Python、Go、Rust)
  • \[\]云原生调试
  • \[\]Kubernetes集成
  • \[\]先进的人工智能调试辅助
  • \[\]实时协作功能

想影响路线图吗? 分享你的想法

目录标签

目录标签

TypeScriptClaude性能分析Node.js调试本地部署JavaScript调试AI辅助调试测试框架集成

支持客户端

Claude DesktopClaudeVS Code

接入字段

传输方式(transport,传输协议)

stdio

鉴权方式(authType,认证方式)

token

运行时(runtime,运行环境)

Node.js

来源包(packageName,安装包名)

@ai-capabilities-suite/mcp-debugger-server

工具数量(toolCount,工具数)

21

资源数量(resourceCount,资源数)

0

提示词数量(promptCount,提示词数)

0

权限和风险

stdiotoken部署方式未说明

接入前请确认传输方式、认证方式和部署位置,并根据实际工具能力限制访问范围。

安装前确认

不要直接授予不必要的文件、网络或账号权限;先核对安装命令和配置内容。

来源信息

继续浏览同类 MCP