mcpField
K
kuadrant-mcp-poc

kuadrant-mcp-poc

ローカル
github.com/Kuadrantクラウド・インフラ070 週間前に更新

kuadrant-mcp-poc について

kuadrant-mcp-pocは、KubernetesクラスターにMCPサーバーを配置し、Kuadrantでゲートウェイを設定する概念実証です。Streamable HTTP対応のeverything MCP serverを使い、TLS、DNS、認証、レート制限のポリシーを適用します。

主な機能

  1. 01KubernetesへのMCPサーバー配置
  2. 02Kuadrantゲートウェイの設定
  3. 03TLSとDNSポリシーの設定
  4. 04APIキー認証とレート制限

活用シーン

  1. 01クラスター内のリモートMCPサーバーの検証
  2. 02MCPサーバーのDNSとTLS設定
  3. 03クライアント要求の認証と制限

MCP 対応

everything MCP serverをStreamable HTTP経由で利用できるように配置し、クライアント接続とツール呼び出しの例を示します。

設定

ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。

mcp.json · 共通設定
{
"mcpServers": {
"kuadrant-mcp-poc": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"build"
]
}
}
}
起動コマンドdocker run -i --rm build

ローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。

パッケージ
ocibuild

ツール

ツール一覧はまだ取得されていません

ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。

詳細

kuadrant-mcp-poc

はじめに:

この POC では、Streamable HTTP に対応している everything MCP サーバーを使用しました。

前提条件

  • K8s クラスター
  • Kuadrant がインストールされていること。詳しくは Kuadrant のドキュメントを参照してください。
環境変数を設定する
export QUAY_USERNAME=xxxx # Quay username
export KUADRANT_AWS_ACCESS_KEY_ID=xxxx # AWS Key ID with access to manage the DNS Zone ID below
export KUADRANT_AWS_SECRET_ACCESS_KEY=xxxx # AWS Secret Access Key with access to manage the DNS Zone ID below

インストール

  1. mcp-server/mcp-server-everything.yaml ファイルを更新して、ルートドメインを設定します。

1. Install the MCP Server in your K8s cluster.

```sh
   kubectl apply -f mcp-server/mcp-server-everything.yaml
  1. MCP everything サーバーの Pod が実行中であることを確認します。
   kubectl get pods -n mcp-server
  1. ゲートウェイの名前空間を作成します。
    kubectl create ns mcp-gateway
  1. DNS の設定に使用するシークレット認証情報を、ゲートウェイと同じ名前空間に作成します。
   kubectl -n mcp-gateway create secret generic aws-credentials \
   --type=kuadrant.io/aws \
   --from-literal=AWS_ACCESS_KEY_ID=$KUADRANT_AWS_ACCESS_KEY_ID \
   --from-literal=AWS_SECRET_ACCESS_KEY=$KUADRANT_AWS_SECRET_ACCESS_KEY
  1. cert-manager の名前空間にシークレット認証情報を作成します。

   kubectl -n cert-manager create secret generic aws-credentials \
   --type=kuadrant.io/aws \
   --from-literal=AWS_ACCESS_KEY_ID=$KUADRANT_AWS_ACCESS_KEY_ID \
   --from-literal=AWS_SECRET_ACCESS_KEY=$KUADRANT_AWS_SECRET_ACCESS_KEY
  1. Kuadrant Gateway を作成します。注意:kuadrant/gateway.yaml ファイルを更新して、ルートドメインを設定してください。
    kubectl apply -f kuadrant/gateway.yaml
  1. Let's Encrypt Cluster issuer と TlS Policy を作成します。
  kubectl apply -f kuadrant/tls.yaml
**注意**:証明書は自己署名できません。MCP クライアントはまだ自己署名証明書を受け付けません。
  1. DNSPolicy を作成します。
   kubectl apply -f kuadrant/dns.yaml
  1. 1 分ほど待ってから、MCP サーバーが応答することを確認します。
curl -v -X POST "https://api.KUADRANT_ZONE_ROOT_DOMAIN_GOES_HERE/mcp" \
      -H "Content-Type: application/json" \
      -H "Accept: application/json, text/event-stream" \
      -d '{
            "jsonrpc": "2.0",
            "method": "initialize",
            "params": {
              "protocolVersion": "2024-11-05",
              "capabilities": {
                "resources": {},
                "tools": {},
                "prompts": {}
              },
              "clientInfo": {
                "name": "test-curl-client",
                "version": "1.0"
              }
            },
            "id": 1
          }'
  1. Rate limit policy を作成します。
    kubectl apply -f kuadrant/rlp.yaml
  1. Auth policy と API Key のシークレットを作成します。
   kubectl apply -f kuadrant/auth.yaml
MCP クライアント

この例では、Streamable HTTP を使用して接続できる Vscode Co pilot を MCP クライアントとして使用します。

  1. 以下を VSCode の setting.json に追加します。詳しくは、VSCode 公式 MCP ドキュメントを参照してください。
"mcp": {
    "servers": {
      "my-mcp-server": {
        "type": "http",
        "url": "https://KUADRANT_ZONE_ROOT_DOMAIN_GOES_HERE/mcp",
        "headers": {
          "Authorization": "APIKEY IAMALICE"
        }
      }
    }
  },
  1. クライアントからサーバーを使用できるようになり、MCP サーバーのツールを利用できます。⌃⌘I を使って vscode で co pilot を開き、ドロップダウンから agent をクリックします。

  2. チャットに次のように入力します。

    add 500 and 500
  1. Vscode から、Co pilot が MCP サーバーのツールを呼び出すことを許可するかどうか尋ねられます。許可してください。

  2. チャットに回答が表示され、MCP サーバーの add が実行されたことも確認できます。

  3. 設定から Auth ヘッダーを省略した場合、またはツールを使った質問をチャットで短時間に何度も行った場合、デプロイされた auth ポリシーと rate limit ポリシーによってリクエストが拒否または制限されます。

コメント

MCP は初めてですか?

プロトコルの概要から最初のサーバーの導入まで、よくある疑問にまとめて答えます。

AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。