🚀 JMX MCP Server
強力なモデルコンテキストプロトコル(MCP)サーバーです。Claude DesktopのようなAIアシスタントに対して、包括的なJMXモニタリングと管理機能を提供します。Javaアプリケーションのモニタリング、MBeanの管理、自然言語による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検出: 利用可能なすべてのMBeanを自動的に検出し、カタログ化します。
- 属性管理: 完全な型安全性を持ってMBean属性を読み書きします。
- 操作実行: パラメータ検証付きでMBean操作を実行します。
- ドメイン探索: ドメインでMBeanをブラウズおよびフィルタリングします。
🤖 AIによるモニタリング
- 自然言語クエリ: 「現在のヒープメモリ使用量はいくらですか?」のような質問をすることができます。
- インテリジェント分析: AIがメトリックを関連付け、パフォーマンスの問題を特定します。
- 自動洞察: JMXデータパターンに基づいて推奨事項を取得します。
🛡️ エンタープライズ対応
- セキュリティ検証: 組み込みのセキュリティコントロールとアクセス検証があります。
- 接続管理: 堅牢なローカルおよびリモートのJMX接続処理が可能です。
- エラー処理: 包括的なエラー処理と回復メカニズムがあります。
- 本番ロギング: 異なる環境に対応した設定可能なロギングがあります。
🔌 MCPプロトコル準拠
- ツール: AIとの対話用の12個の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 |
オプションのドメインフィルタリングですべての検出されたMBeanをリストします。 |
"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: AIとの対話用の@Toolアノテーション付きメソッドを提供します。
- JMXToMCPMapper: JMX属性をMCPリソースにマッピングします。
- JmxSecurityValidator: セキュリティコンプライアンスのために操作を検証します。
設定プロファイル
デフォルトプロファイル
開発とデバッグ用の完全なロギングを持つ標準設定です。
STDIOプロファイル
Claude Desktopとの統合に最適化されています。
- サイレント動作: JSON-RPCの干渉を避けるためにコンソール出力がありません。
- 最小限のロギング: ファイルシステムの問題を防ぐためにエラーのみのロギングです。
- 高速起動: 迅速なAI応答のために最適化された初期化です。
テスト
包括的なテストスイート
python3 comprehensive-test.py
テストカバレッジ:
- ✅ MCPプロトコル準拠
- ✅ JSON-RPC 2.0通信
- ✅ すべての12個のツールの登録と実行
- ✅ マルチ接続管理
- ✅ サービス検出と自動登録
- ✅ リソース検出とアクセス
- ✅ エラー処理と回復
単体テスト
mvn test
セキュリティ
組み込みのセキュリティ機能
- ObjectName検証: 機密性の高い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"]
🤝 コントリビューション
開発セットアップ
- リポジトリをフォークします。
- 機能ブランチを作成します。
- 変更を加えます。
- 新機能のテストを追加します。
- すべてのテストが通過することを確認します。
- プルリクエストを送信します。
コードスタイル
- Javaのコーディング規約に従います。
- 意味のある変数名とメソッド名を使用します。
- 包括的なJavaDocコメントを追加します。
- テストカバレッジを80%以上に維持します。
コントリビュートの方法
- 🐛 バグ報告 - 問題の特定と修正に協力します。
- 💡 機能提案 - 新しい機能のアイデアを共有します。
- 📝 ドキュメント改善 - 他の人がプロジェクトを理解できるように支援します。
- 🔧 コード提出 - バグを修正または新機能を実装します。
- 🧪 テスト作成 - テストカバレッジと信頼性を向上させます。
- 🎨 UI/UX改善 - ユーザー体験を向上させます。
コミュニティ
- GitHub Discussions: 質問をすることやアイデアを共有することができます。
- Issues: バグを報告し、機能を要求することができます。
- Pull Requests: コードの改善に貢献することができます。
- Wiki: 共同でのドキュメント作成ができます。
🐛 トラブルシューティング
一般的な問題
Claude Desktopでサーバーが起動しない場合
- Java 17+がインストールされていることを確認します。
- 設定内のJARパスを確認します。
- STDIOプロファイルがアクティブであることを確認します。
ツール/リソースが表示されない場合
- 設定変更後にClaude Desktopを再起動します。
- サーバーログのエラーを確認します。
- MCPプロトコルの準拠を確認します。
接続問題
- 対象アプリケーションでJMXが有効になっていることを確認します。
- リモート接続の場合はネットワーク接続を確認します。
- セキュリティ設定を検証します。
📄 ライセンス
このプロジェクトはMITライセンスの下でライセンスされています。詳細についてはLICENSEファイルを参照してください。
🙏 謝辞
- Spring AI Team 素晴らしいMCPフレームワークを提供してくれた皆さん
- Model Context Protocol 標準化されたAI統合プロトコルを提供してくれた皆さん
- Anthropic Claude DesktopとAIアシスタント機能を提供してくれた皆さん
- OpenJDK Community 堅牢なJavaプラットフォームを提供してくれた皆さん
📞 サポート
Made with ❤️ for the AI and Java communities