Referensi field untuk konfigurasi HTTP-ke-MCP. Gunakan panduan ini untuk mengintegrasikan tools ke layanan MCP Anda dengan YAML kustom.
Field konfigurasi
Konfigurasi server
|
Name |
Data type |
Required |
Description |
|
server.name |
string |
Required |
Nama server MCP. Untuk plugin server bawaan seperti `quark-search`, atur nilai ini ke nama server dan abaikan field `tools`. Untuk skenario HTTP-ke-MCP, gunakan nilai apa pun. |
|
server.config |
object |
Optional |
Konfigurasi server, seperti API key. |
|
server.securitySchemes |
array[object] |
Optional |
Menentukan skema autentikasi yang dapat digunakan kembali oleh tools sebagai referensi. Untuk informasi selengkapnya, lihat Autentikasi dan keamanan. |
Konfigurasi tools yang diizinkan
|
Name |
Data type |
Required |
Description |
|
allowTools |
array[string] |
Optional |
Tools yang diizinkan untuk dipanggil. Jika diabaikan, semua tools diizinkan. |
Konfigurasi tool HTTP ke MCP
|
Name |
Data type |
Required |
Description |
|
tools |
array[object] |
Optional |
Daftar konfigurasi tool HTTP ke MCP. |
|
tools[].name |
string |
Required |
Nama tool. |
|
tools[].description |
string |
Required |
Deskripsi fungsi tool. |
|
tools[].args |
array[object] |
Required |
Definisi parameter alat. |
|
tools[].args[].name |
string |
Required |
Nama parameter. |
|
tools[].args[].description |
string |
Required |
Deskripsi parameter. |
|
tools[].args[].type |
string |
Optional |
Tipe parameter, seperti string, number, integer, boolean, array, atau object. Nilai default adalah `string`. |
|
tools[].args[].required |
boolean |
Optional |
Menentukan apakah parameter wajib diisi. Nilai default adalah `false`. |
|
tools[].args[].default |
any |
(Optional) |
Nilai default parameter. |
|
tools[].args[].enum |
array |
Optional |
Daftar nilai yang diizinkan untuk parameter. |
|
tools[].args[].items |
object |
Optional |
Skema untuk item array ketika `type` bernilai `array`. |
|
tools[].args[].properties |
object |
Optional |
Skema untuk properti object ketika `type` bernilai `object`. |
|
tools[].args[].position |
string |
Optional |
Posisi parameter dalam permintaan, seperti query, path, header, cookie, atau body. |
|
tools[].requestTemplate |
object |
Required |
Templat permintaan HTTP. |
|
tools[].requestTemplate.url |
string |
Required |
Templat URL permintaan. |
|
tools[].requestTemplate.method |
string |
Required |
Metode HTTP, seperti GET atau POST. |
|
tools[].requestTemplate.headers |
array[object] |
Optional |
Templat header permintaan. |
|
tools[].requestTemplate.headers[].key |
string |
Required |
Nama header permintaan. |
|
tools[].requestTemplate.headers[].value |
string |
Required |
Templat nilai header permintaan. |
|
tools[].requestTemplate.body |
string |
Optional |
Templat body permintaan. Ini saling eksklusif dengan |
|
tools[].requestTemplate.argsToJsonBody |
boolean |
Optional |
Default: `false`. Ketika `true`, mengirim parameter sebagai body permintaan JSON. Saling eksklusif dengan |
|
tools[].requestTemplate.argsToUrlParam |
boolean |
Optional |
Default: `false`. Ketika `true`, menambahkan parameter ke URL sebagai parameter kueri. Saling eksklusif dengan |
|
tools[].requestTemplate.argsToFormBody |
boolean |
Optional |
Default: `false`. Ketika `true`, mengenkapsulasi parameter dalam body permintaan sebagai |
|
tools[].responseTemplate |
object |
Required |
Templat transformasi respons HTTP. |
|
tools[].responseTemplate.body |
string |
Optional |
Templat transformasi body respons. Ini saling eksklusif dengan |
|
tools[].responseTemplate.prependBody |
string |
Optional |
Teks yang disisipkan sebelum body respons. Ini saling eksklusif dengan |
|
tools[].responseTemplate.appendBody |
string |
Optional |
Teks yang disisipkan setelah body respons. Ini saling eksklusif dengan |
|
tools[].security |
object |
Optional |
Konfigurasi keamanan tingkat tool. Menentukan metode autentikasi antara MCP Client dan MCP Server, dengan dukungan credential passthrough. |
|
tools[].security.id |
string |
Required when |
Mereferensikan ID skema autentikasi yang didefinisikan di |
|
tools[].security.passthrough |
boolean |
Optional |
Mengaktifkan autentikasi passthrough. Default: `false`. Ketika |
|
tools[].requestTemplate.security |
object |
Optional |
Konfigurasi keamanan untuk templat permintaan HTTP. Ini menentukan metode autentikasi antara MCP Server dan API HTTP. |
|
tools[].requestTemplate.security.id |
string |
Required when |
Mereferensikan ID skema autentikasi yang didefinisikan di |
|
tools[].requestTemplate.security.credential |
string |
Optional |
Mengganti kredensial default yang didefinisikan di |
Autentikasi dan keamanan
Plugin MCP Server mendukung autentikasi fleksibel untuk mengamankan komunikasi antara client, MCP Server, dan API backend.
Menentukan skema autentikasi (server.securitySchemes)
Tentukan skema autentikasi yang dapat digunakan kembali di tingkat server. Tools mereferensikan skema ini untuk melakukan autentikasi dengan API HTTP backend.
Field konfigurasi (server.securitySchemes[]):
|
Name |
Data type |
Required |
Description |
|
id |
string |
Required |
Identifier unik untuk skema autentikasi, direferensikan oleh konfigurasi tool. |
|
type |
string |
Required |
Jenis autentikasi. Jenis yang didukung adalah |
|
scheme |
string |
Optional |
Ketika |
|
in |
string |
Optional |
Ketika |
|
name |
string |
Optional |
Ketika |
|
defaultCredential |
string |
Optional |
Kredensial default untuk skema ini. Misalnya, untuk Basic Auth, nilainya bisa berupa |
Contoh (server.securitySchemes):
server:
name: my-api-server
securitySchemes:
- id: MyBasicAuth
type: http
scheme: basic
defaultCredential: "admin:secretpassword" # Username dan password default
- id: MyBearerToken
type: http
scheme: bearer
defaultCredential: "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9..." # Bearer Token default
- id: MyApiKeyInHeader
type: apiKey
in: header
name: X-Custom-API-Key # API key berada di header bernama X-Custom-API-Key
defaultCredential: "abcdef123456" # API key default
- id: MyApiKeyInQuery
type: apiKey
in: query
name: "api_token" # API key berada di parameter kueri bernama api_token
defaultCredential: "uvwxyz789012"
Menerapkan skema autentikasi dalam tools
Setelah mendefinisikan server.securitySchemes, referensikan skema tersebut dalam field requestTemplate.security masing-masing tool menggunakan id untuk menentukan cara MCP Server melakukan autentikasi dengan API HTTP backend.
-
tools[].requestTemplate.security.id: Mereferensikanidskema autentikasi yang didefinisikan diserver.securitySchemes. -
tools[].requestTemplate.security.credential: Opsional. Jika disediakan, field ini menggantidefaultCredentialdalam skema yang direferensikan. Hal ini memungkinkan Anda menggunakan kredensial berbeda untuk tool tertentu, meskipun menggunakan mekanisme autentikasi yang sama.
Contoh:
tools:
- name: get-user-details
# ... konfigurasi tool lainnya ...
requestTemplate:
url: "https://api.example.com/users/{{.args.userId}}"
method: GET
security:
id: MyBearerToken # Menggunakan skema MyBearerToken yang didefinisikan di atas
# credential: "override_token_for_this_tool" # Opsional: Mengganti token default untuk tool ini
# ...
- name: update-inventory
# ... konfigurasi tool lainnya ...
requestTemplate:
url: "https://api.example.com/inventory/{{.args.itemId}}"
method: POST
security:
id: MyApiKeyInHeader # Menggunakan skema MyApiKeyInHeader
# Tool ini akan menggunakan defaultCredential yang didefinisikan di MyApiKeyInHeader
Autentikasi passthrough
Autentikasi passthrough memungkinkan kredensial yang diberikan oleh MCP Client diteruskan melalui MCP Server untuk mengautentikasi panggilan ke API HTTP backend.
Metode konfigurasi:
-
Pastikan skema autentikasi yang relevan telah didefinisikan di
server.securitySchemes. Ini mencakup skema yang digunakan client untuk terhubung ke MCP Server dan skema yang digunakan MCP Server untuk terhubung ke API HTTP backend. -
Konfigurasikan autentikasi tingkat tool (
tools[].security): Untuk tool yang memerlukan credential passthrough, konfigurasikan fieldsecurity:-
id: Mereferensikan skema autentikasi yang didefinisikan diserver.securitySchemesyang digunakan untuk autentikasi antara MCP Client dan MCP Server. Plugin mengekstraksi kredensial dari permintaan client berdasarkan skema ini dan menghapus kredensial tersebut dari permintaan asli. -
passthrough: true: Mengaktifkan autentikasi passthrough.
-
-
Konfigurasikan autentikasi templat permintaan (
tools[].requestTemplate.security): Konfigurasikan fieldsecuritydalamrequestTemplatetool:-
id: Mereferensikan skema autentikasi yang didefinisikan diserver.securitySchemesyang digunakan untuk autentikasi antara MCP Server dan API HTTP backend. -
Ketika
tools[].security.passthroughdiatur ketrue, kredensial yang diekstraksi dari client diterapkan pada panggilan ke API HTTP backend sesuai dengan skemarequestTemplate.securityini.
-
Contoh:
Asumsikan bahwa client MCP menggunakan Bearer Token untuk memanggil MCP Server, dan MCP Server perlu menggunakan API key untuk memanggil API HTTP backend.
server:
name: product-api-server
securitySchemes:
- id: ClientSideBearer # Client menggunakan Bearer Token
type: http
scheme: bearer
- id: BackendApiKey # API backend menggunakan X-API-Key
type: apiKey
in: header
name: X-API-Key
# defaultCredential: "optional_default_backend_key"
tools:
- name: get-product-securely
description: "Dapatkan informasi produk (passthrough aman)"
security: # Konfigurasi autentikasi Client -> MCP Server
id: ClientSideBearer # MCP Server mengharapkan client menggunakan skema ini dan akan mencoba mengekstraksi jenis kredensial ini
passthrough: true # Izinkan credential passthrough
args:
- name: product_id
description: "ID Produk"
type: string
required: true
requestTemplate:
security: # Konfigurasi autentikasi MCP Server -> API HTTP backend
id: BackendApiKey # API backend memerlukan skema ini. Kredensial passthrough akan diterapkan sesuai skema ini.
url: "https://api.example.com/products/{{.args.product_id}}"
method: GET
Alur kerja
-
Client MCP mengirim permintaan ke tool
get-product-securelydi MCP Server. Permintaan membawaBearer <client_token>di headerAuthorization. -
MCP Server mengidentifikasi bahwa client menggunakan Bearer Token berdasarkan
tools[].security(id:ClientSideBearer). Server mengekstraksi<client_token>dari permintaan dan menghapus headerAuthorizationasli. -
Karena
passthrough: truediatur,<client_token>yang diekstraksi ditandai sebagai kredensial passthrough. -
MCP Server bersiap memanggil API HTTP backend. Server memeriksa
requestTemplate.security(id:BackendApiKey). -
Karena passthrough diaktifkan, MCP Server menggunakan
<client_token>yang diekstraksi sebelumnya sebagai nilai kredensial. Server menambahkan nilai ini ke permintaan kehttps://api.example.com/products/...sebagai header HTTP bernamaX-API-Key, sesuai dengan skemaBackendApiKey. -
API HTTP backend menerima permintaan dengan header
X-API-Keyyang diatur ke<client_token>.
-
Ketika
tools[].security.passthroughdiatur ketrue, fieldrequestTemplate.security.credentialdiabaikan. Kredensial passthrough memiliki prioritas lebih tinggi. -
Nilai kredensial passthrough digunakan langsung untuk skema autentikasi yang ditentukan oleh
requestTemplate.security. Pastikan format kredensial kompatibel dengan skema autentikasi target. FungsiextractAndRemoveIncomingCredentialmencoba mengekstraksi bagian inti kredensial, seperti nilai Bearer token atau bagian yang dienkapsulasi Base64 dari autentikasi Basic.
Pemecahan masalah: Kredensial passthrough tidak berlaku
Jika kredensial yang diteruskan dari client tidak diterapkan pada panggilan API HTTP backend, dan MCP Server kembali menggunakan defaultCredential yang didefinisikan di server.securitySchemes, periksa item konfigurasi berikut:
-
Pastikan passthrough diaktifkan di tingkat tool: Periksa bahwa
tools[].security.passthroughdiatur ketrueuntuk tool tertentu. Passthrough hanya berlaku untuk tool tempat dikonfigurasi secara eksplisit; bukan pengaturan global. -
Pastikan skema autentikasi yang direferensikan sesuai dengan jenis kredensial yang dikirim oleh client atau SDK: Periksa bahwa skema yang direferensikan oleh
tools[].security.id(misalnya,ClientSideBearer) sesuai dengan jenis kredensial aktual yang dikirim oleh client atau SDK. Jika skema mengharapkan Bearer Token tetapi client mengirim jenis kredensial berbeda, MCP Server tidak dapat mengekstraksi kredensial passthrough dengan benar. -
Pastikan
defaultCredentialadalah kredensial yang valid dan dapat digunakan: Periksa nilaidefaultCredentialyang dikonfigurasi di bawah skema yang sesuai diserver.securitySchemes. Nilai ini harus merupakan kredensial valid yang diterima oleh API HTTP backend (misalnya, JWT yang diformat dengan baik untuk skema Bearer Token), bukan placeholder templat. Ketika passthrough tidak berlaku, MCP Server kembali menggunakandefaultCredentialuntuk panggilan backend. JikadefaultCredentialtidak valid, autentikasi terhadap API HTTP backend gagal.
Tipe parameter yang didukung
Tool HTTP-ke-MCP mendukung tipe parameter berikut:
-
string: Tipe string. Ini adalah nilai default.
-
number: Tipe angka (bilangan titik mengambang).
-
integer: Tipe bilangan bulat.
-
boolean: Tipe Boolean (true/false).
-
array: Tipe array. Anda dapat menggunakan field
itemsuntuk menentukan skema elemen array. -
object: Tipe objek. Anda dapat menggunakan field
propertiesuntuk menentukan skema properti objek.
Contoh:
args:
- name: query
description: "Kata kunci pencarian"
type: string
required: true
- name: limit
description: "Jumlah hasil yang dikembalikan"
type: integer
default: 10
- name: filters
description: "Kondisi filter"
type: object
properties:
category:
type: string
enum: ["food", "hotel", "attraction"]
price:
type: integer
minimum: 0
- name: coordinates
description: "Daftar koordinat"
type: array
items:
type: object
properties:
lat:
type: number
lng:
type: number
Kontrol posisi parameter
Field position mengontrol tempat setiap parameter ditempatkan dalam permintaan HTTP. Hal ini memungkinkan pencampuran parameter path, query, header, cookie, dan body dalam satu tool.
Jenis posisi yang didukung
-
query: Parameter dilewatkan sebagai parameter kueri di URL.
-
path: Parameter menggantikan placeholder path di URL, seperti
{petId}di/pet/{petId}. -
header: Parameter dilewatkan dalam header HTTP.
-
cookie: Parameter dilewatkan sebagai cookie.
-
body: Parameter dilewatkan dalam body permintaan. Secara otomatis diformat sebagai JSON atau form berdasarkan tipe konten.
Contoh
args:
- name: petId
description: "ID Hewan Peliharaan"
type: string
required: true
position: path
- name: token
description: "Token autentikasi"
type: string
required: true
position: header
- name: sessionId
description: "ID Sesi"
type: string
position: cookie
- name: limit
description: "Jumlah hasil yang dikembalikan"
type: integer
default: 10
position: query
- name: tags
description: "Daftar tag"
type: array
position: body
Dalam contoh di atas:
-
petIdmenggantikan placeholder{petId}di URL. -
tokenditambahkan ke permintaan sebagai header HTTP. -
sessionIdditambahkan ke permintaan sebagai cookie. -
limitditambahkan ke URL sebagai parameter kueri. -
tagsditambahkan ke body permintaan.
Hubungan dengan opsi penanganan parameter batch
Parameter dengan position yang ditentukan tidak terpengaruh oleh opsi batch (argsToJsonBody, argsToUrlParam, argsToFormBody). Opsi batch hanya berlaku untuk parameter tanpa position yang ditentukan.
Sebagai contoh, jika Anda menggunakan position dan argsToJsonBody secara bersamaan:
-
Parameter dengan
position: queryditambahkan ke string kueri URL. -
Parameter dengan
position: headerditambahkan ke header HTTP. -
Parameter dengan
position: pathmenggantikan placeholder di URL. -
Parameter dengan
position: cookieditambahkan sebagai cookie. -
Parameter dengan
position: bodyditambahkan ke body permintaan JSON. -
Parameter tanpa
positionyang ditentukan ditambahkan ke body permintaan JSON olehargsToJsonBody.
Selain itu, jika Anda secara eksplisit menentukan body di requestTemplate, semua parameter dengan position: body diabaikan untuk menghindari konflik.
Metode pengiriman parameter permintaan
Selain kontrol position per parameter, tool HTTP-ke-MCP mendukung empat metode penanganan parameter batch. Opsi ini saling eksklusif:
-
body: Anda dapat membangun body permintaan secara manual menggunakan templat. Ini adalah metode paling fleksibel dan memberi Anda kontrol penuh atas format body permintaan.
requestTemplate: body: | { "query": "{{.args.query}}", "filters": {{toJson .args.filters}}, "options": { "limit": {{.args.limit}} } } -
argsToJsonBody: Jika diatur ke
true, parameter yang tidak memilikipositionyang ditentukan dikirim sebagai objek JSON dalam body permintaan. HeaderContent-Type: application/json; charset=utf-8ditambahkan secara otomatis.requestTemplate: argsToJsonBody: true -
argsToUrlParam: Menambahkan parameter tanpa
positionyang ditentukan ke URL sebagai parameter kueri ketika diatur ketrue.requestTemplate: argsToUrlParam: true -
argsToFormBody: Ketika diatur ke
true, parameter yang tidak memilikipositionyang ditentukan dienkapsulasi dalam body permintaan dalam formatapplication/x-www-form-urlencoded. Header Content-Type yang sesuai ditambahkan secara otomatis.requestTemplate: argsToFormBody: true
Opsi ini menyederhanakan pola pemanggilan API umum. Hanya satu opsi yang dapat digunakan per konfigurasi tool — mengonfigurasi beberapa opsi menyebabkan error saat dimuat.
Sintaksis templat
Fitur HTTP-ke-MCP menggunakan library GJSON Template untuk rendering templat. Library ini menggabungkan sintaksis templat Go dengan sintaksis path GJSON yang kuat.
Templat permintaan
Anda dapat menggunakan templat permintaan untuk membuat URL, header, dan body permintaan HTTP:
-
Untuk mengakses nilai konfigurasi, gunakan
.config.fieldName. -
Untuk mengakses parameter tool, gunakan
.args.parameterName.
Templat respons
Anda dapat menggunakan templat respons untuk mengubah respons HTTP menjadi format yang sesuai untuk konsumsi AI:
-
Untuk mengakses field respons JSON, gunakan sintaksis path GJSON.
-
Anda dapat menggunakan fungsi templat seperti
add,upper, danlower. -
Anda dapat menggunakan struktur kontrol seperti
ifdanrange.
GJSON Template mencakup semua fungsi Sprig (70+ fungsi setara dengan templat Helm):
Fungsi Sprig umum meliputi:
-
Manipulasi string:
trim,upper,lower,replace,plural,nospace -
Operasi matematika:
add,sub,mul,div,max,min -
Pemformatan tanggal:
now,date,dateInZone,dateModify -
Operasi daftar:
list,first,last,uniq,sortAlpha -
Operasi kamus:
dict,get,set,hasKey,pluck -
Kontrol alur:
ternary,default,empty,coalesce -
Konversi tipe:
toString,toJson,toPrettyJson,toRawJson -
Enkode/Dekode:
b64enc,b64dec,urlquery,urlqueryescape -
Generasi UUID:
uuidv4
GJSON Template mencakup set fungsi yang sama dengan fungsi templat Helm.
Sintaksis path GJSON
GJSON menyediakan kemampuan kueri JSON yang kuat:
-
Notasi titik:
address.city -
Indeks array:
users.0.name -
Iterasi array:
users.#.name -
Filter array:
users.#(age>=30)#.name -
Pengubah:
users.@reverse.#.name -
Path ganda:
{name:users.0.name,count:users.#} -
Karakter escape:
path.with\.dot
Untuk kueri yang lebih kompleks, Anda dapat menggunakan fungsi gjson:
<!-- Gunakan fungsi gjson untuk kueri kompleks -->
Active users: {{gjson "users.#(active==true)#.name"}}
<!-- Filter array dengan beberapa kondisi -->
Active developers over 30: {{gjson "users.#(active==true && age>30)#.name"}}
<!-- Menggunakan pengubah -->
Usernames (reversed): {{gjson "users.@reverse.#.name"}}
<!-- Iterasi hasil yang difilter -->
Administrators:
{{range $user := gjson "users.#(roles.#(==admin)>0)#"}}
- {{$user.name}} ({{$user.age}})
{{end}}
Sintaksis path lengkap didokumentasikan dalam dokumentasi GJSON.
Contoh konfigurasi
Contoh penggunaan server MCP bawaan: Mengonfigurasi quark-search
server:
name: "quark-search"
config:
apiKey: "xxxx"
Menggunakan server MCP bawaan `quark-search` di Higress. Hanya nama server dan konfigurasi yang diperlukan seperti API key yang dibutuhkan — tools telah ditentukan sebelumnya.
Contoh dasar: Mengubah API AMAP
server:
name: HTTP-amap-server
config:
apiKey: your-api-key-here
tools:
- name: maps-geo
description: "Mengonversi alamat terstruktur yang detail menjadi koordinat lintang dan bujur. Mendukung resolusi landmark, tempat wisata, dan nama bangunan menjadi koordinat."
args:
- name: address
description: "Alamat terstruktur yang akan diresolusi."
type: string
required: true
- name: city
description: "Kota yang akan dikueri."
type: string
required: false
- name: output
description: "Format output."
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: |
# Informasi Geocoding
{{- range $index, $geo := .geocodes }}
## Lokasi {{add $index 1}}
- **Negara**: {{ $geo.country }}
- **Provinsi**: {{ $geo.province }}
- **Kota**: {{ $geo.city }}
- **Kode Kota**: {{ $geo.citycode }}
- **Distrik**: {{ $geo.district }}
- **Jalan**: {{ $geo.street }}
- **Nomor Jalan**: {{ $geo.number }}
- **Adcode**: {{ $geo.adcode }}
- **Lokasi**: {{ $geo.location }}
- **Level**: {{ $geo.level }}
{{- end }}
Konfigurasi ini mengubah API geocoding AMAP menjadi tool yang dapat dipanggil AI. Ketika AI memanggil tool ini:
-
Membuat permintaan API menggunakan parameter alamat dan kota yang diberikan.
-
Memanggil API AMAP.
-
Mengubah respons JSON menjadi format Markdown yang mudah dibaca.
-
Mengembalikan hasil yang diformat ke asisten AI.
Contoh lanjutan: Penanganan respons kompleks dengan logika kondisional
server:
name: weather-api-server
config:
apiKey: your-weather-api-key
tools:
- name: get-weather
description: "Mendapatkan prakiraan cuaca untuk kota yang ditentukan."
args:
- name: city
description: "Nama kota"
type: string
required: true
- name: days
description: "Jumlah hari (1-7)"
type: integer
required: false
default: 3
- name: include_hourly
description: "Menentukan apakah akan menyertakan prakiraan per jam."
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: |
# Prakiraan Cuaca {{.location.name}}, {{.location.country}}
**Suhu Saat Ini**: {{.current.temp_c}}°C
**Terasa Seperti**: {{.current.feelslike_c}}°C
**Kondisi**: {{.current.condition.text}}
**Kelembapan**: {{.current.humidity}}%
**Kecepatan Angin**: {{.current.wind_kph}} km/jam
## Prakiraan Mendatang
{{range $index, $day := .forecast.forecastday}}
### {{$day.date}} ({{dateFormat "Monday" $day.date_epoch | title}})
{{if gt $day.day.maxtemp_c 30}}**Peringatan suhu tinggi!**{{end}}
{{if lt $day.day.mintemp_c 0}}**Peringatan suhu rendah!**{{end}}
- **Suhu Maksimum**: {{$day.day.maxtemp_c}}°C
- **Suhu Minimum**: {{$day.day.mintemp_c}}°C
- **Kemungkinan Hujan**: {{$day.day.daily_chance_of_rain}}%
- **Kondisi**: {{$day.day.condition.text}}
#### Prakiraan Per Jam
{{range $hour := slice $day.hour 6 24 3}}
- **{{dateFormat "15:04" $hour.time_epoch}}**: {{$hour.temp_c}}°C, {{$hour.condition.text}}
{{end}}
{{end}}
```<p>Contoh ini menunjukkan cara:</p><ul><li><p>Menggunakan pernyataan kondisional (<code data-tag="code" dir="auto" id="8a2cd16431wep">if
Contoh ini menunjukkan:
-
Menggunakan pernyataan kondisional (
if) untuk memberikan peringatan suhu. -
Menggunakan fungsi pemformatan tanggal (
dateFormat) untuk memformat tanggal. -
Menggunakan irisan array (
slice) untuk memilih data cuaca pada waktu tertentu. -
Menggunakan loop bersarang untuk menjelajahi data cuaca di beberapa hari dan periode waktu.
Contoh penggunaan prependBody dan appendBody: Transformasi OpenAPI
Gunakan prependBody dan appendBody untuk menambahkan konteks di sekitar respons API asli. Ini berguna untuk transformasi OpenAPI di mana Anda mempertahankan JSON mentah tetapi menambahkan penjelasan field untuk asisten AI.
server:
name: product-api-server
config:
apiKey: your-api-key-here
tools:
- name: get-product
description: "Dapatkan detail produk"
args:
- name: product_id
description: "ID Produk"
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: |
# Informasi Produk
Berikut adalah detail produk, dikembalikan dalam format JSON. Deskripsi field:
- **id**: Identifier unik produk
- **name**: Nama produk
- **description**: Deskripsi produk
- **price**: Harga produk (USD)
- **category**: Kategori produk
- **inventory**: Informasi inventaris
- **quantity**: Jumlah stok saat ini
- **warehouse**: Lokasi gudang
- **ratings**: Daftar rating pengguna
- **score**: Rating (1-5)
- **comment**: Konten komentar
appendBody: |
Anda dapat menggunakan informasi ini untuk memahami detail produk, harga, status inventaris, dan ulasan pengguna.
Contoh ini menunjukkan cara:
-
Menggunakan
prependBodyuntuk menambahkan deskripsi field sebelum respons JSON asli. -
Menggunakan
appendBodyuntuk menambahkan saran penggunaan di akhir respons. -
Mempertahankan respons JSON asli agar asisten AI dapat langsung mengakses semua data.
Sintaksis templat
Templat menggunakan sintaksis GJSON Template, yang menggabungkan templat Go dengan sintaksis path GJSON untuk pemrosesan JSON. Fitur yang didukung:
-
Notasi titik dasar untuk mengakses field, seperti `{{.fieldName}}`.
-
Fungsi `gjson` untuk kueri kompleks, seperti `{{gjson "users.#(active==true)#.name"}}`.
-
Semua fungsi templat Sprig, yang mirip dengan fungsi Helm, seperti `{{add}}`, `{{upper}}`, `{{lower}}`, dan `{{date}}`.
-
Struktur kontrol, seperti `{{if}}`, `{{range}}`, dan `{{with}}`.
-
Anda dapat menetapkan variabel sebagai berikut: {{$var := .value}}.
Untuk respons JSON kompleks, Anda dapat menggunakan kemampuan filter dan kueri GJSON untuk mengekstraksi informasi penting.
Templat pembuatan prompt AI
Gunakan prompt berikut untuk menghasilkan konfigurasi HTTP-ke-MCP dengan asisten AI:
Bantu saya membuat konfigurasi HTTP-ke-MCP Higress untuk mengubah API HTTP menjadi tool MCP.
## Format Konfigurasi
Konfigurasi harus mengikuti format ini:
```yaml
server:
name: HTTP-api-server
config:
apiKey: Your API key
tools:
- name: tool-name
description: "Deskripsi detail tentang fungsi tool ini"
args:
- name: arg1
description: "Deskripsi parameter 1"
type: string
required: true
position: path
- name: arg2
description: "Deskripsi parameter 2"
type: integer
required: false
default: 10
position: query
- name: arg3
description: "Deskripsi parameter 3"
type: array
items:
type: string
position: body
- name: arg4
description: "Deskripsi parameter 4"
type: object
properties:
subfield1:
type: string
subfield2:
type: number
requestTemplate:
url: "https://api.example.com/endpoint"
method: POST
# Keempat opsi berikut saling eksklusif. Pilih hanya satu.
argsToUrlParam: true # Tambahkan parameter ke string kueri URL
# atau
# argsToJsonBody: true # Kirim parameter sebagai objek JSON dalam body permintaan
# atau
# argsToFormBody: true # Kirim parameter dalam body permintaan dengan enkode form
# atau
# body: |
# {
# "param1": "{{.args.arg1}}",
# "param2": {{.args.arg2}},
# "complex": {{toJson .args.arg4}}
# }
headers:
- key: x-api-key
value: "{{.config.apiKey}}"
responseTemplate:
# Ketiga opsi berikut saling eksklusif. Pilih hanya satu.
body:
|
# Hasil
{{- range $index, $item := .items }}
## Item {{add $index 1}}
- **Nama**: {{ $item.name }}
- **Nilai**: {{ $item.value }}
{{- end }}
# atau
# prependBody: |
# # Deskripsi Respons API
#
# Berikut adalah respons JSON mentah. Arti field sebagai berikut:
# - field1: Arti field 1
# - field2: Arti field 2
#
# appendBody: |
#
# Anda dapat menggunakan data ini untuk...Informasi API saya
[Jelaskan API Anda di sini, termasuk endpoint, parameter, dan format respons, atau tempel spesifikasi Swagger/OpenAPI.]
Berdasarkan informasi di atas, hasilkan konfigurasi lengkap yang mencakup:
1. Nama deskriptif dan konfigurasi server yang sesuai.
2. Definisi untuk semua parameter yang diperlukan, dengan deskripsi jelas dan tipe, nilai wajib/default yang sesuai.
3. Metode pengiriman parameter paling sesuai (argsToUrlParam, argsToJsonBody, argsToFormBody, atau body kustom).
4. responseTemplate yang mengubah respons API menjadi format yang mudah dibaca dan sesuai untuk konsumsi AI.Catatan
Spesifikasi pengisian tools[].args dalam YAML
Parameter tools[].args menentukan cara AI Gateway mengubah parameter permintaan MCP menjadi komponen permintaan HTTP. Setiap entri menentukan tipe parameter, posisi (path, header, atau body), dan apakah parameter tersebut wajib.
Lokasi nilai parameter untuk transformasi gateway AI
AI Gateway mengekstraksi parameter dari body permintaan MCP sebagaimana ditentukan oleh protokol MCP. Mengekstraksi parameter dari lokasi lain seperti header permintaan saat ini tidak didukung.