Jdwp Mcp — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited Jdwp Mcp (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
Debug live JVMs through JDWP — from any MCP-compatible agent.
Attach to a running Java process, pause threads, inspect stacks and objects, set breakpoints, and evaluate state — through natural language. One prompt starts an agent-driven diagnosis loop with live runtime data.
Works with Claude Code, Codex, Cursor, or any MCP-compatible agent.
A service query is hanging. Find the root cause:
> Attach to localhost:5005 and find out why a query is stuck.The agent attaches, pauses all threads, and scans for the problem:
connected localhost:5005
paused
24 threads, 2 blocked
Thread pool-3-thread-7 is waiting for a monitor lock:
#0 RolapResult.loadMembers:142
monitor=@3f2a state=BLOCKED
#1 RolapResult.execute:89
Lock is held by pool-3-thread-2, which is running:
#0 SqlStatement.execute:218
sql="SELECT ... FROM fact_table" -- full scan on 36M rows
Root cause: the query bypassed the aggregate table and fell back to
a full fact-table scan. Thread-7 is waiting for thread-2 to finish.One prompt. Six tool calls. Lock contention and root cause identified.
pip install jdwp-mcp<details> <summary>Alternative install methods</summary>
# Pre-built binary
curl -fsSL https://raw.githubusercontent.com/dronsv/jdwp-mcp/main/install.sh | sh
# Cargo (requires Rust)
cargo install --git https://github.com/dronsv/jdwp-mcp
# From source
git clone https://github.com/dronsv/jdwp-mcp && cd jdwp-mcp && cargo build --release</details>
claude mcp add jdwp jdwp-mcp<details> <summary>Other agents</summary>
For Codex, Cursor, or other MCP-compatible agents, add to .mcp.json:
{
"mcpServers": {
"jdwp": {
"command": "jdwp-mcp"
}
}
}</details>
java -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=*:5005 -jar app.jarAttach to localhost:5005 and set a breakpoint at com.example.MyService line 42Debugging involves many rapid tool calls. Auto-approve eliminates confirm prompts:
# Allow all jdwp tools for this project
claude config set --project allowedTools 'mcp__jdwp__*'<details> <summary>User-scope (all projects)</summary>
claude config set allowedTools 'mcp__jdwp__*'Only enable for projects you trust — jdwp tools can pause threads, modify variables, and invoke methods on the target JVM.
</details>
Pick the pack that matches your situation:
App hangs or is slow
Attach to localhost:5005
Pause the JVM and find all blocked or waiting threads
Show the stack for the blocked thread with variables
Who holds the lock? Show their stack tooException in logs
Attach to localhost:5005
Set an exception breakpoint for NullPointerException
Wait for the exception to fire
Show the stack and all local variables at the throw siteNeed to understand a code path
Attach to localhost:5005
Trace method calls on com.example.service
[send your HTTP request]
Show the trace result — which methods were called?Breakpoint-driven debugging
Attach to localhost:5005
Find classes matching UserService
List methods of UserService with line numbers
Set a breakpoint at UserService line 45
When it hits, show the stack with all variables
Step over to the next lineIf you clone this repo, you get ready-made slash commands:
/investigate-hang — diagnose a hanging JVM (pause, find blocked threads, trace locks)/investigate-exception — catch a live exception and inspect the throw site/trace-request — trace which methods a request passes throughAnd an autonomous investigator agent (.claude/agents/jdwp-investigator.md) that can be spawned to diagnose hangs, deadlocks, exceptions, and unexpected code paths.
See .claude/settings.example.json for recommended auto-approve and update-check config.
kubectl port-forwardConnection and control attach, disconnect, pause, continue, step into/over/out
Breakpoints and events set\_breakpoint (with conditions), clear, list, exception\_breakpoint, watch (field modification), wait\_for\_event
Inspection get\_stack (auto-resolves objects), get\_variable, inspect, eval, set\_value, snapshot, find\_class, list\_methods, list\_threads, vm\_info
Tracing trace (arm method-level tracing on a package), trace\_result (get the call path)
JDWP changes runtime behavior. Pausing threads and setting breakpoints may be disruptive. Use carefully in production; prefer staging environments or controlled maintenance windows.
See docs/deploy.md for setup with Maven, Gradle, Tomcat, Docker, Kubernetes (port-forward), and SSH tunnels.
Agent --> MCP Server --> JDWP Client --> TCP --> JVM
|
Translates tool calls to JDWP,
tracks session state, summarizes
runtime objects for the agent.cargo build --release
cargo testMIT
~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.