MCP调试器服务器
](https://www.npmjs.com/package/@ai-capabilities-suite/mcp-debugger-server) ](https://github.com/digital-defiance/mcp-debugger-server/releases)  ](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(字符串,必填):调试会话IDfile(string,必填):文件路径(绝对或相对)line(数字,必填):行号(1-索引)condition(字符串,可选):可选条件表达式(例如,“x>10”)
例子:
{
"sessionId": "session-123",
"file": "/path/to/file.js",
"line": 42,
"condition": "count > 5"
}4. debugger_remove_breakpoint
从会话中删除断点。
参数:
sessionId(字符串,必填):调试会话IDbreakpointId(字符串,必填):要删除的断点ID
5. debugger_toggle_breakpoint
在启用和禁用状态之间切换断点。
参数:
sessionId(字符串,必填):调试会话IDbreakpointId(字符串,必填):要切换的断点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(字符串,必填):调试会话IDexpression(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(字符串,必填):调试会话IDobjectId(string,必填):上次检查的对象IDmaxDepth(数字,可选):要遍历的最大深度(默认值:2)
变量监视
16. debugger_add_watch
将表达式添加到观察列表中。
参数:
sessionId(字符串,必填):调试会话IDexpression(string,必填):要查看的表达式
17. debugger_remove_watch
从观察列表中删除表达式。
参数:
sessionId(字符串,必填):调试会话IDwatchId(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(字符串,必填):调试会话IDframeIndex(数字,必填):帧索引(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-server2.配置您的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:调试一个简单脚本
// 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 }] }🎬 演示和截图
调试在行动
_在Node.js应用程序中设置断点和检查变量_
_检测和诊断无限循环_
_使用源代码映射支持调试TypeScript代码_
备注:用实际屏幕截图或演示调试器运行的动画GIF替换占位符图像。看 图片/README.md 作为指导方针。
🔧 故障排除
常见问题及解决方法
问题:“未找到会话”
症状:尝试使用会话ID时出错 原因:会话ID无效或会话已终止 解决方案:
# Start a new debug session
{
"tool": "debugger_start",
"arguments": {
"command": "node",
"args": ["your-script.js"]
}
}问题:“进程必须暂停”
症状:无法检查变量或计算表达式 原因:尝试在进程运行时检查变量 解决方案:
- 设置断点并继续,或者
- 使用
debugger_pause立即暂停执行
问题:断点未命中
症状:执行不会在断点处停止 原因:断点位置无效或未执行代码路径 解决方案:
- 验证文件路径是否正确(使用绝对路径):
"file": "/absolute/path/to/your/file.js" // ✅ Good
"file": "file.js" // ❌ Avoid- 检查行号是否有可执行代码(不是注释或空行)
- 验证断点是否已设置并验证:
{
"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文件中的断点不会暂停执行 原因:未启用或找不到源映射 解决方案:
- 确保
"sourceMap": true在tsconfig.json中:
{
"compilerOptions": {
"sourceMap": true
}
}- 使用
--enable-source-maps启动Node.js时的标志:
node --enable-source-maps dist/app.js- 验证.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错误 原因:检查器协议启动失败 解决方案:
- 确保Node.js版本为18或更高:
node --version # Should be >= 18.0.0- 检查进程中没有附加其他调试器
- 验证流程是否成功启动:
node --inspect-brk your-script.js
# Should output: Debugger listening on ws://...问题:内存使用率高
症状:服务器占用过多内存 原因:并发会话太多或堆快照太大 解决方案:
- 限制并发会话
- 停止未使用的会话:
{
"tool": "debugger_stop_session",
"arguments": { "sessionId": "session-id" }
}- 配置资源限制(请参阅环境变量部分)
问题:性能缓慢
症状:调试操作缓慢 原因:大型物体、深度检查或多个断点 解决方案:
- 限制物体检查深度:
{
"tool": "debugger_inspect_object",
"arguments": {
"sessionId": "session-id",
"objectId": "obj-id",
"maxDepth": 2 // Limit depth
}
}- 使用条件断点来减少暂停
- 删除不必要的断点
获取帮助
如果您遇到此处未涵盖的问题:
- 检查日志:使用启用调试日志记录
DEBUG=mcp:* - 搜索现有问题:
- 创建新问题:包括:
- Node.js版本(node --version) - 服务器版本(ts-mcp-server --version) - 错误消息和堆栈跟踪 - 重现步骤
- 电子邮件支持: 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.) │
└─────────────────────────────────────────────────────────────┘数据流
- AI代理请求:代理通过stdio发送MCP工具请求
- 工具验证:服务器使用Zod模式验证参数
- 会话管理:服务器创建或检索调试会话
- CDP通信:服务器通过WebSocket发送CDP命令
- 检查员响应:Node.js检查器返回调试数据
- 数据处理:服务器进程和格式响应
- MCP响应:服务器向代理返回结构化JSON响应
安全架构
┌─────────────────────────────────────────────────────────────┐
│ Security Layer │
│ ┌──────────────┐ ┌──────────────┐ ┌──────────────┐ │
│ │ Auth │ │ Rate │ │ Data │ │
│ │ Manager │ │ Limiter │ │ Masker │ │
│ └──────────────┘ └──────────────┘ └──────────────┘ │
│ ┌──────────────┐ ┌──────────────┐ ┌──────────────┐ │
│ │ Session │ │ Audit │ │ Circuit │ │
│ │ Timeout │ │ Logger │ │ Breaker │ │
│ └──────────────┘ └──────────────┘ └──────────────┘ │
└─────────────────────────────────────────────────────────────┘⚡ 演出
基准测试
MacBook Pro(M1,16GB RAM)的性能指标:
| 操作 | 平均延迟 | 吞吐量 | 备注 |
|---|---|---|---|
| 会话开始 | 150ms | 6.6/sec | 包括进程生成 |
| 设置断点 | 5ms | 200/sec | 单断点 |
| 继续执行 | 2ms | 500/sec | 恢复到下一个断点 |
| 跨步 | 8ms | 125/sec | 单步操作 |
| 变量检查 | 12ms | 83/sec | 仅限局部变量 |
| 表达式求值 | 15ms | 66/sec | 简单表达式 |
| 调用堆栈检索 | 10ms | 100/sec | 全堆栈跟踪 |
| 挂起检测 | 5000ms | 0.2/sec | 超时5s |
| CPU配置文件开始 | 3ms | 333/sec | 开始配置文件 |
| CPU配置文件停止 | 50ms | 20/sec | 包括分析 |
| 堆快照 | 200ms | 5/sec | 10MB堆 |
资源使用情况
典型资源消耗:
- 记忆: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: 常见原因:
- 文件路径是相对路径而不是绝对路径
- 行号没有可执行代码
- 未执行代码路径
- 缺少源代码映射(对于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: 使用内存分析工具:
- 在开始时拍摄堆快照
- 运行你的代码
- 拍摄另一个堆快照
- 比较快照以识别不断增长的对象
性能问题
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 _(即将推出)_
资源
- NPM包: @ai功能套件/mcp调试器服务器
- Docker 中心: digitaldeffe/mcp调试器服务器
- GitHub存储库: 人工智能功能套件
- API 文档: API毫米
- 工具参考: 工具参考.md
贡献
我们欢迎捐款!看 贡献.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集成
- \[\]先进的人工智能调试辅助
- \[\]实时协作功能
想影响路线图吗? 分享你的想法
