From 7ba3f75d41764d50208c49c0fae42cd085cb4971 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=BE=84=E6=BD=AD?= Date: Mon, 31 Mar 2025 21:41:38 +0800 Subject: [PATCH] support rest to mcp (#1988) --- plugins/wasm-go/mcp-servers/README.md | 179 +++++++++++++++++- plugins/wasm-go/mcp-servers/README_zh.md | 179 +++++++++++++++++- plugins/wasm-go/mcp-servers/all-in-one/go.mod | 8 +- plugins/wasm-go/mcp-servers/all-in-one/go.sum | 7 + plugins/wasm-go/mcp-servers/amap-tools/go.mod | 12 +- plugins/wasm-go/mcp-servers/amap-tools/go.sum | 7 + .../wasm-go/mcp-servers/quark-search/go.mod | 12 +- .../wasm-go/mcp-servers/quark-search/go.sum | 7 + 8 files changed, 391 insertions(+), 20 deletions(-) diff --git a/plugins/wasm-go/mcp-servers/README.md b/plugins/wasm-go/mcp-servers/README.md index 53c7eb8fc..0a928ccdc 100644 --- a/plugins/wasm-go/mcp-servers/README.md +++ b/plugins/wasm-go/mcp-servers/README.md @@ -178,6 +178,184 @@ func init() { The configuration for the all-in-one plugin follows the same pattern as individual MCP server plugins. The `name` field in the server configuration is used to identify and route requests to the appropriate MCP server within the all-in-one plugin. +## REST-to-MCP Configuration + +Higress supports a special REST-to-MCP configuration that allows you to convert REST APIs to MCP tools without writing any code. This is useful for quickly integrating existing REST APIs with AI assistants. + +### Configuration Format + +To use the REST-to-MCP feature, you need to define your tools in the plugin configuration: + +```yaml +server: + name: rest-amap-server + config: + apiKey: your-api-key-here +tools: +- name: maps-geo + description: "Convert structured address information to latitude and longitude coordinates. Supports parsing landmarks, scenic spots, and building names into coordinates." + args: + - name: address + description: "The structured address to parse" + required: true + - name: city + description: "The city to search in" + required: false + requestTemplate: + url: "https://restapi.amap.com/v3/geocode/geo?key={{.config.apiKey}}&address={{.args.address}}&city={{.args.city}}&source=ts_mcp" + method: GET + headers: + - key: x-api-key + value: "{{.config.apiKey}}" + - key: Content-Type + value: application/json + 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 }} + - **Number**: {{ $geo.Number }} + - **Administrative Code**: {{ $geo.Adcode }} + - **Coordinates**: {{ $geo.Location }} + - **Level**: {{ $geo.Level }} + {{- end }} +``` + +### Template Syntax + +The REST-to-MCP feature uses the [GJSON Template](https://github.com/higress-group/gjson_template) library for template rendering, which combines Go's template syntax with GJSON's powerful path syntax: + +- **Request Templates**: Used to construct the HTTP request URL, headers, and body + - Access configuration values with `.config.fieldName` + - Access tool arguments with `.args.argName` + +- **Response Templates**: Used to transform the HTTP response into a format suitable for AI consumption + - Access JSON response fields using GJSON path syntax + - Use template functions like `add`, `upper`, `lower`, etc. + - Use control structures like `if`, `range`, etc. + +GJSON Template includes all of [Sprig](https://github.com/Masterminds/sprig)'s functions, providing a rich set of over 70 template functions for string manipulation, math operations, date formatting, list processing, and more. This makes GJSON Template functionally equivalent to Helm's template capabilities. + +Some commonly used Sprig functions include: + +- **String manipulation**: `trim`, `upper`, `lower`, `replace`, `plural`, `nospace` +- **Math operations**: `add`, `sub`, `mul`, `div`, `max`, `min` +- **Date formatting**: `now`, `date`, `dateInZone`, `dateModify` +- **List operations**: `list`, `first`, `last`, `uniq`, `sortAlpha` +- **Dictionary operations**: `dict`, `get`, `set`, `hasKey`, `pluck` +- **Flow control**: `ternary`, `default`, `empty`, `coalesce` +- **Type conversion**: `toString`, `toJson`, `toPrettyJson`, `toRawJson` +- **Encoding/decoding**: `b64enc`, `b64dec`, `urlquery`, `urlqueryescape` +- **UUID generation**: `uuidv4` + +For a complete reference of all available functions, see the [Helm documentation on functions](https://helm.sh/docs/chart_template_guide/function_list/), as GJSON Template includes the same function set. + +### GJSON Path Syntax + +GJSON Template supports the full GJSON path syntax, which provides powerful JSON querying capabilities: + +- **Dot notation**: `address.city` +- **Array indexing**: `users.0.name` +- **Array iteration**: `users.#.name` +- **Wildcards**: `users.*.name` +- **Array filtering**: `users.#(age>=30)#.name` +- **Modifiers**: `users.@reverse.#.name` +- **Multipath**: `{name:users.0.name,count:users.#}` +- **Escape characters**: `path.with\.dot` + +For more complex queries, you can use the `gjson` function directly in your templates: + +``` + +Active users: {{gjson "users.#(active==true)#.name"}} + + +Active developers over 30: {{gjson "users.#(active==true && age>30)#.name"}} + + +User names (reversed): {{gjson "users.@reverse.#.name"}} + + +Admins: +{{range $user := gjson "users.#(roles.#(==admin)>0)#"}} + - {{$user.name}} ({{$user.age}}) +{{end}} +``` + +For a complete reference of GJSON path syntax, see the [GJSON documentation](https://github.com/tidwall/gjson#path-syntax). + +### AI Prompt for Template Generation + +When working with AI assistants to generate templates for REST-to-MCP configuration, you can use the following prompt: + +``` +Please help me create a REST-to-MCP configuration for Higress that converts a REST API to an MCP tool. The configuration should follow this format: + +```yaml +server: + name: rest-api-server + config: + apiKey: your-api-key-here +tools: +- name: tool-name + description: "Detailed description of what this tool does" + args: + - name: arg1 + description: "Description of argument 1" + required: true + - name: arg2 + description: "Description of argument 2" + required: false + default: "default value" + requestTemplate: + url: "https://api.example.com/endpoint?key={{.config.apiKey}}¶m={{.args.arg1}}" + method: GET + headers: + - key: x-api-key + value: "{{.config.apiKey}}" + - key: Content-Type + value: application/json + body: | + { + "param1": "{{.args.arg1}}", + "param2": "{{.args.arg2}}" + } + responseTemplate: + body: | + # Result + {{- range $index, $item := .items }} + ## Item {{add $index 1}} + - **Name**: {{ $item.name }} + - **Value**: {{ $item.value }} + {{- end }} +``` + +The REST API I want to convert is [describe your API here, including endpoints, parameters, and response format]. + +Please generate a complete configuration that: +1. Has a descriptive name and appropriate server configuration +2. Defines all necessary arguments with clear descriptions and appropriate required/default values +3. Creates a requestTemplate that correctly formats the API request, including headers with template values +4. Creates a responseTemplate that transforms the API response into a readable format for AI consumption + +The templates use GJSON Template syntax (https://github.com/higress-group/gjson_template), which combines Go templates with GJSON path syntax for JSON processing. The template engine supports: + +1. Basic dot notation for accessing fields: {{.fieldName}} +2. The gjson function for complex queries: {{gjson "users.#(active==true)#.name"}} +3. All Sprig template functions (like Helm): {{add}}, {{upper}}, {{lower}}, {{date}}, etc. +4. Control structures: {{if}}, {{range}}, {{with}}, etc. +5. Variable assignment: {{$var := .value}} + +For complex JSON responses, consider using GJSON's powerful filtering and querying capabilities to extract and format the most relevant information. +``` + ## Main Entry Point The main.go file is the entry point for your MCP server. It registers your tools and resources: @@ -306,4 +484,3 @@ func TestMyToolInputSchema(t *testing.T) { t.Error("InputSchema returned an empty schema") } } -``` diff --git a/plugins/wasm-go/mcp-servers/README_zh.md b/plugins/wasm-go/mcp-servers/README_zh.md index aea7b66b9..c693ffdb9 100644 --- a/plugins/wasm-go/mcp-servers/README_zh.md +++ b/plugins/wasm-go/mcp-servers/README_zh.md @@ -175,6 +175,184 @@ func init() { all-in-one 插件的配置方式与所有 MCP server 插件都是一样的,都是通过 server 配置中的 name 字段来找到对应的 MCP server。 +## REST-to-MCP 配置 + +Higress 支持一种特殊的 REST-to-MCP 配置,允许您无需编写任何代码即可将 REST API 转换为 MCP 工具。这对于快速将现有 REST API 与 AI 助手集成非常有用。 + +### 配置格式 + +要使用 REST-to-MCP 功能,您需要在插件配置中定义您的工具: + +```yaml +server: + name: rest-amap-server + config: + apiKey: 您的API密钥 +tools: +- name: maps-geo + description: "将详细的结构化地址转换为经纬度坐标。支持对地标性名胜景区、建筑物名称解析为经纬度坐标" + args: + - name: address + description: "待解析的结构化地址信息" + required: true + - name: city + description: "指定查询的城市" + required: false + requestTemplate: + url: "https://restapi.amap.com/v3/geocode/geo?key={{.config.apiKey}}&address={{.args.address}}&city={{.args.city}}&source=ts_mcp" + method: GET + headers: + - key: x-api-key + value: "{{.config.apiKey}}" + - key: Content-Type + value: application/json + responseTemplate: + body: | + # 地理编码信息 + {{- range $index, $geo := .Geocodes }} + ## 地点 {{add $index 1}} + + - **国家**: {{ $geo.Country }} + - **省份**: {{ $geo.Province }} + - **城市**: {{ $geo.City }} + - **城市代码**: {{ $geo.Citycode }} + - **区/县**: {{ $geo.District }} + - **街道**: {{ $geo.Street }} + - **门牌号**: {{ $geo.Number }} + - **行政编码**: {{ $geo.Adcode }} + - **坐标**: {{ $geo.Location }} + - **级别**: {{ $geo.Level }} + {{- end }} +``` + +### 模板语法 + +REST-to-MCP 功能使用 [GJSON Template](https://github.com/higress-group/gjson_template) 库进行模板渲染,该库结合了 Go 的模板语法和 GJSON 的强大路径语法: + +- **请求模板**:用于构造 HTTP 请求 URL、头部和正文 + - 使用 `.config.fieldName` 访问配置值 + - 使用 `.args.argName` 访问工具参数 + +- **响应模板**:用于将 HTTP 响应转换为适合 AI 消费的格式 + - 使用 GJSON 路径语法访问 JSON 响应字段 + - 使用模板函数如 `add`、`upper`、`lower` 等 + - 使用控制结构如 `if`、`range` 等 + +GJSON Template 包含了所有 [Sprig](https://github.com/Masterminds/sprig) 的函数,提供了超过 70 个用于字符串操作、数学运算、日期格式化、列表处理等的模板函数。这使得 GJSON Template 在功能上等同于 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`、`urlqueryescape` +- **UUID 生成**:`uuidv4` + +有关所有可用函数的完整参考,请参阅 [Helm 函数文档](https://helm.sh/docs/chart_template_guide/function_list/),因为 GJSON Template 包含了相同的函数集。 + +### GJSON 路径语法 + +GJSON Template 支持完整的 GJSON 路径语法,提供强大的 JSON 查询能力: + +- **点表示法**:`address.city` +- **数组索引**:`users.0.name` +- **数组迭代**:`users.#.name` +- **通配符**:`users.*.name` +- **数组过滤**:`users.#(age>=30)#.name` +- **修饰符**:`users.@reverse.#.name` +- **多路径**:`{name:users.0.name,count:users.#}` +- **转义字符**:`path.with\.dot` + +对于更复杂的查询,您可以在模板中直接使用 `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 文档](https://github.com/tidwall/gjson#path-syntax)。 + +### AI 提示词生成模板 + +在与 AI 助手一起生成 REST-to-MCP 配置的模板时,您可以使用以下提示词: + +``` +请帮我创建一个 Higress 的 REST-to-MCP 配置,将 REST API 转换为 MCP 工具。配置应遵循以下格式: + +```yaml +server: + name: rest-api-server + config: + apiKey: 您的API密钥 +tools: +- name: tool-name + description: "详细描述这个工具的功能" + args: + - name: arg1 + description: "参数1的描述" + required: true + - name: arg2 + description: "参数2的描述" + required: false + default: "默认值" + requestTemplate: + url: "https://api.example.com/endpoint?key={{.config.apiKey}}¶m={{.args.arg1}}" + method: GET + headers: + - key: x-api-key + value: "{{.config.apiKey}}" + - key: Content-Type + value: application/json + body: | + { + "param1": "{{.args.arg1}}", + "param2": "{{.args.arg2}}" + } + responseTemplate: + body: | + # 结果 + {{- range $index, $item := .items }} + ## 项目 {{add $index 1}} + - **名称**: {{ $item.name }} + - **值**: {{ $item.value }} + {{- end }} +``` + +我想转换的 REST API 是 [在此描述您的 API,包括端点、参数和响应格式]。 + +请生成一个完整的配置,包括: +1. 具有描述性名称和适当的服务器配置 +2. 定义所有必要的参数,并提供清晰的描述和适当的必填/默认值 +3. 创建正确格式化 API 请求的 requestTemplate,包括带有模板值的头部 +4. 创建将 API 响应转换为适合 AI 消费的可读格式的 responseTemplate + +模板使用 GJSON Template 语法 (https://github.com/higress-group/gjson_template),该语法结合了 Go 模板和 GJSON 路径语法进行 JSON 处理。模板引擎支持: + +1. 基本点表示法访问字段:{{.fieldName}} +2. 用于复杂查询的 gjson 函数:{{gjson "users.#(active==true)#.name"}} +3. 所有 Sprig 模板函数(类似 Helm):{{add}}、{{upper}}、{{lower}}、{{date}} 等 +4. 控制结构:{{if}}、{{range}}、{{with}} 等 +5. 变量赋值:{{$var := .value}} + +对于复杂的 JSON 响应,请考虑使用 GJSON 强大的过滤和查询能力来提取和格式化最相关的信息。 +``` + ## 主入口点 main.go 文件是 MCP 服务器的入口点。它注册工具和资源: @@ -303,4 +481,3 @@ func TestMyToolInputSchema(t *testing.T) { t.Error("InputSchema 返回了空 schema") } } -``` diff --git a/plugins/wasm-go/mcp-servers/all-in-one/go.mod b/plugins/wasm-go/mcp-servers/all-in-one/go.mod index 997579322..393382b02 100644 --- a/plugins/wasm-go/mcp-servers/all-in-one/go.mod +++ b/plugins/wasm-go/mcp-servers/all-in-one/go.mod @@ -8,20 +8,20 @@ replace amap-tools => ../amap-tools require ( amap-tools v0.0.0-00010101000000-000000000000 - github.com/alibaba/higress/plugins/wasm-go v1.4.4-0.20250329145934-61b36a20cd9c + github.com/alibaba/higress/plugins/wasm-go v1.4.4-0.20250331125043-e9661a6dabda quark-search v0.0.0-00010101000000-000000000000 ) require ( github.com/bahlo/generic-list-go v0.2.0 // indirect github.com/buger/jsonparser v1.1.1 // indirect - github.com/google/uuid v1.3.0 // indirect + github.com/google/uuid v1.6.0 // indirect github.com/higress-group/proxy-wasm-go-sdk v0.0.0-20250323151219-d75620c61711 // indirect github.com/invopop/jsonschema v0.13.0 // indirect github.com/mailru/easyjson v0.7.7 // indirect - github.com/tidwall/gjson v1.17.3 // indirect + github.com/tidwall/gjson v1.18.0 // indirect github.com/tidwall/match v1.1.1 // indirect - github.com/tidwall/pretty v1.2.0 // indirect + github.com/tidwall/pretty v1.2.1 // indirect github.com/tidwall/resp v0.1.1 // indirect github.com/tidwall/sjson v1.2.5 // indirect github.com/wk8/go-ordered-map/v2 v2.1.8 // indirect diff --git a/plugins/wasm-go/mcp-servers/all-in-one/go.sum b/plugins/wasm-go/mcp-servers/all-in-one/go.sum index 2b5810d3e..49b723fbf 100644 --- a/plugins/wasm-go/mcp-servers/all-in-one/go.sum +++ b/plugins/wasm-go/mcp-servers/all-in-one/go.sum @@ -1,5 +1,9 @@ github.com/alibaba/higress/plugins/wasm-go v1.4.4-0.20250329145934-61b36a20cd9c h1:giBV8e7p0qxRdBsCu4AjXbpUI8sNiGkEtPNWEXf6fA4= github.com/alibaba/higress/plugins/wasm-go v1.4.4-0.20250329145934-61b36a20cd9c/go.mod h1:csP9Mpkc+gVgbZsizCdcYSy0LJrQA+//RcnZBInyknc= +github.com/alibaba/higress/plugins/wasm-go v1.4.4-0.20250330032733-a3f709c6bf3c h1:7NUKWzu/HH1OCHJEnsogHDFjf5GXcagv489qN6uudjw= +github.com/alibaba/higress/plugins/wasm-go v1.4.4-0.20250330032733-a3f709c6bf3c/go.mod h1:csP9Mpkc+gVgbZsizCdcYSy0LJrQA+//RcnZBInyknc= +github.com/alibaba/higress/plugins/wasm-go v1.4.4-0.20250331125043-e9661a6dabda h1:kvubg2BmbBfw6CtqEvTMsiU/UdEII/DYyKFYwZ3+TP0= +github.com/alibaba/higress/plugins/wasm-go v1.4.4-0.20250331125043-e9661a6dabda/go.mod h1:R/g1lYl9ToNltcs01QbOPhZG/h1klHcmjGaowyeWdEI= github.com/bahlo/generic-list-go v0.2.0 h1:5sz/EEAK+ls5wF+NeqDpk5+iNdMDXrh3z3nPnH1Wvgk= github.com/bahlo/generic-list-go v0.2.0/go.mod h1:2KvAjgMlE5NNynlg/5iLrrCCZ2+5xWbdbCW3pNTGyYg= github.com/buger/jsonparser v1.1.1 h1:2PnMjfWD7wBILjqQbt530v576A/cAbQvEW9gGIpYMUs= @@ -8,6 +12,7 @@ github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/google/uuid v1.3.0 h1:t6JiXgmwXMjEs8VusXIJk2BXHsn+wx8BZdTaoZ5fu7I= github.com/google/uuid v1.3.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= +github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/higress-group/proxy-wasm-go-sdk v0.0.0-20250323151219-d75620c61711 h1:n5sZwSZWQ5uKS69hu50/0gliTFrIJ1w+g/FSdIIiZIs= github.com/higress-group/proxy-wasm-go-sdk v0.0.0-20250323151219-d75620c61711/go.mod h1:tRI2LfMudSkKHhyv1uex3BWzcice2s/l8Ah8axporfA= github.com/invopop/jsonschema v0.13.0 h1:KvpoAJWEjR3uD9Kbm2HWJmqsEaHt8lBUpd0qHcIi21E= @@ -22,10 +27,12 @@ github.com/stretchr/testify v1.9.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8 github.com/tidwall/gjson v1.14.2/go.mod h1:/wbyibRr2FHMks5tjHJ5F8dMZh3AcwJEMf5vlfC0lxk= github.com/tidwall/gjson v1.17.3 h1:bwWLZU7icoKRG+C+0PNwIKC6FCJO/Q3p2pZvuP0jN94= github.com/tidwall/gjson v1.17.3/go.mod h1:/wbyibRr2FHMks5tjHJ5F8dMZh3AcwJEMf5vlfC0lxk= +github.com/tidwall/gjson v1.18.0/go.mod h1:/wbyibRr2FHMks5tjHJ5F8dMZh3AcwJEMf5vlfC0lxk= github.com/tidwall/match v1.1.1 h1:+Ho715JplO36QYgwN9PGYNhgZvoUSc9X2c80KVTi+GA= github.com/tidwall/match v1.1.1/go.mod h1:eRSPERbgtNPcGhD8UCthc6PmLEQXEWd3PRB5JTxsfmM= github.com/tidwall/pretty v1.2.0 h1:RWIZEg2iJ8/g6fDDYzMpobmaoGh5OLl4AXtGUGPcqCs= github.com/tidwall/pretty v1.2.0/go.mod h1:ITEVvHYasfjBbM0u2Pg8T2nJnzm8xPwvNhhsoaGGjNU= +github.com/tidwall/pretty v1.2.1/go.mod h1:ITEVvHYasfjBbM0u2Pg8T2nJnzm8xPwvNhhsoaGGjNU= github.com/tidwall/resp v0.1.1 h1:Ly20wkhqKTmDUPlyM1S7pWo5kk0tDu8OoC/vFArXmwE= github.com/tidwall/resp v0.1.1/go.mod h1:3/FrruOBAxPTPtundW0VXgmsQ4ZBA0Aw714lVYgwFa0= github.com/tidwall/sjson v1.2.5 h1:kLy8mja+1c9jlljvWTlSazM7cKDRfJuR/bOJhcY5NcY= diff --git a/plugins/wasm-go/mcp-servers/amap-tools/go.mod b/plugins/wasm-go/mcp-servers/amap-tools/go.mod index 2944506a5..050f98fe9 100644 --- a/plugins/wasm-go/mcp-servers/amap-tools/go.mod +++ b/plugins/wasm-go/mcp-servers/amap-tools/go.mod @@ -1,23 +1,21 @@ module amap-tools -go 1.24 - -toolchain go1.24.1 +go 1.24.1 require ( - github.com/alibaba/higress/plugins/wasm-go v1.4.4-0.20250329145934-61b36a20cd9c - github.com/tidwall/gjson v1.17.3 + github.com/alibaba/higress/plugins/wasm-go v1.4.4-0.20250331125043-e9661a6dabda + github.com/tidwall/gjson v1.18.0 ) require ( github.com/bahlo/generic-list-go v0.2.0 // indirect github.com/buger/jsonparser v1.1.1 // indirect - github.com/google/uuid v1.3.0 // indirect + github.com/google/uuid v1.6.0 // indirect github.com/higress-group/proxy-wasm-go-sdk v0.0.0-20250323151219-d75620c61711 // indirect github.com/invopop/jsonschema v0.13.0 // indirect github.com/mailru/easyjson v0.7.7 // indirect github.com/tidwall/match v1.1.1 // indirect - github.com/tidwall/pretty v1.2.0 // indirect + github.com/tidwall/pretty v1.2.1 // indirect github.com/tidwall/resp v0.1.1 // indirect github.com/tidwall/sjson v1.2.5 // indirect github.com/wk8/go-ordered-map/v2 v2.1.8 // indirect diff --git a/plugins/wasm-go/mcp-servers/amap-tools/go.sum b/plugins/wasm-go/mcp-servers/amap-tools/go.sum index 2b5810d3e..49b723fbf 100644 --- a/plugins/wasm-go/mcp-servers/amap-tools/go.sum +++ b/plugins/wasm-go/mcp-servers/amap-tools/go.sum @@ -1,5 +1,9 @@ github.com/alibaba/higress/plugins/wasm-go v1.4.4-0.20250329145934-61b36a20cd9c h1:giBV8e7p0qxRdBsCu4AjXbpUI8sNiGkEtPNWEXf6fA4= github.com/alibaba/higress/plugins/wasm-go v1.4.4-0.20250329145934-61b36a20cd9c/go.mod h1:csP9Mpkc+gVgbZsizCdcYSy0LJrQA+//RcnZBInyknc= +github.com/alibaba/higress/plugins/wasm-go v1.4.4-0.20250330032733-a3f709c6bf3c h1:7NUKWzu/HH1OCHJEnsogHDFjf5GXcagv489qN6uudjw= +github.com/alibaba/higress/plugins/wasm-go v1.4.4-0.20250330032733-a3f709c6bf3c/go.mod h1:csP9Mpkc+gVgbZsizCdcYSy0LJrQA+//RcnZBInyknc= +github.com/alibaba/higress/plugins/wasm-go v1.4.4-0.20250331125043-e9661a6dabda h1:kvubg2BmbBfw6CtqEvTMsiU/UdEII/DYyKFYwZ3+TP0= +github.com/alibaba/higress/plugins/wasm-go v1.4.4-0.20250331125043-e9661a6dabda/go.mod h1:R/g1lYl9ToNltcs01QbOPhZG/h1klHcmjGaowyeWdEI= github.com/bahlo/generic-list-go v0.2.0 h1:5sz/EEAK+ls5wF+NeqDpk5+iNdMDXrh3z3nPnH1Wvgk= github.com/bahlo/generic-list-go v0.2.0/go.mod h1:2KvAjgMlE5NNynlg/5iLrrCCZ2+5xWbdbCW3pNTGyYg= github.com/buger/jsonparser v1.1.1 h1:2PnMjfWD7wBILjqQbt530v576A/cAbQvEW9gGIpYMUs= @@ -8,6 +12,7 @@ github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/google/uuid v1.3.0 h1:t6JiXgmwXMjEs8VusXIJk2BXHsn+wx8BZdTaoZ5fu7I= github.com/google/uuid v1.3.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= +github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/higress-group/proxy-wasm-go-sdk v0.0.0-20250323151219-d75620c61711 h1:n5sZwSZWQ5uKS69hu50/0gliTFrIJ1w+g/FSdIIiZIs= github.com/higress-group/proxy-wasm-go-sdk v0.0.0-20250323151219-d75620c61711/go.mod h1:tRI2LfMudSkKHhyv1uex3BWzcice2s/l8Ah8axporfA= github.com/invopop/jsonschema v0.13.0 h1:KvpoAJWEjR3uD9Kbm2HWJmqsEaHt8lBUpd0qHcIi21E= @@ -22,10 +27,12 @@ github.com/stretchr/testify v1.9.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8 github.com/tidwall/gjson v1.14.2/go.mod h1:/wbyibRr2FHMks5tjHJ5F8dMZh3AcwJEMf5vlfC0lxk= github.com/tidwall/gjson v1.17.3 h1:bwWLZU7icoKRG+C+0PNwIKC6FCJO/Q3p2pZvuP0jN94= github.com/tidwall/gjson v1.17.3/go.mod h1:/wbyibRr2FHMks5tjHJ5F8dMZh3AcwJEMf5vlfC0lxk= +github.com/tidwall/gjson v1.18.0/go.mod h1:/wbyibRr2FHMks5tjHJ5F8dMZh3AcwJEMf5vlfC0lxk= github.com/tidwall/match v1.1.1 h1:+Ho715JplO36QYgwN9PGYNhgZvoUSc9X2c80KVTi+GA= github.com/tidwall/match v1.1.1/go.mod h1:eRSPERbgtNPcGhD8UCthc6PmLEQXEWd3PRB5JTxsfmM= github.com/tidwall/pretty v1.2.0 h1:RWIZEg2iJ8/g6fDDYzMpobmaoGh5OLl4AXtGUGPcqCs= github.com/tidwall/pretty v1.2.0/go.mod h1:ITEVvHYasfjBbM0u2Pg8T2nJnzm8xPwvNhhsoaGGjNU= +github.com/tidwall/pretty v1.2.1/go.mod h1:ITEVvHYasfjBbM0u2Pg8T2nJnzm8xPwvNhhsoaGGjNU= github.com/tidwall/resp v0.1.1 h1:Ly20wkhqKTmDUPlyM1S7pWo5kk0tDu8OoC/vFArXmwE= github.com/tidwall/resp v0.1.1/go.mod h1:3/FrruOBAxPTPtundW0VXgmsQ4ZBA0Aw714lVYgwFa0= github.com/tidwall/sjson v1.2.5 h1:kLy8mja+1c9jlljvWTlSazM7cKDRfJuR/bOJhcY5NcY= diff --git a/plugins/wasm-go/mcp-servers/quark-search/go.mod b/plugins/wasm-go/mcp-servers/quark-search/go.mod index b833196c4..15c4b50f8 100644 --- a/plugins/wasm-go/mcp-servers/quark-search/go.mod +++ b/plugins/wasm-go/mcp-servers/quark-search/go.mod @@ -1,23 +1,21 @@ module quark-search -go 1.24 - -toolchain go1.24.1 +go 1.24.1 require ( - github.com/alibaba/higress/plugins/wasm-go v1.4.4-0.20250329145934-61b36a20cd9c - github.com/tidwall/gjson v1.17.3 + github.com/alibaba/higress/plugins/wasm-go v1.4.4-0.20250331125043-e9661a6dabda + github.com/tidwall/gjson v1.18.0 ) require ( github.com/bahlo/generic-list-go v0.2.0 // indirect github.com/buger/jsonparser v1.1.1 // indirect - github.com/google/uuid v1.3.0 // indirect + github.com/google/uuid v1.6.0 // indirect github.com/higress-group/proxy-wasm-go-sdk v0.0.0-20250323151219-d75620c61711 // indirect github.com/invopop/jsonschema v0.13.0 // indirect github.com/mailru/easyjson v0.7.7 // indirect github.com/tidwall/match v1.1.1 // indirect - github.com/tidwall/pretty v1.2.0 // indirect + github.com/tidwall/pretty v1.2.1 // indirect github.com/tidwall/resp v0.1.1 // indirect github.com/tidwall/sjson v1.2.5 // indirect github.com/wk8/go-ordered-map/v2 v2.1.8 // indirect diff --git a/plugins/wasm-go/mcp-servers/quark-search/go.sum b/plugins/wasm-go/mcp-servers/quark-search/go.sum index 2b5810d3e..49b723fbf 100644 --- a/plugins/wasm-go/mcp-servers/quark-search/go.sum +++ b/plugins/wasm-go/mcp-servers/quark-search/go.sum @@ -1,5 +1,9 @@ github.com/alibaba/higress/plugins/wasm-go v1.4.4-0.20250329145934-61b36a20cd9c h1:giBV8e7p0qxRdBsCu4AjXbpUI8sNiGkEtPNWEXf6fA4= github.com/alibaba/higress/plugins/wasm-go v1.4.4-0.20250329145934-61b36a20cd9c/go.mod h1:csP9Mpkc+gVgbZsizCdcYSy0LJrQA+//RcnZBInyknc= +github.com/alibaba/higress/plugins/wasm-go v1.4.4-0.20250330032733-a3f709c6bf3c h1:7NUKWzu/HH1OCHJEnsogHDFjf5GXcagv489qN6uudjw= +github.com/alibaba/higress/plugins/wasm-go v1.4.4-0.20250330032733-a3f709c6bf3c/go.mod h1:csP9Mpkc+gVgbZsizCdcYSy0LJrQA+//RcnZBInyknc= +github.com/alibaba/higress/plugins/wasm-go v1.4.4-0.20250331125043-e9661a6dabda h1:kvubg2BmbBfw6CtqEvTMsiU/UdEII/DYyKFYwZ3+TP0= +github.com/alibaba/higress/plugins/wasm-go v1.4.4-0.20250331125043-e9661a6dabda/go.mod h1:R/g1lYl9ToNltcs01QbOPhZG/h1klHcmjGaowyeWdEI= github.com/bahlo/generic-list-go v0.2.0 h1:5sz/EEAK+ls5wF+NeqDpk5+iNdMDXrh3z3nPnH1Wvgk= github.com/bahlo/generic-list-go v0.2.0/go.mod h1:2KvAjgMlE5NNynlg/5iLrrCCZ2+5xWbdbCW3pNTGyYg= github.com/buger/jsonparser v1.1.1 h1:2PnMjfWD7wBILjqQbt530v576A/cAbQvEW9gGIpYMUs= @@ -8,6 +12,7 @@ github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/google/uuid v1.3.0 h1:t6JiXgmwXMjEs8VusXIJk2BXHsn+wx8BZdTaoZ5fu7I= github.com/google/uuid v1.3.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= +github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/higress-group/proxy-wasm-go-sdk v0.0.0-20250323151219-d75620c61711 h1:n5sZwSZWQ5uKS69hu50/0gliTFrIJ1w+g/FSdIIiZIs= github.com/higress-group/proxy-wasm-go-sdk v0.0.0-20250323151219-d75620c61711/go.mod h1:tRI2LfMudSkKHhyv1uex3BWzcice2s/l8Ah8axporfA= github.com/invopop/jsonschema v0.13.0 h1:KvpoAJWEjR3uD9Kbm2HWJmqsEaHt8lBUpd0qHcIi21E= @@ -22,10 +27,12 @@ github.com/stretchr/testify v1.9.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8 github.com/tidwall/gjson v1.14.2/go.mod h1:/wbyibRr2FHMks5tjHJ5F8dMZh3AcwJEMf5vlfC0lxk= github.com/tidwall/gjson v1.17.3 h1:bwWLZU7icoKRG+C+0PNwIKC6FCJO/Q3p2pZvuP0jN94= github.com/tidwall/gjson v1.17.3/go.mod h1:/wbyibRr2FHMks5tjHJ5F8dMZh3AcwJEMf5vlfC0lxk= +github.com/tidwall/gjson v1.18.0/go.mod h1:/wbyibRr2FHMks5tjHJ5F8dMZh3AcwJEMf5vlfC0lxk= github.com/tidwall/match v1.1.1 h1:+Ho715JplO36QYgwN9PGYNhgZvoUSc9X2c80KVTi+GA= github.com/tidwall/match v1.1.1/go.mod h1:eRSPERbgtNPcGhD8UCthc6PmLEQXEWd3PRB5JTxsfmM= github.com/tidwall/pretty v1.2.0 h1:RWIZEg2iJ8/g6fDDYzMpobmaoGh5OLl4AXtGUGPcqCs= github.com/tidwall/pretty v1.2.0/go.mod h1:ITEVvHYasfjBbM0u2Pg8T2nJnzm8xPwvNhhsoaGGjNU= +github.com/tidwall/pretty v1.2.1/go.mod h1:ITEVvHYasfjBbM0u2Pg8T2nJnzm8xPwvNhhsoaGGjNU= github.com/tidwall/resp v0.1.1 h1:Ly20wkhqKTmDUPlyM1S7pWo5kk0tDu8OoC/vFArXmwE= github.com/tidwall/resp v0.1.1/go.mod h1:3/FrruOBAxPTPtundW0VXgmsQ4ZBA0Aw714lVYgwFa0= github.com/tidwall/sjson v1.2.5 h1:kLy8mja+1c9jlljvWTlSazM7cKDRfJuR/bOJhcY5NcY=