Integrations
KVM MCP サーバー
シンプルで直感的なインターフェースを通じてKVM仮想マシンを管理できる強力なJSON-RPCサーバーです。このサーバーは、標準化されたプロトコルを使用してKVM仮想マシンを集中的に制御・監視する方法を提供します。
なぜこのプロジェクトなのか?
KVM仮想マシンの管理には通常、 virsh
、 virt-install
、 qemu-system
といった複数のコマンドラインツールを使用する必要があります。このプロジェクトの目的は以下のとおりです。
- VM管理の簡素化:すべてのVM操作に単一の統合インターフェースを提供
- リモートコントロールを有効にする: JSON-RPC 経由で VM のリモート管理を許可します
- VM操作の自動化: VM管理タスクのスクリプト化と自動化を簡単に実現
- VM構成の標準化: インフラストラクチャ全体で一貫したVM設定を確保
- パフォーマンスの最適化: 効率的なリソース管理とキャッシュ戦略を実装する
特徴
- VMライフサイクル管理:
- カスタマイズ可能なパラメータを使用して新しいVMを作成する
- VMの起動/停止/再起動
- 利用可能なすべてのVMとそのステータスを一覧表示します
- 自動状態追跡と回復
- ネットワーク管理:
- ブリッジを使用してVMネットワークを構成する
brforvms
ブリッジのサポート- 自動ネットワークインターフェース構成
- IPアドレスの追跡と管理
- ストレージ管理:
- 構成可能なVMディスクストレージの場所
- さまざまなディスク形式のサポート (qcow2)
- 設定可能なディスクサイズ
- 自動ディスククリーンアップと管理
- ディスプレイ管理:
- グラフィカルアクセスのためのVNCサポート
- 自動VNCポート割り当て
- VMディスプレイを見つけて接続するためのツール
- ディスプレイの状態追跡と回復
- インストールサポート:
- ISOイメージからのネットワークインストール
- CDROMからのローカルインストール
- さまざまなOSバリアントのサポート
- 自動インストール構成
- パフォーマンスの最適化:
- 接続オーバーヘッドを削減するための libvirt の接続プール
- VM情報のキャッシュによる応答性の向上
- 並行性を向上させる非同期処理
- 診断とトラブルシューティングのための高度なログ記録
- 適切なリソースのクリーンアップのための正常なシャットダウン処理
- 自動接続回復と検証
- API操作のレート制限
- パフォーマンスメトリックの収集
パフォーマンス上の利点
接続プール
- レイテンシの短縮: libvirt 接続を繰り返し開いたり閉じたりするオーバーヘッドを排除します。
- リソース効率: 再利用可能な接続のプールを維持し、システムリソースの使用量を削減します。
- 自動回復: 切断された接続を自動的に検出して置き換えます
- 設定可能なプールサイズ: ワークロードに応じて接続数を調整します
キャッシング
- 応答時間の高速化: 一般的な操作に対する libvirt への繰り返しクエリを削減します。
- 設定可能なTTL : ニーズに応じてキャッシュの有効期限を設定します
- 選択的バイパス: 最新のデータを必要とする操作でキャッシュをバイパスするオプション
- 自動無効化: VMの状態が変化するとキャッシュは自動的に無効化されます
非同期処理
- 並行性の向上:複数のリクエストを同時に処理
- リソース利用率の向上:システムリソースの効率的な使用
- 非ブロッキング操作: 長時間実行される操作はサーバーをブロックしません
- 正常なシャットダウン: シャットダウン時にリソースを適切にクリーンアップする
監視と診断
- 構造化ログ: 分析しやすいログ形式
- パフォーマンスメトリクス: 操作のタイミングとリソースの使用状況を追跡する
- エラー追跡: トラブルシューティングのための詳細なエラーログ
- リソース監視: 接続プールの使用状況とキャッシュの有効性を追跡する
構成
サーバーは、デフォルト値とパスを保存するためにJSON設定ファイル( config.json
)を使用します。これにより、サーバーの移植性が向上し、カスタマイズが容易になります。設定には以下が含まれます。
これらの値は、環境の要件に合わせて変更できます。設定では、次の形式を使用した環境変数のオーバーライドをサポートしています。
VM_DISK_PATH``disk_path
用)default_iso
のVM_DEFAULT_ISO
default_master_image
のVM_DEFAULT_MASTER_IMAGE
default_name
のVM_DEFAULT_NAME
default_memory
のVM_DEFAULT_MEMORY
default_vcpus
のVM_DEFAULT_VCPUS
default_disk_size
のVM_DEFAULT_DISK_SIZE
default_os_variant
のVM_DEFAULT_OS_VARIANT
default_network
のVM_DEFAULT_NETWORK
ignition.default_hostname
のVM_IGNITION_DEFAULT_HOSTNAME
ignition.default_user
のVM_IGNITION_DEFAULT_USER
ignition.default_ssh_key
のVM_IGNITION_DEFAULT_SSH_KEY
ignition.default_timezone
のVM_IGNITION_DEFAULT_TIMEZONE
ignition.default_locale
のVM_IGNITION_DEFAULT_LOCALE
ignition.default_password_hash
のVM_IGNITION_DEFAULT_PASSWORD_HASH
パフォーマンスチューニング
接続プールの構成
キャッシュ構成
ログ構成
はじめる
前提条件
- Python 3.6以上
- ホストシステムにKVMとlibvirtがインストールされている
- 構成されたネットワークブリッジ(デフォルト:
brforvms
) - VM ストレージ ディレクトリが作成されました (デフォルト:
/vm/
) - VMワークロードに十分なシステムリソース
インストール
- このリポジトリをクローンします:Copy
- 仮想環境を作成してアクティブ化します。Copy
- 依存関係をインストールします:Copy
- サーバーを構成します。
- 環境に合わせて
config.json
を編集します - 必要なディレクトリがすべて存在することを確認する
- ネットワークブリッジの構成を確認する
- 必要に応じてパフォーマンス設定を調整する
- 環境に合わせて
使用法
- サーバーを起動します。Copy
- JSON-RPCを使用してコマンドを送信します。サンプルスクリプトが提供されています。
create_vm.sh
: デフォルト設定を使用して新しいVMを作成するget_vnc_ports.sh
: 実行中のVMのVNCポートを見つける
コマンド例
新しいVMを作成する
これにより、 config.json
のデフォルト設定を使用して新しいVMが作成されます。これらのデフォルト設定は、リクエストで指定することで上書きできます。
VNCポートを見つける
これにより、実行中のすべての VM とその VNC ポートが表示され、ディスプレイへの接続が容易になります。
キャッシュバイパスが有効なVMの一覧
監視とトラブルシューティング
ログファイル
kvm_mcp.log
: 現在のログファイルkvm_mcp.log.1
: 以前のログファイル(ローテーション済み)- ログにはタイミング情報、接続プールのステータス、キャッシュのヒット/ミスが含まれます。
パフォーマンスメトリック
- 接続プールの使用状況統計
- キャッシュヒット/ミス比
- 操作タイミングメトリック
- リソース使用率統計
よくある問題と解決策
- 接続プールの枯渇
- 症状: 応答時間が遅い、または接続エラーが発生する
- 解決策: 接続プール構成で
max_connections
を増やす
- キャッシュ無効化の問題
- 症状: 古いVM情報
- 解決策:
no_cache
パラメータを使用するか、キャッシュTTLを減らす
- リソースのクリーンアップ
- 症状: リソースリークまたは接続の問題
- 解決策: SIGTERM または SIGINT を使用して適切なシャットダウンを確実に行う
プロジェクト構造
kvm_mcp_server.py
: メインサーバーの実装config.json
: 設定ファイルrequirements.txt
: Python の依存関係- ルートディレクトリ内のサンプルスクリプト
- テストスイートは
tests/
ディレクトリにあります
貢献
貢献を歓迎します!お気軽にプルリクエストを送信してください。
ライセンス
このプロジェクトは MIT ライセンスに基づいてライセンスされています - 詳細については LICENSE ファイルを参照してください。
This server cannot be installed
local-only server
The server can only run on the client's local machine because it depends on local resources.
VM ライフサイクル、ネットワーク、ストレージ、およびディスプレイ管理タスク用の集中インターフェイスを提供することで、KVM 仮想マシンの管理を簡素化する JSON-RPC サーバー。
Related MCP Servers
- -securityAlicense-qualityA beginner-friendly MCP-inspired JSON-RPC server built with Node.js, offering basic client-server interaction through an 'initialize' capabilities handshake and an 'echo' function.Last updated -3JavaScriptMIT License
- -securityAlicense-qualityA VMware ESXi/vCenter management server based on MCP (Machine Control Protocol), providing simple REST API interfaces for virtual machine management.Last updated -3PythonMIT License
- AsecurityAlicenseAqualityA Model Context Protocol server that enables AI clients to interact with virtual Ubuntu desktops, allowing them to browse the web, run code, and control instances through mouse/keyboard actions and bash commands.Last updated -59JavaScriptMIT License
- -securityFlicense-qualityA simple MCP server that allows accessing and executing shell commands on a VM machine through a web-based terminal interface, with automatic tunneling to make the VM accessible from anywhere.Last updated -392JavaScript