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

API Gateway:HTTP to MCP configuration field reference

最終更新日:Dec 13, 2025

このドキュメントでは、HTTP to MCP 設定のフィールドとリファレンスについて説明します。このガイドを使用して、MCP サービス用のツールをカスタム YAML と統合できます。

構成フィールド

サーバー構成

名前

データ型

必須

説明

server.name

string

必須

MCP サーバーの名前。`quark-search` などの組み込み MCP サーバプラグインを使用する場合は、このフィールドをサーバー名に設定します。`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

string

必須

ツール名。

tools[].description

string

必須

ツールの機能の説明。

tools[].args

array[object]

必須

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

tools[].args[].name

string

必須

パラメーター名。

tools[].args[].description

string

必須

パラメーターの説明。

tools[].args[].type

string

オプション

パラメーターのタイプ。string、number、integer、boolean、array、object など。デフォルトは `string` です。

tools[].args[].required

boolean

オプション

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

tools[].args[].default

any

(オプション)

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

tools[].args[].enum

array

オプション

パラメーターに許可される値のリスト。

tools[].args[].items

object

オプション

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

tools[].args[].properties

object

オプション

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

tools[].args[].position

string

オプション

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

tools[].requestTemplate

object

必須

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

tools[].requestTemplate.url

string

必須

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

tools[].requestTemplate.method

string

必須

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

tools[].requestTemplate.headers

array[object]

オプション

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

tools[].requestTemplate.headers[].key

string

必須

リクエストヘッダー名。

tools[].requestTemplate.headers[].value

string

必須

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

tools[].requestTemplate.body

string

オプション

リクエストボディのテンプレート。これは argsToJsonBodyargsToUrlParam、および argsToFormBody と相互排他的です。

tools[].requestTemplate.argsToJsonBody

boolean

オプション

デフォルトは `false` です。`true` の場合、パラメーターは JSON リクエストボディとして直接使用されます。これは bodyargsToUrlParam、および argsToFormBody と相互排他的です。

tools[].requestTemplate.argsToUrlParam

boolean

オプション

デフォルトは `false` です。`true` の場合、パラメーターはクエリパラメーターとして URL に追加されます。これは bodyargsToJsonBody、および argsToFormBody と相互排他的です。

tools[].requestTemplate.argsToFormBody

boolean

オプション

デフォルトは `false` です。`true` の場合、パラメーターは application/x-www-form-urlencoded 形式でリクエストボディにエンコードされます。これは bodyargsToJsonBody、および argsToUrlParam と相互排他的です。

tools[].responseTemplate

object

必須

HTTP 応答変換テンプレート。

tools[].responseTemplate.body

string

オプション

レスポンスボディ変換テンプレート。これは prependBody および appendBody と相互排他的です。

tools[].responseTemplate.prependBody

string

オプション

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

tools[].responseTemplate.appendBody

string

オプション

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

tools[].security

object

オプション

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

tools[].security.id

string

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

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

tools[].security.passthrough

boolean

オプション

パススルー認証を有効にするかどうかを指定します。デフォルトは `false` です。true の場合、MCP クライアントリクエストから抽出された認証情報が requestTemplate.security で定義されている認証スキームに使用されます。

tools[].requestTemplate.security

object

オプション

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

tools[].requestTemplate.security.id

string

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

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

tools[].requestTemplate.security.credential

string

オプション

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

認証とセキュリティ

MCP サーバプラグインは、安全な通信を確保するために、柔軟な認証設定をサポートしています。

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

サーバーレベルで再利用可能な認証スキームのセットを定義できます。ツールはこれらのスキームを参照して、MCP サーバーがバックエンド HTTP API で認証する方法を設定できます。

構成フィールド (server.securitySchemes[]):

名前

データ型

必須

説明

id

string

必須

ツール設定によって参照される、認証スキームの一意の識別子。

type

string

必須

認証タイプ。サポートされているタイプは http (Basic 認証および Bearer 認証用) と apiKey です。

scheme

string

オプション

typehttp の場合、basicbearer などのスキームを指定します。

in

string

オプション

typeapiKey の場合、headerquery などの API キーの場所を指定します。

name

string

オプション

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

defaultCredential

string

オプション

このスキームのデフォルトの認証情報です。 たとえば、Basic Auth では user:password、Bearer トークンではトークン自体、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..." # デフォルトの Bearer トークン
    - 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 サーバーがバックエンド 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 を使用します

パススルー認証

パススルー認証機能により、AI アシスタントなどの MCP クライアントが MCP サーバーを呼び出すときに提供される認証情報を、MCP サーバーに直接渡すことができます。これらの認証情報は、バックエンド HTTP API への後続の呼び出しを認証するために使用されます。

設定方法:

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

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

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

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

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

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

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

例:

MCP クライアントが Bearer トークンを使用して MCP サーバーを呼び出し、MCP サーバーが API キーを使用してバックエンド HTTP API を呼び出す必要があると仮定します。

server:
  name: product-api-server
  securitySchemes:
    - id: ClientSideBearer # クライアントは Bearer トークンを使用
      type: http
      scheme: bearer
    - id: BackendApiKey    # バックエンド API は X-API-Key を使用
      type: apiKey
      in: header
      name: X-API-Key
      # defaultCredential: "optional_default_backend_key"

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

ワークフロー

  1. MCP クライアントは、MCP サーバー上の get-product-securely ツールにリクエストを送信します。リクエストは Authorization ヘッダーに Bearer <client_token> を含みます。

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

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

  4. MCP サーバーは、バックエンド HTTP API を呼び出す準備をします。requestTemplate.security (id: BackendApiKey) をチェックします。

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

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

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

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

サポートされるパラメータータイプ

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

パラメーター位置の制御

HTTP to MCP ツールは position フィールドをサポートしており、これにより各パラメーターのリクエスト内での位置を正確に制御できます。これにより、同じリクエストでパスパラメーター、クエリパラメーター、リクエストボディパラメーターを使用するなど、API リクエストを構築する際の柔軟性が向上します。

サポートされている位置タイプ

  • 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 はクッキーとしてリクエストに追加されます。

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

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

バッチパラメーター処理オプションとの関係

position を使用してパラメーターの場所を指定すると、パラメーターはそれに応じて処理されます。argsToJsonBodyargsToUrlParamargsToFormBody などの一括パラメーター処理オプションの影響は受けません。これらの一括オプションは、position が指定されていないパラメーターにのみ影響します。

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

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

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

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

  • position: cookie を持つパラメーターは cookie として追加されます。

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

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

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

リクエストパラメーターの受け渡しメソッド

position を使用して各パラメーターの場所を正確に制御することに加えて、HTTP to MCP ツールは 4 つの一括パラメーター処理メソッドもサポートしています。これらのオプションは相互排他的です。1 つだけ選択できます。

  1. body:テンプレートを使用して手動でリクエストボディを構築できます。これは最も柔軟な方法であり、リクエストボディのフォーマットを完全に制御できます。

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

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

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

    requestTemplate:
      argsToFormBody: true
    

これらのオプションは、リクエストボディや URL パラメーターを手動で構築することなく、一般的な API 呼び出しパターンの設定を簡素化します。これら 4 つのオプションは相互排他的であることに注意してください。単一のツール設定でそれらのうちの 1 つしか使用できません。複数のオプションを同時に設定すると、システムはエラーを報告し、ツール設定の読み込みを拒否します。

テンプレート構文

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

リクエストテンプレート

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

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

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

レスポンステンプレート

レスポンステンプレートを使用して、HTTP レスポンスを AI が消費するのに適したフォーマットに変換できます:

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

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

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

GJSON テンプレートには、Sprig のすべての関数が含まれています。文字列操作、算術演算、日付フォーマットなどの 70 以上のテンプレート関数を提供し、Helm のテンプレートと同等の機能を提供します。

一般的な Sprig 関数には次のものがあります:

  • 文字列操作trimupperlowerreplacepluralnospace

  • 算術演算: addsubmuldivmaxmin

  • 日付フォーマット: nowdatedateInZonedateModify

  • リスト操作: listfirstlastuniqsortAlpha

  • 辞書操作: dictgetsethasKeypluck

  • フロー制御: ternarydefaultemptycoalesce

  • 型変換: toStringtoJsontoPrettyJsontoRawJson

  • エンコード/デコード: b64encb64decurlqueryurlqueryescape

  • UUID 生成: uuidv4

利用可能なすべての関数の完全なリファレンスについては、Helm 関数ドキュメントをご参照ください。GJSON テンプレートには同じ関数セットが含まれています。

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 パス構文リファレンスについては、GJSON ドキュメントをご参照ください。

構成例

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

この設定では、Higress の組み込み `quark-search` MCP サーバーを使用します。この場合、サーバー名と API キーなどの必要な設定を指定するだけで済みます。ツールはサーバーで事前定義されているため、`tools` フィールドを設定する必要はありません。

基本例: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://HTTPapi.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 3}}
        - **{{dateFormat "15:04" $hour.time_epoch}}**: {{$hour.temp_c}}°C, {{$hour.condition.text}}
        {{end}}
        {{end}}

この例は以下を示しています:

  • 条件付きステートメント (if) を使用して温度警告を発行します。

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

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

  • ネストされたループを使用して、複数日および複数期間にわたる気象データを走査します。

prependBody と appendBody の使用例:OpenAPI 変換

prependBodyappendBody フィールドは、元の API レスポンスを保持しつつ、追加のコンテキストを加えたい場合に便利です。これは、OpenAPI または Swagger 仕様を MCP ツールに変換する際に特に価値があります。なぜなら、元の JSON レスポンスを保持しながら、AI アシスタントのためにフィールドの説明を提供できるからです。

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 を使用して、応答の最後に使用方法の提案を追加します。

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

テンプレート構文

テンプレートは GJSON テンプレート構文 (https://github.com/higress-group/gjson_template) を使用します。これは Go テンプレートと GJSON パス構文を組み合わせて JSON を処理します。テンプレートエンジンは以下の機能をサポートしています:

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

  2. `{{gjson "users.#(active==true)#.name"}}` のような複雑なクエリのための `gjson` 関数。

  3. `{{add}}`、`{{upper}}`、`{{lower}}`、`{{date}}` のような、Helm 関数に似たすべての Sprig テンプレート関数。

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

  5. 次のように変数を割り当てることができます:{{$var := .value}}。

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

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

AI アシスタントで HTTP to MCP 設定テンプレートを生成する場合、次のプロンプトを使用できます:

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

## 設定フォーマット
設定は次のフォーマットに従う必要があります:
```yaml
server:
  name: HTTP-api-server
  config:
    apiKey: あなたの API キー
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:
      # 以下の 3 つのオプションは相互排他的です。1 つだけ選択してください。
      body: 
|
 # 結果
 {{- range $index, $item := .items }}
 ## アイテム {{add $index 1}}
 - **名前**: {{ $item.name }}
 - **値**: {{ $item.value }}
 {{- end }}
 # または
 # prependBody: |
 #   # API レスポンスの説明
 #
 #   以下は生の JSON レスポンスです。フィールドの意味は次のとおりです:
 #   - field1: フィールド 1 の意味
 #   - field2: フィールド 2 の意味
 #
 # appendBody: |
 #
 #   このデータを使用して...

My API 情報

変換する HTTP API は次のとおりです:[ここに API を記述してください。エンドポイント、パラメーター、レスポンス形式を含めるか、Swagger/OpenAPI 仕様を貼り付けてください]。

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