JMX MCP Server

Proporciona capacidades de monitoreo y gestión JMX para asistentes de IA. Requiere Java 17+.

Documentación

Servidor MCP JMX

Java Spring Boot MCP License

Un potente servidor de Protocolo de Contexto de Modelo (MCP) que proporciona capacidades integrales de monitoreo y gestión JMX para asistentes de IA como Claude Desktop. Monitoree aplicaciones Java, gestione MBeans y realice operaciones JMX mediante interacciones en lenguaje natural.

🎥 Video de Demostración

¡Vea el Servidor MCP JMX en acción! Observe cómo Claude Desktop puede monitorear y gestionar aplicaciones Java mediante lenguaje natural:

https://github.com/user-attachments/assets/722e1885-5aeb-4584-8116-b93324e0abc1

La demostración muestra monitoreo JMX en tiempo real, exploración de MBeans y gestión de aplicaciones Java impulsada por IA a través de Claude Desktop.

🚀 Características

🔍 Integración JMX Integral

  • Descubrimiento de MBeans en Tiempo Real: Descubre y cataloga automáticamente todos los MBeans disponibles
  • Gestión de Atributos: Lee y escribe atributos de MBeans con total seguridad de tipos
  • Ejecución de Operaciones: Ejecuta operaciones de MBeans con validación de parámetros
  • Exploración de Dominios: Navega y filtra MBeans por dominio

🤖 Monitoreo Impulsado por IA

  • Consultas en Lenguaje Natural: Haga preguntas como "¿Cuál es el uso actual de memoria heap?"
  • Análisis Inteligente: La IA puede correlacionar métricas e identificar problemas de rendimiento
  • Información Automatizada: Obtenga recomendaciones basadas en patrones de datos JMX

🛡️ Listo para Empresas

  • Validación de Seguridad: Controles de seguridad integrados y validación de acceso
  • Gestión de Conexiones: Manejo robusto de conexiones JMX locales y remotas
  • Manejo de Errores: Mecanismos integrales de manejo de errores y recuperación
  • Registro en Producción: Registro configurable para diferentes entornos

🔌 Cumplimiento del Protocolo MCP

  • Herramientas: 12 herramientas de gestión JMX para interacción con IA
  • Recursos: Todos los atributos JMX expuestos como recursos descubribles
  • Transporte STDIO: Optimizado para integración con Claude Desktop
  • JSON-RPC 2.0: Cumplimiento total del protocolo para comunicación confiable

📋 Requisitos Previos

  • Java 17+ (OpenJDK u Oracle JDK)
  • Maven 3.6+ para compilación
  • Claude Desktop o cualquier cliente de IA compatible con MCP

🛠️ Inicio Rápido

1. Clonar y Compilar

git clone https://github.com/itz4blitz/JMX-MCP.git
cd JMX-MCP
mvn clean package

2. Probar el Servidor

# Test with comprehensive validation
python3 comprehensive-test.py

3. Configurar Claude Desktop

Agregue a su archivo de configuración MCP de Claude Desktop:

Ubicación:

  • macOS: ~/.config/claude/mcp_servers.json
  • Windows: %APPDATA%\Claude\mcp_servers.json

Configuración:

{
  "mcpServers": {
    "jmx-mcp-server": {
      "command": "java",
      "args": [
        "-Xmx512m",
        "-Xms256m",
        "-Dspring.profiles.active=stdio",
        "-Dspring.main.banner-mode=off",
        "-Dlogging.level.root=OFF",
        "-Dspring.main.log-startup-info=false",
        "-jar",
        "/path/to/your/jmx-mcp-server-1.0.0.jar"
      ],
      "env": {
        "JAVA_OPTS": "-Djava.awt.headless=true"
      }
    }
  }
}

4. Comience a Usar con Claude

Reinicie Claude Desktop y pruebe estas consultas:

"What JMX tools are available?"
"Show me the current heap memory usage"
"List all MBean domains"
"What's the garbage collection performance?"

🔧 Herramientas Disponibles (12 en Total)

Operaciones JMX Principales

HerramientaDescripciónEjemplo de Uso
listMBeansLista todos los MBeans descubiertos con filtrado opcional por dominio"Muéstrame todos los MBeans relacionados con memoria"
getMBeanInfoObtiene información detallada sobre un MBean específico"Cuéntame sobre el MBean de Runtime"
getAttributeLee el valor de un atributo de MBean"¿Cuál es el uso actual de memoria heap?"
setAttributeEstablece el valor de un atributo de MBean escribible"Establece el nivel de registro a DEBUG"
listDomainsLista todos los dominios de MBeans disponibles"¿Qué dominios están disponibles?"

Gestión de Conexiones

HerramientaDescripciónEjemplo de Uso
listJmxConnectionsLista todas las conexiones JMX configuradas"Muéstrame todas las conexiones disponibles"
addJmxConnectionAgrega una nueva conexión JMX"Conéctate al servidor de producción"
removeJmxConnectionElimina una conexión JMX"Elimina la conexión de prueba antigua"
switchJmxConnectionCambia a una conexión JMX diferente"Cambia al entorno de staging"
getConnectionInfoObtiene el estado actual de la conexión JMX y estadísticas"¿Está saludable la conexión JMX?"

Descubrimiento de Servicios

HerramientaDescripciónEjemplo de Uso
discoverJmxServicesDescubre aplicaciones Java con JMX habilitado en el sistema"Encuentra todas las aplicaciones Java con JMX habilitado"
autoRegisterDiscoveredConnectionsRegistra automáticamente los servicios JMX descubiertos"Conéctate automáticamente a todas las aplicaciones Java descubiertas"

📊 Recursos Disponibles

El servidor expone automáticamente todos los atributos JMX como recursos MCP, haciéndolos descubribles y accesibles para asistentes de IA:

  • Métricas de Memoria: Uso de heap, uso de no-heap, grupos de memoria
  • Recolección de Basura: Estadísticas de GC, tiempos de recolección, conteos de recolección
  • Subprocesos: Conteos de subprocesos, detección de interbloqueos, estados de subprocesos
  • Información de Runtime: Tiempo de actividad de JVM, tiempo de inicio, propiedades del sistema
  • Carga de Clases: Clases cargadas, clases descargadas, ruta de clases
  • Sistema Operativo: Uso de CPU, carga del sistema, procesadores disponibles

Formato de URI de Recursos:

jmx://domain:type=Type,name=Name/attributes/AttributeName

Ejemplos de Recursos:

jmx://java.lang:type=Memory/attributes/HeapMemoryUsage
jmx://java.lang:type=Runtime/attributes/Uptime
jmx://java.lang:type=GarbageCollector,name=G1_Young_Generation/attributes/CollectionCount

💬 Ejemplos de Interacciones

Monitoreo de Memoria

User: "What's the current memory situation?"
Claude: I'll check the JMX memory metrics for you.

[Uses getAttribute tool to read HeapMemoryUsage]

The current heap memory usage is:
- Used: 245 MB
- Committed: 512 MB  
- Max: 2048 MB
- Usage: 12% of maximum heap

The application is running efficiently with low memory pressure.

Análisis de Rendimiento

User: "Are there any performance issues?"
Claude: Let me analyze the JMX performance metrics.

[Uses multiple tools to check GC, threads, and memory]

Performance analysis:
✅ Memory: Healthy (12% heap usage)
✅ GC: Efficient (avg 15ms collection time)
⚠️  Threads: High count (245 threads) - consider investigation
✅ CPU: Normal load

Recommendation: Monitor thread creation patterns.

🏗️ Arquitectura

┌─────────────────┐    ┌──────────────────┐    ┌─────────────────┐
│   Claude AI     │◄──►│  JMX MCP Server  │◄──►│  Java App JMX   │
│                 │    │                  │    │                 │
│ Natural Language│    │ • Tools (12)     │    │ • MBeans        │
│ Queries         │    │ • Resources(224+)│    │ • Attributes    │
│                 │    │ • JSON-RPC 2.0   │    │ • Operations    │
│                 │    │ • Multi-Connect  │    │ • Discovery     │
└─────────────────┘    └──────────────────┘    └─────────────────┘

Componentes Principales

  • JMXConnectionManager: Gestiona conexiones JMX locales y remotas
  • MBeanDiscoveryService: Descubre y cataloga los MBeans disponibles
  • JmxService: Proporciona métodos anotados con @Tool para interacción con IA
  • JMXToMCPMapper: Mapea atributos JMX a recursos MCP
  • JmxSecurityValidator: Valida operaciones para cumplimiento de seguridad

⚙️ Perfiles de Configuración

Perfil Predeterminado

Configuración estándar con registro completo para desarrollo y depuración.

Perfil STDIO

Optimizado para integración con Claude Desktop:

  • Operación Silenciosa: Sin salida de consola para evitar interferencia JSON-RPC
  • Registro Mínimo: Registro solo de errores para prevenir problemas del sistema de archivos
  • Inicio Rápido: Inicialización optimizada para respuestas rápidas de IA

🧪 Pruebas

Suite de Pruebas Integral

# Run the comprehensive integration test
python3 comprehensive-test.py

Cobertura de Pruebas:

  • ✅ Cumplimiento del protocolo MCP
  • ✅ Comunicación JSON-RPC 2.0
  • ✅ Registro y ejecución de las 12 herramientas
  • ✅ Gestión de múltiples conexiones
  • ✅ Descubrimiento de servicios y auto-registro
  • ✅ Descubrimiento y acceso a recursos
  • ✅ Manejo de errores y recuperación

Pruebas Unitarias

mvn test

🔒 Seguridad

Características de Seguridad Integradas

  • Validación de ObjectName: Previene el acceso a MBeans sensibles
  • Filtrado de Operaciones: Restringe operaciones peligrosas
  • Seguridad de Tipos: Valida tipos de atributos antes de las operaciones
  • Control de Acceso: Políticas de seguridad configurables

Configuración de Seguridad

jmx:
  security:
    enabled: true
    allowed-domains:
      - "java.lang"
      - "java.nio"
      - "com.myapp"
    blocked-operations:
      - "shutdown"
      - "restart"

🚀 Despliegue

Desarrollo Local

java -jar target/jmx-mcp-server-1.0.0.jar

Despliegue en Producción

java -Xmx1g -Xms512m \
     -Dspring.profiles.active=production \
     -jar jmx-mcp-server-1.0.0.jar

Despliegue con Docker

FROM openjdk:17-jre-slim
COPY target/jmx-mcp-server-1.0.0.jar app.jar
EXPOSE 8080
ENTRYPOINT ["java", "-jar", "/app.jar"]

🤝 Contribuciones

¡Damos la bienvenida a contribuciones! Consulte nuestra Guía de Contribución para más detalles.

Configuración de Desarrollo

  1. Haga un fork del repositorio
  2. Cree una rama de características
  3. Realice sus cambios
  4. Agregue pruebas para la nueva funcionalidad
  5. Asegúrese de que todas las pruebas pasen
  6. Envíe una solicitud de extracción

Estilo de Código

  • Siga las convenciones de codificación de Java
  • Use nombres significativos para variables y métodos
  • Agregue comentarios JavaDoc integrales
  • Mantenga la cobertura de pruebas por encima del 80%

📚 Documentación

🐛 Solución de Problemas

Problemas Comunes

El servidor no inicia con Claude Desktop:

  • Verifique que Java 17+ esté instalado
  • Compruebe la ruta del JAR en la configuración
  • Asegúrese de que el perfil STDIO esté activo

No se ven herramientas/recursos:

  • Reinicie Claude Desktop después de los cambios de configuración
  • Revise los registros del servidor para ver errores
  • Verifique el cumplimiento del protocolo MCP

Problemas de conexión:

  • Confirme que JMX esté habilitado en la aplicación objetivo
  • Verifique la conectividad de red para conexiones remotas
  • Valide la configuración de seguridad

🤝 Contribuciones

¡Damos la bienvenida a contribuciones! Consulte nuestra Guía de Contribución para más detalles.

Inicio Rápido para Contribuyentes

# Fork the repository on GitHub
git clone https://github.com/YOUR_USERNAME/JMX-MCP.git
cd JMX-MCP

# Build and test
mvn clean compile
mvn test

# Run the application
mvn spring-boot:run

Formas de Contribuir

  • 🐛 Reportar errores - Ayúdenos a identificar y corregir problemas
  • 💡 Sugerir características - Comparta ideas para nueva funcionalidad
  • 📝 Mejorar documentación - Ayude a otros a entender el proyecto
  • 🔧 Enviar código - Corrija errores o implemente nuevas características
  • 🧪 Escribir pruebas - Mejore la cobertura y confiabilidad de las pruebas
  • 🎨 Mejoras de UI/UX - Mejore la experiencia del usuario

Comunidad

  • Discusiones de GitHub: Haga preguntas y comparta ideas
  • Issues: Reporte errores y solicite características
  • Solicitudes de Extracción: Contribuya con mejoras de código
  • Wiki: Documentación colaborativa

📄 Licencia

Este proyecto está licenciado bajo la Licencia MIT - consulte el archivo LICENCIA para más detalles.

🙏 Agradecimientos

  • Equipo de Spring AI por el excelente marco MCP
  • Protocolo de Contexto de Modelo por el protocolo estandarizado de integración de IA
  • Anthropic por Claude Desktop y las capacidades de asistente de IA
  • Comunidad OpenJDK por la robusta plataforma Java

📞 Soporte


Hecho con ❤️ para las comunidades de IA y Java