「 AI 」 十一月 01, 2026

Harness 低成本调用存量 API

文章字数 10k 阅读约需 9 mins. 阅读次数

本文以 Nacos v3.2.2 和 Higress v2.2.5 为例,介绍如何零代码改动将存量 API 转换成 MCP 服务,方便 AI 通过 Harness 低成本调用存量 API。可作为官方文档 存量API转换MCP手册 的补充,及 后端开发必看:零代码实现存量服务改造成MCP服务 的内容更新。

整体结构类似下图:

  1. API 自动或手动注册到 Nacos 中
  2. Higress 通过 Nacos 获取 API 信息,自动生成 MCP 服务
  3. AI Agent(本文使用 DeepSeek Harness)通过 MCP 服务调用存量 API

环境准备

存量 API 工程

以一个只有 Swagger 2.0 接口的存量 API 工程为例,假设 API 地址为 http://localhost:8090,Swagger 地址为 http://localhost:8090/v2/api-docs 。

将存量 API 注册到 Nacos 引擎中,可通过 Nacos SDK 或 Spring Cloud 等框架进行注册或自动注册。

也可以 OpenAPI 3.x 格式的 JSON/YAML 文件直接 导入至 Nacos 中 完成 MCP 工具的注册。

Swagger 2.0 规范在 2015 年被捐赠 给 Linux 基金会旗下的 OpenAPI Initiative 后,更名为 OpenAPI 2.0,但与 OpenAPI 3.x 规范有较大差异,直接在 Nacos 中导入 Swagger 2.0 的 JSON 文件会报错,可先通过 swagger2openapi 工具,或直接以对话方式让 AI 帮助执行格式转换。

关于 Swagger 和 OpenAPI 的更多信息可见:OpenAPI vs Swagger: what’s the difference between the two specs? 。

Nacos

在运行环境中部署版本 3.0.0 及以上的 Nacos 引擎,可参考 Nacos快速开始,Nacos Docker 快速开始 或 Nacos Kubernetes 快速开始。

假设部署后 Nacos Console 的访问地址为 http://localhost:8080 ,HTTP API 端口为 8848,客户端 gRPC 请求服务端端口为 9848,Nacos 管理员用户 nacos 的密码也设为 nacos。

Higress

部署 Higress-AI:在运行环境中部署版本 2.1.2 及以上的 Higress,可参考 Higress Docker 快速开始 或 Higress Kubernetes 快速开始。

假设部署后 Higress UI 控制台入口为 http://localhost:8001,网关 HTTP 协议入口为 8002 端口。

在使用 Higress 进行 MCP 协议转换时,如果要使用 HTTP with Server-Sent Events(SSE) 传输机制,则还需要部署一个 Redis 服务,并在 Higress 配置中指定 Redis 的地址和端口。但该传输机制已在 2025 年 03 月 26 日被 Streamable HTTP 取代,@deepseek-ai/dsh-mcp-client 中的 transport 字段也只支持 stdio 或 streamable-http,本文示例中将使用 streamable-http 传输机制(stdio 适用于客户端将 MCP 服务器作为子进程启动,仅限本地使用),因此可不需要部署 Redis 服务。

Nacos 中进行的配置

1 创建 MCP Server

nacos-create-mcp-server

2 配置 MCP Server 基本信息、HTTP 转 MCP、导入工具

nacos-config-mcp-server

  • 服务名称 后续会用到,协议类型 选择 Streamable;
  • 打开 HTTP 转 MCP 开关,以 直连新服务 的方式直接访问 http://localhost:8090 存量 API 工程;
  • 工具管理 中选择 从OpenAPI导入,然后选择 OpenAPI 3.x 的 JSON 或 YAML 文件导入;
  • 完成配置后点击右下角 发布 按钮。

3 手动添加工具

如果接口数量较少,也可通过 新建工具 按钮手动添加工具,配置工具对应接口的出入参及请求和响应模板,如调用 OpenAI 格式的 /v1/models 接口获取可用模型信息:

  • 请求模板
{
  "url": "/v1/models",
  "method": "GET",
  "headers": [
    {
      "key": "Authorization",
      "value": "Bearer {{ .args.apiKey }}"
    }
  ]
}
  • 响应模板
{
  "body": "{{ . }}"
}

模板更多语法可见:MCP模版配置手册 。

Higress 中进行的配置

1 编辑全局配置 higress-config,开启 MCP Server 功能

higress-config-mcp-server

2 创建 Nacos 3.x 类型的服务来源

higress-create-svc-src

nacos-svc-src

  • 类型 选择 Nacos 3.x;
  • 名称 随意填写,注册中心地址 按实际情况填写,本例中是 127.0.0.1;
  • 注册中心访问端口 填写 Nacos HTTP API 端口,如 8848;
  • 是否开启了认证 选择 是,填写 Nacos 管理员用户名 nacos 及密码,本例中也是 nacos;
  • 如果在 Nacos 中创建 MCP Server 时使用了命名空间,Nacos命名空间ID 要填写命名空间 ID(不是命名空间名称)。如果使用的是默认的 public 命名空间,此处可以不填;
  • 是否启用MCP Server功能 选 是;
  • MCP Server路由路径前缀 可保持默认 /mcp,如有修改,之后访问 MCP Server 时也需同时修改。
  • 完成后点击右上角 确定。

3 在服务列表中检查

在服务列表中,检查是否有新配置的服务来源对应的服务记录,如果没有,需要检查一下上一步哪个环节配置出错了。

higress-svc-list

服务列表中有对应记录,就可以通过 HTTP 协议验证 MCP 服务状态了,URL 为 {Higress 网关 HTTP 协议入口}/{Higress 服务来源中配置的 MCP Server 路由路径前缀}/{Nacos MCP Server 中配置的服务名称},如:

$ curl http://127.0.0.1:8082/mcp/nacos-mcp-server -I
HTTP/1.1 400 Bad Request
vary: Accept-Encoding
date: Thu, 29 Oct 2026 09:25:31 GMT
server: istio-envoy
connection: close
transfer-encoding: chunked

状态码 400 代表服务已可用,否则返回的状态码是 404。

本例中,存量 API 服务转换出来的 MCP Server 地址即为 http://127.0.0.1:8082/mcp/nacos-mcp-server,可将其配置到 Harness 工具中供 AI 调用。

DeepSeek Harness 中进行的配置

DeepSeek Harness 版本:0.2.1-rc.5

DeepSeek Harness 中已内置了 MCP 资源访问插件 @deepseek-ai/dsh-mcp-resources,只需配置 MCP 客户端 @deepseek-ai/dsh-mcp-client 。

web profile 中默认没有 dsh-mcp-client 插件,添加时需要在 ~/.dsh/profiles/web/cordis.patch.yml 中使用 insert 添加:

- insert:
  - id: streamable-http-mcp-test
    name: '@deepseek-ai/dsh-mcp-client'
    config:
      serverName: test
      transport: streamable-http
      url: http://127.0.0.1:8082/mcp/nacos-mcp-server

之后即可在内置插件中搜索到新增的 mcp-client 插件:

mcp-client

现在,通过 Harness 智能的使用存量 API 能力吧。

0%