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 package2.测试服务器
# Test with comprehensive validation
python3 comprehensive-test.py3.配置克劳德桌面
添加到您的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.jarDocker部署
FROM openjdk:17-jre-slim
COPY target/jmx-mcp-server-1.0.0.jar app.jar
EXPOSE 8080
ENTRYPOINT ["java", "-jar", "/app.jar"]🤝 贡献
我们欢迎捐款!请查看我们的 贡献指南 了解详情。
开发设置
- 分叉存储库
- 创建要素分支
- 进行更改
- 添加新功能的测试
- 确保所有测试通过
- 提交拉取请求
代码的风格
- 遵循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社区
