Jolokia MCP Server

Un puente JMX-HTTP para interactuar con aplicaciones Java mediante el agente Jolokia.

Documentación

Servidor MCP de Jolokia

Test

Servidor MCP para Jolokia, un puente JMX-HTTP para aplicaciones Java. Este servidor MCP permite a un LLM gestionar una aplicación Java utilizando la API JMX a través de Jolokia.

https://github.com/user-attachments/assets/624ec93b-da69-49b5-be8f-02f2ff14bd2e

Distribuciones

Desde la versión 0.4, el Servidor MCP de Jolokia ofrece dos distribuciones distintas para adaptarse a diferentes necesidades de despliegue:

Servidor MCP independiente

El Servidor MCP independiente actúa como un servidor MCP convencional; se registra en el host MCP con stdio o HTTP, y el propio servidor MCP se comunica con su aplicación Java, que debe tener un agente Jolokia adjunto, mediante JMX sobre HTTP.

Para utilizar el Servidor MCP independiente, primero deberá adjuntar un agente Jolokia a su aplicación Java. Para obtener instrucciones detalladas sobre cómo hacerlo, consulte el manual de Jolokia: https://jolokia.org/reference/html/manual/agents.html

Servidor MCP de agente JVM

En contraste, el Servidor MCP de agente JVM proporciona un reemplazo simplificado y "plug-and-play" del agente JVM estándar de Jolokia.

Con esta distribución, simplemente adjunta el agente JVM del Servidor MCP a su aplicación en lugar del agente JVM estándar de Jolokia. El Servidor MCP de agente JVM abre directamente un puerto HTTP para el protocolo MCP, transformando efectivamente su aplicación Java en un servidor MCP.

Características

Este servidor MCP se conecta a una única JVM al iniciarse y proporciona las siguientes características en la JVM conectada:

  • Listar MBeans de la JVM conectada
  • Listar operaciones de un MBean
  • Listar atributos de un MBean
  • Leer/escribir atributos de un MBean
  • Ejecutar operaciones en un MBean

Herramientas

Este servidor MCP proporciona 6 herramientas.

  • listMBeans
    • Lista los MBeans disponibles de la JVM
    • Salida (List<String>): Lista de todos los nombres de objetos MBean en la JVM
  • listMBeanOperations
    • Lista las operaciones disponibles para un MBean dado
    • Entradas:
      • mbean (String): Nombre del MBean
    • Salida (String): Definiciones en formato JSON de todas las operaciones disponibles para el MBean dado
  • listMBeanAttributes
    • Lista los atributos disponibles para un MBean dado
    • Entradas:
      • mbean (String): Nombre del MBean
    • Salida (String): Definiciones en formato JSON de todos los atributos disponibles para el MBean dado
  • readMBeanAttribute
    • Lee un atributo de un MBean dado
    • Entradas:
      • mbean (String): Nombre del MBean
      • attribute (String): Nombre del atributo
    • Salida (String): Representación en cadena del valor del atributo dado o "null"
  • writeMBeanAttribute
    • Establece el valor de un atributo de un MBean dado
    • Entradas:
      • mbean (String): Nombre del MBean
      • attribute (String): Nombre del atributo
      • value (Object): Valor del atributo
    • Salida (String): Representación en cadena del valor anterior del atributo dado o "null"
  • executeMBeanOperation
    • Ejecuta una operación en un MBean dado
    • Entradas:
      • mbean (String): Nombre del MBean
      • operation (String): Nombre de la operación
      • args (Object[]): Argumentos
    • Salida (String): Representación en cadena del valor de retorno de la operación o "null"

Instalación

Independiente

Descargue el jar ejecutable del servidor MCP:

Para instalar el servidor MCP de Jolokia en un host MCP, agregue la siguiente entrada a la configuración de MCP:

{
  "mcpServers": {
    "jolokia": {
      "command": "java",
      "args": [
        "-jar",
        "<path-to-the-runner-jar>/jolokia-mcp-0.5.2-runner.jar"
      ]
    }
  }
}

O si prefiere usar JBang (no es necesario descargar el jar con este método):

{
  "mcpServers": {
    "jolokia": {
      "command": "jbang",
      "args": [
        "org.jolokia.mcp:jolokia-mcp-server:0.5.2:runner"
      ]
    }
  }
}

Agente JVM

Descargue el jar del agente java del servidor MCP:

Luego ejecute su aplicación Java con la opción -javaagent:

java -javaagent:jolokia-mcp-agent-jvm-0.5.2-javaagent.jar -jar your-app.jar

Esto abriría el transporte HTTP de MCP en http://localhost:8779/mcp.

Para registrar el servidor MCP de Jolokia en un host MCP, agregue la siguiente entrada a la configuración de MCP:

{
  "mcpServers": {
    "jolokia": {
      "httpUrl": "http://localhost:8779/mcp"
    }
  }
}

Ejecución

Ejecútelo con java -jar:

java -jar jolokia-mcp-server-0.5.2-runner.jar [Jolokia URL]

Usando JBang, puede ejecutarlo directamente con el GAV de Maven (org.jolokia.mcp:jolokia-mcp-server:0.5.2:runner):

jbang org.jolokia.mcp:jolokia-mcp-server:0.5.2:runner

Transporte HTTP

Por defecto, este servidor MCP se ejecuta con transporte stdio. Para cambiarlo a transporte HTTP, use la opción --sse:

java -jar jolokia-mcp-server-0.5.2-runner.jar --sse

El endpoint de transporte HTTP se inicia por defecto en http://localhost:8080/mcp.

Opciones de configuración

Parámetro/OpciónPredeterminadoDescripción
Parámetro posicionalhttp://localhost:8778/jolokiaLa URL del endpoint de Jolokia al que se conecta el servidor MCP
--ssefalse (stdio)Habilita el transporte HTTP
-D*=*Propiedades del sistema

Las propiedades del sistema relevantes para el servidor MCP:

Propiedad del sistemaPredeterminadoDescripción
quarkus.http.port8080(SSE) El puerto para el endpoint SSE
quarkus.mcp.server.sse.root-pathmcp(SSE) La ruta raíz para el endpoint SSE (http://localhost:8080/mcp/sse)
jolokia.mcp.urlhttp://localhost:8778/jolokiaEquivalente al parámetro posicional
jolokia.mcp.preferred-http-methodNo establecidoMétodo HTTP preferido para solicitudes de Jolokia (GET o POST)

Compilación

mvn clean install