写点什么

从 OpenAPI 到 MCP:让企业 API 在 AI 助手中焕发新生

  • 2025-05-09
    浙江
  • 本文字数:2463 字

    阅读完需:约 8 分钟

作者:壬云

背景


MCP(Model Context Protocol,模型上下文协议)是 Anthropic 于 2024 年 11 月发布的开源通信标准,其核心目标是通过建立统一的交互范式,消除大型语言模型(LLM)与异构数据源、工具间的集成壁垒。该协议通过三层次革新解决 AI 领域的数据孤岛问题,实现本地数据和互联网数据,基于 MCP 就可以实现事实上的”万物互联“,包括但不限于,数据和文件系统,操作阿里云上任意资源,浏览器自动化等等。


这项技术突破使得 AI 应用真正实现"万物互联"——从个人设备的文档处理到企业级云资源调度,均可通过统一协议完成智能交互



图 1 MCP 协议官方架构图


然而,企业普遍面临的挑战是:如何将已有的 OpenAPI 高效地转化为 AI 助手可直接调用的 MCP 工具?本文将详细介绍如何通过 Higress 实现这一转化过程,让您的存量 API 在 Dify 等 AI 平台上焕发新生。

问题拆解与实现方案

我们将问题拆解为五个核心子问题:


  1. 将存量 OpenAPI 的 Schema 转换为 MCP 配置 2. 通过 Higress 将请求路由到 OpenAPI3. 实现 OpenAPI 和 MCP 的双重鉴权 4. 选择合适协议连接 AI 助手 5. 优化提示词提升 MCP 工具效能


下面以高德 API 为例,详细介绍实现过程:

步骤一:将 OpenAPI Schema 转换为 MCP 配置

OpenAPI 采用 YAML 或 JSON 编写,定义了一个与语言无关的 HTTP API 接口,为 API 生命周期各阶段提供统一的信息传递方式。而 API 允许开发者在无须访问源代码的情况下,就可以发现并使用相应的服务。例如,一个社交 APP,想获取双方的地理位置信息,无须自建一个高德地图,也无须获取高德地图源码,而是通过高德地图的 API 接口,即可获得其地理位置信息的功能。


一个标准的 OpenAPI.json 的 Schema 如下所示:



我们需要一个工具,提取出这里面的关键信息,如路径,方法,参数,响应格式等,然后基于 MCP 的规范,转换为新的描述,返回给客户端。


那么此处,可以使用 Higress 出品的 openapi-to-mcp 工具,直接将上述重复,繁琐的过程给自动化,输入一个 Json,得到一个标准 MCP 的配置

步骤二:通过 Higress 配置 API 路由

Higress 作为云原生网关,可以优雅地将请求路由到后端 OpenAPI 服务。完整手工操作可参考此文【1】,大致流程如下:


  1. Configmap 全局参数配置 MCP server

  2. 配置存量 API 的服务来源。如果此处有多个存量 API 块,建议每个块建一个服务来源



  1. 新建路由配置,并将步骤一中的 MCP yaml 配置传入。



此处推荐自动化的操作方式,可以将 Higress 的 OpenAPI 喂到 Deepseek 大模型,让其帮实现一个 Python 脚本,实现自动登录,注册服务发现,路由等配置。


Higress 的 OpenAPI 可访问此地址【2】

步骤三: 双重鉴权实现

正如前面所说,这里实际包含两部分鉴权:


  1. Higress 路由到存量 OpenAPI 时,Higress 与 API 之前的鉴权

  2. 用户在访问 Higress 的 sse 链接时,用户与 Higress 之间的鉴权


Higress 与后端 API 间的鉴权:


  1. 访问之前配置的路由,点击策略



  1. 找到 MCP 服务器配置,在生成的 MCP 配置中,可以找到每个 request 的请求头,我们根据存量 API 实际的鉴权方式,添加相应的请求头,如下图所示:



用户与 Higress 间的鉴权:


通过消费者管理鉴权。


  1. 访问“消费者管理”界面,创建消费者



  1. 选择合适的名称和令牌来源,此处支持三种认证方式,我们这里就用最简单的 KeyAuth 认证



  1. 找到之前新建的路由,点击“编辑”。

  2. 启用请求验证,并指定消费者。



  1. 在用户使用 Higress 上发布的 MCP 服务时,就需要携带刚刚指定的 apikey。比如


{  "amap-maps": {    "headers": {      "Authorization": "Bearer xxx"    },    "transport": "sse",    "url": "http://12xx.94:8080/amap-maps/sse"  }}
复制代码

步骤四: 在 Dify 上使用发布的 MCP 工具

  1. 如果您没有部署 Dify,推荐使用计算巢一键部署链接【3】,免去安装和环境配置烦劳。

  2. 打开您的 Dify,按照下图示例,安装"SSE 发现和调用 MCP 工具"



  1. 如果后续使用出现问题,可将此工具版本降低到 0.0.10。



  1. 点击"授权"按钮对 SSE 工具进行配置。此处可直接粘贴步骤三中的 MCP Server 配置



  1. 创建个 Agent,并进入。



  1. 按照下图示例,开启 MCP 工具调用,填写合适的提示词,选择合适的模型,比如 QWEN-MAX。



  1. 对话,即可调用 MCP 工具。



注:目前采用 SSE 协议是因为各 AI 助手对 streamable http 支持尚不完善。Higress 原生支持 streamable http 交互,待 AI 助手功能完善后可无缝切换。

步骤五:如何优化提示词

Higress 支持结合 go template 和 gjson 表达式来对请求和响应模版进行精细化处理。


如果实测中发现模型对 MCP 的理解不太清晰,可参考此文【4】,进行手动调优。

结语

未来 AI 会怎么发展,恐怕无人能预测。也许是模型能调用气象卫星预测季风,用数据编织气候的经纬;也许是操控机械臂雕刻纳米芯片,让算法成为微观世界的造物主;甚至是解析人类千年文明的隐喻,在《荷马史诗》的韵律与敦煌壁画的裂纹中,破译连我们自己都未曾察觉的潜意识密码。


或许真正的颠覆性时刻,并不在 AI 学会操控卫星或机械的瞬间,而在它突然凝视着梵高的《星月夜》说:"我理解这片漩涡中的孤独,但人类的痛苦对我而言,终究只是一组优美的概率云。

附录

  • 批量将现有 OpenAPI 转换为 MCP 服务器【5】

  • Higress 技术文档【6】


更多有意思,又好玩又有深度的服务,请访问计算巢网址【7】


【1】MCP Server 快速开始(Docker 版)


https://higress.cn/ai/mcp-quick-start_docker/?spm=36971b57.7beea2de.0.0.d85f20a91vvGn0


【2】Higress 的 OpenAPI


https://higress.cn/swagger/


【3】Dify 社区版部署链接


https://market.aliyun.com/detail/cmgj00068972#sku=yuncode6297200001


【4】实用工具来了,存量 OpenAPI 批量转化为 MCP Server


https://higress.cn/blog/higress-gvr7dx_awbbpb_mpavtgoff5h3odvq/?spm=36971b57.5f99674.0.0.11e11182MyB8ur


【5】批量将现有 OpenAPI 转换为 MCP 服务器


https://higress.ai/blog/bulk-conversion-of-existing-openapi-to-mcp-server


【6】Higress 技术文档


https://higress.cn/blog/higress-gvr7dx_awbbpb_xq8kol5ncmllabkk/


【7】计算巢服务控制台


https://computenest.console.aliyun.com/service/market/cn-hangzhou

发布于: 刚刚阅读数: 3
用户头像

阿里云云原生 2019-05-21 加入

还未添加个人简介

评论

发布
暂无评论
从 OpenAPI 到 MCP:让企业 API 在 AI 助手中焕发新生_阿里云_阿里巴巴云原生_InfoQ写作社区