第1章 MCP サーバー


1.1. MCP server for Red Hat OpenShift を使用したクラスターの検証

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

1.1.1. AI の安全性

MCP server for Red Hat OpenShift は、AI エージェントにクラスターリソースへのアクセス権を割り当てるため、安全対策に従って、不正なアクション、データの公開、およびプロンプトの注入リスクからクラスターを保護する必要があります。

重要

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

1.1.1.1. データの所有者

MCP server for Red Hat OpenShift は、クラスターに関する情報または状態を保存しません。オプトインすると、MCP server for Red Hat OpenShift の全体的な使用状況を把握するために、Telemetry メトリクスが複数収集されます。

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

これらのメトリクスは、呼び出し、リクエスト、エラー自体の詳細情報を収集するものではありません。提供されるのは、使用状況の全体の集計値のみです。

オプトインするには、TOML 設定ファイルを編集します。

[telemetry]
enabled = true

オプトアウトするには、TOML 設定ファイルを編集します。

[telemetry]
enabled = false

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

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

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

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

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

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

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

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

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

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

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

1.1.1.7. 集約とアクセス制御には MCP ゲートウェイを使用します。

MCP サーバーへのアクセスを集約および制御するため、また MCP サーバーへの認証および認可を管理するために、MCP ゲートウェイを使用することを強く推奨します。これにより、MCP ツールの使用状況のオブザーバビリティーとガバナンスも確保されます。さらに、MCP ゲートウェイには Trusty AI および NeMo ガードレールとの統合機能も含まれており、リクエストとレスポンスのトラフィックが MCP サーバーに到達する前に、個人情報、プロンプトの挿入、および安全でないコンテンツがないかスクリーニングします。

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

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

設定変更の適用方法については、Red Hat OpenShift 用 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 サーバーを完全にアンインストールします。

    $ oc delete mcpserver --all --all-namespaces
  • RBAC を取り消します。

    ユーザーのロールバインディングまたはクラスターロールバインディングを削除します。詳細は、「MCP server for Red Hat OpenShift のインストール」を参照してください。

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

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

    $ oc delete mcpsr <name of registration>

1.1.2. Model Context Protocol の概要

Model Context Protocol (MCP) は、AI アプリケーションがカスタム統合なしで外部データソース、ツール、およびワークフローにセキュアに接続できるようにするオープンソースの標準です。

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

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

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

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

1.1.3. MCP サーバーの概要

Model Context Protocol (MCP) サーバーは、構造化されたセキュアな方法でクラスターデータと操作を AI モデルに公開するため、AI エージェントは API またはデータベースへの直接アクセスを必要とせずにクラスターに対して診断および操作を行うことができます。

1.1.3.1. MCP サーバーの目標

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

  • 機能の公開範囲: サーバーは、AI が実行または閲覧できる内容を正確に定義します。具体的には、次の 3 つの項目を提供する形で行われます。

    • ツール: 何らかの処理を行う実行可能な関数 (例: 「このファイルを削除する」、「Slack に投稿する」、「住宅ローンを計算する」)。
    • リソース: コンテキストを提供する読み取り専用のデータソース (例: 「README.md の内容を読む」または「過去 1 時間のログを取得する」)。
    • プロンプト:AI モデルの動作をガイドする、あらかじめ定義されたテンプレート (例: 特定の言語でバグを探す方法を AI に正確に指示する「コードレビュワー」のプロンプト)。
  • 複雑性の抽象化: MCP サーバーを利用することで、連携における複雑な内部実装を意識する必要がなくなります。LLM 側で、SQL クエリの書き方や特定の GitHub API の仕様を把握しておく必要はありません。サーバーはコード、フォーマット、および技術的に特有の複雑な処理をすべて行い、LLM にクリーンで標準化された結果をもたらします。
  • 実行とアクション: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. スケーラビリティー

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

1.1.5. MCP server for Red Hat OpenShift プロンプトワークフロー

Model Context Protocol (MCP) のプロンプトワークフローを理解することで、問題のトラブルシューティングを改善し、MCP サーバー、ゲートウェイ、および大規模言語モデル (LLM) を介してプロンプトがクラスターリソースに到達する方法を最適化できます。

LLM を実行すると、以下の手順に従って実行されます。

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

1.1.6. MCP server for Red Hat OpenShift のインストール

MCP server for Red Hat OpenShift をインストールして設定し、AI エージェントをセキュアに診断し、クラスターを検査できるようにします。

MCP server for Red Hat OpenShift 機能をインストールするには、以下の手順を実行します。

前提条件

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

    Gemma 4 は、非接続環境でも利用可能です。

    注記

    クラウドのみの結果は、オフラインのデプロイメントには適用されません。

  • OpenShift Container Platform v4.22 クラスター上に Red Hat OpenShift AI v3.5 をインストールする。

手順

  1. MCP ゲートウェイをインストールします。
  2. MCP Lifecycle Operator を有効にします。
  3. MCP カタログから MCP サーバーをデプロイします。
  4. MCP ゲートウェイのデプロイメントを確認します。
  5. MCP ゲートウェイを設定します。
  6. Claude Code などの Model Context Protocol (MCP) 互換クライアントを MCP サーバーに接続します。
  7. RBAC の適用を設定します。
  8. カスタムリソースへのアクセス権を取り消します。
  9. MCP ゲートウェイ認証を設定します。
  10. MCP ゲートウェイ認可を設定します。

1.1.6.1. MCP ゲートウェイをインストールする

Model Context Protocol (MCP) ゲートウェイをインストールして、すべての MCP サーバートラフィックに対して認証、認可、およびレート制限を適用する、セキュアで一元化されたエントリーポイントを提供します。

手順

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

    MCP ゲートウェイのインストール方法は、「MCP ゲートウェイのインストール (Red Hat Connectivity Link)」を参照してください。

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

1.1.6.2. MCP Lifecycle Operator を有効にする

MCP server for Red Hat OpenShift 機能をインストールするには、MCP Lifecycle Operator を使用して Model Context Protocol (MCP) サーバーをインストールします。

重要

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

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

前提条件

  • MCP ゲートウェイがインストールされている。
  • 管理者権限で OpenShift コンソールにアクセスできる。

手順

  • MCP Lifecycle Operator を使用したインストール方法については、MCP サーバーのライフサイクル管理を有効にする (Red Hat OpenShift AI ドキュメント) を参照してください。

    重要

    MCP ライフサイクル Operator をインストールするには、ソフトウェアの早期リリース版である Red Hat OpenShift AI v3.6.0-ae2 をインストールする必要があります。

    Red Hat OpenShift AI v3.6.0-ae2 は、コンソールの ソフトウェアカタログ AI/機械学習 Red Hat OpenShift AI から入手できます。チャネル で beta を選択し、バージョン で 3.6.0-ae.2 を選択します。

1.1.6.3. MCP カタログから MCP サーバーをデプロイします。

Red Hat OpenShift AI の Model Context Protocol (MCP) カタログから、MCP server for Red Hat OpenShift をデプロイします。MCP カタログは MCP サーバーのカスタムリソース (CR) を作成し、MCP Lifecycle Operator がそれを調整して、デプロイメント、サービス、およびネットワークポリシーを自動的に設定します。

前提条件

  • MCP ゲートウェイがインストールされている。
  • MCP Lifecycle Operator が有効になっている。

手順

  • MCP カタログから MCP サーバーをデプロイする方法は、「MCP カタログから MCP サーバーをデプロイする (Red Hat OpenShift AI ドキュメント)」を参照してください。

1.1.6.4. MCP ゲートウェイのデプロイメントの検証

ルーティング、認証、認可を設定する前に、Model Context Protocol (MCP) ゲートウェイが正しくデプロイされ、動作していることを確認します。

前提条件

  • OpenShift Container Platform コンソールへのアクセス権と admin 権限がある。
  • OpenShift CLI (oc) がインストールされている。
  • MCP ゲートウェイがインストールされている。
  • MCP Lifecycle Operator が有効になっている。
  • MCP サーバーがインストールされている。

手順

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

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

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

    例

    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
    gateway-namespace  mcp-gateway           105s

  3. 以下のコマンドを実行して、broker-router デプロイメントを確認します。

    $ oc logs -n gateway-namespace deployment/mcp-gateway
  4. 以下のコマンドを実行して、ゲートウェイ namespace に EnvoyFilter が作成されていることを確認します。

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

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

クライアントトラフィックを MCP サーバーにルーティングし、サーバーが公開するツールを検出できるように、Model Context Protocol (MCP) ゲートウェイを設定します。

前提条件

  • 管理者権限で OpenShift コンソールにアクセスできる。
  • MCP ゲートウェイがインストールされている。
  • MCP Lifecycle Operator が有効になっている。
  • MCP サーバーがインストールされている。
  • MCP ゲートウェイデプロイメントが検証されている。

手順

  1. HTTPRoute を作成する前に、次のコマンドを入力して MCP サーバーサービスの正確な名前を確認します。

    $ oc get svc -n openshift-mcp-server

    以下のマニフェストの backendRefs.name フィールドが、サービスの NAME 出力と一致していることを確認します。たとえば、openshift-mcp-server などです。

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

    $ 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-namespace
        sectionName: mcp
      hostnames:
      - ${MCP_SERVER_HOST}
      rules:
      - matches:
        - path:
            type: PathPrefix
            value: /mcp
        backendRefs:
        - name: openshift-mcp-server
          port: 8080
    EOF

    ${MCP_SERVER_HOST} は、MCP ゲートウェイルートのホスト名です (例: mcp-gateway.apps.<cluster-name>.<domain-name>)。

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

  3. 以下のコマンドを実行して、MCP サーバーの Registration Resource を作成します。

    $ oc apply -f - <<EOF
    apiVersion: mcp.kuadrant.io/v1alpha1
    kind: MCPServerRegistration
    metadata:
      name: my-mcp-server-reg
      namespace: openshift-mcp-server
    spec:
      prefix: "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 サーバーの namespace。これは openshift-mcp-server です。
    • spec.targetRef.name: MCP サーバーの HTTPRoute の名前。これは、oc get httproute -n openshift-mcp-server コマンドを実行することで見つけることができます。
    • spec.targetRef.namespace: MCP サーバーの HTTPRoute の namespace。これは openshift-mcp-server です。
  4. 以下のコマンドを実行して、登録状況を確認します。

    $ 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
  5. 以下のコマンドを実行して、コントローラーのログを確認します。

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

    $ oc logs -n gateway-namespace deployment/mcp-gateway
  7. 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

      レスポンス内に、設定した prefix 値 (例: openshift_) が付加された MCP サーバーのツールが表示されているはずです。

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

AI エージェントがクラスターと対話できるように、Model Context Protocol (MCP) と互換性のあるクライアントを MCP サーバーに接続します。

前提条件

  • 管理者権限で OpenShift コンソールにアクセスできる。
  • MCP ゲートウェイがインストールされている。
  • MCP Lifecycle Operator が有効になっている。
  • MCP サーバーがインストールされている。
  • MCP ゲートウェイが設定および検証されている。

手順

  1. クライアント設定ファイルに以下の行を追加します。

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

      {
        "mcpServers": {
          "openshift": {
            "type": "http",
            "url": "<url of the mcp gateway>/mcp"
          }
        }
      }

      <url of the mcp gateway> は、MCP ゲートウェイのインストール時に設定したホスト名です。

  2. クライアントから要求があったら、CA 証明書を受け入れます。

1.1.6.7. RBAC の適用を設定する

Model Context Protocol (MCP) サーバーがアクセスできるクラスターリソースを制御するには、ロールベースアクセス制御 (RBAC) を設定し、AI エージェントが必要なリソースのみにアクセスできるようにします。

デフォルトでは RBAC が有効になっており、ClusterRoles、ClusterRoleBindings、Roles、および Rolebindings を拡張できます。

前提条件

  • 管理者権限で OpenShift コンソールにアクセスできる。
  • MCP ゲートウェイがインストールされている。
  • MCP Lifecycle Operator が有効になっている。
  • MCP サーバーがインストールされている。
  • MCP ゲートウェイが設定および検証されている。
  • MCP 互換クライアントが接続されている。

手順

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

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

    RBAC 設定の YAML ファイル例

      apiVersion: rbac.authorization.k8s.io/v1
      kind: ClusterRole
      metadata:
        name: acm-managed-clusters
      rules:
        ...
      ---
      apiVersion: rbac.authorization.k8s.io/v1
      kind: ClusterRoleBinding
      metadata:
        name: acm-managed-clusters
        ...
      ---
      apiVersion: rbac.authorization.k8s.io/v1
      kind: Role
      metadata:
        name: acm-cluster-proxy-discovery
        namespace: multicluster-engine
        ...
      ---
      apiVersion: rbac.authorization.k8s.io/v1
      kind: RoleBinding
      metadata:
        name: acm-cluster-proxy-discovery
        namespace: multicluster-engine
        ...

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

    $ oc apply -f rbac-values.yaml

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

AI エージェントが機密クラスターデータを読み取ったり公開したりするのを防ぐには、シークレットや ConfigMap などの機密性の高いカスタムリソース (CR) への Model Context Protocol (MCP) サーバーアクセスを取り消すことができます。

前提条件

  • 管理者権限で OpenShift コンソールにアクセスできる。
  • MCP ゲートウェイがインストールされている。
  • MCP Lifecycle Operator が有効になっている。
  • MCP サーバーがインストールされている。
  • MCP ゲートウェイが設定および検証されている。
  • MCP 互換クライアントが接続されている。
  • RBAC が設定されている。

手順

  • 以下のコマンドを実行して、openshift-mcp-server の ConfigMap を編集し、拒否するリソース値を追加します。

    $ oc edit cm openshift-mcp-server

    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"

1.1.6.9. アイデンティティープロバイダーと OAuth の統合

Red Hat OpenShift 用の MCP サーバーをアイデンティティープロバイダーおよび OAuth と統合し、ユーザーがシングルサインオンで認証を行い、サーバーがユーザーのアイデンティティーを使用して OpenShift Container Platform リソースにアクセスできるようにします。

アイデンティティープロバイダー (IdP) とは、ユーザーのアイデンティティー情報を作成、維持、管理し、アプリケーションやシステムへのユーザー認証を行う集中型サービスです。アプリケーションごとに個別の認証情報を使用する代わりに、ID プロバイダー (IdP) を使用することで、ユーザーは一度認証 (シングルサインオン) を行い、その認証情報を他のサービスに安全に渡すことができます。

OAuth (特に OAuth 2.0) は、オープンスタンダードの認可フレームワークです。これにより、サードパーティー製アプリケーションは、ユーザーのパスワードを公開することなく、別のサービス上のユーザーのリソースにアクセスできるようになります。OAuth は、ログイン認証情報を共有する代わりに、特定の限定された権限 (スコープ) を付与するアクセストークンを使用します。

MCP ゲートウェイは OAuth トークンを検証し、それを MCP サーバーに渡します。MCP サーバーはそれを使用して OpenShift Container Platform API に対して認証を行います。サーバーは、設定に応じてトークンをそのまま渡す (デフォルト) か、交換するかのいずれかを行います。これは、cluster_auth_mode と [token_exchange] ブロックが設定されているかどうかによって制御されます。

利用できるアイデンティティーおよびアクセス管理 (IAM) プラットフォームは 2 種類あります。

  • Red Hat build of Keycloak
  • Microsoft Entra ID

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

検証済みのユーザーのみが MCP server for Red Hat OpenShift ツールおよびクラスターリソースにアクセスできるようにするには、Model Context Protocol (MCP) ゲートウェイの OAuth ベースの認証を設定します。

前提条件

  • 管理者権限で OpenShift コンソールにアクセスできる。
  • MCP ゲートウェイがインストールされている。
  • MCP Lifecycle Operator が有効になっている。
  • MCP サーバーがインストールされている。
  • MCP ゲートウェイが設定および検証されている。
  • MCP 互換クライアントが接続されている。
  • RBAC が設定されている。
  • 必要に応じて、特定のカスタムリソース (CR) へのアクセス権が取り消されている。
  • Entra ID または Keycloak といったアイデンティティープロバイダー (IdP) にアクセスできます。
  • OpenShift Container Platform クラスターは、外部 OIDC プロバイダーとして IdP を信頼するように設定されています (外部 OIDC アイデンティティープロバイダーを使用した直接認証の有効化を参照)。

手順

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

    $ oc set env mcp-gateway/gateway-namespace -n mcp-system\
    OAUTH_RESOURCE_NAME="MCP Server" \
    OAUTH_RESOURCE="https://<mcp_gateway_host>/mcp" \
    OAUTH_AUTHORIZATION_SERVERS=<authorization_server_url> \
    OAUTH_BEARER_METHODS_SUPPORTED="header" \
    OAUTH_SCOPES_SUPPORTED=<oauth-scopes-supported>
    注記

    これらの環境変数により、クライアントが認証検出に使用する 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: gateway-namespace
    spec:
      parentRefs:
      - group: gateway.networking.k8s.io
        kind: Gateway
        name: mcp-gateway
        namespace: gateway-namespace
        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. IdP(Entra ID または Keycloak) アプリ登録の設定:

    • エントリー ID の場合:

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

        Entra ID アプリ登録の設定の詳細は、「Microsoft Entra ID」を参照してください。

    • Keycloak の場合:

      1. Keycloak レルムに以下の必須スコープが存在することを確認してください。

        • openid (組み込み)
        • オフラインアクセス (組み込み)
        • mcp-server (カスタム - 存在しない場合は作成する)
      2. 管理コンソールで、[レルム設定] > [クライアント登録] > [認証済みアクセスポリシー] に移動し、これらのスコープをレルムの DCR 許可クライアントスコープポリシーに追加します。

        Keycloak に関する詳細は、Red Hat build of Keycloak を参照してください。

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

    重要

    IdP が公開信頼済み証明書を使用している場合は、この手順をスキップしてください。

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

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

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

    $ oc apply -f - <<EOF
    apiVersion: kuadrant.io/v1
    kind: AuthPolicy
    metadata:
      name: mcp-auth-policy
      namespace: gateway-namespace
    spec:
      targetRef:
        group: gateway.networking.k8s.io
        kind: Gateway
        name: mcp-gateway
        sectionName: mcp
      defaults:
        when:
          - predicate: "!request.path.contains('/.well-known')"
        rules:
          authentication:
            'idp':
              jwt:
                issuerUrl: <authorization_server_url>
          response:
            unauthenticated:
              code: 401
              headers:
                'WWW-Authenticate':
                  value: Bearer resource_metadata=https://<mcp_gateway_host>/.well-known/oauth-protected-resource/mcp
                body:
                  value: |
                    {
                      "error": "Unauthorized",
                      "message": "Authentication required."
                    }
    
            success:
              headers:
                authorization:
                  plain:
                    expression: "request.headers['authorization']"
    
    EOF
  6. 認証済みユーザーにクラスター上での権限を付与するには、以下のようなファイルを使用して ClusterRoleBinding を 作成します。

    apiVersion: rbac.authorization.k8s.io/v1
    kind: ClusterRoleBinding
    metadata:
      name: oidc-mcp-cluster-reader
    roleRef:
      apiGroup: rbac.authorization.k8s.io
      kind: ClusterRole
      name: view
    subjects:
    - apiGroup: rbac.authorization.k8s.io
      kind: User
      name: <issuer_url>#<username>
    • 名前: ユーザー主体、形式は <issuer_url>#<username> です。
    • ClusterRole (たとえば、view) をユーザーが必要とするアクセスレベルに調整します。

検証

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

    curl ${MCP_GATEWAY_HOST}/.well-known/oauth-protected-resource

    ${MCP_GATEWAY_HOST} には、MCP ゲートウェイのドメインを使用してください。

    このコマンドを実行すると、以下のような 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": [
        "mcp-server",
      ]
    }

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

    $ curl -v ${MCP_GATEWAY_HOST}/mcp \
      -H "Content-Type: application/json" \
      -d '{"jsonrpc": "2.0", "id": 1, "method": "tools/list"}'
    • ${MCP_GATEWAY_HOST} には、MCP ゲートウェイのドメインを使用してください。

      例

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

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

Model Context Protocol (MCP) ゲートウェイに対してツールレベルの認可を設定し、どのユーザーが特定の MCP サーバーツールにアクセスできるかを制御し、各ユーザーが自分のロールで許可された操作のみを使用できるようにします。

前提条件

  • 管理者権限で OpenShift コンソールにアクセスできる。
  • MCP ゲートウェイがインストールされている。
  • MCP Lifecycle Operator が有効になっている。
  • MCP サーバーがインストールされている。
  • MCP ゲートウェイが設定および検証されている。
  • MCP 互換クライアントが接続されている。
  • RBAC が設定されている。
  • 必要に応じて、特定のカスタムリソース (CR) へのアクセス権が取り消されている。
  • MCP ゲートウェイ認証が設定されている。

手順

  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"]
        }
      }
    }

    • namespace は、MCPServerRegistration CR の namespace と一致する必要があります。
    • 「roles」 は、使用可能なツールを表します。この例では、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:
          'idp':
            jwt:
              issuerUrl: <authorization_server_url>
        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=https://<mcp_gateway_host>/.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
    • <authorization_server_url> には以下のいずれかを使用してください。

    • 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=https://<mcp_gateway_host>/mcp。

      <mcp_gateway_host> を MCP ゲートウェイの完全修飾ドメイン名に置き換えてください。

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

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

    • pods_list
    • events_list
    • nodes_list
    • deployments_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.6.12. クラスターへの MCP サーバー認証の設定

Red Hat OpenShift の MCP サーバーが OpenShift Container Platform API サーバーに対して認証を行う方法を設定します。ユーザーのトークンをそのまま渡すか、クラスターが受け入れるトークンと交換することで、リクエストがユーザーのアイデンティティーで実行されるようにします。

方法は 2 つあります。

  • パススルー (デフォルト): サーバーはユーザーのトークンをクラスターに直接転送します。クラスターがユーザーのトークンをそのまま受け入れる場合に使用されます。

    cluster_aus_mode = "passthrough"

    cluster_auth_mode が設定されていない場合、これがデフォルト設定となります。

  • トークン交換: サーバーは、クラスターが受け入れるトークンと交換し (オーディエンスの不一致)、ユーザーごとのアイデンティティーを維持します。トークン交換は、[token_exchange] ブロックが存在する場合にパススルー内で発生します。

前提条件

  • 管理者権限で OpenShift コンソールにアクセスできる。
  • MCP ゲートウェイがインストールされている。
  • MCP Lifecycle Operator が有効になっている。
  • MCP サーバーがインストールされている。
  • MCP ゲートウェイが設定および検証されている。
  • MCP 互換クライアントが接続されている。
  • RBAC が設定されている。
  • 必要に応じて、特定のカスタムリソース (CR) へのアクセス権が取り消されている。
  • MCP ゲートウェイ認証が設定されている。
  • パススルーの場合: クラスターは、IdP を外部 OIDC プロバイダーとして信頼します。

手順

  • パススルートークン交換を設定するには、config.toml ConfigMap に以下の内容を追加してください。

    Keycloak (RFC 8693):
    [token_exchange]
    strategy = "rfc8693"
    audience = "openshift"
    scopes = ["mcp:openshift"]
    
    [token_exchange.client_auth]
    method = "client_secret_basic"
    client_id = "mcp-server"
    client_secret = "<client_secret>"
    Entra (On-Behalf-Of):
    [Token_exchange]
    strategy = "entra-obo"
    scopes = ["api://<downstream_api_app_id>/.default"]
    
    [token_exchange.client_auth]
    method = "private_key_jwt"   # certificate (recommended)
    client_id = "<client_id>"
    certificate_file = "/path/to/client.crt"
    private_key_file = "/path/to/client.key"
    注記

    [token_exchange] と oauth_*/require_oauth は再読み込み可能ですが、設定の変更は自動的には反映されません。設定変更の適用方法については、Red Hat OpenShift 用 MCP サーバーへの設定変更の適用を参照してください。

検証

  • サーバーがユーザーとしてクラスター API に到達していることを確認してください。たとえば、クラスターアクセスを必要とするツール呼び出しが成功するか、サーバーログで認証モード/交換を確認してください。

1.1.7. MCP server for Red Hat OpenShift のプロンプト

MCP (Model Context Protocol) サーバープロンプトを使用して、Large Language Model (LLM) にクエリーを実行し、OpenShift Container Platform クラスター全体の問題を特定および診断します。

注記

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

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

1.1.7.1. MCP プロンプト

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

このようなプロンプトは、以下と組み合わせます。

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

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

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

設定変更の適用方法については、Red Hat OpenShift 用 MCP サーバーへの設定変更の適用を参照してください。

カスタムプロンプトの例

[[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."

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

名前 (必須)

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

タイトル (任意)

人間が読みやすい表示名

説明 (必須)

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

引数 (オプション)

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

メッセージ (必須)

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

引数フィールド

名前 (必須)

引数識別子

説明 (任意)

議論の目的の説明

必須 (任意)

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

引数の置換

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

1.1.7.3. 組み込みプロンプト

MCP server for Red Hat OpenShift には、常に利用できるいくつかの組み込みプロンプトが含まれています。

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

引数:

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

チェックの対象:

  • ノード: ステータスと条件 (例: Ready、MemoryPressure、DiskPressure)
  • クラスター Operator: 利用可能状態と劣化状態
  • Pod: フェーズ、コンテナーの状態、再起動回数、および一般的な問題 (例:CrashLoopBackOff、ImagePullBackOff)
  • ワークロードコントローラー: Deployments、StatefulSets、DaemonSets のレプリカステータス
  • 永続ボリューム要求: バインディングステータス
  • イベント: 過去 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 flag を使用して設定ファイルのパスを指定します。

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

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

1.1.7.6. プロンプトのマージ

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

1.1.8. Red Hat OpenShift 用 MCP サーバー向けツールセット

ツールセットとは、Red Hat OpenShift 用の MCP サーバーが公開する、関連する機能 (ツール、場合によってはリソースやプロンプトなど) をまとめた名前付きのグループです。エージェントは、有効化されたツールセットに含まれるツールを使用してタスクを実行します。

ツールセットには 2 種類あります。

コア
Kubernetes の基本機能 (pods_list、pods_exec など) を提供する、デフォルトで常時稼働するツールセット。他のツールセットは、それを基盤として構築されています。
任意
これらは、特定のドメイン (ネットワーク診断、サービスメッシュなど) 向けにサーバーを拡張するものです。これらはデフォルトでは無効になっており、明示的に有効にする必要があります。

1.1.8.1. 有効化ツールセット

ツールインターフェイスを管理しやすくしつつ、エージェントが特定のタスクに必要なツールだけを利用できるように、必要なツールセットのみを有効にしてください。ツールセットを有効にするには、config.toml ファイル の toolsets 設定で必要なツールセットをリストする必要があります。変更内容は再読み込み可能です。しかし、再装填可能とは、自動装填を意味するものではありません。

設定変更の適用方法については、Red Hat OpenShift 用 MCP サーバーへの設定変更の適用を参照してください。

一部のツールセットは、[toolset_configs.<name>] の下に独自の設定を必要とし、ツールに加えてプロンプトやリソースをバンドルする必要がある場合もあります。特定のツールセットを有効にする方法の詳細は、利用可能なツールセット表の追加情報列を参照してください。

1.1.8.2. ツールセットツールの表示

ツールセットを有効にすると、そのツールセットが提供するツールが、接続されている MCP クライアントで利用できるようになります。利用可能なツールを確認するには、MCP クライアントでツールリストを表示してください。ツールリストは、tools/list メソッドを使用して取得されます。

1.1.8.3. 利用可能なツールセット

表1.2 利用可能なツールセット
Name説明デフォルトでは有効です。関連情報

core

Kubernetes の基本機能 (pods_list、pods_exec など)

はい

 

ossm (キアリ)

OpenShift Service Mesh/Kiali メッシュツール

このツールセットを使用すると、アシスタントは Red Hat OpenShift の MCP サーバーから Kiali を介して、メッシュの状態やトラフィックグラフなどの OpenShift Service Mesh 情報を照会できます。

いいえ

ossm (kiali) ツールセットを参照してください。

ovn-kubernetes/cni-diagnostics

OVN/OVS/CNI ネットワーク診断

いいえ

MCP サーバーを使用した OVN-Kubernetes のトラブルシューティングを参照してください。

netedge

ネットワーク Ingress と DNS(NIDS) のトラブルシューティング

このツールセットは、Red Hat OpenShift 用の MCP サーバーを拡張し、ネットワークイングレスおよび DNS (NIDS) コンポーネント向けの読み取り専用の AI 駆動型診断機能を提供します。

いいえ

AI を活用したネットワークトラブルシューティングを参照してください。

1.1.8.4. OSSM (サービスメッシュ) ツールセット

ossm (Kiali) ツールセットを有効にして設定することで、アシスタントが稼働中の OpenShift Service Mesh にクエリーを実行したり、必要に応じて Kiali が提供するツールを使用してその設定を変更したりできるようにします。

アシスタントは Kiali に直接接続しません。これは Red Hat OpenShift の MCP サーバーに接続し、そのサーバーが呼び出し元のトークンを使用して Kiali を呼び出します。

ツールセットを ossm として有効化します。ツール名には ossm_ という プレフィックスが付きます。

前提条件

  • Red Hat OpenShift 用の MCP サーバーがインストールされました。
  • OpenShift Service Mesh がインストールされており、MCP サーバーは Kiali ルートにアクセスできます。
  • MCP サーバーを起動する OpenShift アイデンティティーは、名前空間をリスト表示し、アシスタントが参照すべきメッシュリソースを読み取ることができます。

手順

  1. ossm ツールセットを有効にするには、config.toml ファイルに ossm ツールセットを追加または更新してください。

    ossm ツールセットを追加

    toolsets = ["core", "ossm"]

  2. ossm ツールセットを以下のように設定してください。

    ossm ツールセットの設定を追加します

    [toolset_configs.kiali]
    url = "https://<kiali_route>"
    # insecure = true
    # certificate_authority = "/path/to/ca.crt"

    重要

    テーブルが存在しないか無効な場合、サーバーは起動しません。

    • ossm ツールセットは [toolset_configs.kiali] から設定を読み込みます。
    • URL は必須です。

      ホスト名を含む http:// または https://の URL を使用してください。URL が https:// で insecure が false の場合、certificate_authority を Kiali 証明書の CA ファイルに設定します。相対的な CA パスは、TOML ファイルを含むディレクトリーから解決されます。

    • 外部環境では、insecure = true は 証明書の検証をスキップします。
    • read_only = true (デフォルト) は ossm_manage_istio_config を 非表示にします。

      アシスタントがメッシュ設定を作成、更新、または削除する権限を設定するには:

      • 許可されていません: set read_only = true。
      • 許可されています: read_only を 未設定のままにするか、false に設定してください。

        設定変更の適用方法については、Red Hat OpenShift 用 MCP サーバーへの設定変更の適用を参照してください。

  3. 呼び出し元のアイデンティティーを、オペレーターが提供する kiali-viewer (読み取り) または kiali (読み取り/書き込み) ClusterRole にバインドします。

    サーバーは、既存の Kubernetes 認証情報 (kubeconfig またはクラスター内から取得) を使用して、Kiali 呼び出し用のベアラートークンを設定します。Kiali の場合、MCP HTTP エンドポイントに HTTP 認証ヘッダーを渡す必要はありません。Kiali の呼び出しでは、サーバーに設定されているトークンが使用されます。

    Kiali は、そのトークンを使用してアクセスを強制します (名前空間の取得/リスト表示、および書き込みとログ記録のためのリソース RBAC)。ツールはこれを RBAC メタデータとして宣伝します。

    • Kubernetes チェックが引数または有限種類の列挙型から導出可能なツール (ログ、リソースの詳細、Istio 設定の読み書き、メトリクス/トレース名前空間ゲート、トラフィックグラフ) に対して制限されます。OpenShift Container Platform では、リソース/グラフの宣言には、オペレーターのビューアーロールからの デプロイメント設定 と ルート も含まれます。
    • Kiali は、有限な Kubernetes 要件セットとして表現できない制御プレーンとオブザーバビリティーバックエンドを集約するため、メッシュ全体のステータスとメッシュクラスターのリストに関しては無制限です。
  4. オプション: マルチクラスターサポートを設定します。

    Kiali は、Istio サービスメッシュ内の複数のクラスターを管理できます。Kiali のほとんどのツールは、特定のメッシュクラスターを対象とするためのオプションの meshCluster パラメーターを受け入れます。ツールがクラスター名を指定しない場合、Kiali はホームクラスター (Kiali が実行されているクラスター) を使用します。

    他のツールを呼び出す前に、利用可能なメッシュクラスター名を確認するには、ossm_list_mesh_clusters を使用します。そのレスポンスの name フィールドは meshCluster の唯一の有効な値です。

    ossm ツールは OpenShift コンテキスト を受け取りません。ossm_list_mesh_clusters からメッシュクラスター名を使用します。マルチクラスターモードが有効になっている場合でも、同じ MCP サーバー上のコアツールは 引き続きコンテキスト を使用します。

1.1.8.5. ツールセットツールリスト

Red Hat OpenShift 用 MCP サーバーの各ツールセットは、アシスタントがタスクを実行するために呼び出す一連のツールを提供します。これらの表は、各ツールセットに含まれるツールのリストと、それぞれのツールの機能について説明しています。

各ツール名は、アシスタントが呼ぶ名称で表示されます。

表1.3 ossm ツール
Name動作の説明

ossm_get_logs

名前空間内の Pod またはワークロードのログを返します。

ossm_get_mesh_status

メッシュの健全性を返します。これには、コントロールプレーン、データプレーン、オブザーバビリティーバックエンド、およびそれらのコンポーネントがどのように接続されているかが含まれます。

メッシュ全体を表示する必要がある場合は、まずこちらを使用してください。

ossm_get_mesh_traffic_graph

サービス間のトラフィック、依存関係、およびスループット、応答時間、mTLS などのネットワークメトリクスを返します。

ossm_get_metrics

サービス、ワークロード、またはアプリケーションのレイテンシー、トラフィック、スループット、およびペイロードのメトリクスを返します。

ossm_get_pod_performance

Pod の現在の CPU とメモリー使用量を、要求と制限と比較します。

ossm_get_resource_details

アプリケーション、サービス、ワークロード、ネームスペース、または Argo CD アプリケーションのリストを表示するか、単一のリソースの詳細を返します。

ossm_get_trace_details

1 つの分散トレースの呼び出し階層を返します。

ossm_list_traces の後に使用してください。

ossm_list_mesh_clusters

Kiali がアクセスできるメッシュクラスターをリスト表示し、Kiali が実行されているホームクラスターを識別します。

ossm_list_traces

サービスの分散トレースをリスト表示します。

ossm_manage_istio_config

Istio、Gateway API、Inference API のリソースを含む、サービスメッシュ設定を作成、更新、または削除します。

サーバーが読み取り専用の場合、このツールは非表示になります。

ossm_manage_istio_config_read

サービスメッシュの設定をリスト表示するか、1 つのリソースを返します。

有効なオブジェクトと無効なオブジェクトは別々に報告されます。

1.1.8.6. トラブルシューティングツールセット

Red Hat OpenShift 用 MCP サーバーでツールセットを有効化および設定する際に発生する可能性のある一般的な問題を診断し、解決します。

以下の表を使用して、ossm ツールセットのトラブルシューティングを行ってください。

表1.4 ossm ツールセットのトラブルシューティング
問題解決策

ossm ツールセットが有効になっている場合、Kiali の設定が欠落しています。

config.toml に [toolset_configs.kiali].url を設定します。

無効な URL です。

[toolset_configs.kiali].url が有効な http (s)://host URL であることを確認してください。

TLS 証明書の検証。

* [toolset_configs.kiali].url が HTTPS を使用し、[toolset_configs.kiali].insecure が false の場合、[toolset_configs.kiali].certificate_authority に CA 証明書ファイルへのパスを設定する必要があります。相対パスは、設定ファイルを含むディレクトリーを基準として解決されます。

* 非実稼働環境では、[toolset_configs.kiali].insecure = true を設定することで証明書の検証をスキップできます。

`ossm`を有効にした後、サーバーが起動しません。

[toolset_configs.kiali].url を設定します。

URL が拒否されました。

ホスト名を含む http:// または https://の URL を使用してください。

HTTPS の証明書検証に失敗しました。

certificate_authority を CA ファイルに設定するか、実稼働環境以外では insecure = true に設定します。

ツールがデータを返さないか、認可エラーを返した。

Kiali に提示されたトークンでは、その名前空間またはリソースを読み取ることができません。アイデンティティーを kiali-viewer または kiali にバインドします。

ossm_manage_istio_config は提供されていません。

サーバーは read_only = true で実行されています。

1.1.9. MCP サーバーのアップグレードと展開状況の監視

Model Context Protocol (MCP) サーバーをアップグレードするには、MCPServer カスタムリソース (CR) 内のコンテナーイメージ参照を更新します。MCP ライフサイクル Operator は、新しいサーバーバージョンを展開し、CR ステータス条件の進捗状況を報告します。

注記

Transport Layer Security (TLS) 機能を使用するには、対応するバージョンの MCP ライフサイクル Operator も実行している必要があります。MCPServer CR でサーバーイメージを更新する前に、ライフサイクル Operator をアップグレードしてください。

アップグレードにより、MCP 仕様の新しいバージョンがサポートされ、さまざまなツールセットが整理および改善され、メトリクスエンドポイントを別のポートで実行できるようになり、認証/トークン交換フローが改善されます。

前提条件

  • MCP ライフサイクル Operator がインストールされ、TLS 機能が必要な場合は、それをサポートするバージョンにアップグレードされます。MCP サーバーのライフサイクル管理を有効にする (Red Hat OpenShift AI ドキュメント) を参照してください。

手順

  1. MCPServer CR を編集して、新しいサーバーイメージを指すようにします。

    apiVersion: mcp.openshift.io/v1alpha1
    kind: MCPServer
    metadata:
        name: openshift-mcp-server
    spec:
        source:
            containerImage:
                ref: <new_image_reference>
    • spec.source.containerImage.ref: 対象の MCP サーバーバージョンのコンテナーイメージ参照。例: registry.redhat.io/openshift-mcp/openshift-mcp-server-rhel9:495310209578a754f3383016486fa8f611de7452。
  2. 次のコマンドを実行して変更を適用します。

    $ oc apply -f mcpserver.yaml

検証

  • 以下のコマンドを実行して、展開状況を監視してください。

    $ oc get mcpserver openshift-mcp-server -o yaml

    status.conditions は、設定が有効であることを示す Accepted、デプロイメントが実行されているがまだハンドシェイクが行われていないことを示す Available、そして最後に、プロトコルのハンドシェイクが成功し、MCP サーバーが再び機能するようになったことを 示す Verified が true になるまで進行する必要があります。

1.1.10. メトリクスを使用して Red Hat OpenShift の MCP サーバーを監視する

Red Hat OpenShift 用の MCP サーバーは、OpenTelemetry Protocol (OTLP) エクスポートまたは Prometheus を使用して収集できるメトリクスを公開しており、サーバーの状態、リクエストレート、ツールセットのアクティビティーを監視することができます。

表1.5 利用可能なメトリクス取得方法
メカニズム方向方法エンドポイント/設定

OTLP エクスポート

Push

サーバーは、設定済みの OTLP エンドポイントに 30 秒ごとにメトリクスを送信します。

[テレメトリー] config.toml 内

Prometheus

プル

Prometheus はサーバーをスクレイピングします

/metrics エンドポイントと ServiceMonitor

注記

MCP サーバーは、HTTP ポート上で Prometheus 互換の /metrics エンドポイントを OpenMetrics 形式で公開しています。プル型のデータ収集を希望する場合は、サーバーのメトリクスポートを対象とする ServiceMonitor を作成してください。ラベルを使用してください。

  • アプリケーション: mcp-server および mcp-server: <MCPServer CR 内の MCP サーバー名 >
  • ポート: mcp

詳細は、OpenShift Container Platform の監視についてを参照してください。

表1.6 利用可能なメトリクス
メトリクス型説明

k8s_mcp_tool_calls_total

カウンター

MCP ツール呼び出し総数 (ツール名 でラベル付け)

k8s_mcp_tool_errors_total

カウンター

MCP ツールのエラー総数 (ツール名 でラベル付け)

k8s_mcp_tool_duration_seconds

ヒストグラム

ツール呼び出し時間 (秒)

k8s_mcp_http_requests_total

カウンター

HTTP リクエスト (メソッド/パス/ステータス クラスでラベル付け)

k8s_mcp_server_info

Gauge

サーバー情報 (バージョン、go_version でラベル付け)

前提条件

  • Red Hat OpenShift 用の MCP サーバーがインストールされ、稼働しています。

手順

  1. MCP サーバーの config.toml ファイルに、次の例のように OTLP エンドポイントとトランスポートプロトコルを設定する [telemetry] セクションを追加します。

    [telemetry]
    endpoint = "http://<otlp_endpoint>:4317"
    protocol = "grpc"
    • endpoint: OTLP バックエンドの URL。エンドポイント を設定すると、テレメトリーが自動的に有効になります。
    • プロトコル: grpc (デフォルト、ポート 4317) または http/protobuf (ポート 4318)。ポートをプロトコルに合わせて設定してください。
  2. オプション: セキュアな (TLS) エンドポイントの場合は、https://URL を使用し、自己署名 CA の場合は、CA 証明書を提供してください。
  3. 更新された設定を適用し、MCP サーバーを再起動または再デプロイして、新しい [テレメトリー] 設定をロードします。

    設定変更の適用方法については、Red Hat OpenShift 用 MCP サーバーへの設定変更の適用を参照してください。

検証

  • メトリクスが OTLP バックエンドに届いていることを確認してください。サーバーは 30 秒ごとにメトリクスをエクスポートするため、確認する前に少なくとも 30 秒の時間をおいてください。

1.1.11. 設定の参照

Red Hat OpenShift 用の MCP サーバーを設定するには、サーバーが環境変数と config.toml ファイルから設定をどのように解決するか、およびこのリリースで変更された設定オプションを確認してください。

MCP ライフサイクル Operator 管理のデプロイメントでは、サーバーは ConfigMap (または機密値の場合は Secret) からマウントされた config.toml ファイルから設定を読み取ります。設定を変更するには、ConfigMap または Secret を編集します。変更が再起動なしで有効になるかどうかは、以下のベクトルの変更表および再起動が必要な場合セクションに記載されているように、そのオプションが再読み込み可能かどうかによって決まります。再読み込み可能なオプションは、再読み込み (SIGHUP シグナル) を開始した後に適用されます。再読み込み不可能なオプションは、サーバーを再起動する必要があります。

設定変更の適用方法については、Red Hat OpenShift 用 MCP サーバーへの設定変更の適用を参照してください。

設定ファイルの読み込み優先順位は、高い順から低い順に、環境変数 (MCP_CONFIG_PATH)、次に config.toml ファイル、そしてデフォルト値となります。コマンドラインフラグは起動時 (--config、--config-dir、--version) にのみ使用され、実行時の設定には使用されません。

環境変数は spec.config.env と spec.config.envFrom の両方でサポートされていることに注意してください。

起動設定のログ記録
サーバーは起動時に有効な設定 (および各値の取得元) をログに記録します。
設定オプションを削除し、名前を変更しました。

OpenShift Container Platform 5.0 では、4.22 と比較して、いくつかの設定オプションが削除または名称変更されています。削除または名称変更されたオプションのリストについては、以下の表を参照してください。

表1.7 CLI フラグを削除しました
旗を落とした代替

--port

TOML での ポート

-- バインドアドレス

バインドアドレス

-- メトリクス s-port

メトリクスポート

--log-level

log_level

-- ログファイル

log_file

--kubeconfig

kubeconfig (kubeconfig が空の場合、$KUBECONFIG は client-go のフォールバックとして使用されます)

-- リスト出力

リスト出力

--read-only

read_only

-- 破壊を無効にする

破壊を無効にする

--stateless

stateless

-- ツールセット

ツールセット

-- クラスタープロバイダー

クラスタープロバイダー戦略

--disable-multi-luster

cluster_provider_strategy = "disabled"

--tls-cert/--tls-key

tls_cert/tls_key

--require-tls

require_tls

非表示の OAuth フラグ (--require-oauth、-- 認可 -url、…)

一致する TOML キー

表1.8 TOML キーを削除/名前変更しました
レガシー設定代替

トークン交換戦略

トークン交換戦略

sts_audience

トークン交換オーディエンス

sts_scopes

トークン交換スコープ

sts_subject_token_type

token_exchange.subject_token_type

sts_requested_token_type

token_exchange.requested_token_type

sts_client_id

token_exchange.client_auth.client_id

sts_client_secret

token_exchange.client_auth.client_secret

sts_auth_style

トークン交換クライアント認証メソッド

sts_client_cert_file

token_exchange.client_auth.certificate_file

sts_client_key_file

token_exchange.client_auth.private_key_file

sts_federated_token_file

token_exchange.client_auth.token_file

表1.9 Bootstrap 環境名の変更
レガシー名新しい名前

K8S_MCP_CONFIG_PATH

MCP_CONFIG_PATH

表1.10 ベクトル変化
TOMLEnvironmentReload

ログレベル、ログファイル

—

はい

ポート、バインドアドレス、メトリクスポート、ステートレス、ローカルホスト保護の無効化、サーバー指示、アプリの有効化

—

いいえ

リスト出力

—

はい

kubeconfig、cluster_provider_strategy

—

いいえ

cluster_auth_mode、denied_resources、read_only、disable_destructive、validation_enabled、experimental_enable_target_compatibility_tool_filters

—

はい

ツールセット、有効なツール、無効なツール、ツールオーバーライド、プロンプト、確認*

—

はい

tls_cert、tls_key、require_tls

—

いいえ

tls_min_version

TLS_MIN_VERSION

いいえ (着信)

TLS 暗号スイート

TLS_CIPHER_SUITES

いいえ (着信)

http.read_header_timeout

—

いいえ

http.max_body_bytes、http.rate_limit_rps、http.rate_limit_burst

—

はい

require_oauth、oauth_*、authorization_url、skip_jwt_verification、disable_dynamic_client_registration、server_url、certificate_authority、trust_proxy_headers、token_exchange.*

—

はい

テレメトリー。*

OTEL_* に一致する

いいえ

kube_client_qps、kube_client_burst

KUBE_CLIENT_QPS、KUBE_CLIENT_BURST

いいえ

kubeconfig_debounce_window、cluster_state_*、workspace_*

*_MS に一致

いいえ

ツールセット設定

—

はい

クラスタープロバイダー設定

—

いいえ

注記
  • — は、ベクトルがずれていることを意味します。
  • Reload = yes は、値を変更する SIGHUP シグナルが有効になることを意味します。
  • Reload = no は、値を変更する SIGHUP が拒否され、プロセスが終了することを意味します。

1.1.12. Red Hat OpenShift の MCP サーバーに設定変更を適用する

Red Hat OpenShift の MCP サーバー設定に対する変更は、自動的には反映されません。ConfigMap または Secret を編集した後は、サーバーをリロードして再読み込み可能なオプションを適用するか、再起動して再読み込み不可能なオプションを適用してください。

前提条件

  • Red Hat OpenShift 用の MCP サーバーがインストールされ、稼働しています。
  • oc CLI を使用すれば、クラスターにアクセスできます。
  • ConfigMap (または Secret) を編集したり、MCP サーバー Pod 上で oc exec を 実行したりする権限があります。
  • 変更しようとしている設定オプションが再読み込み可能かどうかは、ご自身で確認できます (設定リファレンスを参照)。

手順

  1. ConfigMap (または機密値の場合は Secret) を編集します。
  2. オプションによって:

    • 再起動を回避するには、以下のコマンドを実行して SIGHUP シグナル を送信し、再読み込み オプションを有効にしてください。

      oc exec [-n <namespace>] <mcp-server-pod-name> -- kill -HUP 1

      <namespace> は MCP サーバーの名前空間であり、<mcp-server-pod-name> は MCP サーバー Pod です。

      重要

      新しい設定が無効な場合、再読み込みは失敗し、プロセスは終了します。Pod の再起動を避けるため、設定が有効であることを確認してください。

    • 再読み込みできない オプションについては、再起動または再デプロイしてください。

検証

サーバーは再起動後、有効な設定をログに記録するため、サーバーログを確認することで変更が反映されたことを確認できます。

Red Hat logoGithubRedditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

会社概要

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

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

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

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

Legal Notice

Theme

© 2026 Red Hat
トップに戻る