Labsco
MCP SERVER

JMX MCP Server

by itz4blitz

Ask a running Java application about its heap, threads and garbage collection — and change a setting while you are there.

Runtime Debugging & Crash Analysis
Summary
Live JVM internals in a conversation, rather than a JConsole window.

The resource surface is what makes it useful beyond a tool call: heap usage, GC timings and thread counts are addressable URIs, so an agent can correlate them without knowing the MBean layout first. Connection switching means one server can move between a local process and a staging host mid-investigation.

What it is

A Spring Boot server that bridges JMX to MCP. Twelve tools over MBeans, plus every JMX attribute exposed as a readable resource under a jmx:// URI.

What you get
  • MBeans discovered and listed with optional domain filtering, one MBean in full detail, and the domain list — listMBeans, getMBeanInfo, listDomains
  • An attribute read, and a writable attribute set — getAttribute, setAttribute
  • Connections listed, added, removed and switched, with the current connection's status and statistics — listJmxConnections, addJmxConnection, removeJmxConnection, switchJmxConnection, getConnectionInfo
  • JMX-enabled Java processes found on the machine and registered automatically — discoverJmxServices, autoRegisterDiscoveredConnections
  • Attributes readable as resources at jmx://domain:type=Type,name=Name/attributes/AttributeName — memory pools, GC counts and times, thread state, uptime, class loading and OS load
  • Security controls that validate object names, restrict operations and check attribute types before a write
Requirements

Java 17 or newer, and Maven 3.6+ to build the jar. Launch with the stdio Spring profile and logging switched off, since anything written to stdout breaks the JSON-RPC stream. Security configuration takes an allowed-domain list and a blocked-operation list.

Setup effort

Build from source — clone the repository and build it, then point your client at the binary