java mcp调试器
一 MCP(模型上下文协议)服务器 用于调试运行Java 应用程序超过 JDWP.
它允许AI助手,如 GitHub Copilot:
- 在加载的类中设置断点
- 检查局部变量和参数
- 行走堆栈痕迹
- 跨越、进入和退出方法
- 列出正在运行的线程
隐私第一 –MCP服务器仅通过stdio与MCP客户端通信 通过本地TCP套接字连接到目标JVM。没有调试数据发送到 外部服务。
______________________________________________________________________
存储库结构
java-mcp-debugger/
├── src/
│ ├── index.ts
│ ├── jdwp/
│ └── tools/
├── package.json
├── package-lock.json
├── tsconfig.json
└── README.md______________________________________________________________________
先决条件
| 工具 | 最低版本 |
|---|---|
| Node.js | 18 |
| npm | 8 |
| Java(JDK) | 11 |
______________________________________________________________________
无需本地构建即可使用
一旦包发布到npm,您就可以在MCP中直接引用它 配置:
{
"mcp": {
"servers": {
"java-debugger": {
"type": "stdio",
"command": "npx",
"args": ["-y", "java-mcp-debugger"]
}
}
}
}用户就是这样做的 不 需要克隆存储库或构建 dist/ 当地。
______________________________________________________________________
本地开发
npm install
npm run build编译的入口点是 dist/index.js.
对于本地签出,您还可以直接引用构建的文件:
{
"mcp": {
"servers": {
"java-debugger": {
"type": "stdio",
"command": "node",
"args": ["/absolute/path/to/dist/index.js"]
}
}
}
}______________________________________________________________________
使用JDWP运行目标JVM
在启用JDWP的情况下启动Java应用程序,例如:
java \
-agentlib:jdwp=transport=dt_socket,server=y,suspend=y,address=127.0.0.1:5005 \
-jar your-app.jar对于连接模式,请使用 suspend=n 并致电 suspend_vm 连接后:
java \
-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=127.0.0.1:5005 \
-jar your-app.jar______________________________________________________________________
可用的MCP工具
| 工具 | 说明 |
|---|---|
connect_to_jvm | 连接到启用JDWP的JVM(host, port) |
disconnect | 关闭调试会话 |
list_loaded_classes | 列出JVM加载的类(可选 filter) |
set_breakpoint | 设置断点(className, lineNumber) |
clear_breakpoint | 通过以下方式删除断点 breakpointId |
list_breakpoints | 显示所有活动断点 |
resume_and_wait | 恢复JVM并等待断点触发 |
get_stack_trace | 打印挂起线程的调用堆栈 |
get_local_variables | 在给定帧处转储作用域中的局部变量 |
step_over | 执行当前行而不介入调用 |
step_into | 进入当前行的方法调用 |
step_out | 运行到当前方法的末尾 |
get_threads | 列出所有具有状态的JVM线程 |
suspend_vm | 立即暂停整个JVM |
resume_vm | 在不等待事件的情况下恢复JVM |
______________________________________________________________________
发布新的npm版本
中的工作流 .github/workflows/publish-mcp-package.yml 发布npm 在GitHub发布时打包。
发布前:
- 添加一个
NPM_TOKEN存储库秘密 - 更新
package.json到要发布的版本 - 为该版本创建GitHub版本
工作流运行:
npm ci
npm pack --dry-run
npm publish______________________________________________________________________
发展
npm run dev______________________________________________________________________
许可证
麻省理工学院
