HTTP-to-MCP 設定に関するフィールドリファレンスです。このガイドを参照して、カスタム YAML で MCP サービスのツールを統合してください。
設定フィールド
サーバー設定
|
名前 |
データ型 |
必須 |
説明 |
|
server.name |
文字列 |
必須 |
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 など。デフォルトは |
|
tools[].args[].required |
ブーリアン |
任意 |
パラメーターが必須かどうかを指定します。デフォルトは |
|
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 |
文字列 |
任意 |
リクエストボディテンプレート。 |
|
tools[].requestTemplate.argsToJsonBody |
ブーリアン |
任意 |
デフォルト: |
|
tools[].requestTemplate.argsToUrlParam |
ブーリアン |
任意 |
デフォルト: |
|
tools[].requestTemplate.argsToFormBody |
ブーリアン |
任意 |
デフォルト: |
|
tools[].responseTemplate |
object |
必須 |
HTTP レスポンスの変換テンプレート。 |
|
tools[].responseTemplate.body |
文字列 |
任意 |
レスポンスボディの変換テンプレート。 |
|
tools[].responseTemplate.prependBody |
文字列 |
任意 |
レスポンスボディの前に挿入するテキスト。 |
|
tools[].responseTemplate.appendBody |
文字列 |
任意 |
レスポンスボディの後に挿入するテキスト。 |
|
tools[].security |
object |
任意 |
ツールレベルのセキュリティ設定。MCP Client と MCP サーバー間の認証方法を定義し、認証情報パススルーをサポートします。 |
|
tools[].security.id |
文字列 |
|
|
|
tools[].security.passthrough |
ブーリアン |
任意 |
パススルー認証を有効にします。デフォルト: |
|
tools[].requestTemplate.security |
object |
任意 |
HTTP リクエストテンプレートのセキュリティ設定。MCP サーバーと HTTP API 間の認証方法を定義します。 |
|
tools[].requestTemplate.security.id |
文字列 |
|
|
|
tools[].requestTemplate.security.credential |
文字列 |
任意 |
|
認証とセキュリティ
MCP Server プラグインは、クライアント、MCP Server、バックエンド API 間の通信を保護するための柔軟な認証をサポートします。
認証スキームの定義 (server.securitySchemes)
サーバーレベルで再利用可能な認証スキームを定義します。ツールはこれらのスキームを参照して、バックエンド HTTP API に対する認証を行います。
設定フィールド (server.securitySchemes[]):
|
名前 |
データ型 |
必須 |
説明 |
|
id |
文字列 |
必須 |
認証スキームの一意の識別子です。ツール設定から参照されます。 |
|
type |
文字列 |
必須 |
認証タイプ。サポートされるタイプは |
|
scheme |
文字列 |
任意 |
|
|
in |
文字列 |
任意 |
|
|
name |
文字列 |
任意 |
|
|
defaultCredential |
文字列 |
任意 |
このスキームのデフォルトの認証情報です。例えば、ベーシック認証の場合は |
例 (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 への呼び出しを認証できます。
設定方法:
-
server.securitySchemesで関連する認証スキームが定義されていることを確認します。これには、クライアントが MCP Server に接続するために使用するスキームと、MCP Server がバックエンド HTTP API に接続するために使用するスキームが含まれます。 -
ツールレベルの認証を設定します (
tools[].security): 認証情報パススルーが必要なツールのsecurityフィールドを設定します:-
id:server.securitySchemesで定義された、MCP Client と MCP Server 間の認証に使用される認証スキームを参照します。プラグインは、このスキームに基づいてクライアントリクエストから認証情報を抽出し、元のリクエストからその認証情報を削除します。 -
passthrough: true: パススルー認証を有効にします。
-
-
リクエストテンプレート認証を設定します (
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
ワークフロー
-
MCP Client は、MCP Server の
get-product-securelyツールにリクエストを送信します。リクエストにはAuthorizationヘッダーにBearer <client_token>が含まれます。 -
MCP Server は、
tools[].security(id:ClientSideBearer) に基づいて、クライアントがベアラートークンを使用していることを識別します。リクエストから<client_token>を抽出し、元のAuthorizationヘッダーを削除します。 -
passthrough: trueが設定されているため、抽出された<client_token>はパススルー認証情報として扱われます。 -
MCP Server はバックエンド HTTP API を呼び出す準備をします。
requestTemplate.security(id:BackendApiKey) を確認します。 -
パススルーが有効になっているため、MCP Server は以前に抽出した
<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関数は、ベアラートークン値やベーシック認証の 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 つの一括パラメータ処理方法をサポートしています。これらのオプションは相互に排他的です。
-
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: true -
argsToUrlParam:
trueに設定すると、positionが指定されていないパラメーターが、クエリパラメーターとして URL に追加されます。requestTemplate: argsToUrlParam: true -
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 ドキュメントに記載されています。
構成例
組み込み MCP Server の使用例:quark-search の構成
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 がこのツールを呼び出すと、次の処理が実行されます。
-
指定された住所と都市パラメーターを使用して 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}}
- **{{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 パス構文を組み合わせたものです。サポートされている機能は次のとおりです:
-
{{.fieldName}}のようにフィールドにアクセスする、基本的なドット表記。 -
{{gjson "users.#(active==true)#.name"}}のように複雑なクエリを実行するgjson関数。 -
Helm 関数と同様の、
{{add}}、{{upper}}、{{lower}}、{{date}}といったすべての Sprig テンプレート関数。 -
{{if}}、{{range}}、{{with}}のような制御構造。 -
次のように変数を代入できます:
{{$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 リクエストボディからパラメーターを抽出します。リクエストヘッダーなど、他の位置からのパラメーター抽出は現在サポートされていません。