8. Tips

8.1. Github Copilot + Flux MCP Server

8.1.1. Flux MCP Server

FluxMCPServer はFluxCDが開発しているMCP(Model Context Protocol)で、AIアシスタント(Github Copilot等)がkubernetesクラスターと対話するための専用ツールです。 Fluxリソース/アプリケーションログ等の調査や、リソースの依存関係の可視化、リソースの操作ができ、最新のFlux公式ドキュメントを使用して、最新情報と推奨事項を提案してくれます。

警告

FluxMCPServerは実験的な機能であり、調査の「補助ツール」としてご利用下さい。

8.1.2. Flux MCP Serverインストール

以下、Mac環境のインストール方法です。

環境の前提は以下。

  • MacOS(14.7.6)

  • VSCode(1.104.0)

  • GitHub Copilot plugin(1.370.1783)

flux-operator-mcp install
brew install controlplaneio-fluxcd/tap/flux-operator-mcp

利用しているVSCodeのsettings.jsonと同階層にmcp.jsonを配置します。

/Users/<user>/Library/Application Support/Code/User/mcp.json
{
   "servers": {
      "flux-operator-mcp": {
            "command": "/usr/local/bin/flux-operator-mcp",
            "args": [
               "serve"
            ],
            "env": {
               "KUBECONFIG": "/Users/<user>/.kube/config"
            }
      }
   }
}

VSCodeに設定ができると、 VSCodeの拡張機能 > MCPサーバー から以下が確認できます。

../_images/flux-operator-mcp.png

VSCodeのGithub Copilotを開き、 Agent モード になっていることを確認して、利用します。

../_images/github-copilot-agent.png

8.1.3. Flux MCP Server(リモートSSH)

リモートSSHして、VSCodeを利用する場合、以下の設定が必要になります。 拡張機能のGitHub Copilotのインストールは、ローカル端末のみで、リモートSSH側にインストールは不要です。

/Users/<user>/Library/Application Support/Code/User/settings.json
{
   "remote.extensionKind": {
      "*": [
            "workspace"
      ],
      "GitHub.copilot": [
            "ui"
      ],
      "GitHub.copilot-chat": [
            "ui"
      ]
   }
}

加えて、リモートサーバ側への設定として、コマンドパレット MCP: リモート ユーザ構成を開く から以下の設定を行います。

~/.vscode-server/data/User/mcp.json
{
   "servers": {
      "flux-operator-mcp": {
         "command": "/usr/local/bin/flux-operator-mcp",
         "args": [
            "serve"
         ],
         "env": {
            "KUBECONFIG": "/home/user/.kube/config"
         }
      }
   }
}

8.1.4. FluxMCPの動作確認

以下のプロンプトにて、接続可能なkubernetesのコンテキストを表示します。

FluxMCPの動作確認プロンプト
#flux-operator-mcp
コンテキスト一覧を表示して

FluxMCPが動作している場合、以下の表示が出力されます。

../_images/flux-mcp-check.png

もし、上記の表示が出力されない場合は、 VSCodeの拡張機能 > MCPサーバー を確認して、FluxMCPの起動を確認します。 FluxMCPが起動していない場合は、 サーバーの起動 をクリックします。

../_images/flux-mcp-start.png

8.1.5. FluxMCPの操作制限

プロンプトによっては、kubernetesのリソースを変更/削除ができてしまう為、以下の設定を変更して、操作できないように制限を行います。

VSCodeのGithub Copilotを開き、以下のアイコンをクリックします。

../_images/github-copilot-tool.png

ツールの構成 より、 get/search/set だけを残します。

../_images/github-copilot-tool-check.png

8.1.6. プロンプト例

特定のリリース種別でエラーになっているリソースがないか確認する場合は、以下のようなプロンプトで問合せします。

helmreleases調査プロンプト
#flux-operator-mcp
helmreleasesでエラーになっている対象はありますか?
limit 100

警告

リソース数が多い場合は、問合せ件数に制限がかかる場合があるので、リリース数に応じて、limitの数値を調整が必要です。

特定のリソースのエラーを調査したい場合は、以下のようなプロンプトで問合せします。

特定のリソース調査プロンプト
#flux-operator-mcp
kind <リソース種別>
ns <ネームスペース名>
name <リソース名>
のエラーを調査して

8.1.7. FluxMCPのチャットリセット

チャット流れから回答する場合があるので、最新の状態を問合せしたい場合は、以下のように新規チャットに切り替えてして、問合せすることをオススメします。

../_images/flux-mcp-reset.png

8.1.8. 調査事例

以下のマニフェストで意図的にエラーの状況にします。 ★の設定により、podがエラーになります。 原因としては、Windows Nodeに、Linuxのコンテナイメージをデプロイしようとしている為、エラーになります。

cron-tmp.yaml
apiVersion: managed.msp.sbopsv/v1alpha1
kind: Application
metadata:
name: "sample-cronjob"
namespace: "staging"
spec:
chart:
   name: cronjob
   version: "1.1.17"
settings:
   command:
      - "echo"
      - "AI Test"
   restartPolicy: "OnFailure"
   parallelism: 3
   completions: 1
   schedule: "0 * * * *"
   timeZone: "Asia/Tokyo"
   completionMode: "NonIndexed"
   concurrencyPolicy: "Allow"
   suspend: false
   successfulJobsHistoryLimit: 1
   failedJobsHistoryLimit: 1
   image:
      repository: "busybox" 
      tag: "1.35"
   nodeSelector:
      kubernetes.io/os: windows ★
   tolerations:
      - effect: NoExecute
      key: os
      operator: Equal
      value: win

以下のように、調査結果と対策案を提示してくれます。

../_images/flux-mcp-pod-error.png

次に、修正すべきファイルを特定します。

警告

VSCodeで該当のマニフェストが存在するリポジトリを開いている必要があります。

../_images/flux-mcp-pod-error-file.png

次に、ファイルの修正案を提示してもらいます。

../_images/flux-mcp-pod-error-file-fix.png