JMX监控服务器

一款基于Model Context Protocol (MCP)的JMX监控服务器,提供全面的Java应用监控和管理功能,支持通过自然语言与AI助手交互。

  • by itz4blitz
  • Java
  • 本地部署
  • 11 星标
  • 更新于
在 GitHub 查看 itz4blitz/JMX-MCP

使用说明

JMX MCP服务器

一个强大的 模型上下文协议(MCP)服务器 它为Claude Desktop等AI助手提供了全面的JMX监控和管理功能。监控Java应用程序,管理MBean,并通过自然语言交互执行JMX操作。

🎥 演示视频

观看JMX MCP服务器的运行!了解Claude Desktop如何通过自然语言监控和管理Java应用程序:

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

该演示通过Claude Desktop展示了实时JMX监控、MBean探索和AI驱动的Java应用程序管理。

🚀 特性

🔍 全面的JMX集成

  • 实时MBean发现:自动发现并编目所有可用MBean
  • 属性管理:读取和写入具有完全类型安全性的MBean属性
  • 操作执行:执行带有参数验证的MBean操作
  • 领域探索:按域浏览和筛选MBean

🤖 人工智能监控

  • 自然语言查询:问“当前堆内存使用情况如何?”
  • 智能分析:人工智能可以关联指标并识别性能问题
  • 自动化洞察:根据JMX数据模式获取建议

🛡️ 企业就绪

  • 安全验证:内置安全控制和访问验证
  • 连接管理:强大的本地和远程JMX连接处理
  • 错误处理:全面的错误处理和恢复机制
  • 生产测井:针对不同环境的可配置日志记录

🔌 MCP协议合规性

  • 工具:12个用于AI交互的JMX管理工具
  • 资源:所有JMX属性都作为可发现资源公开
  • STDIO传输:针对Claude Desktop集成进行了优化
  • JSON-RPC 2.0:完全符合协议,实现可靠通信

📋 先决条件

  • Java 17+ (OpenJDK或Oracle JDK)
  • Maven 3.6+ 用于建筑
  • 克劳德桌面 或任何与MCP兼容的AI客户端

🛠️ 快速开始

1.克隆和构建

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

2.测试服务器

# Test with comprehensive validation
python3 comprehensive-test.py

3.配置克劳德桌面

添加到您的Claude Desktop MCP配置文件中:

地点:

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

配置:

{
  "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.开始与Claude一起使用

重新启动Claude Desktop并尝试以下查询:

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

🔧 可用工具(共12个)

核心JMX运营

工具 说明 示例用法
listMBeans 列出所有已发现的具有可选域筛选的MBean “显示所有与内存相关的MBean”
getMBeanInfo 获取特定MBean的详细信息 “告诉我运行时MBean的情况”
getAttribute 读取MBean属性的值 “当前堆内存使用情况如何?”
setAttribute 设置可写MBean属性的值 “将日志级别设置为DEBUG”
listDomains 列出所有可用的MBean域 “哪些域可用?”

连接管理

工具 说明 示例用法
listJmxConnections 列出所有已配置的JMX连接 “显示所有可用连接”
addJmxConnection 添加新的JMX连接 “连接到生产服务器”
removeJmxConnection 删除JMX连接 “删除旧的测试连接”
switchJmxConnection 切换到其他JMX连接 “切换到临时环境”
getConnectionInfo 获取当前JMX连接状态和统计信息 “JMX连接是否正常?”

服务发现

工具 说明 示例用法
discoverJmxServices 在系统上发现启用JMX的Java应用程序 “查找启用JMX的所有Java应用程序”
autoRegisterDiscoveredConnections 自动注册发现的JMX服务 “自动连接到所有发现的Java应用程序”

📊 可用资源

服务器自动公开 所有JMX属性 作为MCP资源,使其可被AI助手发现和访问:

  • 内存指标:堆使用、非堆使用、内存池
  • 垃圾收集:GC统计数据、收集次数、收集计数
  • 线程:线程计数、死锁检测、线程状态
  • 运行时信息:JVM正常运行时间、启动时间、系统属性
  • 类加载:加载类、卸载类、类路径
  • 操作系统:CPU使用率、系统负载、可用处理器

资源URI格式:

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

示例资源:

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

💬 交互示例

内存监控

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.

性能分析

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.

🏗️ 建筑

┌─────────────────┐    ┌──────────────────┐    ┌─────────────────┐
│   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     │
└─────────────────┘    └──────────────────┘    └─────────────────┘

核心组件

  • JMX连接管理器:管理本地和远程JMX连接
  • MBeandiscoveryService:发现并编目可用的MBean
  • Jmx服务:为AI交互提供@Tool注释方法
  • JMXToMCPMapper:将JMX属性映射到MCP资源
  • Jmx安全验证器:验证操作的安全合规性

⚙️ 配置文件

默认配置文件

标准配置,具有完整的日志记录,用于开发和调试。

STDIO配置文件

针对Claude Desktop集成进行了优化:

  • 无声操作:无控制台输出,避免JSON-RPC干扰
  • 最少日志记录:仅记录错误以防止文件系统问题
  • 快速启动:优化初始化以实现快速AI响应

🧪 测试

综合测试套件

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

测试覆盖范围:

  • ✅ MCP协议合规性
  • ✅ JSON-RPC 2.0通信
  • ✅ 所有12个工具的注册和执行
  • ✅ 多连接管理
  • ✅ 服务发现和自动注册
  • ✅ 资源发现和访问
  • ✅ 错误处理和恢复

单元测试

mvn test

🔒 安全

内置安全功能

  • 对象名称验证:阻止访问敏感的MBean
  • 操作筛选:限制危险操作
  • 类型安全:在操作之前验证属性类型
  • 访问控制:可配置的安全策略

安全配置

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

🚀 部署

地方发展

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

生产部署

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

Docker部署

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

🤝 贡献

我们欢迎捐款!请查看我们的 贡献指南 了解详情。

开发设置

  1. 分叉存储库
  2. 创建要素分支
  3. 进行更改
  4. 添加新功能的测试
  5. 确保所有测试通过
  6. 提交拉取请求

代码的风格

  • 遵循Java编码规范
  • 使用有意义的变量和方法名称
  • 添加全面的JavaDoc注释
  • 保持测试覆盖率在80%以上

📚 文档

🐛 故障排除

常见问题

服务器无法从Claude Desktop启动:

  • 验证是否安装了Java 17+
  • 检查配置中的JAR路径
  • 确保STDIO配置文件处于活动状态

没有可见的工具/资源:

  • 配置更改后重新启动Claude Desktop
  • 检查服务器日志是否有错误
  • 验证MCP协议合规性

连接问题:

  • 确认目标应用程序上启用了JMX
  • 检查远程连接的网络连接
  • 验证安全设置

🤝 贡献

我们欢迎捐款!请查看我们的 贡献指南 了解详情。

贡献者快速入门

# 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

贡献方式

  • 🐛 报告错误 -帮助我们识别和解决问题
  • 💡 建议功能 -分享新功能的想法
  • 📝 改进文档 -帮助他人理解项目
  • 🔧 提交代码 -修复错误或实现新功能
  • 🧪 编写测试 -提高测试覆盖率和可靠性
  • 🎨 UI/UX改进 -增强用户体验

社区

  • GitHub讨论:提问并分享想法
  • 问题:报告错误和请求功能
  • 拉取请求:促进代码改进
  • 维基:协作文件

📄 许可证

此项目根据MIT许可证获得许可-请参阅 许可证 文件以获取详细信息。

🙏 致谢

  • Spring AI团队 优秀的MCP框架
  • 模型上下文协议 用于标准化的AI集成协议
  • Anthropic 用于Claude Desktop和AI助手功能
  • OpenJDK社区 强大的Java平台

📞 支持


由以下材料制成❤️ 面向AI和Java社区