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

API Gateway:HTTP to MCP 設定フィールドリファレンス

最終更新日:Aug 11, 2026

HTTP-to-MCP 設定に関するフィールドリファレンスです。このガイドを参照して、カスタム YAML で MCP サービスのツールを統合してください。

設定フィールド

サーバー設定

名前

データ型

必須

説明

server.name

文字列

必須

MCP サーバー名。quark-search などの組み込みサーバープラグインの場合は、サーバー名を設定し、tools フィールドを省略します。HTTP-to-MCP のシナリオでは、任意の値を使用します。

server.config

object

任意

API キーなどのサーバー設定。

server.securitySchemes

array[object]

任意

ツールが参照する再利用可能な認証スキームを定義します。詳細については、「認証とセキュリティ」をご参照ください。

許可されたツールの設定

名前

データ型

必須

説明

allowTools

array[string]

任意

呼び出しが許可されるツール。省略した場合、すべてのツールが許可されます。

HTTP to MCP ツール設定

名前

データ型

必須

説明

tools

array[object]

任意

HTTP to MCP ツール設定のリスト。

tools[].name

文字列

必須

ツール名。

tools[].description

文字列

必須

ツールの機能の説明。

tools[].args

array[object]

必須

ツールパラメーターの定義。

tools[].args[].name

文字列

必須

パラメーター名。

tools[].args[].description

文字列

必須

パラメーターの説明。

tools[].args[].type

文字列

任意

パラメーターの型。string、number、integer、ブーリアン、array、object など。デフォルトは string です。

tools[].args[].required

ブーリアン

任意

パラメーターが必須かどうかを指定します。デフォルトは false です。

tools[].args[].default

any

任意

パラメーターのデフォルト値。

tools[].args[].enum

array

任意

パラメーターで使用できる値のリスト。

tools[].args[].items

object

任意

type が array の場合の配列要素のスキーマ。

tools[].args[].properties

object

任意

type が object の場合のオブジェクトプロパティのスキーマ。

tools[].args[].position

文字列

任意

リクエスト内のパラメーターの位置。query、path、header、cookie、body など。

tools[].requestTemplate

object

必須

HTTP リクエストテンプレート。

tools[].requestTemplate.url

文字列

必須

リクエスト URL テンプレート。

tools[].requestTemplate.method

文字列

必須

HTTP メソッド。GET や POST など。

tools[].requestTemplate.headers

array[object]

任意

リクエストヘッダーテンプレート。

tools[].requestTemplate.headers[].key

文字列

必須

リクエストヘッダー名。

tools[].requestTemplate.headers[].value

文字列

必須

リクエストヘッダーの値テンプレート。

tools[].requestTemplate.body

文字列

任意

リクエストボディテンプレート。 argsToJsonBody、argsToUrlParam、argsToFormBody とは相互排他的です。

tools[].requestTemplate.argsToJsonBody

ブーリアン

任意

デフォルト: false。 true の場合、パラメーターを JSON リクエストボディとして送信します。 body、argsToUrlParam、argsToFormBody とは相互排他的です。

tools[].requestTemplate.argsToUrlParam

ブーリアン

任意

デフォルト: false。 true の場合、パラメーターをクエリパラメーターとして URL に追加します。 body、argsToJsonBody、argsToFormBody とは相互排他的です。

tools[].requestTemplate.argsToFormBody

ブーリアン

任意

デフォルト: false。 true の場合、パラメーターを application/x-www-form-urlencoded としてリクエストボディにエンコードします。 body、argsToJsonBody、argsToUrlParam とは相互排他的です。

tools[].responseTemplate

object

必須

HTTP レスポンスの変換テンプレート。

tools[].responseTemplate.body

文字列

任意

レスポンスボディの変換テンプレート。 prependBody や appendBody とは相互排他的です。

tools[].responseTemplate.prependBody

文字列

任意

レスポンスボディの前に挿入するテキスト。 body とは相互排他的です。

tools[].responseTemplate.appendBody

文字列

任意

レスポンスボディの後に挿入するテキスト。 body とは相互排他的です。

tools[].security

object

任意

ツールレベルのセキュリティ設定。MCP Client と MCP サーバー間の認証方法を定義し、認証情報パススルーをサポートします。

tools[].security.id

文字列

tools[].security が設定されている場合は必須

server.securitySchemes で定義された認証スキームの ID を参照します。

tools[].security.passthrough

ブーリアン

任意

パススルー認証を有効にします。デフォルト: false。 true の場合、MCP クライアントリクエストから抽出された資格情報が requestTemplate.security のスキームに適用されます。

tools[].requestTemplate.security

object

任意

HTTP リクエストテンプレートのセキュリティ設定。MCP サーバーと HTTP API 間の認証方法を定義します。

tools[].requestTemplate.security.id

文字列

tools[].requestTemplate.security が設定されている場合は必須

server.securitySchemes で定義された認証スキームの ID を参照します。

tools[].requestTemplate.security.credential

文字列

任意

server.securitySchemes で定義されたデフォルトの認証情報を上書きします。 tools[].security.passthrough も有効になっている場合、このフィールドは無視され、パススルー認証情報が優先されます。

認証とセキュリティ

MCP Server プラグインは、クライアント、MCP Server、バックエンド API 間の通信を保護するための柔軟な認証をサポートします。

認証スキームの定義 (server.securitySchemes)

サーバーレベルで再利用可能な認証スキームを定義します。ツールはこれらのスキームを参照して、バックエンド HTTP API に対する認証を行います。

設定フィールド (server.securitySchemes[]):

名前

データ型

必須

説明

id

文字列

必須

認証スキームの一意の識別子です。ツール設定から参照されます。

type

文字列

必須

認証タイプ。サポートされるタイプは http (ベーシック認証とベアラー認証用) および apiKey です。

scheme

文字列

任意

type が http の場合、basic や bearer などのスキームを指定します。

in

文字列

任意

type が apiKey の場合、header や query など、API キーの場所を指定します。

name

文字列

任意

type が apiKey の場合、ヘッダー名またはクエリパラメーター名を指定します。

defaultCredential

文字列

任意

このスキームのデフォルトの認証情報です。例えば、ベーシック認証の場合は user:password 形式で指定します (プラグインが自動的に Base64 エンコードします)。ベアラートークンの場合はトークン自体、API キーの場合はキー自体を指定します。

例 (server.securitySchemes):

server:
  name: my-api-server
  securitySchemes:
    - id: MyBasicAuth
      type: http
      scheme: basic
      defaultCredential: "admin:secretpassword" # デフォルトのユーザー名とパスワード
    - id: MyBearerToken
      type: http
      scheme: bearer
      defaultCredential: "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9..." # デフォルトのベアラートークン
    - id: MyApiKeyInHeader
      type: apiKey
      in: header
      name: X-Custom-API-Key # API キーは X-Custom-API-Key という名前のヘッダーに含まれます
      defaultCredential: "abcdef123456" # デフォルトの API キー
    - id: MyApiKeyInQuery
      type: apiKey
      in: query
      name: "api_token" # API キーは api_token という名前のクエリパラメーターに含まれます
      defaultCredential: "uvwxyz789012"

ツールでの認証スキームの適用

server.securitySchemes を定義した後、各ツールの requestTemplate.security フィールドで id によってスキームを参照し、MCP Server がバックエンド HTTP API に対して認証を行う方法を指定します。

  • tools[].requestTemplate.security.id: server.securitySchemes で定義された認証スキームの id を参照します。

  • tools[].requestTemplate.security.credential:任意。指定した場合、このフィールドは参照されたスキームの defaultCredential をオーバーライドします。これにより、同じ認証メカニズムを共有していても、特定のツールに異なる認証情報を使用できます。

例:

tools:
  - name: get-user-details
    # ... その他のツール設定 ...
    requestTemplate:
      url: "https://api.example.com/users/{{.args.userId}}"
      method: GET
      security:
        id: MyBearerToken # 上記で定義した MyBearerToken スキームを使用します
        # credential: "override_token_for_this_tool" # 任意: このツールのデフォルトトークンをオーバーライドします
  # ...
  - name: update-inventory
    # ... その他のツール設定 ...
    requestTemplate:
      url: "https://api.example.com/inventory/{{.args.itemId}}"
      method: POST
      security:
        id: MyApiKeyInHeader # MyApiKeyInHeader スキームを使用します
        # このツールは MyApiKeyInHeader で定義された defaultCredential を使用します

パススルー認証

パススルー認証により、MCP Client が提供する認証情報を MCP Server 経由で転送して、バックエンド HTTP API への呼び出しを認証できます。

設定方法:

  1. server.securitySchemes で関連する認証スキームが定義されていることを確認します。これには、クライアントが MCP Server に接続するために使用するスキームと、MCP Server がバックエンド HTTP API に接続するために使用するスキームが含まれます。

  2. ツールレベルの認証を設定します (tools[].security): 認証情報パススルーが必要なツールの security フィールドを設定します:

    • id: server.securitySchemes で定義された、MCP Client と MCP Server 間の認証に使用される認証スキームを参照します。プラグインは、このスキームに基づいてクライアントリクエストから認証情報を抽出し、元のリクエストからその認証情報を削除します。

    • passthrough: true: パススルー認証を有効にします。

  3. リクエストテンプレート認証を設定します (tools[].requestTemplate.security): ツールの requestTemplate の security フィールドを設定します:

    • id: server.securitySchemes で定義された、MCP Server とバックエンド HTTP API 間の認証に使用される認証スキームを参照します。

    • tools[].security.passthrough が true に設定されている場合、クライアントから抽出された認証情報は、この requestTemplate.security スキームに従ってバックエンド HTTP API への呼び出しに適用されます。

例:

MCP Client がベアラートークンを使用して MCP Server を呼び出し、MCP Server は API キーを使用してバックエンド HTTP API を呼び出す必要があるとします。

server:
  name: product-api-server
  securitySchemes:
    - id: ClientSideBearer # クライアントはベアラートークンを使用します
      type: http
      scheme: bearer
    - id: BackendApiKey    # バックエンド API は X-API-Key を使用します
      type: apiKey
      in: header
      name: X-API-Key
      # defaultCredential: "(任意) デフォルトのバックエンドキー"

tools:
  - name: get-product-securely
    description: "商品情報を取得します (セキュアパススルー)"
    security: # クライアント -> MCP Server 認証設定
      id: ClientSideBearer # MCP Server はクライアントがこのスキームを使用することを期待し、このタイプの認証情報を抽出しようとします
      passthrough: true   # 認証情報パススルーを許可します
    args:
      - name: product_id
        description: "商品 ID"
        type: string
        required: true
    requestTemplate:
      security: # MCP Server -> バックエンド HTTP API 認証設定
        id: BackendApiKey # バックエンド API はこのスキームを必要とします。パススルー認証情報はこのスキームに従って適用されます。
      url: "https://api.example.com/products/{{.args.product_id}}"
      method: GET

ワークフロー

  1. MCP Client は、MCP Server の get-product-securely ツールにリクエストを送信します。リクエストには Authorization ヘッダーに Bearer <client_token> が含まれます。

  2. MCP Server は、tools[].security (id: ClientSideBearer) に基づいて、クライアントがベアラートークンを使用していることを識別します。リクエストから <client_token> を抽出し、元の Authorization ヘッダーを削除します。

  3. passthrough: true が設定されているため、抽出された <client_token> はパススルー認証情報として扱われます。

  4. MCP Server はバックエンド HTTP API を呼び出す準備をします。requestTemplate.security (id: BackendApiKey) を確認します。

  5. パススルーが有効になっているため、MCP Server は以前に抽出した <client_token> を認証情報値として使用します。BackendApiKey スキームに従って、この値を X-API-Key という名前の HTTP ヘッダーとして https://api.example.com/products/... へのリクエストに追加します。

  6. バックエンド HTTP API は、X-API-Key ヘッダーが <client_token> に設定されたリクエストを受信します。

重要
  • tools[].security.passthrough が true に設定されている場合、requestTemplate.security.credential フィールドは無視されます。パススルー認証情報が優先されます。

  • パススルー認証情報の値は、requestTemplate.security で指定された認証スキームに直接使用されます。認証情報の形式がターゲット認証スキームと互換性があることを確認してください。extractAndRemoveIncomingCredential 関数は、ベアラートークン値やベーシック認証の Base64 でエンコードされた部分など、認証情報のコア部分を抽出しようとします。

トラブルシューティング:パススルー認証情報が有効にならない

クライアントからパススルーされた認証情報がバックエンド HTTP API 呼び出しに適用されず、MCP Server が代わりに server.securitySchemes で定義された defaultCredential を使用するようにフォールバックする場合は、以下の設定項目を確認してください:

  • ツールレベルでパススルーが有効になっていることを確認します: 特定のツールの tools[].security.passthrough が true に設定されていることを確認してください。パススルーは、明示的に設定されたツールでのみ有効になります。グローバル設定ではありません。

  • 参照された認証スキームがクライアントまたは SDK が送信する認証情報タイプと一致することを確認します: tools[].security.id によって参照されるスキーム (例: ClientSideBearer) が、クライアントまたは SDK が実際に送信する認証情報タイプと一致することを確認してください。スキームがベアラートークンを期待しているのに、クライアントが異なる認証情報タイプを送信している場合、MCP Server はパススルー認証情報を正しく抽出できません。

  • defaultCredential が有効で使用可能な認証情報であることを確認します: server.securitySchemes の対応するスキームで設定された defaultCredential の値を確認してください。これは、バックエンド HTTP API が受け入れる有効な認証情報 (例:ベアラートークンスキームの場合は適切に形成された JWT) である必要があり、テンプレートプレースホルダーであってはなりません。パススルーが有効にならない場合、MCP Server はバックエンド呼び出しに defaultCredential を使用するようにフォールバックします。defaultCredential が無効な場合、バックエンド HTTP API に対する認証は失敗します。

サポートするパラメータータイプ

HTTP-to-MCP ツールは、以下のパラメータータイプをサポートします。

  • string:文字列型。これがデフォルトです。

  • number:数値型 (浮動小数点数)。

  • integer:整数型。

  • boolean:ブール値型 (true/false)。

  • array:配列型。items フィールドを使用して配列要素のスキーマを定義できます。

  • object:オブジェクト型。properties フィールドを使用してオブジェクトプロパティのスキーマを定義できます。

例:

args:
  - name: query
    description: "検索キーワード"
    type: string
    required: true
  - name: limit
    description: "返す結果の数"
    type: integer
    default: 10
  - name: filters
    description: "フィルター条件"
    type: object
    properties:
      category:
        type: string
        enum: ["food", "hotel", "attraction"]
      price:
        type: integer
        minimum: 0
  - name: coordinates
    description: "座標のリスト"
    type: array
    items:
      type: object
      properties:
        lat:
          type: number
        lng:
          type: number

パラメーター配置の制御

position フィールドは、各パラメーターを HTTP リクエスト内のどこに配置するかを制御します。これにより、1 つのツールでパス、クエリ、ヘッダー、Cookie、ボディのパラメーターを混在させることができます。

対応する位置タイプ

  • query:パラメーターは URL 内のクエリパラメーターとして渡されます。

  • path:パラメーターは URL 内のパスプレースホルダーを置き換えます。たとえば、/pet/{petId} の {petId} です。

  • header:パラメーターは HTTP ヘッダーで渡されます。

  • cookie:パラメーターは Cookie として渡されます。

  • body:パラメーターはリクエストボディで渡されます。コンテンツタイプに基づき、JSON またはフォームとして自動的に整形されます。

例

args:
  - name: petId
    description: "ペット ID"
    type: string
    required: true
    position: path
  - name: token
    description: "認証トークン"
    type: string
    required: true
    position: header
  - name: sessionId
    description: "セッション ID"
    type: string
    position: cookie
  - name: limit
    description: "返す結果の数"
    type: integer
    default: 10
    position: query
  - name: tags
    description: "タグのリスト"
    type: array
    position: body

上記の例では次のようになります。

  • petId は URL 内の {petId} プレースホルダーを置き換えます。

  • token は HTTP ヘッダーとしてリクエストに追加されます。

  • sessionId は Cookie としてリクエストに追加されます。

  • limit はクエリパラメーターとして URL に追加されます。

  • tags はリクエストボディに追加されます。

バッチオプションとの関係

position を指定したパラメーターは、バッチオプション (argsToJsonBody、argsToUrlParam、argsToFormBody) の影響を受けません。バッチオプションは、position が指定されていないパラメーターにのみ適用されます。

たとえば、position と argsToJsonBody の両方を使用する場合:

  • position: query のパラメーターは、URL のクエリ文字列に追加されます。

  • position: header のパラメーターは、HTTP ヘッダーに追加されます。

  • position: path のパラメーターは、URL 内のプレースホルダーを置き換えます。

  • position: cookie のパラメーターは、Cookie として追加されます。

  • position: body のパラメーターは、JSON リクエストボディに追加されます。

  • position が指定されていないパラメーターは、argsToJsonBody により JSON リクエストボディに追加されます。

また、requestTemplate で body を明示的に指定した場合、競合を避けるため、position: body のすべてのパラメーターは無視されます。

リクエストパラメーターの受け渡し方法

HTTP-to-MCP ツールは、パラメータごとの position 制御に加えて、4 つの一括パラメータ処理方法をサポートしています。これらのオプションは相互に排他的です。

  1. body :テンプレートを使用してリクエストボディを手動で作成できます。最も柔軟な方法であり、リクエストボディ形式を完全に制御できます。

    requestTemplate:
      body: |
        {
          "query": "{{.args.query}}",
          "filters": {{toJson .args.filters}},
          "options": {
            "limit": {{.args.limit}}
          }
        }
    
  2. argsToJsonBody: true に設定されている場合、position が指定されていないパラメーターは、リクエストボディで JSON オブジェクトとして送信されます。 Content-Type: application/json; charset=utf-8 ヘッダーが自動的に追加されます。

    requestTemplate:
      argsToJsonBody: true
    
  3. argsToUrlParam: true に設定すると、position が指定されていないパラメーターが、クエリパラメーターとして URL に追加されます。

    requestTemplate:
      argsToUrlParam: true
    
  4. argsToFormBody: true に設定すると、position が指定されていないパラメーターは、application/x-www-form-urlencoded 形式でリクエストボディにエンコードされます。対応する Content-Type ヘッダーが自動的に追加されます。

    requestTemplate:
      argsToFormBody: true
    

これらのオプションは一般的な API 呼び出しパターンを簡素化します。ツールの設定ごとに使用できるのは 1 つだけです。複数のオプションを設定すると、ロードエラーが発生します。

テンプレート構文

HTTP-to-MCP 機能は、テンプレートレンダリングに GJSON Template ライブラリを使用します。これは、Go のテンプレート構文と GJSON の強力なパス構文を組み合わせたものです。

リクエストテンプレート

リクエストテンプレートを使用して、HTTP リクエストの URL、ヘッダー、およびボディを構築できます。

  • 構成値にアクセスするには、.config.fieldName を使用します。

  • ツールパラメーターにアクセスするには、.args.parameterName を使用します。

レスポンステンプレート

レスポンステンプレートを使用して、HTTP レスポンスを AI での利用に適した形式に変換できます。

  • JSON レスポンスのフィールドにアクセスするには、GJSON パス構文を使用します。

  • add、upper、lower などのテンプレート関数を使用できます。

  • if や range などの制御構造を使用できます。

GJSON Template には、すべての Sprig 関数 (Helm テンプレートに相当する 70 以上の関数) が含まれています:

一般的な Sprig 関数には、以下が含まれます:

  • 文字列操作: trim、upper、lower、replace、plural、nospace

  • 算術演算: add、sub、mul、div、max、min

  • 日付フォーマット: now、date、dateInZone、dateModify

  • リスト操作: list、first、last、uniq、sortAlpha

  • 辞書操作: dict、get、set、hasKey、pluck

  • フロー制御: ternary、default、empty、coalesce

  • 型変換: toString、toJson、toPrettyJson、toRawJson

  • エンコード / デコード: b64enc、b64dec、urlquery、urlqueryescape

  • UUID 生成: uuidv4

GJSON Template には、Helm テンプレート関数と同じ関数セットが含まれています。

GJSON パス構文

GJSON は強力な JSON クエリ機能を提供します。

  • ドット記法: address.city

  • 配列インデックス: users.0.name

  • 配列の反復: users.#.name

  • 配列のフィルタリング: users.#(age>=30)#.name

  • 修飾子: users.@reverse.#.name

  • 複数パス: {name:users.0.name,count:users.#}

  • エスケープ文字: path.with\.dot

より複雑なクエリの場合は、gjson 関数を使用できます。

<!-- gjson関数を使用した複雑なクエリ -->
アクティブユーザー: {{gjson "users.#(active==true)#.name"}}

<!-- 複数条件による配列のフィルタリング -->
30 歳以上のアクティブな開発者: {{gjson "users.#(active==true && age>30)#.name"}}

<!-- 修飾子の使用 -->
ユーザー名 (逆順): {{gjson "users.@reverse.#.name"}}

<!-- フィルタリングされた結果の反復 -->
管理者:
{{range $user := gjson "users.#(roles.#(==admin)>0)#"}}
 - {{$user.name}} ({{$user.age}})
{{end}}

フルパス構文については、GJSON ドキュメントに記載されています。

構成例

server:
  name: "quark-search"
  config:
    apiKey: "xxxx"

Higress の組み込み quark-search MCP Server を使用します。サーバー名と API キーなどの必要な構成のみで、ツールは事前定義済みです。

基本例:AMAP API の変換

server:
  name: HTTP-amap-server
  config:
    apiKey: your-api-key-here
tools:
  - name: maps-geo
    description: "詳細な構造化された住所を緯度と経度の座標に変換します。ランドマーク、景勝地、建物名の座標への解決をサポートします。"
    args:
      - name: address
        description: "変換対象の構造化された住所。"
        type: string
        required: true
      - name: city
        description: "クエリする都市。"
        type: string
        required: false
      - name: output
        description: "出力形式。"
        type: string
        enum: ["json", "xml"]
        default: "json"
    requestTemplate:
      url: "https://restapi.amap.com/v3/geocode/geo"
      method: GET
      argsToUrlParam: true
      headers:
        - key: x-api-key
          value: "{{.config.apiKey}}"
    responseTemplate:
      body: |
        # ジオコーディング情報
        {{- range $index, $geo := .geocodes }}
        ## 場所 {{add $index 1}}

        - **国**: {{ $geo.country }}
        - **省**: {{ $geo.province }}
        - **市**: {{ $geo.city }}
        - **市コード**: {{ $geo.citycode }}
        - **区**: {{ $geo.district }}
        - **通り**: {{ $geo.street }}
        - **番地**: {{ $geo.number }}
        - **Adcode**: {{ $geo.adcode }}
        - **場所**: {{ $geo.location }}
        - **レベル**: {{ $geo.level }}
        {{- end }}

この構成は、AMAP ジオコーディング API を AI が呼び出せるツールに変換します。AI がこのツールを呼び出すと、次の処理が実行されます。

  1. 指定された住所と都市パラメーターを使用して API リクエストを構築します。

  2. AMAP API を呼び出します。

  3. JSON レスポンスを読みやすい Markdown 形式に変換します。

  4. フォーマットされた結果を AI アシスタントに返します。

高度な例:条件ロジックを使用した複雑なレスポンス処理

server:
  name: weather-api-server
  config:
    apiKey: your-weather-api-key
tools:
  - name: get-weather
    description: "指定された都市の天気予報を取得します。"
    args:
      - name: city
        description: "都市名"
        type: string
        required: true
      - name: days
        description: "日数 (1-7)"
        type: integer
        required: false
        default: 3
      - name: include_hourly
        description: "時間別予報を含めるかどうかを指定します。"
        type: boolean
        default: true
    requestTemplate:
      url: "https://api.weatherapi.com/v1/forecast.json"
      method: GET
      argsToUrlParam: true
      headers:
        - key: x-api-key
          value: "{{.config.apiKey}}"
    responseTemplate:
      body: |
        # {{.location.name}}, {{.location.country}} 天気予報

        **現在の気温**: {{.current.temp_c}}°C
        **体感温度**: {{.current.feelslike_c}}°C
        **状態**: {{.current.condition.text}}
        **湿度**: {{.current.humidity}}%
        **風速**: {{.current.wind_kph}} km/h

        ## 今後の予報
        {{range $index, $day := .forecast.forecastday}}
        ### {{$day.date}} ({{dateFormat "Monday" $day.date_epoch | title}})

        {{if gt $day.day.maxtemp_c 30}}**高温警告!**{{end}}
        {{if lt $day.day.mintemp_c 0}}**低温警告!**{{end}}

        - **最高気温**: {{$day.day.maxtemp_c}}°C
        - **最低気温**: {{$day.day.mintemp_c}}°C
        - **降水確率**: {{$day.day.daily_chance_of_rain}}%
        - **状態**: {{$day.day.condition.text}}

        #### 時間別予報
        {{range $hour := slice $day.hour 6 24}}
        - **{{dateFormat "15:04" $hour.time_epoch}}**: {{$hour.temp_c}}°C, {{$hour.condition.text}}
        {{end}}
        {{end}}

この例では、以下について説明します。

  • 条件文 (if) を使用して気温警告を発行します。

  • 日付フォーマット関数 (dateFormat) を使用して日付をフォーマットします。

  • 配列スライス (slice) を使用して特定の時間の天気データを選択します。

  • ネストされたループを使用して、複数の日と時間帯にわたる天気データを走査します。

prependBody と appendBody の使用例:OpenAPI 変換

prependBody と appendBody を使用して、元の API レスポンスの前後にコンテキストを追加します。これは、生の JSON を保持しながら AI アシスタント向けにフィールドの説明を追加する OpenAPI 変換に役立ちます。

server:
  name: product-api-server
  config:
    apiKey: your-api-key-here
tools:
  - name: get-product
    description: "商品の詳細を取得"
    args:
      - name: product_id
        description: "商品 ID"
        type: string
        required: true
    requestTemplate:
      url: "https://api.example.com/products/{{.args.product_id}}"
      method: GET
      headers:
        - key: Authorization
          value: "Bearer {{.config.apiKey}}"
    responseTemplate:
      prependBody: |
        # 商品情報

        以下は商品の詳細で、JSON 形式で返されます。フィールドの説明:

        - **id**: 商品の一意の識別子
        - **name**: 商品名
        - **description**: 商品の説明
        - **price**: 商品価格 (USD)
        - **category**: 商品カテゴリ
        - **inventory**: 在庫情報
        - **quantity**: 現在の在庫数
        - **warehouse**: 倉庫の場所
        - **ratings**: ユーザー評価のリスト
        - **score**: 評価 (1-5)
        - **comment**: コメント内容
      appendBody: |

        この情報を使用して、商品の詳細、価格、在庫状況、ユーザーレビューを理解できます。

この例では、以下について説明します。

  • prependBody を使用して、元の JSON レスポンスの前にフィールドの説明を追加します。

  • appendBody を使用して、レスポンスの末尾に使用方法の提案を追加します。

  • 元の JSON レスポンスを保持して、AI アシスタントがすべてのデータに直接アクセスできるようにします。

テンプレート構文

テンプレートでは GJSON テンプレート構文 を使用します。これは、Go テンプレートと JSON 処理用の GJSON パス構文を組み合わせたものです。サポートされている機能は次のとおりです:

  1. {{.fieldName}} のようにフィールドにアクセスする、基本的なドット表記。

  2. {{gjson "users.#(active==true)#.name"}} のように複雑なクエリを実行する gjson 関数。

  3. Helm 関数と同様の、 {{add}}、 {{upper}}、 {{lower}}、 {{date}} といったすべての Sprig テンプレート関数。

  4. {{if}}、 {{range}}、 {{with}} のような制御構造。

  5. 次のように変数を代入できます: {{$var := .value}}。

複雑な JSON レスポンスの場合、GJSON のフィルタリング機能とクエリ機能を使用して主要な情報を抽出できます。

AI プロンプト生成テンプレート

以下のプロンプトを使用して、AI アシスタントで HTTP-to-MCP 設定を生成します:

HTTP API を MCP ツールに変換するための Higress HTTP-to-MCP 設定の作成を手伝ってください。

## 設定形式
設定は以下の形式に従ってください:
```yaml
server:
  name: HTTP-api-server
  config:
    apiKey: Your API key
tools:
  - name: tool-name
    description: "このツールが何をするかの詳細な説明"
    args:
      - name: arg1
        description: "パラメーター 1 の説明"
        type: string
        required: true
        position: path
      - name: arg2
        description: "パラメーター 2 の説明"
        type: integer
        required: false
        default: 10
        position: query
      - name: arg3
        description: "パラメーター 3 の説明"
        type: array
        items:
          type: string
        position: body
      - name: arg4
        description: "パラメーター 4 の説明"
        type: object
        properties:
          subfield1:
            type: string
          subfield2:
            type: number
    requestTemplate:
      url: "https://api.example.com/endpoint"
      method: POST
      # 以下の 4 つのオプションは相互に排他的です。1 つのみ選択してください。
      argsToUrlParam: true  # パラメーターを URL クエリ文字列に追加します
      # または
      # argsToJsonBody: true  # パラメーターをリクエストボディに JSON オブジェクトとして送信します
      # または
      # argsToFormBody: true  # パラメーターをリクエストボディにフォームエンコード形式で送信します
      # または
      # body: |
      #   {
      #     "param1": "{{.args.arg1}}",
      *     "param2": {{.args.arg2}},
      #     "complex": {{toJson .args.arg4}}
      #   }
      headers:
        - key: x-api-key
          value: "{{.config.apiKey}}"
    responseTemplate:
      # `body` を単独で使用するか、`prependBody` と `appendBody` を組み合わせて使用します。これらは相互に排他的です。
      body: |
        # 結果
        {{- range $index, $item := .items }}
        ## 項目 {{add $index 1}}
        - **名前**: {{ $item.name }}
        - **値**: {{ $item.value }}
        {{- end }}
      # または
      # prependBody: |
      #   # API レスポンスの説明
      #
      #   以下は未加工の JSON レスポンスです。フィールドの意味は次のとおりです:
      #   - field1: フィールド 1 の意味
      #   - field2: フィールド 2 の意味
      #
      # appendBody: |
      #
      #   このデータを使用して...

私の API 情報

[ここに API の詳細 (エンドポイント、パラメーター、レスポンス形式) を記述するか、Swagger/OpenAPI 仕様を貼り付けてください。]

上記の情報に基づいて、以下を含む完全な設定を生成してください:
1. わかりやすい名前と適切なサーバー設定。
2. すべての必要なパラメーターの定義 (明確な説明、適切な型、必須/デフォルト値を含む)。
3. 最も適切なパラメーター受け渡し方法 (argsToUrlParam、argsToJsonBody、argsToFormBody、またはカスタム body)。
4. API レスポンスを AI での利用に適した読みやすい形式に変換するレスポンステンプレート。

注意事項

YAML における tools[].args の記入仕様

tools[].args パラメーターは、AI ゲートウェイが MCP リクエストパラメーターを HTTP リクエストコンポーネントに変換する方法を定義します。各エントリで、パラメーターの型、位置 (パス、ヘッダー、またはボディ)、および必須かどうかを指定します。

AI ゲートウェイの変換におけるパラメーター値の位置

AI ゲートウェイは、MCP プロトコルで指定されているとおりに MCP リクエストボディからパラメーターを抽出します。リクエストヘッダーなど、他の位置からのパラメーター抽出は現在サポートされていません。