MCP Java Dev Tools

by nimbly-dev

Not rated
GitHub

About

Bridges agentic coding tools and live Java runtime behavior through a lightweight sidecar agent.

Details

Author
nimbly-dev
Categories
Developer Tools, Other

Setup

Install MCP Java Dev Tools in your MCP client (Claude Desktop, Cursor, Windsurf, and others).

Repository: https://github.com/nimbly-dev/mcp-java-dev-tools

Follow the installation instructions in the repository README, then restart your MCP client.

Bridges agentic coding tools and live Java runtime behavior through a lightweight sidecar agent.

MCP Java Dev Toolsbridges agentic coding tools and live Java runtime behavior through a lightweight sidecar agent.

Static analysis only gets you so far. By attaching directly to a running JVM, this tool surfaces bytecode-level runtime signals that static analysis alone can't see — enabling probe-verified inspection, targeted regression checks, runtime-path validation, and deterministic debugging workflows.

The runtime agent is built with ByteBuddy and works alongside JDWP rather than replacing it. On top of the probe layer, the system adds framework-aware data synthesis and strict, fail-closed tool contracts — so agent orchestrators can make decisions grounded in actual runtime proof, not inference.

The current focus is HTTP entrypoints. Non-HTTP protocol support is on the horizon but not yet implemented — it will need concrete models and validation targets before the core contracts can be generalized.

For operator workflows and end-to-end execution flows, seedocs/how-it-works/README.md.

npm.cmd install npm.cmd run build mvn -f java-agent\pom.xml package

- MCP server→dist/server.js
- Java agent bundle→java-agent/core/core-probe/target/mcp-java-dev-tools-agent-0.1.0-all.jar

The Java 21 lifecycle helper is packaged separately atjava-agent/core/core-jvm-attach/target/mcp-java-dev-tools-core-jvm-attach-0.1.8.jar.

mcp-server/is an opt-in Java 21, Spring Boot, and Spring AI MCP server for thev0.1.9migration path. It exposes the migrated Probe and JVM lifecycle MCP Tools; the existing TypeScript MCP server atdist/server.jsremains the production default.

Build and verify the foundation independently:

bash ./scripts/package-java-mcp-server.sh # Windows PowerShell: .\scripts\package-java-mcp-server.ps1

The executable JAR ismcp-server/application/target/mcp-java-dev-tools-server-0.1.9.jar. Its adjacentsidecar/directory contains the packaged helper and agent artifacts; it uses STDIO only, reserving stdout for MCP JSON-RPC and sending diagnostics to stderr. Seemcp-server/README.mdfor its module boundaries and deferred migration scope.

Installer flow is split into install and update scripts (Codex and Kiro skills).

- mcp-java-dev-tools-line-probe-run
- mcp-java-dev-tools-regression-suite
- mcp-java-dev-tools-regression-plan-crafter
- mcp-java-dev-tools-regression-result
- mcp-java-dev-tools-issue-report
- mcp-java-dev-tools-bug-drill
- mcp-java-dev-tools-bug-fix
- mcp-java-dev-tools-failure-lens
- mcp-java-dev-tools-probe-registry-manager

To update/overwrite existing installed skills (and add missing new skills):

- runnpm run build:compile
- runmvn -f java-agent/pom.xml package
- sync shipped skills into the target client skill directory
- by default prompt for a first workspace and generate MCP env config block output (client-specific)

Kiro and Claude Code behavior during install/update:

- stale managed skills matchingmcp-java-dev-tools-*are detected and can be deleted interactively
- installed managed skills are validated after sync (SKILL.md+ expected folder presence)
- restart/reload guidance is printed so the visible tool/skill list refreshes from the synced skill directory

Default MCP registry env input can be skipped:

./scripts/install.sh --client codex --no-configure-mcp-env # Or: ./scripts/install.sh --client claude --no-configure-mcp-env

- MCP_JAVA_AGENT_JAR(required; absolute path to built Java agent jar)

Use the helper launcher to run a Spring app with auto-inferred Java agent include scope and probe port:

./spring-integration/run-spring-app-with-mcp.sh

- prompts for Spring project absolute path, app port (default8080), and optional JDWP port
- infers include package fromsrc/main/java
- assigns probe port starting at9173and increments if occupied
- opens a new Git Bash window and starts the Spring app withJAVA_TOOL_OPTIONSincluding-javaagent

The target JVM must run onJava 21 or newer. Java 17 is unsupported because the Java reactor and dynamic lifecycle helper compile for Java 21.

Add the following as a JVM argument when launching your application, replacing{desktopName}:

-javaagent:C:\Users\{desktopName}\repository\mcp-java-dev-tools\java-agent\core\core-probe\target\mcp-java-dev-tools-agent-0.1.8.jar=host=0.0.0.0;port=9191;exclude=com.nimbly.mcpjavadevtools.agent.,.config.,Test

Tip:Theincludefilter is optional. If omitted, the agent infers an include scope from startup command metadata (sun.java.command), usually the startup class package (for examplecom.acme.app.). Setincludeexplicitly when inference is ambiguous or too broad.

includesupports comma-separated basepaths:

- package globs (for examplecom.thirdparty.service.)
- exact class FQCNs (for examplecom.example.ApiClass)
- mixed module/class targeting in one value (for examplecom.example.app.,com.example.api.,com.thirdparty.SomeClass)

To confirm the agent is instrumenting your classes, check the startup logs for lines like:

[mcp-probe]: com.yourpackagename.yourclassname

If you don't see your classes listed, check yourincludefilter.

The separate lifecycle helper discovers local JVM PIDs and dynamically loads only an agent JAR with the expected Sidecar Agent manifest. It requires an exact PID and explicit confirmation; discovery is intentionally unverified and does not expose target command lines or properties.

java -jar java-agent\core\core-jvm-attach\target\mcp-java-dev-tools-core-jvm-attach-0.1.8.jar discover java -jar java-agent\core\core-jvm-attach\target\mcp-java-dev-tools-core-jvm-attach-0.1.8.jar attach --pid {pid} --expected-process-start-epoch-ms {process-start-epoch-ms} --agent-jar {absolute-agent-jar-path} --confirm true java -jar java-agent\core\core-jvm-attach\target\mcp-java-dev-tools-core-jvm-attach-0.1.8.jar deactivate --pid {pid} --expected-process-start-epoch-ms {process-start-epoch-ms} --agent-jar {absolute-agent-jar-path} --confirm true

On Java 21, dynamic agent loading succeeds by default but emits the JEP 451 warning.-XX:+EnableDynamicAgentLoadingsuppresses that warning only when operators explicitly choose it.-XX:-EnableDynamicAgentLoadingand-XX:+DisableAttachMechanismreturn Fail-Closed lifecycle results.VirtualMachine.detach()closes the helper session; it does not unload agent classes. Deactivation disables Sidecar Agent-owned instrumentation and reports non-restorable classes.

For local CI, declaresidecarLifecycle.activationin the project Artifact instead of attaching through a shell wrapper. The supported startup is one directjava/java.exeinvocation with one relative-jarpath; the execution orchestrator owns attach, canonical Probe verification, resume continuity, cancellation cleanup, and terminal deactivation under onesuiteRunId.

{ "sidecarLifecycle": { "activation": "dynamic_attach_local", "targetStartupName": "orders-service", "probeId": "orders-service", "verifyProbeAfterAttach": true } }

- OpenRun > Edit Configurations...from the top menu
- Select the run configuration for your target application (or create one if it doesn't exist)
- Expand theModify optionsdropdown and enableAdd VM optionsif it isn't already visible
- In theVM optionsfield, paste the full-javaagent:...argument from above
- ClickApply, thenOK
- Run your application normally — the agent attaches on startup

Finding the JAR path:If you're unsure of the absolute path, right-click the agent JAR in the Project panel and chooseCopy Path > Absolute Path.

On Windows, use backslashes in the path (C:\Users\...). On macOS/Linux, use forward slashes (/home/...or/Users/...).
- Go toRun > Run Configurations...(orDebug Configurations...if you're debugging)
- Select your application underJava Application, or create a new one
- Open theArgumentstab
- In theVM argumentsfield, paste the full-javaagent:...argument from above
- ClickApply, thenRun(orDebug)

Finding the JAR path:Navigate to the JAR in your file system, right-click it, and copy the full path. Paste it into the agent argument, replacing the placeholder path.

On Windows, Eclipse accepts both forward and backslashes in paths, but backslashes are safer. Wrap the path in quotes if it contains spaces:-javaagent:"C:\path with spaces\agent.jar"=...

Controls how many method captures the agent retains per probe point.

Default is3. Increase this if you need deeper capture history for a single probe point.

MCP_STDIO_MAX_BUFFER_SIZEcontrols the MCP stdio input frame limit used by the TypeScript compatibility server. It is bounded to protect the process from unbounded input; increasing it does not override HTTP target or proxy header-size limits.

These paths are fixed and cannot be overridden.

Contribution guidance lives inCONTRIBUTING.md.

- synthesizer and adapter contributions
- probe tools and recipe generation contributions

Start there before opening a large pull request or changing public tool contracts.

- Registry config is loaded from discovered workspace.mcpjvm/probe-config.json.
- File edits are auto-reloaded with debounce.
- artifact_managementwithartifactType=probe_configandaction=reloadremains available as deterministic manual refresh/fallback.

This is a web browser that enables your coding agent, such as Claude Code, to visit websites on your behalf and assist you in identifying bugs or creating UI test cases.

A stateful LSP runtime for AI agents: warm language server sessions with 50+ tools for go-to-definition, find-references, diagnostics, rename, and more across 30+ languages.

MCP server for the Brainfuck programming language that allows your favourite LLM to debug Brainfuck programs.

Diagnoses token waste in Claude Code sessions with 6 anomaly types and severity scoring. Fully local.

MCP server that gives coding agents program-analysis primitives — data flow, call graphs, taint analysis — so they reason from ground truth instead of grep-and-guess. (same as the GitHub About — keeps your messaging consistent across the web).

An MCP service that equips your workspace with a complete set of AI-accessible development tools for reading, editing, executing, and managing code.

Fennara MCP connects AI agents like Codex, Cursor, Claude Code, and Claude Desktop to Godot-aware tools for real Godot projects. It focuses on feedback from Godot: GDScript diagnostics, scene validation, runtime errors, scene inspection, node properties, screenshots, SemanticSearch, and patch-and-rerun workflows.

Search verified engineering fixes by error message or technology. Step-by-step solutions with trust scores, built for developers and AI agents.

Allows AI assistants to remotely drive the JetBrains debugger via MCP, including breakpoints, stepping, and variable inspection.

Resolves your Gradle project’s real classpath and returns Java source, method signatures, and class structure for any dependency class—using the version your build actually uses, not random files from ~/.gradle/caches.

LSP-Claw is an MCP server that lets an AI agent safely build, run, and debug Lua/LSP web apps inside a controlled Mako/Xedge/BAS lab, including on embedded or RTOS devices.

No reviews yet — be the first

Sign in to leave a review

Use Google, GitHub, or an email account so ratings stay tied to real people.

Email sign in

No reviews posted yet.