mcp java开发工具
](https://nodejs.org/) ](https://www.npmjs.com/)   ](https://github.com/nimbly-dev/mcp-java-dev-tools) ](https://lobehub.com/mcp/nimbly-dev-mcp-java-dev-tools)
MCP Java开发工具 通过轻量级sidecar代理连接代理编码工具和实时Java运行时行为。
静态分析只能让你走到这一步。通过直接连接到正在运行的JVM,该工具可以显示仅静态分析无法看到的字节码级运行时信号,从而实现探测验证检查、目标回归检查、运行时路径验证和确定性调试工作流。
运行时代理是用ByteBuddy构建的,与JDWP一起工作,而不是取代它。在探测层之上,系统添加了框架感知的数据合成和严格的、故障关闭的工具契约——这样代理编排者就可以根据实际的运行时证明而不是推理做出决策。
目前的重点是HTTP入口点。非HTTP协议支持即将到来,但尚未实现——在核心合约得到推广之前,需要具体的模型和验证目标。
有关操作员工作流和端到端执行流,请参阅 docs/工作原理/README.md.
______________________________________________________________________
需求
| 要求 | 版本 |
|---|---|
| Node.js | v24.13.0 (测试) |
| npm | 11.6.2 (测试) |
| JDK | 17+ |
| Maven | 任何最近的 |
______________________________________________________________________
构建
npm.cmd install
npm.cmd run build
mvn -f java-agent\pom.xml package这会产生两个工件:
- MCP服务器 →
dist/server.js - Java代理包 →
java-agent/core/core-probe/target/mcp-java-dev-tools-agent-0.1.0-all.jar
______________________________________________________________________
安装
安装程序
安装程序流程分为安装和更新脚本(Codex和Kiro技能)。
./scripts/install.sh这将安装默认技能集:
mcp-java-dev-tools-line-probe-runmcp-java-dev-tools-regression-suitemcp-java-dev-tools-regression-plan-craftermcp-java-dev-tools-regression-resultmcp-java-dev-tools-issue-reportmcp-java-dev-tools-probe-registry-manager
要更新/覆盖已安装的现有技能(并添加缺少的新技能):
./scripts/update.sh两个脚本:
- 跑
npm run build:compile - 跑
mvn -f java-agent/pom.xml package - 将已发布的技能同步到目标客户技能目录中
- 默认情况下,提示第一个工作区并生成MCP env配置块输出(特定于Codex/Kiro)
可以跳过默认的MCP注册表环境输入:
./scripts/install.sh --client codex --no-configure-mcp-envMCP环境输入捕获:
MCP_JAVA_AGENT_JAR(必填;构建Java代理jar的绝对路径)
Spring集成启动器
使用助手启动器运行带有自动推断Java代理的Spring应用程序,包括作用域和探测端口:
./spring-integration/run-spring-app-with-mcp.sh行为:
- 提示输入Spring项目绝对路径、应用程序端口(默认
8080),可选JDWP端口和Java 21兼容性 - 推断包括来自的包
src/main/java - 从以下位置开始分配探测端口
9173如果被占用,则递增 - 打开一个新的Git Bash窗口,并启动Spring应用程序
JAVA_TOOL_OPTIONS包括-javaagent
手动设置
Java代理设置
目标JVM必须在上运行 Java 17或更新版本。如果您使用的是Java 21,请参阅 Java 21兼容模式 在继续之前。
在启动应用程序时添加以下内容作为JVM参数,替换 {desktopName}:
-javaagent:C:\Users\{desktopName}\repository\mcp-java-dev-tools\java-agent\core\core-probe\target\mcp-java-dev-tools-agent-0.1.6.jar=host=0.0.0.0;port=9191;exclude=com.nimbly.mcpjavadevtools.agent.**,**.config.**,**Test提示: 这include过滤器是可选的。如果省略,代理将从启动命令元数据推断包含范围(sun.java.command),通常是启动类包(例如com.acme.app.**).集include当推理不明确或过于宽泛时。include支持逗号分隔的基路径: - 包globs(例如com.thirdparty.service.**) - 精确类FQCN(例如com.example.ApiClass) - 在一个值中混合模块/类目标(例如com.example.app.**,com.example.api.**,com.thirdparty.SomeClass)
要确认代理正在检测您的类,请检查启动日志中的以下行:
[mcp-probe]: com.yourpackagename.yourclassname如果你没有看到你的课程列表,请检查你的 include 过滤器。
______________________________________________________________________
IntelliJ IDEA — Step by Step
- 打开 运行>编辑配置。.. 从顶部菜单
- 选择目标应用程序的运行配置(如果不存在,则创建一个)
- 展开 修改选项 下拉并启用 添加VM选项 如果它还不可见
- 在 虚拟机选项 字段,粘贴完整
-javaagent:...上面的论点 - 点击 应用那么 好的
- 正常运行您的应用程序——代理程序在启动时连接
查找JAR路径: 如果您不确定绝对路径,请在“项目”面板中右键单击代理JAR并选择 复制路径>绝对路径.
在Windows上,在路径中使用反斜杠(C:\Users\...).在macOS/Linux上,使用正斜杠(/home/...或/Users/...).
______________________________________________________________________
Eclipse — Step by Step
- 首选 运行>运行配置。.. (或 调试配置。.. 如果你正在调试)
- 在下面选择您的应用程序 应用程序,或创建一个新的
- 打开 参数 标签
- 在 VM自变量 字段,粘贴完整
-javaagent:...上面的论点 - 点击 应用那么 跑 (或 调试)
查找JAR路径: 导航到文件系统中的JAR,右键单击它,然后复制完整路径。将其粘贴到代理参数中,替换占位符路径。
在Windows上,Eclipse接受路径中的正向和反向斜线,但反向斜线更安全。如果路径包含空格,请用引号括起来: -javaagent:"C:\path with spaces\agent.jar"=...______________________________________________________________________
运行时配置
Java代理选项
捕获历史缓冲区大小
控制代理在每个探测点保留的方法捕获数。
| 方法 | 值 |
|---|---|
| 代理arg | captureMethodBufferSize= |
| JVM属性 | -Dmcp.probe.capture.method.buffer.size= |
| 环境变量 | MCP_PROBE_CAPTURE_METHOD_BUFFER_SIZE= |
默认值为 3。如果您需要对单个探测点进行更深入的捕获历史记录,请增加此值。
Java 21兼容模式
如果您的目标JVM在Java 21上运行,则需要此项。启用ByteBuddy对较新JVM内部的实验支持。
| 方法 | 值 |
|---|---|
| 代理arg | allowJava21=true (别名: java21Compat=true, byteBuddyExperimental=true) |
| JVM属性 | -Dmcp.probe.bytebuddy.experimental=true (旧别名: -Dmcp.probe.allow.java21=true) |
| 环境变量 | MCP_PROBE_BYTEBUDDY_EXPERIMENTAL=true (旧别名: MCP_PROBE_ALLOW_JAVA21=true) |
默认值为 false.
MCP服务器环境变量
必需
| 变量 | 目的 |
|---|---|
MCP_JAVA_AGENT_JAR | 用于探测有线运行时启动的已构建Java代理jar的绝对路径 |
可选的
| 变量 | 默认值 | 注释 |
|---|---|---|
MCP_JAVA_REQUEST_MAPPING_RESOLVER_JAR | — | |
MCP_JAVA_REQUEST_MAPPING_RESOLVER_CLASSPATH | — | |
MCP_JAVA_BIN | — | |
MCP_PROBE_LINE_SELECTION_MAX_SCAN_LINES | 120 | 范围:10-2000 |
MCP_PROBE_WAIT_MAX_RETRIES | 1 | 最大值:10 |
MCP_PROBE_WAIT_UNREACHABLE_RETRY_ENABLED | false | |
MCP_PROBE_WAIT_UNREACHABLE_MAX_RETRIES | 3 | 最大值:10 |
MCP_PROBE_INCLUDE_EXECUTION_PATHS | false | 设置 true 包括 executionPaths 探测器有效载荷中的阵列 |
配置范围矩阵
| 设置 | 被消耗 | 影响 |
|---|---|---|
.mcpjvm/probe-config.json | MCP服务器 | 具有工作区/配置文件/探针的规范多探针路由 |
include / exclude 在 -javaagent:... (或 mcp.probe.include / MCP_PROBE_INCLUDE) | Java代理 | 在运行时检测哪些类 |
MCP_PROBE_INCLUDE_EXECUTION_PATHS | MCP服务器 | 是否 executionPaths 阵列包含在返回的探测器有效载荷中 |
探头端点
这些路径是固定的,不能被覆盖。
| 端点 | 路径 |
|---|---|
| 状态 | /__probe/status |
| 重置 | /__probe/reset |
| 捕获 | /__probe/capture |
______________________________________________________________________
技能
| 技能 | 目的 |
|---|---|
mcp-java-dev-tools-line-probe-run | 线路级探测执行 |
mcp-java-dev-tools-regression-suite | 回归检查编排 |
mcp-java-dev-tools-regression-plan-crafter | 制定和完善确定性持久回归计划规范(metadata.json, contract.json, plan.md) |
mcp-java-dev-tools-regression-result | 使用可扩展显示模板(默认端点表)呈现工件导出的结果 |
mcp-java-dev-tools-issue-report | 山宁泰从会话、运行时和探测证据中报告问题 |
______________________________________________________________________
贡献
贡献指导生活 贡献.md.
该指南对以下内容进行了区分:
- 合成器和适配器贡献
- 探测工具和配方生成贡献
在打开大型拉取请求或更改公共工具合约之前,先从那里开始。
MCP工具
| 工具 | |
|---|---|
debug_check | |
project_context_validate | |
probe_check | |
probe_target_infer | |
probe_recipe_create | |
probe_get_status | |
probe_get_capture | |
probe_reset | |
probe_wait_for_hit | |
probe_enable | |
probe_registry_list | |
probe_registry_reload |
探测注册表运行时行为:
- 从发现的工作区加载注册表配置
.mcpjvm/probe-config.json. - 文件编辑会自动重新加载去抖动。
probe_registry_reload仍然可用作确定性手动刷新/回退。
