将现有 REST API 转换为 MCP Server工具 -higress

将现有 REST API 转换为 MCP Server工具 -higress

Higress 是一款云原生 API 网关,集成了流量网关、微服务网关、安全网关和 AI 网关的功能。
它基于 Istio 和 Envoy 开发,支持使用 Go/Rust/JS 等语言编写 Wasm 插件。
提供了数十个通用插件和开箱即用的控制台。
Higress AI 网关支持多种 AI 服务提供商,如 OpenAI、DeepSeek、通义千问等,并具备令牌限流、消费者鉴权、WAF 防护、语义缓存等功能。

MCP Server 插件配置

higress

功能说明

  • mcp-server 插件基于 Model Context Protocol (MCP),专为 AI 助手设计,定义了 AI 模型与外部工具和资源交互的标准方式。
  • 功能特点:
    1. 无需编写代码:将现有 REST API 转换为 AI 助手可调用的工具。
    2. 统一认证、鉴权、限流和可观测性:利用 Higress 网关提供的能力,确保安全性和性能。
    3. 快速构建和部署:通过 Higress 插件机制,快速添加新的 MCP Server。

运行属性

  • 插件执行阶段:默认阶段
  • 插件执行优先级:30

配置字段

Server 配置

字段名数据类型填写要求默认值描述
server.namestring必填-MCP Server 的名称。如果是内置 MCP Server(如 quark-search),只需配置此字段;如果是 REST-to-MCP 场景,此字段可以自定义。
server.configobject选填{}MCP Server 配置,如 API 密钥等。
server.allowToolsarray of string选填-允许调用的工具列表。如果不指定,则允许所有工具。

REST-to-MCP 工具配置

字段名数据类型填写要求默认值描述
toolsarray of object选填[]REST-to-MCP 工具配置列表。
tools[].namestring必填-工具名称。
tools[].descriptionstring必填-工具功能描述。
tools[].argsarray of object必填[]工具参数定义。
tools[].args[].namestring必填-参数名称。
tools[].args[].descriptionstring必填-参数描述。
tools[].args[].typestring选填string参数类型(stringnumberintegerbooleanarrayobject)。
tools[].args[].requiredboolean选填false参数是否必需。
tools[].args[].defaultany选填-参数默认值。
tools[].args[].enumarray选填-参数允许的值列表。
tools[].args[].itemsobject选填-数组项的模式(当 typearray 时)。
tools[].args[].propertiesobject选填-对象属性的模式(当 typeobject 时)。
tools[].requestTemplateobject必填-HTTP 请求模板。
tools[].requestTemplate.urlstring必填-请求 URL 模板。
tools[].requestTemplate.methodstring必填-HTTP 方法(如 GETPOST 等)。
tools[].requestTemplate.headersarray of object选填[]请求头模板。
tools[].requestTemplate.headers[].keystring必填-请求头名称。
tools[].requestTemplate.headers[].valuestring必填-请求头值模板。
tools[].requestTemplate.bodystring选填-请求体模板(与 argsToJsonBodyargsToUrlParamargsToFormBody 互斥)。
tools[].requestTemplate.argsToJsonBodyboolean选填false参数直接作为 JSON 请求体(与 bodyargsToUrlParamargsToFormBody 互斥)。
tools[].requestTemplate.argsToUrlParamboolean选填false参数作为查询参数添加到 URL 中(与 bodyargsToJsonBodyargsToFormBody 互斥)。
tools[].requestTemplate.argsToFormBodyboolean选填false参数以 application/x-www-form-urlencoded 格式编码在请求体中(与 bodyargsToJsonBodyargsToUrlParam 互斥)。
tools[].responseTemplateobject必填-HTTP 响应转换模板。
tools[].responseTemplate.bodystring必填-响应体转换模板。

参数类型支持

  • 支持多种参数类型,用于更精确地定义工具参数:
    • string:字符串类型(默认)。
    • number:数字类型(浮点数)。
    • integer:整数类型。
    • boolean:布尔类型(true/false)。
    • array:数组类型,使用 items 字段定义数组元素的模式。
    • object:对象类型,使用 properties 字段定义对象属性的模式。

请求参数传递方式

  • 支持四种请求参数传递方式,这些选项是互斥的

argsToFormBody:参数以 application/x-www-form-urlencoded 格式编码在请求体中,并自动添加相应的 Content-Type 头。

requestTemplate:argsToFormBody:true

argsToUrlParam:参数作为查询参数添加到 URL 中。

requestTemplate:argsToUrlParam:true

argsToJsonBody:参数直接作为 JSON 对象发送到请求体中,并自动添加 Content-Type: application/json; charset=utf-8 头。

requestTemplate:argsToJsonBody:true

body:手动构建请求体,最灵活的方式。

requestTemplate:body:| { "query": "{{.args.query}}", "filters": {{toJson .args.filters}}, "options": { "limit": {{.args.limit}} } }

模板语法

  • 使用 GJSON Template 语法,结合了 Go 模板和 GJSON 路径语法。
  • 请求模板
    • 访问配置值:{{.config.字段名}}
    • 访问工具参数:{{.args.参数名}}
  • 响应模板
    • 使用 GJSON 路径语法访问 JSON 响应字段。
    • 使用模板函数(如 addupperlower 等)。
    • 使用控制结构(如 ifrange 等)。
  • GJSON 路径语法
    • 点表示法:address.city
    • 数组索引:users.0.name
    • 数组迭代:users.#.name
    • 数组过滤:users.#(age>=30)#.name
    • 修饰符:users.@reverse.#.name
    • 多路径:{name:users.0.name,count:users.#}
    • 转义字符:path.with\.dot

配置示例

server:name:"quark-search"config:apiKey:"xxxx"

基础配置示例:转换高德地图 API

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 

通过 MCP Server,您可以快速为 AI Agent 添加各种数据源支持,提高开发效率。任何 REST API 都可以通过简单的配置转换为 MCP Server,无需编写额外的代码。

Read more

二叉搜索树·极速分拣篇」:用C++怒肝《双截棍》分拣算法,暴打节点删除Boss战!

二叉搜索树·极速分拣篇」:用C++怒肝《双截棍》分拣算法,暴打节点删除Boss战!

【温馨提示,本文是理论文,手撕的文章还在加急处理中】 前言:         程序员老张最近失业了。不是因为他写代码时把分号敲成了希腊字母“α”(虽然这确实发生过),而是因为他试图用一坨意大利面条——哦不,是一坨链表——给楼下菜鸟驿站的快递包裹做自动分拣。结果某位邻居收到了一箱猫粮和三双荧光绿洞洞鞋,而隔壁程序员小王则被迫签收了一整箱《母猪产后护理指南》。 “你这分拣系统,简直比量子力学还薛定谔。”小王愤怒地在业主群@他。         老张痛定思痛,终于悟了: 链表就像单身汉的衣柜——东西随便塞,找起来要命;而二叉搜索树,才是强迫症的天堂——左小右大,泾渭分明。         今天,就让我们用C++给快递小哥打造一棵“二叉搜索树分拣机”,保证从此以后,你的包裹再也不会和邻居的假发、前任的结婚请柬、以及小区广场舞领队的“震楼级”蓝牙音箱纠缠不清。 (小声:如果代码跑着跑着突然开始给你的袜子配对,别慌,那是BST在拓展副业。) 1.二叉搜索树的概念         二叉搜索树又被称之为二叉排序树,它或者是一棵空树,或者是一棵具有以下性质的树: 1.如果它的左子树

By Ne0inhk

apamit:Hive Keychain Extension

apamit:Hive Keychain Extension 一款安全便捷的Hive钱包浏览器扩展。 项目介绍 Hive Keychain Extension 是一款专为Hive区块链设计的钱包扩展工具,适用于Chromium或Firefox浏览器。它允许用户安全地访问Hive区块链上的分布式应用(dApps),并提供创建和管理个人身份的功能。 项目技术分析 Hive Keychain Extension 通过将Hive Keychain API注入到每个网站的JavaScript环境中,使得dApps能够读取区块链上的数据。当dApps需要执行交易并写入区块链时,用户可以通过一个安全的界面来审查交易,然后选择批准或拒绝。 项目采用了模块化的开发方式,支持本地构建和调试。以下是构建和运行的基本步骤: 1. 克隆仓库:使用 git clone 命令克隆项目仓库。 2. 安装模块:通过 npm i 命令安装依赖模块。 3. 运行开发服务器:执行 npm run dev 命令,将创建两个文件夹 dist-dev 和

By Ne0inhk
PostgreSQL 企业级用户画像 + 行为分析实战:替代 Hive,10 亿数据秒级响应

PostgreSQL 企业级用户画像 + 行为分析实战:替代 Hive,10 亿数据秒级响应

很多企业用 MySQL 存用户画像(JSON 格式)、用 Hive 做行为分析,但面临 “MySQL 查询慢、Hive 维护复杂” 的两难。而 PostgreSQL 的 “JSONB + 分区表 + 窗口函数” 组合,堪称 “轻量级数据仓库”:既能像 MySQL 一样支撑高并发写入,又能像 Hive 一样做复杂分析,10 亿级用户行为数据秒级响应,还不用额外部署大数据集群,运维成本直接砍半。 这篇是纯企业级实战干货,聚焦 “用户画像存储 + 行为日志分析” 场景,用 PG 替代 MySQL+Hive 的组合,从表结构设计、数据写入、复杂分析到性能优化,每一步都给可复现的 SQL 和命令,

By Ne0inhk

Hive完整函数参考指南与实践

本文还有配套的精品资源,点击获取 简介:Hive是一个基于Hadoop的大数据仓库工具,支持通过类SQL语言HQL处理存储在HDFS中的大规模数据集。本文全面介绍Hive的内置函数,包括数据类型、算术、比较、逻辑、转换、字符串、数值、日期、聚合、分桶、分组、窗口、连接、子查询、分区以及用户自定义函数(UDF、UDAF、UDTF)等,旨在帮助用户高效地分析和管理大数据。 1. Hive数据类型与函数概述 数据类型与函数是任何数据库管理系统的基础。在Hive中,数据类型决定了数据的存储方式以及操作的范围和限制,而函数则为处理数据提供了强大的工具。本章节将带您简要了解Hive中数据类型的基本分类以及内置函数的基本概念,为进一步深入学习和使用Hive打下坚实的基础。 Hive数据类型 Hive的数据类型分为基本数据类型和复杂数据类型。基本数据类型包括数值型、布尔型、日期和时间类型、字符串类型等,它们是构建更复杂数据结构的基石。复杂数据类型如数组(Array)、映射(Map)、结构体(Struct)以及联合体(Union),提供了数据集合和复杂数据表示的方式,

By Ne0inhk