将现有 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

Python监控新范式:Logfire可观测性平台实战落地指南

Python监控新范式:Logfire可观测性平台实战落地指南 【免费下载链接】logfireUncomplicated Observability for Python and beyond! 🪵🔥 项目地址: https://gitcode.com/GitHub_Trending/lo/logfire 在现代Python应用开发中,性能瓶颈和异常问题往往隐藏在复杂的代码逻辑和分布式系统中,传统监控工具要么配置繁琐,要么无法深度适配Python生态。Logfire作为Pydantic团队打造的可观测性平台,以"Python原生"为核心优势,通过自动化追踪、SQL查询分析和直观可视化,为开发者提供从代码到生产环境的全链路监控能力。本文将系统介绍如何利用Logfire解决Python应用性能追踪难题,从价值定位到进阶配置,帮助团队快速落地可观测性实践。 价值定位:为什么Python应用需要专属可观测性平台? Python生态的独特性让通用监控工具常常显得力不从心——动态类型系统、异步编程模型和丰富的第三方库,都要求监控工具具备深度语言集成能力。Logfire基于OpenTe

By Ne0inhk
Python系列Bug修复|如何解决 pip install 安装报错 pyproject.toml 缺少 build-system.requires 问题

Python系列Bug修复|如何解决 pip install 安装报错 pyproject.toml 缺少 build-system.requires 问题

摘要 本文聚焦pip install安装Python包时出现的“pyproject.toml missing ‘build-system.requires’”(pyproject.toml 缺少 build-system.requires)报错,该问题核心是pip 按 PEP 621 规范解析pyproject.toml时,未找到build-system.requires配置块——该配置是现代Python包构建的核心,用于声明构建包所需的依赖(如setuptools、wheel),缺失会导致pip无法确定构建环境依赖,直接中断安装流程。文章从build-system.requires的作用原理出发,拆解报错根源(配置缺失、格式错误、pip版本过低、文件异常等),提供分场景的解决方案:补充标准配置块、修复配置格式、升级pip版本;同时覆盖Windows/Linux/macOS系统适配及PyCharm环境排障技巧,帮助开发者彻底解决该报错,同时给出规范pyproject.toml配置的预防策略。 文章目录 * 摘要 * 一、报错核心认知:不是文件缺失,

By Ne0inhk

深度解析孪生网络(Siamese Network):从原理、技巧到实战应用

深度解析孪生网络(Siamese Network):从原理、技巧到实战应用 在深度学习的版图里,孪生网络(Siamese Network) 是一种独特的存在。它不追求直接对目标进行分类,而是追求对目标之间“相似度”的极致衡量。这种架构在人脸识别(如手机刷脸解锁)、签名校验、文本语义匹配以及我们之前提到的 TSTD(时间序列异常检测)中都有着广泛的应用。 一、 核心概念:什么是孪生网络? 孪生网络,顾名思义,就像是一对双胞胎。它由**两个(或多个)结构完全相同、且共享权重(Shared Weights)**的子网络组成。 1.1 工作原理 当你输入两张图片 X1X_1X1 和 X2X_2X2 时,这对“双胞胎”子网络会分别将它们映射到高维特征空间,得到特征向量 G(

By Ne0inhk
tkinter,一个易用的 Python 库!

tkinter,一个易用的 Python 库!

一、库的简介:GUI编程的实际价值 在当今数字化时代,图形用户界面(GUI)已成为软件与用户交互的主要方式。无论是企业级应用、数据分析工具,还是日常办公软件,友好的可视化界面都极大地提升了用户体验和工作效率。Tkinter作为Python的标准GUI库,为开发者提供了一条快速构建桌面应用程序的捷径。 在实际生活中,Tkinter的应用无处不在:从简单的文件管理器、计算器、记事本,到复杂的数据可视化工具、自动化测试平台,乃至智能家居控制面板。例如,一家小型企业可以使用Tkinter快速开发内部库存管理系统,教师可以制作交互式教学工具,数据分析师可以构建数据探索仪表板。相比于Web应用,桌面应用具有更好的本地资源访问能力、更快的响应速度和离线使用优势。 Tkinter基于Tk GUI工具包,提供跨平台支持(Windows、macOS、Linux),无需额外安装,是Python标准库的一部分。虽然功能不像PyQt或wxPython那样丰富,但它的简单易用、轻量级特性和零依赖安装使其成为快速原型开发和小型应用的首选。 二、安装Tkinter Tkinter通常随Python标准库一

By Ne0inhk