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.
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.
- 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
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.
Build from source — clone the repository and build it, then point your client at the binary
