Harvester MCP Server について
Harvester MCP Serverは、Harvester HCIクラスター向けのGo製MCPサーバーです。AIアシスタントから自然言語でリソースを照会・操作でき、Kubernetes標準リソースとHarvester固有リソースを読みやすい形式で返します。
主な機能
- 01Kubernetes標準リソースの一覧表示と詳細取得
- 02Podの削除
- 03HarvesterのVM、イメージ、ボリューム、ネットワークの一覧表示
- 04名前空間または状態ごとのリソース分類
- 05簡潔な要約と詳細表示
活用シーン
- 01クラスターのノード、サービス、名前空間を確認
- 02指定したPodの表示または削除
- 03VM、イメージ、ボリューム、ネットワークの照会
MCP 対応
MCPサーバーは、Harvesterクラスターのリソース操作をMCPクライアント向けのツールとして公開し、結果を読みやすいテキストに整形します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
Harvester MCP サーバー
重要
これはコミュニティプロジェクトであり、Harvester による公式サポートはありません。Harvester が公式にサポートしている MCP サーバーをお探しの場合は、harvester/harvester-mcp-server をご利用ください。
Harvester HCI 用の Model Context Protocol(MCP)サーバーです。Claude Desktop、Cursor などの AI アシスタントが、MCP プロトコルを通じて Harvester クラスターと連携できるようにします。
概要
Harvester MCP Server は、Harvester HCI 専用に設計された、Model Context Protocol(MCP) の Go 実装です。Claude Desktop や Cursor などの AI アシスタントが、Harvester 固有の CRD を備えた Kubernetes クラスターである Harvester クラスターに対して CRUD 操作を実行できます。
ワークフロー
以下の図は、Harvester MCP Server が AI アシスタントと Harvester クラスターをどのようにつなぐかを示しています。
graph LR;
subgraph "AI Assistants"
A[Claude Desktop] --> C[MCP Client];
B[Cursor IDE] --> C;
end
subgraph "Harvester MCP Server"
C --> D[MCP Server];
D --> E[Resource Handler];
E --> F[Formatter Registry];
F -->|Get Formatter| G[Core Resource Formatters];
F -->|Get Formatter| H[Harvester Resource Formatters];
end
subgraph "Kubernetes / Harvester"
G --> I[Kubernetes API];
H --> I;
I --> J[Harvester Cluster];
end
style A fill:#f9f,stroke:#333,stroke-width:2px;
style B fill:#f9f,stroke:#333,stroke-width:2px;
style D fill:#bbf,stroke:#333,stroke-width:2px;
style J fill:#bfb,stroke:#333,stroke-width:2px;
動作の仕組み
- LLM との連携:Claude Desktop や Cursor などの AI アシスタントが、MCP プロトコルを介して Harvester MCP Server に接続します。
- リクエストの処理:MCP サーバーは AI アシスタントから自然言語のリクエストを受け取り、具体的な Kubernetes 操作に変換します。
- リソースの処理:リソースハンドラーが、要求されたリソースの種類と操作を特定します。
- フォーマッターの選択:フォーマッターレジストリーが、リソースの種類に適したフォーマッターを選択します。
- API との連携:サーバーが Harvester クラスターの Kubernetes API と連携します。
- レスポンスの整形:結果を LLM が利用しやすい、人が読みやすいテキスト形式に整えます。
- ユーザーへの提示:整形されたレスポンスが AI アシスタントに返され、ユーザーに提示されます。
このアーキテクチャにより、AI アシスタントは自然言語を通じて Harvester クラスターと連携でき、複雑な Kubernetes 操作をユーザーにとってより利用しやすくします。
機能
-
Kubernetes のコアリソース:
- Pod:一覧表示、取得、削除
- Deployment:一覧表示、取得
- Service:一覧表示、取得
- Namespace:一覧表示、取得
- Node:一覧表示、取得
- カスタムリソース定義(CRD):一覧表示
-
Harvester 固有のリソース:
- 仮想マシン:一覧表示、取得
- イメージ:一覧表示
- ボリューム:一覧表示
- ネットワーク:一覧表示
-
ユーザーエクスペリエンスの向上:
- すべてのリソースを人が読みやすい形式で出力
- 名前空間またはステータスごとにリソースを自動グループ化
- 関連性の高い情報を含む簡潔な概要
- リソースを詳細に確認できる詳細表示
要件
- Go 1.23 以降
- 有効な kubeconfig を使用した Harvester クラスターへのアクセス
インストール
ソースから
# Clone the repository
git clone https://github.com/starbops/harvester-mcp-server.git
cd harvester-mcp-server
# Build
make build
# Run
./bin/harvester-mcp-server
Go Install を使用
go install github.com/starbops/harvester-mcp-server/cmd/harvester-mcp-server@latest
設定
サーバーは、以下の順序で Kubernetes の設定を自動的に検索します。
- クラスター内の設定(Kubernetes クラスター内で実行されている場合)
--kubeconfigフラグで指定されたパスKUBECONFIG環境変数で指定されたパス- デフォルトの場所
~/.kube/config
コマンドラインフラグ
Usage:
harvester-mcp-server [flags]
Flags:
-h, --help help for harvester-mcp-server
--kubeconfig string Path to the kubeconfig file (default is $KUBECONFIG or $HOME/.kube/config)
--log-level string Log level (debug, info, warn, error, fatal, panic) (default "info")
例
特定の kubeconfig ファイルを使用する場合:
harvester-mcp-server --kubeconfig=/path/to/kubeconfig.yaml
KUBECONFIG 環境変数を使用する場合:
export KUBECONFIG=$HOME/config.yaml
harvester-mcp-server
デバッグログを有効にする場合:
harvester-mcp-server --log-level=debug
Claude Desktop での使用
- Claude Desktop をインストールします
- Claude Desktop の設定ファイル(
~/Library/Application\ Support/Claude/claude_desktop_config.jsonなど)を開きます - Harvester MCP サーバーを
mcpServersセクションに追加します。
{
"mcpServers": {
"harvester": {
"command": "/path/to/harvester-mcp-server",
"args": ["--kubeconfig", "/path/to/kubeconfig.yaml", "--log-level", "info"]
}
}
}
- Claude Desktop を再起動します
- Harvester MCP ツールが Claude で利用できるようになります
Claude Desktop 向けのクエリ例
Harvester MCP サーバーを Claude Desktop で設定すると、次のような質問をできます。
- 「Harvester クラスターにはノードがいくつありますか?」
- 「cattle-system 名前空間内のすべての Pod を一覧表示してください」
- 「cattle-system 名前空間にある rancher-789c976c6-xbvmd という名前の Pod の詳細を表示してください」
- 「default 名前空間内のすべての仮想マシンを一覧表示してください」
- 「harvester-system 名前空間では、どのサービスが実行されていますか?」
開発
プロジェクト構成
cmd/harvester-mcp-server:メインアプリケーションのエントリーポイントpkg/client:Kubernetes クライアントの実装pkg/cmd:Cobra を使用した CLI コマンドの実装pkg/mcp:MCP サーバーの実装pkg/kubernetes:Kubernetes リソース向けの統合リソースハンドラーpkg/tools:Harvester リソースを操作するための従来のツール実装
リソースの処理
このプロジェクトでは、Kubernetes リソースを処理するために統合的なアプローチを採用しています。
-
pkg/kubernetes/resources.goファイルには、すべてのリソースタイプに共通する操作を提供するResourceHandlerが含まれています。- 適切な名前空間処理を伴うリソースの一覧表示
- 名前によるリソースの詳細取得
- リソースの作成と更新
- リソースの削除
-
pkg/kubernetes/formatters*.goファイルには、さまざまなリソースタイプ向けのフォーマッターが含まれています。- 各フォーマッターは、生の Kubernetes オブジェクトを人が読みやすいテキストに変換します
- リソース固有の詳細を抽出し、一貫した方法で整形します
- 標準の Kubernetes リソースと Harvester 固有のリソースの両方に、カスタムフォーマッターがあります
-
pkg/kubernetes/types.goファイルでは、わかりやすいリソースタイプ名を Kubernetes の GroupVersionResource オブジェクトに対応付けています。- コード内で簡単な名前を使ってリソースを参照できます
- リソースタイプの定義を一元管理します
新しいツールの追加
新しいツールを追加するには、次の手順に従います。
- 新しいリソースタイプの場合は、
pkg/kubernetes/types.goに追加します - フォーマッターファイルのいずれかで、そのリソース用のフォーマッターを実装します
- 統合リソースハンドラーを使用して、
pkg/mcp/server.goのregisterToolsメソッドでツールを登録します
フォーマット関数
各リソースタイプには、次の2つのフォーマット関数があります。
formatXList:名前空間ごとにグループ化し、簡潔な情報とともにリソースの一覧を整形しますformatX:単一のリソースを詳細情報とともに整形します
ライセンス
このプロジェクトは Apache License 2.0 の下でライセンスされています。詳細については、LICENSE ファイルを参照してください。
謝辞
- Harvester HCI:このプロジェクトの基盤
- mark3labs/mcp-go:Model Context Protocol 向けの Go SDK
- manusa/kubernetes-mcp-server:Kubernetes MCP サーバーのリファレンス実装
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。