Dokumen ini menjelaskan bidang dan referensi untuk konfigurasi HTTP ke MCP. Anda dapat menggunakan panduan ini untuk mengintegrasikan tool dengan layanan MCP menggunakan YAML kustom.
Bidang konfigurasi
Konfigurasi server
Nama | Tipe data | Diperlukan | Deskripsi |
server.name | string | Wajib | Nama server MCP. Jika Anda menggunakan plugin server MCP bawaan, seperti quark-search, atur bidang ini ke nama server tersebut. Anda tidak perlu mengonfigurasi bidang tools. Dalam skenario HTTP ke MCP, Anda dapat mengatur bidang ini ke nilai apa pun. |
server.config | objek | Opsional | Konfigurasi server, seperti kunci API. |
server.securitySchemes | array[objek] | Opsi | Menentukan skema autentikasi yang dapat digunakan kembali oleh alat sebagai referensi. Untuk informasi selengkapnya, lihat Autentikasi dan keamanan. |
Konfigurasi alat yang diizinkan
Nama | Tipe data | Diperlukan | Deskripsi |
allowTools | array[string] | Opsional | Daftar tool yang diizinkan untuk dipanggil. Jika tidak ditentukan, semua tool diizinkan. |
Konfigurasi alat 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 tersebut. |
tools[].args | array[object] | Required | Definisi parameter tool. |
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-nya adalah `string`. |
tools[].args[].required | boolean | Optional | Menentukan apakah parameter tersebut wajib diisi. Nilai default-nya adalah `false`. |
tools[].args[].default | any | (Optional) | Nilai default parameter. |
tools[].args[].enum | array | Optional | Daftar nilai yang diizinkan untuk parameter tersebut. |
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 badan permintaan. Ini saling eksklusif dengan |
tools[].requestTemplate.argsToJsonBody | boolean | Optional | Nilai default-nya adalah `false`. Jika `true`, parameter digunakan langsung sebagai badan permintaan JSON. Ini saling eksklusif dengan |
tools[].requestTemplate.argsToUrlParam | boolean | Optional | Nilai default-nya adalah `false`. Jika `true`, parameter ditambahkan ke URL sebagai parameter kueri. Ini saling eksklusif dengan |
tools[].requestTemplate.argsToFormBody | boolean | Optional | Nilai default-nya adalah `false`. Jika `true`, parameter dikodekan dalam badan permintaan dengan format |
tools[].responseTemplate | object | Required | Templat transformasi respons HTTP. |
tools[].responseTemplate.body | string | Optional | Templat transformasi badan respons. Ini saling eksklusif dengan |
tools[].responseTemplate.prependBody | string | Optional | Teks yang disisipkan sebelum badan respons. Ini saling eksklusif dengan |
tools[].responseTemplate.appendBody | string | Optional | Teks yang disisipkan setelah badan respons. Ini saling eksklusif dengan |
tools[].security | object | Optional | Konfigurasi keamanan tingkat tool. Ini mendefinisikan metode autentikasi antara MCP Client dan MCP Server serta mendukung passthrough kredensial. |
tools[].security.id | string | Required when | Mereferensikan ID skema autentikasi yang didefinisikan dalam |
tools[].security.passthrough | boolean | Optional | Menentukan apakah autentikasi passthrough diaktifkan. Nilai default-nya adalah `false`. Jika |
tools[].requestTemplate.security | object | Optional | Konfigurasi keamanan untuk templat permintaan HTTP. Ini mendefinisikan metode autentikasi antara MCP Server dan API HTTP. |
tools[].requestTemplate.security.id | string | Required when | Mereferensikan ID skema autentikasi yang didefinisikan dalam |
tools[].requestTemplate.security.credential | string | Optional | Menimpa kredensial default yang didefinisikan dalam |
Autentikasi dan keamanan
Plugin MCP Server mendukung konfigurasi autentikasi fleksibel untuk memastikan komunikasi yang aman.
Mendefinisikan skema autentikasi (server.securitySchemes)
Anda dapat mendefinisikan serangkaian skema autentikasi yang dapat digunakan kembali di tingkat server. Tool dapat mereferensikan skema ini untuk mengonfigurasi cara MCP Server melakukan autentikasi dengan HTTP API backend.
Bidang konfigurasi (server.securitySchemes[]):
Nama | Tipe data | Diperlukan | Deskripsi |
id | string | Wajib | Identifier unik untuk skema autentikasi, yang direferensikan oleh konfigurasi tool. |
type | string | Wajib | Tipe autentikasi. Tipe yang didukung adalah |
scheme | string | Opsional | Ketika |
in | string | Opsi | Ketika |
name | string | Opsional | Ketika |
defaultCredential | string | Opsional | 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" # Default username and password
- id: MyBearerToken
type: http
scheme: bearer
defaultCredential: "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9..." # Default Bearer Token
- id: MyApiKeyInHeader
type: apiKey
in: header
name: X-Custom-API-Key # API key is in a header named X-Custom-API-Key
defaultCredential: "abcdef123456" # Default API key
- id: MyApiKeyInQuery
type: apiKey
in: query
name: "api_token" # API key is in a query parameter named api_token
defaultCredential: "uvwxyz789012"
Menerapkan skema autentikasi dalam tool
Setelah Anda mendefinisikan server.securitySchemes, Anda dapat mereferensikan skema ini di bidang requestTemplate.security setiap tool menggunakan id. Hal ini menentukan metode autentikasi yang digunakan MCP Server saat memanggil HTTP API backend.
tools[].requestTemplate.security.id: Merujuk padaidskema autentikasi yang didefinisikan dalamserver.securitySchemes.tools[].requestTemplate.security.credential: Opsional. Jika disediakan, bidang ini menimpadefaultCredentialdalam 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 alat 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 alat ini
# ...
- name: update-inventory
# ... konfigurasi alat lainnya ...
requestTemplate:
url: "https://api.example.com/inventory/{{.args.itemId}}"
method: POST
security:
id: MyApiKeyInHeader # Menggunakan skema MyApiKeyInHeader
# Alat ini akan menggunakan defaultCredential yang didefinisikan dalam MyApiKeyInHeader
Autentikasi passthrough
Fitur autentikasi passthrough memungkinkan kredensial yang diberikan saat client MCP, seperti asisten AI, memanggil MCP Server untuk diteruskan langsung ke MCP Server. Kredensial ini kemudian digunakan untuk mengautentikasi panggilan berikutnya ke HTTP API backend.
Metode konfigurasi:
Pastikan bahwa 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 HTTP API backend.Konfigurasikan autentikasi tingkat tool (
tools[].security): Untuk tool yang memerlukan passthrough kredensial, konfigurasikan bidangsecurity:id: Merujuk pada 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 bidangsecuritydirequestTemplatetool:id: Merujuk pada skema autentikasi yang didefinisikan diserver.securitySchemesyang digunakan untuk autentikasi antara MCP Server dan HTTP API backend.Ketika
tools[].security.passthroughdiatur ketrue, kredensial yang diekstraksi dari client diterapkan pada panggilan ke HTTP API backend sesuai dengan skemarequestTemplate.securityini.
Contoh:
Asumsikan client MCP menggunakan Bearer Token untuk memanggil MCP Server, dan MCP Server perlu menggunakan API key untuk memanggil HTTP API backend.
server:
name: product-api-server
securitySchemes:
- id: ClientSideBearer # Client uses a Bearer Token
type: http
scheme: bearer
- id: BackendApiKey # Backend API uses X-API-Key
type: apiKey
in: header
name: X-API-Key
# defaultCredential: "optional_default_backend_key"
tools:
- name: get-product-securely
description: "Get product information (secure passthrough)"
security: # Client -> MCP Server authentication configuration
id: ClientSideBearer # The MCP Server expects the client to use this scheme and will try to extract this type of credential
passthrough: true # Allow credential passthrough
args:
- name: product_id
description: "Product ID"
type: string
required: true
requestTemplate:
security: # MCP Server -> backend HTTP API authentication configuration
id: BackendApiKey # The backend API requires this scheme. The passthrough credential will be applied according to this scheme.
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 HTTP API backend. Server memeriksa
requestTemplate.security(id:BackendApiKey).Karena passthrough diaktifkan, MCP Server menggunakan
<client_token>yang diekstraksi sebelumnya sebagai nilai kredensial. Nilai ini ditambahkan ke permintaan kehttps://api.example.com/products/...sebagai header HTTP bernamaX-API-Key, sesuai dengan skemaBackendApiKey.HTTP API backend menerima permintaan dengan header
X-API-Keyyang diatur ke<client_token>.
Ketika
tools[].security.passthroughdiatur ketrue, bidangrequestTemplate.security.credentialdiabaikan. Kredensial passthrough yang berlaku.Nilai kredensial passthrough digunakan langsung untuk skema autentikasi yang ditentukan oleh
requestTemplate.security. Pastikan format kredensial kompatibel dengan skema autentikasi target. FungsiextractAndRemoveIncomingCredentialberusaha mengekstraksi bagian inti kredensial, seperti nilai token Bearer atau bagian yang dikodekan Base64 dari autentikasi Basic.
Tipe parameter yang didukung
Tool HTTP ke MCP mendukung berbagai tipe parameter, yang memungkinkan Anda mendefinisikan parameter tool secara lebih tepat:
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 bidang
itemsuntuk mendefinisikan skema elemen array.object: Tipe objek. Anda dapat menggunakan bidang
propertiesuntuk mendefinisikan skema properti objek.
Contoh:
args:
- name: query
description: "Search keyword"
type: string
required: true
- name: limit
description: "Number of results to return"
type: integer
default: 10
- name: filters
description: "Filter conditions"
type: object
properties:
category:
type: string
enum: ["food", "hotel", "attraction"]
price:
type: integer
minimum: 0
- name: coordinates
description: "List of coordinates"
type: array
items:
type: object
properties:
lat:
type: number
lng:
type: number
Kontrol posisi parameter
Tool HTTP ke MCP mendukung bidang position, yang memungkinkan Anda mengontrol secara tepat lokasi setiap parameter dalam permintaan. Hal ini memberikan fleksibilitas lebih besar dalam membangun permintaan API, seperti menggunakan parameter path, parameter query, dan parameter body dalam satu permintaan yang sama.
Jenis posisi yang didukung
query: Parameter dilewatkan sebagai parameter query di URL.
path: Parameter menggantikan placeholder path di URL, seperti
{petId}dalam/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 badan permintaan.
Hubungan dengan opsi penanganan parameter batch
Ketika Anda menggunakan position untuk menentukan lokasi parameter, parameter tersebut diproses sesuai. Parameter ini tidak terpengaruh oleh opsi penanganan parameter batch, seperti argsToJsonBody, argsToUrlParam, dan argsToFormBody. Opsi batch ini hanya memengaruhi parameter yang tidak memiliki position yang ditentukan.
Sebagai contoh, jika Anda menggunakan position dan argsToJsonBody secara bersamaan:
Parameter dengan
position: queryditambahkan ke string query 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 badan 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 menggunakan position untuk mengontrol secara tepat lokasi setiap parameter, tool HTTP ke MCP juga mendukung empat metode penanganan parameter batch. Opsi ini saling eksklusif. Anda hanya dapat memilih salah satu.
body: Anda dapat membangun body permintaan secara manual menggunakan templat. Ini adalah metode paling fleksibel dan memberikan 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: trueargsToUrlParam: Menambahkan parameter tanpa
positionyang ditentukan ke URL sebagai parameter query ketika diatur ketrue.requestTemplate: argsToUrlParam: trueargsToFormBody: Ketika diatur ke
true, parameter yang tidak memilikipositionyang ditentukan dikodekan dalam body permintaan dalam formatapplication/x-www-form-urlencoded. Header Content-Type yang sesuai ditambahkan secara otomatis.requestTemplate: argsToFormBody: true
Opsi ini menyederhanakan konfigurasi pola pemanggilan API umum tanpa perlu membangun body permintaan atau parameter URL secara manual. Perhatikan bahwa keempat opsi ini saling eksklusif. Anda hanya dapat menggunakan salah satu dalam satu konfigurasi tool. Jika Anda mengonfigurasi beberapa opsi sekaligus, sistem akan melaporkan error dan menolak memuat konfigurasi tool tersebut.
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 bidang respons JSON, gunakan sintaksis path GJSON.
Anda dapat menggunakan fungsi templat seperti
add,upper, danlower.Anda dapat menggunakan struktur kendali seperti
ifdanrange.
GJSON Template mencakup semua fungsi dari Sprig. Library ini menyediakan lebih dari 70 fungsi templat untuk manipulasi string, operasi matematika, pemformatan tanggal, dan lainnya, menawarkan kemampuan setara dengan templat Helm.
Fungsi Sprig umum meliputi:
Manipulasi string:
trim,upper,lower,replace,plural,nospaceOperasi matematika:
add,sub,mul,div,max,minPemformatan Tanggal:
now,date,dateInZone,dateModifyOperasi Daftar:
list,first,last,uniq,sortAlphaOperasi Kamus:
dict,get,set,hasKey,pluckKontrol Alur:
ternary,default,empty,coalesceKonversi Tipe:
toString,toJson,toPrettyJson,toRawJsonPengkodean/Pendekodean:
b64enc,b64dec,urlquery,urlqueryescapeGenerasi UUID:
uuidv4
Untuk referensi lengkap semua fungsi yang tersedia, lihat dokumentasi fungsi Helm. GJSON Template mencakup set fungsi yang sama.
Sintaksis path GJSON
GJSON menyediakan kemampuan kueri JSON yang kuat:
Notasi Titik:
address.cityIndeks array:
users.0.nameIterasi Array:
users.#.namePenyaringan Array:
users.#(age>=30)#.namePengubah:
users.@reverse.#.namePath Ganda:
{name:users.0.name,count:users.#}Karakter escape:
path.with\.dot
Untuk kueri yang lebih kompleks, Anda dapat menggunakan fungsi gjson:
<!-- Use the gjson function for complex queries -->
Active users: {{gjson "users.#(active==true)#.name"}}
<!-- Array filtering with multiple conditions -->
Active developers over 30: {{gjson "users.#(active==true && age>30)#.name"}}
<!-- Using modifiers -->
Usernames (reversed): {{gjson "users.@reverse.#.name"}}
<!-- Iterating over filtered results -->
Administrators:
{{range $user := gjson "users.#(roles.#(==admin)>0)#"}}
- {{$user.name}} ({{$user.age}})
{{end}}
Untuk referensi sintaksis path GJSON lengkap, lihat dokumentasi GJSON.
Contoh konfigurasi
Contoh penggunaan server MCP bawaan: Mengonfigurasi quark-search
server:
name: "quark-search"
config:
apiKey: "xxxx"
Konfigurasi ini menggunakan server MCP bawaan quark-search di Higress. Dalam kasus ini, Anda hanya perlu menentukan nama server dan konfigurasi yang diperlukan, seperti API key. Anda tidak perlu mengonfigurasi bidang tools karena tool sudah ditentukan sebelumnya di server.
Contoh dasar: Mengubah API AMAP
server:
name: HTTP-amap-server
config:
apiKey: your-api-key-here
tools:
- name: maps-geo
description: "Converts a detailed, structured address into latitude and longitude coordinates. Supports resolving landmarks, scenic spots, and building names to coordinates."
args:
- name: address
description: "The structured address to be resolved."
type: string
required: true
- name: city
description: "The city to query."
type: string
required: false
- name: output
description: "Output format."
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: |
# Geocoding Information
{{- range $index, $geo := .geocodes }}
## Location {{add $index 1}}
- **Country**: {{ $geo.country }}
- **Province**: {{ $geo.province }}
- **City**: {{ $geo.city }}
- **City Code**: {{ $geo.citycode }}
- **District**: {{ $geo.district }}
- **Street**: {{ $geo.street }}
- **Street Number**: {{ $geo.number }}
- **Adcode**: {{ $geo.adcode }}
- **Location**: {{ $geo.location }}
- **Level**: {{ $geo.level }}
{{- end }}
Konfigurasi ini mengubah API geocoding AMAP menjadi tool yang dapat dipanggil AI. Saat AI memanggil tool ini:
Membangun permintaan API menggunakan parameter address dan city 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: "Gets the weather forecast for a specified city."
args:
- name: city
description: "City name"
type: string
required: true
- name: days
description: "Number of days (1-7)"
type: integer
required: false
default: 3
- name: include_hourly
description: "Specifies whether to include the hourly forecast."
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}} Weather Forecast
**Current Temperature**: {{.current.temp_c}}°C
**Feels Like**: {{.current.feelslike_c}}°C
**Condition**: {{.current.condition.text}}
**Humidity**: {{.current.humidity}}%
**Wind Speed**: {{.current.wind_kph}} km/h
## Future Forecast
{{range $index, $day := .forecast.forecastday}}
### {{$day.date}} ({{dateFormat "Monday" $day.date_epoch | title}})
{{if gt $day.day.maxtemp_c 30}}**High temperature warning!**{{end}}
{{if lt $day.day.mintemp_c 0}}**Low temperature warning!**{{end}}
- **Max Temperature**: {{$day.day.maxtemp_c}}°C
- **Min Temperature**: {{$day.day.mintemp_c}}°C
- **Chance of Rain**: {{$day.day.daily_chance_of_rain}}%
- **Condition**: {{$day.day.condition.text}}
#### Hourly Forecast
{{range $hour := slice $day.hour 6 24 3}}
- **{{dateFormat "15:04" $hour.time_epoch}}**: {{$hour.temp_c}}°C, {{$hour.condition.text}}
{{end}}
{{end}}
```<p>This example shows how to:</p><ul><li><p>Use conditional statements (<code data-tag="code" dir="auto" id="8a2cd16431wep">ifContoh ini menunjukkan:
Menggunakan pernyataan kondisional (
if) untuk memberikan peringatan suhu.Menggunakan fungsi pemformatan tanggal (
dateFormat) untuk memformat tanggal.Menggunakan potongan array (
slice) untuk memilih data cuaca pada waktu tertentu.Menggunakan loop bersarang untuk menelusuri data cuaca lintas beberapa hari dan periode waktu.
Contoh penggunaan prependBody dan appendBody: Transformasi OpenAPI
Bidang prependBody dan appendBody berguna ketika Anda ingin mempertahankan respons API asli tetapi menambahkan konteks tambahan. Hal ini sangat berharga saat Anda mengubah spesifikasi OpenAPI atau Swagger menjadi tool MCP, karena Anda dapat mempertahankan respons JSON asli sambil memberikan penjelasan bidang untuk asisten AI.
server:
name: product-api-server
config:
apiKey: your-api-key-here
tools:
- name: get-product
description: "Get product details"
args:
- name: product_id
description: "Product 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: |
# Product Information
The following are the product details, returned in JSON format. Field descriptions:
- **id**: The unique product identifier
- **name**: The product name
- **description**: The product description
- **price**: The product price (USD)
- **category**: The product category
- **inventory**: Inventory information
- **quantity**: The current stock quantity
- **warehouse**: The warehouse location
- **ratings**: A list of user ratings
- **score**: The rating (1-5)
- **comment**: The comment content
appendBody: |
You can use this information to understand the product's details, price, inventory status, and user reviews.
Contoh ini menunjukkan cara:
Menggunakan
prependBodyuntuk menambahkan deskripsi bidang sebelum respons JSON asli.Menggunakan
appendBodyuntuk menambahkan saran penggunaan di akhir respons.Mempertahankan respons JSON asli sehingga asisten AI dapat langsung mengakses semua data.
Sintaksis templat
Templat menggunakan sintaksis GJSON Template (https://github.com/higress-group/gjson_template), yang menggabungkan templat Go dengan sintaksis path GJSON untuk memproses JSON. Mesin templat mendukung fitur-fitur berikut:
Notasi titik dasar untuk mengakses bidang, 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 kendali, seperti `{{if}}`, `{{range}}`, dan `{{with}}`.
Anda dapat menetapkan variabel sebagai berikut: {{$var := .value}}.
Untuk respons JSON kompleks, Anda dapat menggunakan kemampuan penyaringan dan kueri GJSON untuk mengekstraksi informasi penting.
Templat pembuatan prompt AI
Saat Anda menghasilkan templat konfigurasi HTTP ke MCP dengan asisten AI, Anda dapat menggunakan prompt berikut:
Please help me create a Higress HTTP-to-MCP configuration to transform an HTTP API into an MCP tool.
## Configuration Format
The configuration should follow this format:
```yaml
server:
name: HTTP-api-server
config:
apiKey: Your API key
tools:
- name: tool-name
description: "A detailed description of what this tool does"
args:
- name: arg1
description: "Description of parameter 1"
type: string
required: true
position: path
- name: arg2
description: "Description of parameter 2"
type: integer
required: false
default: 10
position: query
- name: arg3
description: "Description of parameter 3"
type: array
items:
type: string
position: body
- name: arg4
description: "Description of parameter 4"
type: object
properties:
subfield1:
type: string
subfield2:
type: number
requestTemplate:
url: "https://api.example.com/endpoint"
method: POST
# The following four options are mutually exclusive. Choose only one.
argsToUrlParam: true # Add parameters to the URL query string
# or
# argsToJsonBody: true # Send parameters as a JSON object in the request body
# or
# argsToFormBody: true # Send parameters form-encoded in the request body
# or
# body: |
# {
# "param1": "{{.args.arg1}}",
# "param2": {{.args.arg2}},
# "complex": {{toJson .args.arg4}}
# }
headers:
- key: x-api-key
value: "{{.config.apiKey}}"
responseTemplate:
# The following three options are mutually exclusive. Choose only one.
body:
|
# Results
{{- range $index, $item := .items }}
## Item {{add $index 1}}
- **Name**: {{ $item.name }}
- **Value**: {{ $item.value }}
{{- end }}
# or
# prependBody: |
# # API Response Description
#
# The following is the raw JSON response. The field meanings are as follows:
# - field1: Meaning of field 1
# - field2: Meaning of field 2
#
# appendBody: |
#
# You can use this data to...Informasi API saya
HTTP API yang akan diubah adalah: [Jelaskan API Anda di sini, termasuk endpoint, parameter, dan format responsnya, atau tempelkan spesifikasi Swagger/OpenAPI].
Based on the information above, generate a complete configuration that includes:
1. A descriptive name and appropriate server configuration.
2. Definitions for all necessary parameters, with clear descriptions and appropriate types, required/default values.
3. The most suitable parameter passing method (argsToUrlParam, argsToJsonBody, argsToFormBody, or a custom body).
4. A responseTemplate that transforms the API response into a readable format suitable for AI consumption.