Higress 是一款云原生 API 网关,集成了流量、微服务及安全网关功能。它基于 Istio 和 Envoy 构建,支持 Go/Rust/JS 等语言编写 Wasm 插件,并提供了开箱即用的控制台。在 AI 场景下,Higress AI 网关支持 OpenAI、DeepSeek 等多种服务商,具备令牌限流、鉴权及语义缓存能力。
MCP Server 插件核心能力
MCP(Model Context Protocol)插件专为 AI 助手设计,定义了模型与外部工具交互的标准。通过该插件,我们可以实现以下目标:
- 零代码转换:直接将现有的 REST API 暴露为 AI 助手可调用的工具。
- 统一治理:利用 Higress 网关的认证、鉴权、限流和可观测性能力,保障接口安全与性能。
- 快速部署:无需开发额外服务,通过配置即可快速添加新的 MCP Server。
配置详解
基础服务器配置
配置 server 部分主要定义 Server 名称及全局参数。如果是内置 Server(如 quark-search),只需指定名称;若是 REST-to-MCP 场景,名称可自定义。
| 字段名 | 类型 | 必填 | 默认值 | 说明 |
|---|---|---|---|---|
server.name | string | 是 | - | MCP Server 名称 |
server.config | object | 否 | {} | 扩展配置,如 API Key |
server.allowTools | array | 否 | - | 允许调用的工具列表,未指定则允许全部 |
工具定义 (REST-to-MCP)
这是最核心的部分,用于描述如何将 HTTP 请求映射为 AI 工具。
| 字段名 | 类型 | 必填 | 说明 |
|---|---|---|---|
tools[].name | string | 是 | 工具名称 |
tools[].description | string | 是 | 工具功能描述 |
tools[].args | array | 是 | 参数定义列表 |
tools[].requestTemplate | object | 是 | HTTP 请求模板 |
tools[].responseTemplate | object | 是 | 响应转换模板 |
其中 args 支持多种数据类型,包括 string、number、integer、boolean、array 和 object。对于数组或对象类型,需配合 items 或 properties 字段定义结构。
请求参数传递方式
配置中支持四种互斥的参数传递方式,根据实际 API 需求选择:
- 表单提交 (
argsToFormBody):自动设置Content-Type: application/x-www-form-urlencoded。 - 查询参数 (
argsToUrlParam):将参数追加到 URL 后。 - JSON Body (
argsToJsonBody):自动设置application/json,参数直接作为 JSON 对象发送。 - 手动构建 (
body):灵活性最高,适合复杂场景。
# 示例:手动构建请求体
requestTemplate:
body: |
{
"query": "{{.args.query}}",
"filters": {{toJson .args.filters}},
"options": { "limit": {{.args.limit}} }
}
模板语法说明
Higress 使用 GJSON Template 语法,结合了 Go 模板与 GJSON 路径解析能力。
- 请求模板:可通过
{{.config.xxx}}访问配置值,{{.args.xxx}}访问工具参数。 - 响应模板:支持 GJSON 路径访问 JSON 字段,以及
add、upper等函数和控制结构(if、range)。
常见 GJSON 路径用法:
- 点表示法:
address.city - 数组索引:
users.0.name - 数组过滤:
users.#(age>=30)#.name
配置实战示例
1. 内置 Server 配置
server:
name: "quark-search"
config:
apiKey: "xxxx"
2. 高德地图 API 转换示例
将高德地理编码接口转换为 MCP 工具,支持地址转经纬度。
server:
name: rest-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
通过上述配置,任何 REST API 都能被快速转化为 AI Agent 可用的数据源,无需编写额外的业务代码,显著提升了集成效率。


