このドキュメントでは、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 | オプション | リクエストボディのテンプレート。これは |
tools[].requestTemplate.argsToJsonBody | boolean | オプション | デフォルトは `false` です。`true` の場合、パラメーターは JSON リクエストボディとして直接使用されます。これは |
tools[].requestTemplate.argsToUrlParam | boolean | オプション | デフォルトは `false` です。`true` の場合、パラメーターはクエリパラメーターとして URL に追加されます。これは |
tools[].requestTemplate.argsToFormBody | boolean | オプション | デフォルトは `false` です。`true` の場合、パラメーターは |
tools[].responseTemplate | object | 必須 | HTTP 応答変換テンプレート。 |
tools[].responseTemplate.body | string | オプション | レスポンスボディ変換テンプレート。これは |
tools[].responseTemplate.prependBody | string | オプション | レスポンスボディの前に挿入するテキスト。これは |
tools[].responseTemplate.appendBody | string | オプション | レスポンスボディの後ろに挿入するテキスト。これは |
tools[].security | object | オプション | ツールレベルのセキュリティ設定。MCP クライアントと MCP サーバー間の認証方式を定義し、認証情報のパススルーをサポートします。 |
tools[].security.id | string |
|
|
tools[].security.passthrough | boolean | オプション | パススルー認証を有効にするかどうかを指定します。デフォルトは `false` です。 |
tools[].requestTemplate.security | object | オプション | HTTP リクエストテンプレートのセキュリティ設定。MCP サーバーと HTTP API 間の認証方式を定義します。 |
tools[].requestTemplate.security.id | string |
|
|
tools[].requestTemplate.security.credential | string | オプション |
|
認証とセキュリティ
MCP サーバプラグインは、安全な通信を確保するために、柔軟な認証設定をサポートしています。
認証スキームの定義 (server.securitySchemes)
サーバーレベルで再利用可能な認証スキームのセットを定義できます。ツールはこれらのスキームを参照して、MCP サーバーがバックエンド HTTP API で認証する方法を設定できます。
構成フィールド (server.securitySchemes[]):
名前 | データ型 | 必須 | 説明 |
id | string | 必須 | ツール設定によって参照される、認証スキームの一意の識別子。 |
type | string | 必須 | 認証タイプ。サポートされているタイプは |
scheme | string | オプション |
|
in | string | オプション |
|
name | string | オプション |
|
defaultCredential | string | オプション | このスキームのデフォルトの認証情報です。 たとえば、Basic Auth では |
例 (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 への後続の呼び出しを認証するために使用されます。
設定方法:
関連する認証スキームが
server.securitySchemesで定義されていることを確認します。これには、クライアントが MCP サーバーに接続するために使用するスキームと、MCP サーバーがバックエンド HTTP API に接続するために使用するスキームが含まれます。ツールレベルの認証を設定します (
tools[].security):認証情報のパススルーが必要なツールの場合、securityフィールドを設定します:id:MCP クライアントと MCP サーバー間の認証に使用されるserver.securitySchemesで定義された認証スキームを参照します。プラグインは、このスキームに基づいてクライアントリクエストから認証情報を抽出し、元のリクエストからその認証情報を削除します。passthrough: true:パススルー認証を有効にします。
リクエストテンプレートの認証を設定します (
tools[].requestTemplate.security):ツールのrequestTemplateでsecurityフィールドを設定します:id:MCP サーバーとバックエンド HTTP API 間の認証に使用されるserver.securitySchemesで定義された認証スキームを参照します。tools[].security.passthroughがtrueに設定されている場合、クライアントから抽出された認証情報は、この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
ワークフロー
MCP クライアントは、MCP サーバー上の
get-product-securelyツールにリクエストを送信します。リクエストはAuthorizationヘッダーにBearer <client_token>を含みます。MCP サーバーは、
tools[].security(id:ClientSideBearer) に基づいて、クライアントが Bearer トークンを使用していることを識別します。リクエストから<client_token>を抽出し、元のAuthorizationヘッダーを削除します。passthrough: trueが設定されているため、抽出された<client_token>はパススルー認証情報としてマークされます。MCP サーバーは、バックエンド HTTP API を呼び出す準備をします。
requestTemplate.security(id:BackendApiKey) をチェックします。パススルーが有効になっているため、MCP サーバーは以前に抽出した
<client_token>を認証情報の値として使用します。BackendApiKeyスキームに従って、この値をX-API-Keyという名前の HTTP ヘッダーとしてhttps://api.example.com/products/...へのリクエストに追加します。バックエンド HTTP API は、
X-API-Keyヘッダーが<client_token>に設定されたリクエストを受信します。
tools[].security.passthroughがtrueに設定されている場合、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 を使用してパラメーターの場所を指定すると、パラメーターはそれに応じて処理されます。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 を持つすべてのパラメーターは無視されます。
リクエストパラメーターの受け渡しメソッド
position を使用して各パラメーターの場所を正確に制御することに加えて、HTTP to MCP ツールは 4 つの一括パラメーター処理メソッドもサポートしています。これらのオプションは相互排他的です。1 つだけ選択できます。
body:テンプレートを使用して手動でリクエストボディを構築できます。これは最も柔軟な方法であり、リクエストボディのフォーマットを完全に制御できます。
requestTemplate: body: | { "query": "{{.args.query}}", "filters": {{toJson .args.filters}}, "options": { "limit": {{.args.limit}} } }argsToJsonBody:
trueに設定すると、指定されたpositionを持たないパラメーターがリクエストボディの JSON オブジェクトとして送信されます。Content-Type: application/json; charset=utf-8ヘッダーが自動的に追加されます。requestTemplate: argsToJsonBody: trueargsToUrlParam:
trueに設定すると、指定されたpositionを持たないパラメーターが URL にクエリパラメーターとして追加されます。requestTemplate: argsToUrlParam: trueargsToFormBody:
trueに設定すると、指定された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 パス構文を使用します。
add、upper、lowerなどのテンプレート関数を使用できます。ifやrangeなどの制御構造を使用できます。
GJSON テンプレートには、Sprig のすべての関数が含まれています。文字列操作、算術演算、日付フォーマットなどの 70 以上のテンプレート関数を提供し、Helm のテンプレートと同等の機能を提供します。
一般的な 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、urlqueryescapeUUID 生成:
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 ドキュメントをご参照ください。
構成例
組み込み MCP サーバーの使用例:quark-search の設定
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 がこのツールを呼び出すと:
提供された住所と都市のパラメーターを使用して API リクエストを構築します。
AMAP API を呼び出します。
JSON レスポンスを読みやすい Markdown 形式に変換します。
フォーマットされた結果を 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 変換
prependBody と appendBody フィールドは、元の 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 を処理します。テンプレートエンジンは以下の機能をサポートしています:
`{{.fieldName}}` のような基本的なドット表記でフィールドにアクセスします。
`{{gjson "users.#(active==true)#.name"}}` のような複雑なクエリのための `gjson` 関数。
`{{add}}`、`{{upper}}`、`{{lower}}`、`{{date}}` のような、Helm 関数に似たすべての Sprig テンプレート関数。
`{{if}}`、`{{range}}`、`{{with}}` のような制御構造。
次のように変数を割り当てることができます:{{$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。