第1章 MCP サーバー


1.1. Red Hat OpenShift Container Platform 用の MCP サーバーを使用してクラスターを検査する

OpenShift Container Platform クラスターで問題が発生した場合、何が起こっているのかを正確に把握し、できるだけ早く問題を解決する必要があります。Red Hat OpenShift Container Platform 用の MCP サーバー機能は、OpenShift Container Platform クラスターを迅速かつ容易に診断するための AI ツールを提供します。

重要

Red Hat OpenShift Container Platform 用の MCP サーバーは、テクノロジープレビュー機能です。テクノロジープレビュー機能は、Red Hat 製品のサービスレベルアグリーメント (SLA) の対象外であり、機能的に完全ではないことがあります。Red Hat は、実稼働環境でこれらを使用することを推奨していません。テクノロジープレビュー機能は、最新の製品機能をいち早く提供して、開発段階で機能のテストを行い、フィードバックを提供していただくことを目的としています。

Red Hat のテクノロジープレビュー機能のサポート範囲に関する詳細は、テクノロジープレビュー機能のサポート範囲 を参照してください。

1.1.1. AI の安全性

Red Hat OpenShift Container Platform で MCP (Model Context Protocol) サーバーを使用する場合は、以下の AI の安全対策とベストプラクティスに従うことを推奨します。

重要

この機能は AI 技術を使用しています。入力内容には、個人情報やその他の機密情報を含めないでください。お客様とのやり取りは、Red Hat の製品またはサービスの改善に利用される場合があります。AI が生成したコンテンツは、使用する前に必ず確認してください。

1.1.1.1. データの所有者

Red Hat OpenShift Container Platform 用の MCP サーバーは、クラスターの情報や状態を一切保存しません。オプトインすると、Red Hat OpenShift Container Platform の MCP サーバーの全体的な使用状況を把握するために、いくつかのテレメトリーメトリクスが収集されます。

  • クラスター:k8s_mcp_tool_calls:sum:
  • クラスター全体での MCP ツール呼び出しの総数
  • クラスター:k8s_mcp_tool_errors:sum:
  • クラスター全体で失敗した MCP ツール呼び出しの総数
  • クラスター:k8s_mcp_http_requests: 合計:
  • MCP サーバーが受信したすべての HTTP リクエストの総数

これらのメトリクスは、呼び出し、リクエスト、エラー自体の具体的な詳細を収集するのではなく、使用状況の全体的な合計値のみを提供します。

参加するには、TOML 設定ファイルを編集してください。

[telemetry]
enabled = true

オプトアウトするには、TOML 設定ファイルを編集してください。

[telemetry]
enabled = false

1.1.1.2. 必要な検証ワークフロー: ヒューマンインザループ (HITL) の実施

  • MCP クライアントで AI エージェントの提案するアクションを評価することを推奨します。
  • 提案されたリソースのバージョンは手動で確認する必要があります (たとえば、モデルが非推奨の API を提案していないことを確認するなど)。
  • AI クライアントインターフェイスにおいて、書き込み操作を行う際には、人間の承認メカニズムを使用することを推奨します。

1.1.1.3. データプライバシーとリダクション

Red Hat OpenShift Container Platform の MCP サーバーには、PII およびデータリダクションのための内部メカニズムはありません。許可されたカスタムリソース (CR) 内のクラスター情報がデータプライバシー基準に準拠していることを保証するために、TrustyAI を導入して送信ペイロードを監視およびサニタイズします。特定の CR に対する MCP アクセスの範囲と制限の方法については、カスタムリソースへのアクセス権の取り消し セクションを参照してください。

1.1.1.4. 監査証跡に関する推奨事項

Red Hat OpenShift Container Platform 用の MCP サーバーは、監査ログにユーザーエージェント文字列を追加して、リクエストが MCP サーバーを介して AI エージェントによって行われたことを識別できるように設定されています。OAuth または MCP ゲートウェイ経由で認可が有効になっていることを確認してください。詳細は、Red Hat OpenShift Container Platform 用の MCP サーバーのインストール セクションを参照してください。

1.1.1.5. サードパーティー製 MCP サーバーに関する推奨事項

セキュリティーと制御を向上させるため、サードパーティーの MCP ホストは、Red Hat OpenShift Container Platform の MCP サーバーを介して実行されるすべての書き込み操作を承認するための HITL 要件を実装することを推奨します。

1.1.1.6. AI ガバナンスとガードレール

MCP ゲートウェイは、中央集権的な制御ポイントとして機能し、適切なスコープのトークンと OAuth 2.0 を使用して、中央集権的な認証とアイデンティティー管理を通じて、エージェントとツール間の相互作用に対する厳格なガバナンスを強制し、エージェントが特定のタスクに必要な権限のみを持つことを保証します。MCP ゲートウェイは、アイデンティティーベースのツールフィルタリングを使用して環境をさらに保護します。これにより、許可されていないツールがツール/リストの検出プロセスから完全に排除され、エージェントが禁止されている機能にアクセスしようとするのを防ぎます。

AI 特有のリスクを軽減するためには、ゲートウェイには安全対策を講じた上で導入する必要があります。ガードレールには、Trusty AI や NVIDIA Nemo などの外部エンジンと連携して、トラフィックペイロードを検査し、即時注入や安全違反を検出する機能が含まれる。さらに、MCP ゲートウェイは、レート制限を実装してエージェント主導のサービス拒否攻撃を防ぎ、包括的な監査ログを提供することで、運用上の安定性と説明責任を確保し、すべてのツールの使用状況を追跡および分析します。

1.1.1.7. AI エージェントアクセスの緊急削除

緊急時には、以下のいずれかの操作を使用して、AI エージェントへのアクセス権を取り消すことができます (MCP サーバー経由)。

  • config.toml から 問題のあるツールへのアクセス権を削除してください

    特定のツールのみを有効にする:

    enabled_tools = ["pods_list", "pods_get", "pods_log"]
  • 有効になっているツールセットから 特定のツールを無効にする

    config.toml で破壊的なツール呼び出しを無効にします。

    disabled_tools = ["resources_delete", "pods_delete"].
  • 実稼働環境で使用可能な安全な設定を作成します

    read_only = true
  • 書き込みは許可するが、削除は禁止する

    disable_destructive = true
  • 以下のコマンドを実行して、MCP サーバーを完全にアンインストールしてください

    $ helm uninstall openshift-mcp-server
  • RBAC の取り消し:

    ユーザーのロールバインディングまたはクラスターロールバインディングを削除します。詳細は、Red Hat OpenShift Container Platform 用の MCP サーバーのインストール セクションを参照してください。

  • MCP ゲートウェイ経由でのアクセスを削除

    ゲートウェイ経由のアクセスを削除するには、次のコマンドを実行して MCPServerRegistration CR を削除します。

    $ oc delete mcpsr <name of registration>

1.1.2. Model Context Protocol の概要

MCP(Model Context Protocol) は、AI アプリケーションを外部システムに接続するためのオープンソース標準規格です。

MCP を使用することで、Claude Code や Cursor などの AI アプリケーションは、以下の項目に接続し、重要な情報にアクセスしてタスクを実行できるようになります。

  • データソース: たとえば、ローカルファイル、データベース
  • ツール: たとえば、検索エンジン、電卓
  • ワークフロー: たとえば、特殊なプロンプト

MCP は、AI アプリケーションにおける USB-C ポートと同様の働きをします。USB-C が電子機器を接続するための標準化された方法を提供するのと同様に、MCP は AI アプリケーションを外部システムに接続するための標準化された方法を提供します。

1.1.3. MCP サーバーの概要

Model Context Protocol (MCP) のエコシステムにおいて、サーバーの目標は、特定のデータソースまたはサービスを、AI が理解して使用できるものに変換することです。

1.1.3.1. MCP サーバーの目標

MCP サーバーの主な目的は、特定の機能を構造化され、安全かつ予測可能な方法で AI モデルに公開することです。MCP サーバーが達成する主な目的は以下のとおりです。

  • 機能の公開範囲: サーバーは、AI が実行または閲覧できる内容を正確に定義します。これは、以下の 3 つの具体的な事柄を明らかにすることによって実現されます。

    • ツール: 何らかの処理を実行する実行可能な関数 (例: このファイルを削除する、Slack に投稿する、住宅ローンを計算する)。
    • リソース: コンテキストを提供する読み取り専用のデータソース (例:README.md の内容を読むまたは過去 1 時間のログを取得する)。
    • プロンプト:AI モデルの動作をガイドする、あらかじめ定義されたテンプレート (たとえば、コードレビュー担当者プロンプトは、特定の言語でバグを探す方法を AI に正確に指示します)。
  • 複雑性の抽象化:MCP サーバーは、統合の複雑な部分を隠蔽します。LLM(法学修士) 取得者は、SQL クエリーの書き方や特定の GitHub API の使い方を知っている必要はありません。サーバーはコード、フォーマット、および技術的に特有の複雑な処理をすべて行い、LLM にクリーンで標準化された結果をもたらします。
  • 実行と動作: トラフィックをルーティングするだけの MCP ゲートウェイとは異なり、サーバーにはロジックが存在します。AI がツールを使用することを決定した場合、MCP サーバーは実際にそのツールを使用して実行するコンポーネントです。たとえば、Python スクリプトを実行したり、データベースにクエリーを実行したり、外部 API を呼び出したりします。
  • サンドボックスとセキュリティー: サーバーは分離層を提供します。別プロセスとして実行することで、特定のフォルダーや特定の API エンドポイントへのアクセスのみに制限することができます。AI モデルが望ましくない、または意図しない動作 (たとえば、ハードドライブ全体を削除しようとするなど) を試みた場合、サーバーは内部ルールに基づいてその動作を拒否することができます。

1.1.4. MCP ゲートウェイの概要

Model Context Protocol (MCP) ゲートウェイの主な目的は、AI モデルが外部データやツールと連携する方法を標準化し、簡素化することです。ゲートウェイがない場合、AI モデルはアクセスする必要のあるデータベース、API、ローカルファイルシステムごとに個別の統合を行う必要があります。

1.1.4.1. 集約とオーケストレーション

ゲートウェイは複数の MCP サーバーに同時に接続します。LLM(大規模言語モデル) が 10 個の異なる接続を管理する代わりに、ゲートウェイとのみ通信します。ゲートウェイは、LLM からのリクエストを、関連情報を持つ特定のサーバーにルーティングします (たとえば、Jira チケットは 1 つのサーバーから、Google ドライブのドキュメントは別のサーバーから取得するなど)。

1.1.4.2. セキュリティーおよびアクセス制御

ゲートウェイはセキュリティー境界として機能します。

それは以下のことを管理します。

  • 認証: 各種サーバーに必要な API キーまたはトークンを保持すること。
  • 権限:AI モデルがユーザーが承認した特定のデータまたはツールのみにアクセスできるようにします。
  • プライバシー: モデル提供者に送り返す前に、機密情報を削除します。

1.1.4.3. プロトコル翻訳

このゲートウェイは、AI モデルとサーバー間の通信が MCP 標準に準拠することを保証します。これは、AI モデルの高レベルな意図を、MCP サーバーが理解できる具体的な JSON-RPC 呼び出しに変換するものです。

1.1.4.4. Scalability

AI モデルをデータソースから切り離すことで、AI アプリケーションのコア設定を変更することなく、MCP サーバーの追加、削除、更新が可能になります。

1.1.5. Red Hat OpenShift Container Platform 用 MCP サーバープロンプトワークフロー

OpenShift Container Platform の Model Context Protocol (MCP) サーバーでのプロンプト表示は、特定のワークフローに従います。

大規模言語モデル (LLM) を実行すると、以下の手順に従って処理が行われます。

  1. ユーザーが繰り返し再起動している Pod はありますか? というプロンプトを入力します。
  2. MCP ホスト (例:Claude Desktop): プロンプトを受信します。接続されている MCP サーバーを調べ、そのうちの 1 つに pods_list というツールがあることを発見しました。
  3. MCP ゲートウェイ (使用する場合): エンタープライズ環境の場合、ホストは最初にゲートウェイと通信します。ゲートウェイはこのユーザーはクラスターへのアクセスを許可されているか? とクラスターは現在オンラインか? を確認します。
  4. MCP サーバー: ゲートウェイ (またはホスト) がサーバーにコマンドを送信します。サーバーは実際のコード (OpenShift への API 呼び出し) を実行し、データを取得して、それをサーバーに送り返します。
  5. LLM: 生データを受け取り、読み取り、最終的な要約を提供します。

1.1.6. Red Hat OpenShift Container Platform 用の MCP サーバーをインストールする

Red Hat OpenShift Container Platform 用の Model Context Protocol (MCP) サーバー機能をインストールするには、以下の手順を実行してください。

前提条件

  • 管理者権限で OpenShift コンソールにアクセスできます。
  • Claude Code、Visual Studio Code (VS Code)、Cursor、OpenShift LightSpeed (OLS) など、MCP 互換クライアントをインストールしてください。

手順

  1. Red Hat OpenShift Container Platform Helm チャート用の MCP サーバーをインストールします。
  2. Claude Code などの MCP 互換クライアントを MCP サーバーに接続します。
  3. MCP ゲートウェイをインストールしてください。
  4. MCP ゲートウェイのデプロイメントを確認してください。
  5. MCP ゲートウェイを設定します。
  6. RBAC の適用を設定します。
  7. カスタムリソースへのアクセス権を取り消します。
  8. MCP ゲートウェイ認証を設定します。
  9. MCP ゲートウェイ認可を設定します。

1.1.6.1. MCP サーバーの Helm チャートをインストールします。

Red Hat OpenShift Container Platform 用の Model Context Protocol (MCP) サーバー機能をインストールするには、Red Hat OpenShift Container Platform 用の MCP サーバー Helm チャートをインストールします。

前提条件

  • 管理者権限で OpenShift コンソールにアクセスできます。

手順

  1. 以下のいずれかのコマンドを実行して、Red Hat OpenShift Container Platform Helm チャート用の MCP サーバーをインストールします。

    • 読み取り専用アクセスの場合 (ほとんどのユースケースで推奨):

      $ helm upgrade -i -n openshift-mcp-server --create-namespace openshift-mcp-server \
          openshift-helm-charts/redhat-openshift-mcp-server \
          --set config.toolsets=<toolset-names> \
          --set ingress.host=<hostname> \
          --set openshift=true \
          --set-json 'rbac.extraClusterRoleBindings=[{"name":"use-view-role","roleRef":{"name":"view","external":true}}]'
    • クラスターへのフルアクセスには以下が必要です。

      $ helm upgrade -i -n openshift-mcp-server --create-namespace openshift-mcp-server \
          openshift-helm-charts/redhat-openshift-mcp-server \
          --set config.toolsets=<toolset-names> \
          --set ingress.host=<hostname> \
          --set openshift=true \
          --set-json 'rbac.extraClusterRoleBindings=[{"name":"admin-access","roleRef":{"name":"cluster-admin","external":true}}]'
    • ここで、<hostname> は、OpenShift Container Platform MCP サーバーのエントリーポイントとして機能する完全修飾ドメイン名 (FQDN) です。このホストアドレスは、イングレスコントローラーが外部トラフィックを MCP サーバーサービスにルーティングするために使用されます。これは、mcp-server.apps.cluster-name.domain.com のような URL である必要があります。
    • ここで、<toolset-names> には、次の表のツールセットを含めることができます。

      Expand
      表1.1 利用可能なツールセット
      ツールセット説明デフォルトStatus

      コア

      Kubernetes 管理でよく使われるツール (Pod、汎用リソース、イベントなど)

      はい

      テクノロジープレビュー

      config

      現在のローカル Kubernetes 設定 (kubeconfig) を表示および管理します。

      はい

      テクノロジープレビュー

      ネットエッジ

      OpenShift Container Platform 用の NetEdge トラブルシューティングツール

      いいえ

      テクノロジープレビュー

      helm

      Helm チャートとリリースを管理するためのツール

      いいえ

      テクノロジープレビュー

      metrics

      Prometheus および Alertmanager エンドポイントを効率的にクエリーするためのツールセット

      いいえ

      テクノロジープレビュー

      ossm

      OSSM を管理するための最も一般的なツール

      いいえ

      テクノロジープレビュー

      kubevirt

      KubeVirt 仮想マシン管理ツール

      いいえ

      開発者プレビュー

      tekton

      Tekton のパイプライン管理ツール (パイプライン、パイプライン実行、タスク、タスク実行用)

      いいえ

      開発者プレビュー

検証

このコマンドを実行すると、以下のような出力が返されます。

Release "openshift-mcp-server" does not exist. Installing it now.
NAME: openshift-mcp-server
LAST DEPLOYED: Mon Apr 20 09:28:13 2026
NAMESPACE: openshift-mcp-server
STATUS: deployed
REVISION: 1
TEST SUITE: None

1.1.6.2. クライアントを MCP サーバーに接続する

Red Hat OpenShift Container Platform 用の Model Context Protocol (MCP) サーバー機能をインストールするには、Claude Code などの MCP 互換クライアントを MCP サーバーに接続します。

前提条件

  • 管理者権限で OpenShift コンソールにアクセスできます。
  • MCP サーバーの Helm チャートがインストールされました。

手順

  1. クライアント設定ファイルに以下の行を追加してください。

    • Claude Desktop の場合: claude_desktop_config.json ファイル
    • Claude Code (CLI) の場合: .mcp.json ファイル

      {
        "mcpServers": {
          "openshift": {
            "type": "http",
            "url": "<url of the route created in the Helm chart>/mcp"
          }
        }
      }

      ここで、<Helm チャートで作成されたルートの URL> は、Helm のインストール時に設定したホスト名です。

  2. クライアントから要求があったら、CA 証明書を受け入れてください。

1.1.6.3. MCP ゲートウェイをインストールします

Red Hat OpenShift Container Platform 用の Model Context Protocol (MCP) サーバー機能をインストールするには、セキュリティーガードレールと認可機能を介してトラフィックをルーティングするための MCP ゲートウェイをインストールします。

前提条件

  • 管理者権限で OpenShift コンソールにアクセスできます。
  • MCP サーバーの Helm チャートがインストールされました。
  • MCP 互換クライアントが接続されました。

手順

  1. MCP ゲートウェイをインストールしてください。

    MCP ゲートウェイのインストール方法については、Red Hat Connectivity Link の ドキュメントの MCP ゲートウェイのインストール セクションを参照してください。

    インストール後、コントローラーはゲートウェイアクセス用の HTTP ルートを自動的に作成します。MCP ゲートウェイは、複数の MCP サーバーを単一のエンドポイントに集約するリバースプロキシーとして機能し、認証とレート制限のためのレイヤーを提供します。

1.1.6.4. MCP ゲートウェイのデプロイメントを確認します。

Red Hat OpenShift Container Platform 用の Model Context Protocol (MCP) サーバー機能をインストールするには、MCP ゲートウェイが正しくデプロイされ、実行されていることを確認してください。

前提条件

  • 管理者権限で OpenShift コンソールにアクセスできます。
  • MCP サーバーの Helm チャートがインストールされました。
  • MCP 互換クライアントが接続されました。
  • MCP ゲートウェイがインストールされました。

手順

  1. 次のコマンドを実行して、デプロイメントのステータスを確認してください。

    $ oc get pods -n mcp-system -l "app.kubernetes.io/instance=mcp-gateway"
    注記

    この例では、ゲートウェイのインストールに mcp-system という名前空間を使用します。ゲートウェイを mcp-system とは異なる名前空間にインストールする場合は、手順全体を通してその名前空間を使用してください。

    NAME                                      READY   STATUS    RESTARTS   AGE
    mcp-gateway-controller-594b9649cf-zstfw   1/1     Running   0          22s

  2. 以下のコマンドを実行して、MCP ゲートウェイ拡張機能が存在することを確認してください。

    $ oc get mcpgatewayextension -A

    NAMESPACE   NAME          READY   AGE
    mcp-system  mcp-gateway           105s

  3. 以下のコマンドを実行して、ブローカールーターのデプロイメントを確認します。

    $ oc logs -n mcp-system deployment/mcp-gateway-broker-router
  4. 以下のコマンドを実行して、ゲートウェイ名前空間に EnvoyFilter が作成されていることを確認してください。

    $ oc get envoyfilter -n mcp-system -l app.kubernetes.io/managed-by=mcp-gateway-controller

1.1.6.5. MCP ゲートウェイの設定

Red Hat OpenShift Container Platform 用の Model Context Protocol (MCP) サーバー機能をインストールするには、HTTPRoute リソースと MCPServerRegistration リソースを作成して MCP ゲートウェイを設定します。

前提条件

  • 管理者権限で OpenShift コンソールにアクセスできます。
  • MCP サーバーの Helm チャートがインストールされました。
  • MCP 互換クライアントが接続されました。
  • MCP ゲートウェイがインストールされ、動作確認済みです。

手順

  1. 以下のコマンドを実行して、MCP サーバー用の HTTP ルートを作成します。

    $ oc apply -f - <<EOF
    apiVersion: gateway.networking.k8s.io/v1
    kind: HTTPRoute
    metadata:
      name: mcp-api-key-server-route
      namespace: openshift-mcp-server
    spec:
      parentRefs:
      - group: gateway.networking.k8s.io
        kind: Gateway
        name: mcp-gateway
        namespace: gateway-system
        sectionName: mcp
      hostnames:
      - ${MCP_SERVER_HOST}
      rules:
      - matches:
        - path:
            type: PathPrefix
            value: /mcp
        backendRefs:
        - name: openshift-mcp-server
          port: 8080
    EOF

    ここで、${MCP_SERVER_HOST} は Helm のインストール時に設定したホスト名です。

    この HTTPRoute により、MCP ゲートウェイはトラフィックを MCP サーバーインスタンスにルーティングできるようになり、MCPServerRegistration リソースで参照されます。

  2. 以下のコマンドを実行して、MCP サーバーの登録リソースを作成します。

    $ oc apply -f - <<EOF
    apiVersion: mcp.kuadrant.io/v1alpha1
    kind: MCPServerRegistration
    metadata:
      name: my-mcp-server-reg
      namespace: openshift-mcp-server
    spec:
      toolPrefix: "openshift_"
      targetRef:
        group: "gateway.networking.k8s.io"
        kind: "HTTPRoute"
        name: "mcp-api-key-server-route"
        namespace: openshift-mcp-server
    EOF
    • metadata.name:MCP サーバー登録オブジェクトの名前を指定します。
    • metadata.namespace: MCP サーバーの名前空間。これは openshift-mcp-server です。
    • spec.targetRef.name: MCP サーバーの HTTPRoute の名前。これは、`oc get httproute -n openshift-mcp-server .` コマンドを実行することで確認できます。
    • spec.targetRef.namespace: MCP サーバーの HTTPRoute の名前空間。これは openshift-mcp-server です。
  3. 以下のコマンドを実行して、登録状況を確認してください。

    $ oc wait --for=condition=Ready mcpsr/my-mcp-server-reg -n openshift-mcp-server --timeout=120s
    $ oc get mcpsr -A

    NAMESPACE             NAME                PREFIX      TARGET                     PATH   READY   TOOLS   CREDENTIALS   AGE
    openshift-mcp-server  my-mcp-server-reg   myserver_   mcp-api-key-server-route   /mcp   True    4                     30s

    READY 列には True と 表示され、TOOLS 列には検出されたツールの数が表示されるはずです。

    ステータスが準備完了でない場合は、以下のコマンドを実行して、MCP サーバーの登録条件の詳細を確認してください。

    $ oc describe mcpsr my-mcp-server-reg -n openshift-mcp-server
  4. 以下のコマンドを実行して、コントローラーのログを確認してください。

    $ oc logs -n mcp-system deployment/mcp-gateway-controller
  5. 以下のコマンドを実行して、ブローカーのログからツールの検出状況を確認してください。

    $ oc logs -n mcp-system deployment/mcp-gateway-broker-router
  6. MCP サーバーツールが MCP ゲートウェイ経由で利用可能であることを確認してください。

    1. MCP セッションを初期化し、ヘッダーをファイルにダンプするために -D オプションを使用し、次に以下のコマンドを実行してセッション ID を読み取ることで、セッション ID を取得します。

      $ curl -s -D /tmp/mcp_headers -X POST http://mcp-gateway.apps.<cluster-name>.<domain-name>:8001/mcp  \
        -H "Content-Type: application/json" \
        -d '{"jsonrpc": "2.0", "id": 1, "method": "initialize", "params": {"protocolVersion": "2025-06-18", "capabilities": {}, "clientInfo": {"name": "test-client", "version": "1.0.0"}}}'

      ここで、<cluster-name>.<domain-name> はクラスターの名前とドメインです。

    2. 以下のコマンドを実行して、レスポンスヘッダーから MCP セッション ID を抽出します。

      $ SESSION_ID=$(grep -i "mcp-session-id:" /tmp/mcp_headers | cut -d' ' -f2 | tr -d '\r')
      
      $ echo "MCP Session ID: $SESSION_ID"
    3. 以下のコマンドでセッション ID を使用してツールのリストを表示します。

      $ curl -X POST http://mcp-gateway.apps.<cluster-name>.<domain-name>:8001/mcp \
        -H "Content-Type: application/json" \
        -H "mcp-session-id: $SESSION_ID" \
        -d '{"jsonrpc": "2.0", "id": 2, "method": "tools/list"}'

      ここで、<cluster-name>.<domain-name> はクラスターの名前とドメインです。

    4. 以下のコマンドを実行してクリーンアップしてください。

      $ rm -f /tmp/mcp_headers

      これで、応答に MCP サーバーツールが表示されるはずです。ツールには、設定した toolPrefix (例:myserver_) がプレフィックスとして付加されます。

1.1.6.6. RBAC の適用を設定する

Red Hat OpenShift Container Platform 用の Model Context Protocol (MCP) サーバー機能をインストールするには、ロールベースアクセス制御 (RBAC) を設定して、MCP サーバーを介してクラスターリソースへのアクセスを制御します。デフォルトでは RBAC が有効になっており、ClusterRoles、ClusterRoleBindings、Roles、および Rolebindings を拡張できます。

前提条件

  • 管理者権限で OpenShift コンソールにアクセスできます。
  • MCP サーバーの Helm チャートがインストールされました。
  • MCP 互換クライアントが接続されました。
  • MCP ゲートウェイがインストールされ、動作確認済みです。
  • MCP ゲートウェイが設定されました。

手順

  1. ClusterRoles、ClusterRoleBindings、Roles、および Rolebindings を拡張することで、RBAC の適用を設定します。

    ClusterRoles、ClusterRoleBindings、Roles、および Rolebindings を拡張するには、以下の RBAC YAML ファイルの例を使用してください。

    RBAC 設定の YAML ファイル例

    extraClusterRoles:
      - name: acm-managed-clusters
        rules:
          # Required for discovering and watching managed clusters
          - apiGroups: ["cluster.open-cluster-management.io"]
            resources: ["managedclusters"]
            verbs: ["list", "watch"]
    
    # -- ClusterRoleBinding for the ACM managed clusters role
    extraClusterRoleBindings:
      - name: acm-managed-clusters
        roleRef:
          name: acm-managed-clusters
    
    # -- Role for accessing cluster-proxy-addon service in multicluster-engine namespace
    extraRoles:
      - name: acm-cluster-proxy-discovery
        namespace: multicluster-engine
        rules:
          # Required for auto-discovering cluster-proxy-addon service
          - apiGroups: [""]
            resources: ["services"]
            verbs: ["get"]
    
    # -- RoleBinding for the cluster-proxy-discovery role
    extraRoleBindings:
      - name: acm-cluster-proxy-discovery
        namespace: multicluster-engine
        roleRef:
          name: acm-cluster-proxy-discovery

  2. 前述の例をファイル (例: rbac-values.yaml) に保存して RBAC 設定を適用し、以下のコマンドを実行します。

    $ helm upgrade openshift-mcp-server openshift-helm-charts/redhat-openshift-mcp-server \
        -n openshift-mcp-server \
        -f rbac-values.yaml

1.1.6.7. カスタムリソースへのアクセス権を取り消す

Red Hat OpenShift Container Platform 用の Model Context Protocol (MCP) サーバー機能をインストールするには、セキュリティーを強化するために、特定のカスタムリソース (CR) レベルのリソースへのアクセス権を取り消してください。シークレット、ConfigMaps、および RBAC リソース (RoleBindings、ClusterRoles) へのアクセスを制限することを強く推奨します。

前提条件

  • 管理者権限で OpenShift コンソールにアクセスできます。
  • MCP サーバーの Helm チャートがインストールされました。
  • MCP 互換クライアントが接続されました。
  • MCP ゲートウェイがインストールされ、動作確認済みです。
  • MCP ゲートウェイが設定されました。
  • RBAC が設定されています。

手順

  1. 機密性の高い CR へのアクセスを制限するために、アクセス拒否リソースを設定します。

    Secrets、ConfigMaps、および RBAC リソースへのアクセス権を取り消すには、以下のサンプルファイルを使用してください。

    # Deny access to Secrets
    [[denied_resources]]
    group = ""
    version = "v1"
    kind = "Secret"
    
    # Deny access to ConfigMaps
    [[denied_resources]]
    group = ""
    version = "v1"
    kind = "ConfigMap"
    
    # Deny access to RBAC resources for additional security
    [[denied_resources]]
    group = "rbac.authorization.k8s.io"
    version = "v1"
    kind = "Role"
    
    [[denied_resources]]
    group = "rbac.authorization.k8s.io"
    version = "v1"
    kind = "RoleBinding"
    
    [[denied_resources]]
    group = "rbac.authorization.k8s.io"
    version = "v1"
    kind = "ClusterRole"
    
    [[denied_resources]]
    group = "rbac.authorization.k8s.io"
    version = "v1"
    kind = "ClusterRoleBinding"

  2. 以下のいずれかの方法でこの設定を適用してください。

    • 設定をファイル (例: deny-resources.toml) に保存し、Helm の値ファイルを使用して渡します。

      $ helm upgrade openshift-mcp-server openshift-helm-charts/redhat-openshift-mcp-server \
          -n openshift-mcp-server \
          --set-file config.deniedResources=deny-resources.toml
    • または、--set-json を使用して設定をインラインで渡すこともできます。

      $ helm upgrade openshift-mcp-server openshift-helm-charts/redhat-openshift-mcp-server \
          -n openshift-mcp-server \
          --set-json 'config.deniedResources=[{"group":"","version":"v1","kind":"Secret"},{"group":"","version":"v1","kind":"ConfigMap"}]'

1.1.6.8. MCP ゲートウェイ認証の設定

Red Hat OpenShift Container Platform 用の Model Context Protocol (MCP) サーバー機能をインストールするには、OAuth ディスカバリーを含め、MCP ゲートウェイの OAuth ベースの認証を設定します。

前提条件

  • 管理者権限で OpenShift コンソールにアクセスできます。
  • MCP サーバーの Helm チャートがインストールされました。
  • MCP 互換クライアントが接続されました。
  • MCP ゲートウェイがインストールされ、動作確認済みです。
  • RBAC が設定されています。
  • 必要に応じて、特定のカスタムリソース (CR) へのアクセス権を取り消しました。
  • あなたはアイデンティティープロバイダー (Entra ID) にアクセスできます。

手順

  1. 以下のコマンドを実行して、MCP ゲートウェイブローカールーターのデプロイメントで環境変数を設定することにより、OAuth メタデータ検出を設定します。

    $ oc set env deployment/mcp-gateway-broker-router -n mcp-system\
    OAUTH_RESOURCE_NAME="MCP Server" \
    OAUTH_RESOURCE="http://mcp.127-0-0-1.sslip.io:8001/mcp" \
    OAUTH_AUTHORIZATION_SERVERS="https://login.microsoftonline.com/<tenant-id>/v2.0" \
    OAUTH_BEARER_METHODS_SUPPORTED="header" \
    OAUTH_SCOPES_SUPPORTED="openid,mcp-server,offline_access"

    これらの環境変数により、クライアントが認証検出に使用する OAuth 2.0 保護リソースメタデータエンドポイントが有効になります。

  2. 以下のコマンドを実行して、OAuth 検出用の HTTP ルートを作成します。

    $ oc apply -f - <<EOF
    apiVersion: gateway.networking.k8s.io/v1
    kind: HTTPRoute
    metadata:
      name: mcp-gateway-oauth-metadata
      namespace: mcp-system
    spec:
      parentRefs:
      - group: gateway.networking.k8s.io
        kind: Gateway
        name: mcp-gateway
        namespace: gateway-system
        sectionName: mcp
      hostnames:
      - ${MCP_GATEWAY_HOST}
      rules:
      - matches:
        - path:
            type: PathPrefix
            value: /.well-known/oauth-protected-resource
        backendRefs:
        - name: mcp-gateway
          port: 8080
    EOF

    ここで、${MCP_GATEWAY_HOST} は、MCP ゲートウェイの完全修飾ドメイン名です (例: mcp.127-0-0-1.sslip.io)。

    このルートにより、クライアントは認証フローに必要な OAuth メタデータを検出できるようになります。この経路がない場合、クライアントは OAuth 検出を試みた際に 404 エラーを受け取ります。

  3. アイデンティティープロバイダー (Entra ID) アプリ登録の設定:

    1. Azure ポータルまたは Entra 管理センターで、Entra ID アプリ登録に移動します。
    2. API を公開する の下に、mcp-server という名前のカスタムスコープを追加します。
    3. 以下のスコープが利用可能であることを確認してください: openidoffline_access、および mcp-server
    4. 組織の要件に応じて、これらのスコープに対する管理者の同意を付与してください。

      Entra ID の設定に関する詳細は、Microsoft Entra ID のアプリケーション登録の設定に関するドキュメントを参照してください。

  4. 以下のコマンドを実行して Entra ID CA 証明書を Authorino デプロイメントにマウントし、JWT 検証のための証明書の信頼性を設定します。

    $ oc create configmap entra-ca --from-file=ca.crt=/path/to/entra-ca.crt -n kuadrant-system
    $ oc patch deployment authorino -n kuadrant-system --type=json -p='[
      {
        "op": "add",
        "path": "/spec/template/spec/volumes/-",
        "value": {"name": "entra-ca", "configMap": {"name": "entra-ca"}}
      },
      {
        "op": "add",
        "path": "/spec/template/spec/containers/0/volumeMounts/-",
        "value": {"name": "entra-ca", "mountPath": "/etc/ssl/certs/entra-ca.crt", "subPath": "ca.crt"}
      }
    ]'

    これにより、Authorino は Microsoft Entra ID からの JWT トークン署名を検証できるようになります。

  5. 以下のコマンドを実行して、JWT トークンを検証する認証ポリシーを適用し、MCP ゲートウェイ認証を設定します。

    $ oc apply -f - <<EOF
    apiVersion: kuadrant.io/v1
    kind: AuthPolicy
    metadata:
      name: mcp-auth-policy
      namespace: mcp-system
    spec:
      targetRef:
        group: gateway.networking.k8s.io
        kind: Gateway
        name: mcp-gateway
        sectionName: mcp
      defaults:
        when:
    
          - predicate: "!request.path.contains('/.well-known')"
        rules:
          authentication:
            'entra-id':
              jwt:
                issuerUrl: https://login.microsoftonline.com/<tenant-id>/v2.0
          response:
            unauthenticated:
              code: 401
              headers:
                'WWW-Authenticate':
                  value: Bearer resource_metadata=http://mcp.127-0-0-1.sslip.io:8001/.well-known/oauth-protected-resource/mcp
              body:
                value: |
                  {
                    "error": "Unauthorized",
                    "message": "Authentication required."
                  }
    EOF

検証

  1. ブローカーが OAuth ディスカバリー情報を提供していることを確認するには、次のコマンドを実行してテストします。

    curl http://mcp.127-0-0-1.sslip.io:8001/.well-known/oauth-protected-resource

    このコマンドを実行すると、以下のような OAuth 2.0 保護リソースメタデータが表示されるはずです。

    {
      "resource_name": "MCP Server",
      "resource": "http://mcp.127-0-0-1.sslip.io:8001/mcp",
      "authorization_servers": [
        "https://login.microsoftonline.com/<tenant-id>/v2.0"
      ],
      "bearer_methods_supported": [
        "header"
      ],
      "scopes_supported": [
        "openid",
        "mcp-server",
        "offline_access"
      ]
    }

  2. 保護されたエンドポイントで認証が必要になったことを確認するには、次のコマンドを実行します。

    $ curl -v http://mcp.127-0-0-1.sslip.io:8001/mcp \
      -H "Content-Type: application/json" \
      -d '{"jsonrpc": "2.0", "id": 1, "method": "tools/list"}'

    {
      "error": "Unauthorized",
      "message": "Authentication required."
    }

1.1.6.9. MCP ゲートウェイ認可の設定

Red Hat OpenShift Container Platform 用の Model Context Protocol (MCP) サーバー機能をインストールするには、MCP ゲートウェイのツールレベルの認可を設定して、どのユーザーが特定の MCP ツールにアクセスできるかを制御します。

前提条件

  • 管理者権限で OpenShift コンソールにアクセスできます。
  • MCP サーバーの Helm チャートがインストールされました。
  • MCP 互換クライアントが接続されました。
  • MCP ゲートウェイがインストールされ、動作確認済みです。
  • RBAC が設定されています。
  • 必要に応じて、特定のカスタムリソース (CR) へのアクセス権を取り消しました。
  • MCP ゲートウェイ認証が設定されています。
  • お客様のアイデンティティープロバイダーは、JWT トークンにグループ/ロールクレームを含めるように設定されています。

手順

  1. 発行する JWT トークンに、アイデンティティープロバイダーが必要なグループ/ロールのクレームを含めていることを確認してください。

    発行される OAuth トークンには、以下のようなクレームが含まれている必要があります。

    {
      "resource_access": {
        "mcp-ns/openshift-mcp-server": {
          "roles": ["pods_list", "events_list", "nodes_list", "deployments_get"]
        },
        "mcp-ns/geometry-mcp-server": {
          "roles": ["pods_list", "events_list", "nodes_list", "deployments_get"]
        }
      }
    }

    • 名前空間は、MCPServerRegistration CR の名前空間と一致する必要があります。
    • ロールは、使用可能なツールを表します。この例では、pods_list、events_list、nodes_list、deployments_get です。
  2. 以下のコマンドを実行して、ツールレベルのアクセス制御を強制する AuthPolicy を適用することにより、ツールレベルの認可を設定します。

    $ oc apply -f - <<EOF
    apiVersion: kuadrant.io/v1
    kind: AuthPolicy
    metadata:
      name: mcp-tool-auth-policy
      namespace: openshift-mcp-server
    spec:
      targetRef:
        group: gateway.networking.k8s.io
        kind: Gateway
        name: mcp-gateway
        sectionName: mcp
      rules:
        authentication:
          'sso-server':
            jwt:
              issuerUrl: https://login.microsoftonline.com/<tenant-id>/v2.0
        authorization:
          'tool-access-check':
            patternMatching:
              patterns:
                - predicate: |
                    request.headers['x-mcp-toolname'] in (has(auth.identity.resource_access) && auth.identity.resource_access.exists(p, p == request.headers['x-mcp-servername']) ? auth.identity.resource_access[request.headers['x-mcp-servername']].roles : [])
        response:
          unauthenticated:
            headers:
              'WWW-Authenticate':
                value: Bearer resource_metadata=http://mcp-gateway.apps.<cluster-name>.<domain-name>:8001/.well-known/oauth-protected-resource/mcp
            body:
              value: |
                {
                  "error": "Unauthorized",
                  "message": "MCP Tool Access denied: Authentication required."
                }
          unauthorized:
            body:
              value: |
                {
                  "error": "Forbidden",
                  "message": "MCP Tool Access denied: Insufficient permissions for this tool."
                }
    EOF

    詳細は、以下のようになります。

    • spec.sectionName は MCP サーバーリスナーを対象とします。
    • <cluster-name>.<domain-name> は、クラスターの名前とドメインです。

検証

  1. MCP Inspector を設定して、認可によってツールへのアクセスが制御されることを確認するテストを行います。

    1. 以下のコマンドを実行して、MCP Inspector (Node.js/npm が必要) を起動します。

      $ npx @modelcontextprotocol/inspector@latest &
      INSPECTOR_PID=$!
    2. 以下のコマンドを実行して、サービスが起動するまでお待ちください。

      $ sleep 3
    3. 次の URL にアクセスして MCP Inspector を開きます: http://localhost:6274/?transport=streamable-http&serverUrl=http://mcp-gateway.apps.<cluster-name>.<domain-name>:8001/mcp

      ここで、<cluster-name>.<domain-name> はクラスターの名前とドメインです。

  2. 後でサービスを停止するには、次のコマンドを実行してください。

    $ kill $INSPECTOR_PID
  3. アイデンティティープロバイダーで必要なロールクレームが設定されたユーザーアカウントを使用して認証してください。
  4. 以下の許可されたツールをお試しください。

    • pods_list
    • イベントリスト
    • ノードリスト
    • デプロイメント _get
  5. この制限付きツールをお試しください: pods_delete

    このツールは制限されているため、403 Forbidden エラーが表示されます。

  6. 認可決定を監視する:

    1. 以下のコマンドを実行して、AuthPolicy の状態を確認してください。

      $ oc get authpolicy -A
    2. 認可ログを表示するには、次のコマンドを実行してください。

      $ oc logs -n kuadrant-system -l authorino-resource=authorino

1.1.7. Red Hat OpenShift Container Platform 用 MCP サーバーがプロンプトを表示する

OpenShift Container Platform 用の MCP サーバーがインストールされると、大規模言語モデル (LLM) にクラスターに関する詳細情報を問い合わせることができるようになります。

注記

プロンプトを使用する際に最良の結果を得るためには、以下の点に注意してください。

  • namespace を指定します。
  • Red Hat Advanced Cluster Management (ACM) for Kubernetes 環境の場合、クラスターを指定します。

1.1.7.1. MCP プロンプト

MCP プロンプトは、AI アシスタントを特定のワークフローに沿って誘導するための、あらかじめ定義されたテンプレートです。

それらは以下と組み合わさる:

  • 体系的なガイダンス: 一般的なタスクの手順を段階的に説明します
  • パラメーター化: 特定の状況に合わせてプロンプトをカスタマイズする引数
  • 会話テンプレート: やり取りをガイドする、あらかじめフォーマットされたメッセージ

1.1.7.2. カスタムプロンプトの作成

config.toml ファイルでカスタムプロンプトを定義します。コードの変更や再コンパイルは不要です。

カスタムプロンプトの例

[[prompts]]
name = "check-pod-logs"
title = "Check Pod Logs"
description = "Quick way to check pod logs"

[[prompts.arguments]]
name = "pod_name"
description = "Name of the pod"
required = true

[[prompts.arguments]]
name = "namespace"
description = "Namespace of the pod"
required = false

[[prompts.messages]]
role = "user"
content = "Show me the logs for pod {{pod_name}} in {{namespace}}"

[[prompts.messages]]
role = "assistant"
content = "I'll retrieve and analyze the logs for you."

Expand
表1.2 設定の参照
プロンプトフィールド

名前 (必須)

プロンプトの一意の識別子

タイトル (任意)

人間が読みやすい表示名

説明 (必須)

プロンプトが何をするのかを簡単に説明します。

引数 (オプション)

プロンプトが受け入れるパラメーターのリスト

メッセージ (必須)

ロールと内容のペアを含む会話テンプレート

引数フィールド

名前 (必須)

引数識別子

説明 (任意)

議論の目的の説明

必須 (任意)

引数を必ず指定する必要があるかどうか (デフォルト:false)

引数の置換

メッセージ本文では、{{argument_name}} プレースホルダーを使用してください。テンプレートエンジンは、プロンプトが呼び出されたときに、これらの値を実際の値に置き換えます。オプション引数が指定されていない場合、そのプレースホルダーは出力から削除されます。

1.1.7.3. 組み込みプロンプト

Red Hat OpenShift Container Platform 用の MCP サーバーには、常に利用可能な組み込みプロンプトがいくつかあります。

Cluster-health-check は、 OpenShift クラスターの包括的な健全性評価を実行します。

議論:

  • 名前空間 (オプション): ヘルスチェックを特定の名前空間に限定します。デフォルト: すべての名前空間。
  • check_events (オプション): 最近の警告/エラーイベントを分析に含める。値: true または false。デフォルト: true

チェック対象:

  • ノード: ステータスと条件 (例: 準備完了、メモリー負荷、ディスク負荷)
  • クラスター Operator: 利用可能状態と劣化状態
  • Pod: フェーズ、コンテナーの状態、再起動回数、および一般的な問題 (例:CrashLoopBackOff、ImagePullBackOff)
  • ワークロードコントローラー: デプロイメント、ステートフルセット、デーモンセットのレプリカステータス
  • 永続ボリューム要求: バインディングステータス
  • イベント: 過去 1 時間に発生した警告およびエラーイベント

使用例:

Check the health of my cluster

または、特定のパラメーターを指定して:

Check the health of namespace production

より迅速な結果を得るために、イベントチェックをスキップすることもできます。

Check the health of my cluster without events

このプロンプトは包括的な診断データを収集し、分析のために LLM に提示します。LLM は以下を提供します。

  • 全体的な健康状態 (健康、注意、または重篤)
  • 緊急の対応が必要な重大な問題
  • 警告および推奨事項
  • コンポーネント別の概要

1.1.7.4. 設定ファイルの場所

プロンプトは、MCP サーバーで使用される config.toml ファイルに記述してください。サーバー起動時に --config フラグ を使用して設定ファイルのパスを指定してください。

1.1.7.5. ツールセットのプロンプト

一部のツールセットにはプロンプトが含まれており、ツールセットを有効にするとプロンプトが有効になります。

1.1.7.6. 迅速なマージ

ツールセットと設定の両方のプロンプトが存在する場合、設定で定義されたプロンプトは、同じ名前のオーバーライドツールセットのプロンプトになります。これにより、管理者は組み込みのワークフローをカスタマイズできます。両方の情報源から、固有の名前を持つプロンプトが利用可能です。

Red Hat logoGithubredditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

Red Hat ドキュメントについて

Legal Notice

Theme

© 2026 Red Hat
トップに戻る