すべてのプロダクト
Search
ドキュメントセンター

Container Service for Kubernetes:Knative での MCP サーバーのデプロイ

最終更新日:Jun 23, 2026

Knative で MCP サーバーをホストすると、そのサーバーレスアーキテクチャを利用して、AI サービス向けのオンデマンドのオートスケーリングとイベント駆動型処理を実現できます。

仕組み

このワークフローは、Knative の AI アプリケーションが MCP プロトコルを使用して外部ツールとやり取りする方法を示しています。

  1. リクエストの開始:ユーザーが AI エージェントにコマンドを発行します。エージェントに組み込まれた MCP クライアントが標準のツール呼び出しリクエストを生成し、SSE または HTTP 経由で送信します。

    Knative は、stdio トランスポートプロトコルを使用する MCP サーバーをサポートしていません。
  2. サービスの処理と実行:Knative サービスは HTTP リクエストを受信し、利用可能な MCP サーバーインスタンスにルーティングし、ロードに基づいて自動的にスケーリングします。

    独自の MCP サーバーを構築するには、MCP Server SDK または FastMCP をご参照ください。MCP Server の GitHub リポジトリ で既存の実装を見つけることもできます。
  3. 結果の応答:MCP サーバーは結果を AI エージェントに返し、AI エージェントは最終的な応答をユーザーに送信します。

前提条件

クラスターに Knative をデプロイ済みであること。詳細については、「」または「Knative コンポーネントのデプロイと管理」をご参照ください。

ACS クラスターに Knative をデプロイ済みであること。

手順 1:MCP サーバーのデプロイ

このセクションでは、中国 (杭州) の旅行計画用のサンプル MCP サービスをデプロイします。このサービスは、旅行計画、フライト検索、ホテル予約、天気予報の各機能を、AI エージェントが呼び出し可能な標準化されたツールにパッケージ化します。

  1. mcp-server.yaml という名前のファイルを作成します。

    以下の YAML は、サンプルの MCP サーバーイメージをプルする Knative サービスを定義します。
    apiVersion: serving.knative.dev/v1
    kind: Service
    metadata:
      name: helloworld-go
      namespace: default
    spec:
      template:
        spec:
          containers:
            - env:
                - name: TARGET
                  value: Knative
              # イメージパスの {region} を、cn-hangzhou などの実際のリージョン ID に置き換えます。
              image: >-
                registry-{region}-vpc.ack.aliyuncs.com/acs/knative-samples-mcp-trip:v1.0-6b9fc59
              name: user-container
  2. Knative サービスを作成します。

    kubectl apply -f mcp-server.yaml

手順 2:サービスへのアクセス

サービスをデプロイした後、MCP リクエストを送信して、サービスが期待どおりに動作することを確認します。

  1. サービス管理 ページで、サービスの ゲートウェイデフォルトドメイン を取得します。

    [ゲートウェイ] は、alb-xxx.aliyuncsslb.com のような ALB アドレスです。helloworld-go サービスの [デフォルトドメイン]helloworld-go.default.example.com です。

  2. helloworld-go サービスにアクセスします。

    helloworld-go.default.example.com を実際のドメイン名に、<GATEWAY_IP> を実際のゲートウェイ IP アドレスに置き換えます。

    このコマンドは、サポートされているすべてのツールをリスト表示するために、tools/list リクエストをサービスに送信します。
    curl -H "Host: helloworld-go.default.example.com" http://<GATEWAY_IP>/mcp -H "Content-Type: application/json" \
      -d '{
        "jsonrpc": "2.0",
        "id": "1",
        "method": "tools/list",
        "params": {}
      }' | jq .

    このコマンドは、MCP サーバーからのツールリストを含む、フォーマットされた JSON 応答を返します。

    想定される出力

    {
      "jsonrpc": "2.0",
      "id": "1",
      "result": {
        "tools": [
          {
            "annotations": {
              "readOnlyHint": false,
              "destructiveHint": true,
              "idempotentHint": false,
              "openWorldHint": true
            },
            "description": "中国 (杭州) の西湖近くのホテルを予約します。",
            "inputSchema": {
              "type": "object",
              "properties": {
                "check_in": {
                  "description": "チェックイン日 (YYYY-MM-DD)",
                  "type": "string"
                },
                "guests": {
                  "description": "宿泊客数",
                  "type": "number"
                },
                "nights": {
                  "description": "宿泊日数",
                  "type": "number"
                }
              },
              "required": [
                "check_in",
                "guests",
                "nights"
              ]
            },
            "name": "book_hotel"
          },
          {
            "annotations": {
              "readOnlyHint": false,
              "destructiveHint": true,
              "idempotentHint": false,
              "openWorldHint": true
            },
            "description": "旅行の準備のために、中国 (杭州) の今後数日間の天気予報を取得します。",
            "inputSchema": {
              "type": "object",
              "properties": {
                "date_start": {
                  "description": "開始日 (YYYY-MM-DD)",
                  "type": "string"
                },
                "days": {
                  "description": "予報日数",
                  "type": "number"
                }
              },
              "required": [
                "date_start",
                "days"
              ]
            },
            "name": "get_weather_forecast"
          },
          {
            "annotations": {
              "readOnlyHint": false,
              "destructiveHint": true,
              "idempotentHint": false,
              "openWorldHint": true
            },
            "description": "毎日の観光スポット、料理、文化体験を含む、中国 (杭州) の数日間にわたる詳細な旅行日程を生成します。",
            "inputSchema": {
              "type": "object",
              "properties": {
                "days": {
                  "description": "旅行日数 (1-7)",
                  "maximum": 7,
                  "minimum": 1,
                  "type": "number"
                }
              },
              "required": [
                "days"
              ]
            },
            "name": "plan_hangzhou_trip"
          },
          {
            "annotations": {
              "readOnlyHint": false,
              "destructiveHint": true,
              "idempotentHint": false,
              "openWorldHint": true
            },
            "description": "中国 (杭州) へのフライト情報を検索します。",
            "inputSchema": {
              "type": "object",
              "properties": {
                "date": {
                  "description": "出発日 (YYYY-MM-DD)",
                  "type": "string"
                },
                "origin": {
                  "description": "出発都市 (例:北京、上海)",
                  "type": "string"
                }
              },
              "required": [
                "origin",
                "date"
              ]
            },
            "name": "search_flights"
          }
        ]
      }
    }

課金

Knative 自体に追加料金は発生しません。ただし、コンピューティングリソースやネットワークリソースなど、使用するクラウドサービスに対して課金されます。詳細については、「クラウドサービスの費用」および「課金」をご参照ください。