🚀 JMX MCP 服務器
JMX MCP 服務器是一款強大的模型上下文協議(MCP)服務器,為像 Claude Desktop 這樣的 AI 助手提供全面的 JMX 監控和管理功能。它允許用戶通過自然語言交互來監控 Java 應用程序、管理 MBeans 並執行 JMX 操作。
🚀 快速開始
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 並嘗試以下查詢:
"What JMX tools are available?"
"Show me the current heap memory usage"
"List all MBean domains"
"What's the garbage collection performance?"
✨ 主要特性
🔍 全面的 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 客戶端
💻 使用示例
基礎用法
內存監控
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.
📚 詳細文檔
可用工具(共 12 個)
核心 JMX 操作
工具 |
描述 |
示例用法 |
listMBeans |
列出所有發現的 MBeans,並可選擇按域過濾 |
"Show me all memory-related MBeans" |
getMBeanInfo |
獲取特定 MBean 的詳細信息 |
"Tell me about the Runtime MBean" |
getAttribute |
讀取 MBean 屬性的值 |
"What's the current heap memory usage?" |
setAttribute |
設置可寫 MBean 屬性的值 |
"Set the log level to DEBUG" |
listDomains |
列出所有可用的 MBean 域 |
"What domains are available?" |
連接管理
工具 |
描述 |
示例用法 |
listJmxConnections |
列出所有配置的 JMX 連接 |
"Show me all available connections" |
addJmxConnection |
添加新的 JMX 連接 |
"Connect to the production server" |
removeJmxConnection |
刪除 JMX 連接 |
"Remove the old test connection" |
switchJmxConnection |
切換到不同的 JMX 連接 |
"Switch to the staging environment" |
getConnectionInfo |
獲取當前 JMX 連接的狀態和統計信息 |
"Is the JMX connection healthy?" |
服務發現
工具 |
描述 |
示例用法 |
discoverJmxServices |
發現系統上啟用 JMX 的 Java 應用程序 |
"Find all Java apps with JMX enabled" |
autoRegisterDiscoveredConnections |
自動註冊發現的 JMX 服務 |
"Auto-connect to all discovered Java apps" |
可用資源
服務器自動將所有 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 AI │◄──►│ JMX MCP Server │◄──►│ Java App JMX │
│ │ │ │ │ │
│ Natural Language│ │ • Tools (12) │ │ • MBeans │
│ Queries │ │ • Resources(224+)│ │ • Attributes │
│ │ │ • JSON-RPC 2.0 │ │ • Operations │
│ │ │ • Multi-Connect │ │ • Discovery │
└─────────────────┘ └──────────────────┘ └─────────────────┘
核心組件
- 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"]
🤝 貢獻代碼
我們歡迎貢獻!請查看我們的 貢獻指南 以獲取詳細信息。
貢獻者快速入門
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 討論:提問和分享想法。
- 問題:報告錯誤和請求功能。
- 拉取請求:貢獻代碼改進。
- Wiki:協作編寫文檔。
📄 許可證
本項目採用 MIT 許可證 - 有關詳細信息,請參閱 LICENSE 文件。
🙏 致謝
- Spring AI 團隊 提供了出色的 MCP 框架。
- Model Context Protocol 提供了標準化的 AI 集成協議。
- Anthropic 提供了 Claude Desktop 和 AI 助手功能。
- OpenJDK 社區 提供了強大的 Java 平臺。
📞 支持
Made with ❤️ for the AI and Java communities