一个强大的模型上下文协议(MCP)服务器,提供全面的JMX监控和管理能力,适用于像Claude Desktop这样的AI助手。通过自然语言交互来监控Java应用程序、管理MBeans并执行JMX操作。
观看JMX MCP服务器的实际运行情况!了解Claude Desktop如何通过自然语言来监控和管理Java应用程序:
https://github.com/user-attachments/assets/722e1885-5aeb-4584-8116-b93324e0abc1
演示展示了实时JMX监控、MBean探索以及通过Claude Desktop进行的AI驱动的Java应用程序管理。
git clone https://github.com/itz4blitz/JMX-MCP.git
cd JMX-MCP
mvn clean package
# 使用全面验证测试
python3 comprehensive-test.py
在您的Claude Desktop MCP配置文件中添加以下内容:
位置:
~/.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"
}
}
}
}
重启Claude Desktop并尝试以下查询:
"有哪些可用的JMX工具?"
"显示当前堆内存使用量"
"列出所有MBean域"
"垃圾收集性能如何?"
| 工具 | 描述 | 示例用法 |
|---|---|---|
listMBeans | 列出所有已发现的MBeans,可选域过滤 | “显示所有与内存相关的MBeans” |
getMBeanInfo | 获取特定MBean的详细信息 | “告诉我关于Runtime 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助手发现和访问:
资源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
用户:当前内存状况如何?
Claude:我将为您检查JMX内存指标。
[使用getAttribute工具读取HeapMemoryUsage]
当前堆内存使用量为:
- 已使用:245 MB
- 已提交:512 MB
- 最大:2048 MB
- 使用率:最大堆的12%
应用程序正在高效运行,内存压力较低。
用户:是否有任何性能问题?
Claude:让我分析一下JMX性能指标。
[使用多个工具检查GC、线程和内存]
性能分析:
✅ 内存:健康(12%堆使用率)
✅ GC:高效(平均15毫秒收集时间)
⚠️ 线程:高计数(245个线程)— 考虑调查
✅ CPU:正常负载
建议:监控线程创建模式。
┌─────────────────┐ ┌──────────────────┐ ┌─────────────────┐
│ Claude AI │◄──►│ JMX MCP Server │◄──►│ Java App JMX │
│ │ │ │ │ │
│ 自然语言查询 │ │ • 工具(12个) │ │ • MBeans │
│ │ │ • 资源(224+) │ │ • 属性 │
│ │ │ • JSON-RPC 2.0 │ │ • 操作 │
│ │ │ • 多连接 │ │ • 发现 │
└─────────────────┘ └──────────────────┘ └─────────────────┘
标准配置,带有完整的日志记录,适用于开发和调试。
优化了与Claude Desktop的集成:
# 运行综合集成测试
python3 comprehensive-test.py
测试覆盖率:
mvn test
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
FROM openjdk:17-jre-slim
COPY target/jmx-mcp-server-1.0.0.jar app.jar
EXPOSE 8080
ENTRYPOINT ["java", "-jar", "/app.jar"]
我们欢迎贡献!请参阅我们的贡献指南以获取详情。
服务器无法与Claude Desktop启动:
没有可见的工具/资源:
连接问题:
我们欢迎贡献!请参阅我们的贡献指南以获取详情。
# 在GitHub上Fork仓库
git clone https://github.com/YOUR_USERNAME/JMX-MCP.git
cd JMX-MCP
# 构建和测试
mvn clean compile
mvn test
# 运行应用程序
mvn spring-boot:run
本项目采用MIT许可证 - 详见LICENSE文件。
为AI和Java社区制作