返回市场
JMX-MCP服务器

JMX-MCP服务器

作者:itz4blitz5 星标更新:2025-06-22

项目介绍

JMX MCP 服务器

Java Spring Boot MCP License

一个强大的模型上下文协议(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应用程序管理。

🚀 功能

🔍 全面的JMX集成

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

🤖 AI驱动的监控

  • 自然语言查询:询问诸如“当前堆内存使用量是多少?”等问题
  • 智能分析:AI可以关联指标并识别性能问题
  • 自动化洞察:根据JMX数据模式获得建议

🛡️ 企业级准备

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

🔌 MCP协议合规性

  • 工具:12个用于AI交互的JMX管理工具
  • 资源:所有JMX属性作为可发现资源暴露
  • STDIO传输:优化了与Claude Desktop的集成
  • JSON-RPC 2.0:完全协议合规以实现可靠通信

📋 先决条件

  • Java 17+(OpenJDK或Oracle JDK)
  • Maven 3.6+ 用于构建
  • Claude Desktop 或任何兼容MCP的AI客户端

🛠️ 快速开始

1. 克隆并构建

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

2. 测试服务器

# 使用全面验证测试
python3 comprehensive-test.py

3. 配置Claude Desktop

在您的Claude Desktop MCP配置文件中添加以下内容:

位置:

  • macOS~/.config/claude/mcp_servers.json
  • Windows%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并尝试以下查询:

"有哪些可用的JMX工具?"
"显示当前堆内存使用量"
"列出所有MBean域"
"垃圾收集性能如何?"

🔧 可用工具(总计12个)

核心JMX操作

工具描述示例用法
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助手发现和访问:

  • 内存指标:堆使用量、非堆使用量、内存池
  • 垃圾收集: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

💬 示例交互

内存监控

用户:当前内存状况如何?
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   │    │ • 操作          │
│                 │    │ • 多连接         │    │ • 发现          │
└─────────────────┘    └──────────────────┘    └─────────────────┘

核心组件

  • JMXConnectionManager:管理本地和远程JMX连接
  • MBeanDiscoveryService:发现并编目可用的MBeans
  • JmxService:提供@Tool注解的方法供AI交互
  • JMXToMCPMapper:映射JMX属性到MCP资源
  • JmxSecurityValidator:验证操作以符合安全规范

⚙️ 配置概要

默认配置

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

STDIO配置

优化了与Claude Desktop的集成:

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

🧪 测试

综合测试套件

# 运行综合集成测试
python3 comprehensive-test.py

测试覆盖率:

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

单元测试

mvn test

🔒 安全

内置安全特性

  • ObjectName验证:防止访问敏感的MBeans
  • 操作过滤:限制危险的操作
  • 类型安全:在操作前验证属性类型
  • 访问控制:可配置的安全策略

安全配置

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. 在GitHub上Fork仓库
  2. 创建功能分支
  3. 进行更改
  4. 为新功能添加测试
  5. 确保所有测试通过
  6. 提交拉取请求

代码风格

  • 遵循Java编码规范
  • 使用有意义的变量和方法名称
  • 添加全面的JavaDoc注释
  • 维护测试覆盖率高于80%

📚 文档

🐛 故障排除

常见问题

服务器无法与Claude Desktop启动:

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

没有可见的工具/资源:

  • 在配置更改后重启Claude Desktop
  • 检查服务器日志中的错误
  • 验证MCP协议合规性

连接问题:

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

🤝 贡献

我们欢迎贡献!请参阅我们的贡献指南以获取详情。

贡献者快速入门

# 在GitHub上Fork仓库
git clone https://github.com/YOUR_USERNAME/JMX-MCP.git
cd JMX-MCP

# 构建和测试
mvn clean compile
mvn test

# 运行应用程序
mvn spring-boot:run

贡献方式

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

社区

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

📄 许可证

本项目采用MIT许可证 - 详见LICENSE文件。

🙏 致谢

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

📞 支持


为AI和Java社区制作