第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-namespacesRBAC を取り消します。
ユーザーのロールバインディングまたはクラスターロールバインディングを削除します。詳細は、「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 を実行すると、以下の手順に従って実行されます。
- ユーザーが「繰り返し再起動している Pod はありますか?」というプロンプトを入力します。
- MCP ホスト (例:Claude Desktop): プロンプトを受信します。接続されている MCP サーバーを調べ、そのうちの 1 つに pods_list というツールがあることを発見しました。
- MCP ゲートウェイ (使用する場合): エンタープライズ環境の場合、ホストは最初にゲートウェイと通信します。ゲートウェイは「このユーザーはクラスターへのアクセスを許可されているか?」と「クラスターは現在オンラインか?」を確認します。
- MCP サーバー: ゲートウェイ (またはホスト) がサーバーにコマンドを送信します。サーバーは実際のコード (OpenShift への API 呼び出し) を実行し、データを取得して、それを送り返します。
- 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 をインストールする。
手順
- MCP ゲートウェイをインストールします。
- MCP Lifecycle Operator を有効にします。
- MCP カタログから MCP サーバーをデプロイします。
- MCP ゲートウェイのデプロイメントを確認します。
- MCP ゲートウェイを設定します。
- Claude Code などの Model Context Protocol (MCP) 互換クライアントを MCP サーバーに接続します。
- RBAC の適用を設定します。
- カスタムリソースへのアクセス権を取り消します。
- MCP ゲートウェイ認証を設定します。
- MCP ゲートウェイ認可を設定します。
1.1.6.1. MCP ゲートウェイをインストールする リンクのコピーリンクがクリップボードにコピーされました!
Model Context Protocol (MCP) ゲートウェイをインストールして、すべての MCP サーバートラフィックに対して認証、認可、およびレート制限を適用する、セキュアで一元化されたエントリーポイントを提供します。
手順
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 サーバーがインストールされている。
手順
次のコマンドを実行して、デプロイメントのステータスを確認します。
$ 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以下のコマンドを実行して、MCP ゲートウェイ拡張機能が存在することを確認します。
$ oc get mcpgatewayextension -A例
NAMESPACE NAME READY AGE gateway-namespace mcp-gateway 105s以下のコマンドを実行して、broker-router デプロイメントを確認します。
$ oc logs -n gateway-namespace deployment/mcp-gateway以下のコマンドを実行して、ゲートウェイ 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 ゲートウェイデプロイメントが検証されている。
手順
HTTPRouteを作成する前に、次のコマンドを入力して MCP サーバーサービスの正確な名前を確認します。$ oc get svc -n openshift-mcp-server以下のマニフェストの
backendRefs.nameフィールドが、サービスのNAME出力と一致していることを確認します。たとえば、openshift-mcp-serverなどです。以下のコマンドを実行して、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 リソースで参照されます。
以下のコマンドを実行して、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です。
-
以下のコマンドを実行して、登録状況を確認します。
$ 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 30sREADY 列には
Trueと表示され、TOOLS 列には検出されたツールの数が表示されるはずです。ステータスが準備完了でない場合は、以下のコマンドを実行して、MCP サーバーの登録条件の詳細を確認します。
$ oc describe mcpsr my-mcp-server-reg -n openshift-mcp-server以下のコマンドを実行して、コントローラーのログを確認します。
$ oc logs -n gateway-namespace deployment/mcp-gateway-controller以下のコマンドを実行して、ブローカーのログからツールの検出状況を確認します。
$ oc logs -n gateway-namespace deployment/mcp-gatewayMCP サーバーツールが MCP ゲートウェイ経由で利用可能であることを確認します。
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>は、クラスターの名前とドメインです。以下のコマンドを実行して、レスポンスヘッダーから MCP セッション ID を抽出します。
$ SESSION_ID=$(grep -i "mcp-session-id:" /tmp/mcp_headers | cut -d' ' -f2 | tr -d '\r') $ echo "MCP Session ID: $SESSION_ID"以下のコマンドでセッション 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>は、クラスターの名前とドメインです。以下のコマンドを実行してクリーンアップします。
$ 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 ゲートウェイが設定および検証されている。
手順
クライアント設定ファイルに以下の行を追加します。
-
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 ゲートウェイのインストール時に設定したホスト名です。
-
Claude Desktop の場合:
- クライアントから要求があったら、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 互換クライアントが接続されている。
手順
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 ...前述の例をファイル (例:
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-serverSecrets、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 アイデンティティープロバイダーを使用した直接認証の有効化を参照)。
手順
以下のコマンドを実行して、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 保護リソースメタデータエンドポイントが有効になります。
<oauth-scopes-supported>には以下のいずれかを使用してください。- エントリー ID の場合: "api://<MCP_SERVER_CLIENT_ID>/mcp-server"
- Keycloak の場合:mcp-server
<authorization_server_url>には以下のいずれかを使用してください。- エントラ ID: https://login.microsoftonline.com/< テナント ID>/v2.0
- Keycloak: https://<keycloak_host>/realms/<realm> ;
以下のコマンドを実行して、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 エラーが表示されます。
IdP(Entra ID または Keycloak) アプリ登録の設定:
エントリー ID の場合:
- Azure ポータルまたは Entra 管理センターで、Entra ID アプリ登録に移動します。
-
Expose an API に、
mcp-serverという名前のカスタムスコープを追加します。 -
openid、offline_access、およびmcp-serverのスコープが利用可能であることを確認してください。 組織の要件に応じて、これらのスコープに対する管理者の同意を付与してください。
Entra ID アプリ登録の設定の詳細は、「Microsoft Entra ID」を参照してください。
Keycloak の場合:
Keycloak レルムに以下の必須スコープが存在することを確認してください。
- openid (組み込み)
- オフラインアクセス (組み込み)
- mcp-server (カスタム - 存在しない場合は作成する)
管理コンソールで、[レルム設定] > [クライアント登録] > [認証済みアクセスポリシー] に移動し、これらのスコープをレルムの DCR 許可クライアントスコープポリシーに追加します。
Keycloak に関する詳細は、Red Hat build of Keycloak を参照してください。
以下のコマンドを実行して、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 トークン署名を検証できるようになります。
以下のコマンドを実行して、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<authorization_server_url>には以下のいずれかを使用してください。- エントラ ID: http://login.microsoftonline.com/<tenant-id>/v2.0
- Keycloak: https://<keycloak_host>/realms/<realm> ;
認証済みユーザーにクラスター上での権限を付与するには、以下のようなファイルを使用して
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) をユーザーが必要とするアクセスレベルに調整します。
-
検証
ブローカーが 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", ] }保護されたエンドポイントで認証が必要になったことを確認するには、次のコマンドを実行します。
$ 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 ゲートウェイ認証が設定されている。
手順
発行する 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 は、
MCPServerRegistrationCR の namespace と一致する必要があります。 - 「roles」 は、使用可能なツールを表します。この例では、pods_list、events_list、nodes_list、deployments_get です。
-
namespace は、
以下のコマンドを実行して、ツールレベルのアクセス制御を強制する 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>には以下のいずれかを使用してください。- エントラ ID:login.microsoftonline.com/< テナント ID>/v2.0
- Keycloak: https://<keycloak_host>/realms/<realm> ;
-
spec.sectionNameは、MCP サーバーリスナーを対象とします。 -
<cluster-name>.<domain-name>は、クラスターの名前とドメインです。
検証
MCP Inspector を設定して、認可によってツールへのアクセスが制御されることを確認するテストを行います。
以下のコマンドを実行して、MCP Inspector (Node.js/npm が必要) を起動します。
$ npx @modelcontextprotocol/inspector@latest & INSPECTOR_PID=$!以下のコマンドを実行して、サービスが起動するまでお待ちください。
$ sleep 3次の URL にアクセスして MCP Inspector を開きます: http://localhost:6274/?transport=streamable-http&serverUrl=https://<mcp_gateway_host>/mcp。
<mcp_gateway_host> をMCP ゲートウェイの完全修飾ドメイン名に置き換えてください。
後でサービスを停止するには、次のコマンドを実行してください。
$ kill $INSPECTOR_PID- アイデンティティープロバイダーで必要なロール要求が設定されたユーザーアカウントを使用して認証します。
以下の許可されたツールをお試しください。
-
pods_list -
events_list -
nodes_list -
deployments_get
-
この制限付きツールをお試しください:
pods_deleteこのツールは制限されているため、403 Forbidden エラーが表示されます。
認可決定を監視します。
以下のコマンドを実行して、AuthPolicy のステータスを確認します。
$ oc get authpolicy -A認可ログを表示するには、次のコマンドを実行します。
$ 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.tomlConfigMapに以下の内容を追加してください。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."
| プロンプトフィールド | |
|---|---|
| 名前 (必須) | プロンプトの一意の識別子 |
| タイトル (任意) | 人間が読みやすい表示名 |
| 説明 (必須) | プロンプトが何をするのかを簡単に説明します。 |
| 引数 (オプション) | プロンプトが受け入れるパラメーターのリスト |
| メッセージ (必須) | ロールと内容のペアを含む会話テンプレート |
| 引数フィールド | |
| 名前 (必須) | 引数識別子 |
| 説明 (任意) | 議論の目的の説明 |
| 必須 (任意) | 引数を必ず指定する必要があるかどうか (デフォルト: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. 利用可能なツールセット リンクのコピーリンクがクリップボードにコピーされました!
| Name | 説明 | デフォルトでは有効です。 | 関連情報 |
|---|---|---|---|
| core |
Kubernetes の基本機能 ( | はい | |
|
| 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 アイデンティティーは、名前空間をリスト表示し、アシスタントが参照すべきメッシュリソースを読み取ることができます。
手順
ossmツールセットを有効にするには、config.tomlファイルにossmツールセットを追加または更新してください。ossmツールセットを追加toolsets = ["core", "ossm"]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 サーバーへの設定変更の適用を参照してください。
-
許可されていません: set
-
呼び出し元のアイデンティティーを、オペレーターが提供する
kiali-viewer(読み取り) またはkiali(読み取り/書き込み)ClusterRoleにバインドします。サーバーは、既存の Kubernetes 認証情報 (
kubeconfigまたはクラスター内から取得) を使用して、Kiali 呼び出し用のベアラートークンを設定します。Kiali の場合、MCP HTTP エンドポイントに HTTP 認証ヘッダーを渡す必要はありません。Kiali の呼び出しでは、サーバーに設定されているトークンが使用されます。Kiali は、そのトークンを使用してアクセスを強制します (名前空間の取得/リスト表示、および書き込みとログ記録のためのリソース RBAC)。ツールはこれを RBAC メタデータとして宣伝します。
-
Kubernetes チェックが引数または有限種類の列挙型から導出可能なツール (ログ、リソースの詳細、Istio 設定の読み書き、メトリクス/トレース名前空間ゲート、トラフィックグラフ) に対して制限されます。OpenShift Container Platform では、リソース/グラフの宣言には、オペレーターのビューアーロールからの
デプロイメント設定とルートも含まれます。 - Kiali は、有限な Kubernetes 要件セットとして表現できない制御プレーンとオブザーバビリティーバックエンドを集約するため、メッシュ全体のステータスとメッシュクラスターのリストに関しては無制限です。
-
Kubernetes チェックが引数または有限種類の列挙型から導出可能なツール (ログ、リソースの詳細、Istio 設定の読み書き、メトリクス/トレース名前空間ゲート、トラフィックグラフ) に対して制限されます。OpenShift Container Platform では、リソース/グラフの宣言には、オペレーターのビューアーロールからの
オプション: マルチクラスターサポートを設定します。
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 サーバーの各ツールセットは、アシスタントがタスクを実行するために呼び出す一連のツールを提供します。これらの表は、各ツールセットに含まれるツールのリストと、それぞれのツールの機能について説明しています。
各ツール名は、アシスタントが呼ぶ名称で表示されます。
| Name | 動作の説明 |
|---|---|
|
| 名前空間内の Pod またはワークロードのログを返します。 |
|
| メッシュの健全性を返します。これには、コントロールプレーン、データプレーン、オブザーバビリティーバックエンド、およびそれらのコンポーネントがどのように接続されているかが含まれます。 メッシュ全体を表示する必要がある場合は、まずこちらを使用してください。 |
|
| サービス間のトラフィック、依存関係、およびスループット、応答時間、mTLS などのネットワークメトリクスを返します。 |
|
| サービス、ワークロード、またはアプリケーションのレイテンシー、トラフィック、スループット、およびペイロードのメトリクスを返します。 |
|
| Pod の現在の CPU とメモリー使用量を、要求と制限と比較します。 |
|
| アプリケーション、サービス、ワークロード、ネームスペース、または Argo CD アプリケーションのリストを表示するか、単一のリソースの詳細を返します。 |
|
| 1 つの分散トレースの呼び出し階層を返します。
|
|
| Kiali がアクセスできるメッシュクラスターをリスト表示し、Kiali が実行されているホームクラスターを識別します。 |
|
| サービスの分散トレースをリスト表示します。 |
|
| Istio、Gateway API、Inference API のリソースを含む、サービスメッシュ設定を作成、更新、または削除します。 サーバーが読み取り専用の場合、このツールは非表示になります。 |
|
| サービスメッシュの設定をリスト表示するか、1 つのリソースを返します。 有効なオブジェクトと無効なオブジェクトは別々に報告されます。 |
1.1.8.6. トラブルシューティングツールセット リンクのコピーリンクがクリップボードにコピーされました!
Red Hat OpenShift 用 MCP サーバーでツールセットを有効化および設定する際に発生する可能性のある一般的な問題を診断し、解決します。
以下の表を使用して、ossm ツールセットのトラブルシューティングを行ってください。
| 問題 | 解決策 |
|---|---|
|
|
|
| 無効な URL です。 |
|
| TLS 証明書の検証。 |
*
* 非実稼働環境では、 |
| `ossm`を有効にした後、サーバーが起動しません。 |
|
| URL が拒否されました。 |
ホスト名を含む |
| HTTPS の証明書検証に失敗しました。 |
|
| ツールがデータを返さないか、認可エラーを返した。 |
Kiali に提示されたトークンでは、その名前空間またはリソースを読み取ることができません。アイデンティティーを |
|
|
サーバーは |
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 ドキュメント) を参照してください。
手順
MCPServerCR を編集して、新しいサーバーイメージを指すようにします。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。
-
次のコマンドを実行して変更を適用します。
$ oc apply -f mcpserver.yaml
検証
以下のコマンドを実行して、展開状況を監視してください。
$ oc get mcpserver openshift-mcp-server -o yamlstatus.conditions は、設定が有効であることを示すAccepted、デプロイメントが実行されているがまだハンドシェイクが行われていないことを示すAvailable、そして最後に、プロトコルのハンドシェイクが成功し、MCP サーバーが再び機能するようになったことを示す Verified がtrue になるまで進行する必要があります。
1.1.10. メトリクスを使用して Red Hat OpenShift の MCP サーバーを監視する リンクのコピーリンクがクリップボードにコピーされました!
Red Hat OpenShift 用の MCP サーバーは、OpenTelemetry Protocol (OTLP) エクスポートまたは Prometheus を使用して収集できるメトリクスを公開しており、サーバーの状態、リクエストレート、ツールセットのアクティビティーを監視することができます。
| メカニズム | 方向 | 方法 | エンドポイント/設定 |
|---|---|---|---|
| OTLP エクスポート | Push | サーバーは、設定済みの OTLP エンドポイントに 30 秒ごとにメトリクスを送信します。 |
|
| Prometheus | プル | Prometheus はサーバーをスクレイピングします |
|
MCP サーバーは、HTTP ポート上で Prometheus 互換の /metrics エンドポイントを OpenMetrics 形式で公開しています。プル型のデータ収集を希望する場合は、サーバーのメトリクスポートを対象とする ServiceMonitor を作成してください。ラベルを使用してください。
-
アプリケーション:
mcp-serverおよびmcp-server:<MCPServer CR 内の MCP サーバー名 > -
ポート:
mcp
詳細は、OpenShift Container Platform の監視についてを参照してください。
| メトリクス | 型 | 説明 |
|---|---|---|
|
| カウンター |
MCP ツール呼び出し総数 ( |
|
| カウンター |
MCP ツールのエラー総数 ( |
|
| ヒストグラム | ツール呼び出し時間 (秒) |
|
| カウンター |
HTTP リクエスト ( |
|
| Gauge |
サーバー情報 (バージョン、 |
前提条件
- Red Hat OpenShift 用の MCP サーバーがインストールされ、稼働しています。
手順
MCP サーバーの
config.tomlファイルに、次の例のように OTLP エンドポイントとトランスポートプロトコルを設定する[telemetry]セクションを追加します。[telemetry] endpoint = "http://<otlp_endpoint>:4317" protocol = "grpc"-
endpoint: OTLP バックエンドの URL。エンドポイントを設定すると、テレメトリーが自動的に有効になります。 -
プロトコル:grpc(デフォルト、ポート 4317) またはhttp/protobuf(ポート 4318)。ポートをプロトコルに合わせて設定してください。
-
- オプション: セキュアな (TLS) エンドポイントの場合は、https://URL を使用し、自己署名 CA の場合は、CA 証明書を提供してください。
更新された設定を適用し、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 フラグを削除しました 旗を落とした 代替 --portTOML での
ポート-- バインドアドレスバインドアドレス-- メトリクス s-portメトリクスポート--log-levellog_level-- ログファイルlog_file--kubeconfigkubeconfig(kubeconfig が空の場合、$KUBECONFIG は client-go のフォールバックとして使用されます)-- リスト出力リスト出力--read-onlyread_only-- 破壊を無効にする破壊を無効にする--statelessstateless-- ツールセットツールセット-- クラスタープロバイダークラスタープロバイダー戦略--disable-multi-lustercluster_provider_strategy= "disabled"--tls-cert/--tls-keytls_cert/tls_key--require-tlsrequire_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 ベクトル変化 TOML Environment Reload ログレベル、ログファイル—
はい
ポート、バインドアドレス、メトリクスポート、ステートレス、ローカルホスト保護の無効化、サーバー指示、アプリの有効化—
いいえ
リスト出力—
はい
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_versionTLS_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_burstKUBE_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 サーバーがインストールされ、稼働しています。
-
ocCLI を使用すれば、クラスターにアクセスできます。 -
ConfigMap(またはSecret) を編集したり、MCP サーバー Pod 上でoc exec を実行したりする権限があります。 - 変更しようとしている設定オプションが再読み込み可能かどうかは、ご自身で確認できます (設定リファレンスを参照)。
手順
-
ConfigMap(または機密値の場合はSecret) を編集します。 オプションによって:
再起動を回避するには、以下のコマンドを実行して
SIGHUP シグナルを送信し、再読み込み オプションを有効にしてください。oc exec [-n <namespace>] <mcp-server-pod-name> -- kill -HUP 1<namespace>は MCP サーバーの名前空間であり、<mcp-server-pod-name>は MCP サーバー Pod です。重要新しい設定が無効な場合、再読み込みは失敗し、プロセスは終了します。Pod の再起動を避けるため、設定が有効であることを確認してください。
- 再読み込みできない オプションについては、再起動または再デプロイしてください。
検証
サーバーは再起動後、有効な設定をログに記録するため、サーバーログを確認することで変更が反映されたことを確認できます。