现有rest api转换为MCP工具 存量api改造为MCP Server
现有rest api转换为MCP工具 存量api改造为MCP Server
利用Higress简单配置就可以使现有的REST API转换为MCP Server。
Higress AI 网关提供 MCP Server 统一托管能力,可以帮助 AI Agent 快速对接各类数据源。通过 MCP Server,AI Agent 可以方便地访问数据库、REST API 等外部服务,无需关心具体的连接细节。其中,数据库对接能力是网关内置的能力;而对于 REST API,任何外部 REST API 都可以通过简单的配置转换成 MCP Server。
下面介绍通过 Higress 将一个 REST API 转化为 MCP Server 的配置流程。
部署Higress
这里使用docker部署Higress,docker的安装这里不做说明,看我其他博文有介绍。
# 创建一个工作目录,并进入目录
mkdir higress
cd higress# 拉取最新的 Higress all-in-one 镜像
docker pull higress-registry.cn-hangzhou.cr.aliyuncs.com/higress/all-in-one:latest# 启动 Higress,配置文件会写到当前工作目录下, 我这里把8080端口映射到主机的8081端口后面使用时要注意
docker run -d --rm --name higress-ai -v "${PWD}:/data" -e O11Y=on -p 8001:8001 -p 8081:8080 -p 8443:8443 higress-registry.cn-hangzhou.cr.aliyuncs.com/higress/all-in-one:latest
**重要:**后续操作过程中,请勿切换终端的工作目录。应使其保持在新创建的 higress 目录下操作。
部署Redis
MCP Server 的 SSE 功能需要依赖 Redis 服务用于数据的缓存。
# 可以使用以下命令在后台启动一个 Redis 服务容器,并将其 6379 端口映射到本机。
docker run -d --rm --name higress-redis -p 6379:6379 higress-registry.cn-hangzhou.cr.aliyuncs.com/higress/redis-stack-server:7.4.0-v3
开启MCP Server功能
启动Higress后,在浏览器中访问:http://localhost:8001 或使用IP地址访问
我的机器IP为192.168.18.158访问地址:http://192.168.18.158:8001/

首次访问时将会要求配置登录账号信息。设置好账号和密码完成后,使用账号和密码登录。

有两种方式配置开启MCP Server功能
方式一:在页面上修改(推荐)

在系统设置里直接修改,然后提交
部分配置如下:
mcpServer:enable: true # 启用 MCP Serversse_path_suffix: "/sse" # SSE 连接的路径后缀redis:address: "192.168.18.158:6379" # Redis服务地址。这里需要使用本机的内网 IP,不可以使用 127.0.0.1username: "" # Redis用户名(可选)password: "" # Redis密码(可选)db: 0 # Redis数据库(可选)match_list: []servers: []# 以下配置无需修改,此处省略
完整配置如下:
apiVersion: v1
kind: ConfigMap
metadata:name: higress-confignamespace: higress-systemresourceVersion: '5'
data:higress: |mcpServer:enable: truesse_path_suffix: "/sse"redis:address: "192.168.18.158:6379"username: ""password: ""db: 0match_list:- match_rule_domain: "*"match_rule_path: "/user"match_rule_type: "prefix"servers: []downstream:connectionBufferLimits: 32768http2:initialConnectionWindowSize: 1048576initialStreamWindowSize: 65535maxConcurrentStreams: 100idleTimeout: 180maxRequestHeadersKb: 60routeTimeout: 0upstream:connectionBufferLimits: 10485760idleTimeout: 10mesh: |-accessLogEncoding: TEXTaccessLogFile: /dev/stdoutaccessLogFormat: |{"ai_log":"%FILTER_STATE(wasm.ai_log:PLAIN)%","authority":"%REQ(X-ENVOY-ORIGINAL-HOST?:AUTHORITY)%","bytes_received":"%BYTES_RECEIVED%","bytes_sent":"%BYTES_SENT%","downstream_local_address":"%DOWNSTREAM_LOCAL_ADDRESS%","downstream_remote_address":"%DOWNSTREAM_REMOTE_ADDRESS%","duration":"%DURATION%","istio_policy_status":"%DYNAMIC_METADATA(istio.mixer:status)%","method":"%REQ(:METHOD)%","path":"%REQ(X-ENVOY-ORIGINAL-PATH?:PATH)%","protocol":"%PROTOCOL%","request_id":"%REQ(X-REQUEST-ID)%","requested_server_name":"%REQUESTED_SERVER_NAME%","response_code":"%RESPONSE_CODE%","response_flags":"%RESPONSE_FLAGS%","route_name":"%ROUTE_NAME%","start_time":"%START_TIME%","trace_id":"%REQ(X-B3-TRACEID)%","upstream_cluster":"%UPSTREAM_CLUSTER%","upstream_host":"%UPSTREAM_HOST%","upstream_local_address":"%UPSTREAM_LOCAL_ADDRESS%","upstream_service_time":"%RESP(X-ENVOY-UPSTREAM-SERVICE-TIME)%","upstream_transport_failure_reason":"%UPSTREAM_TRANSPORT_FAILURE_REASON%","user_agent":"%REQ(USER-AGENT)%","x_forwarded_for":"%REQ(X-FORWARDED-FOR)%","response_code_details":"%RESPONSE_CODE_DETAILS%"}configSources:- address: xds://127.0.0.1:15051- address: k8s://defaultConfig:disableAlpnH2: truediscoveryAddress: 127.0.0.1:15012controlPlaneAuthPolicy: MUTUAL_TLSproxyStatsMatcher:inclusionRegexps:- .*dnsRefreshRate: 200senableAutoMtls: falseenablePrometheusMerge: trueingressControllerMode: "OFF"mseIngressGlobalConfig:enableH3: falseenableProxyProtocol: falseprotocolDetectionTimeout: 100msrootNamespace: higress-systemtrustDomain: cluster.localmeshNetworks: 'networks: {}'
方式二:主机上修改文件
# 进入映射目录
cd higress/configmaps# 打开文件修改
vi higress-config.yamldocker restart higress-ai
配置现有的API转换为MCP
创建服务来源
Higress 控制台添加目标 REST API 的服务来源

添加完成后,服务来源列表显示如下

服务列表将会多一条服务

路由配置
在 Higress 控制台添加路由并指向对应的服务来源;
注意: 此处为路由选择的目标服务就是用来接受 MCP 工具请求的服务。


添加完成后,路由列表显示如下:

配置MCP Server插件
点击新创建的路由右侧的策略链接进入插件配置页面。
找到MCP 服务器插件,并点击其下方的配置按钮

将开启状态切换至绿色的开的状态。
将下发配置部分切换到 YAML 视图,并填入以下配置。

server:name: "ota-python-server"
tools:
- description: "say python hello"name: "get-hello"requestTemplate:method: "GET"url: "http://192.168.18.11:8000/ota/hello"responseTemplate:body: "- **Msg**: {{.msg}}"
- description: "get ota list"name: "get-list"requestTemplate:method: "POST"url: "http://192.168.18.11:8000/ota/batch/list"responseTemplate:body: |-{{- with (index .otas 0) }}- **Name**: {{.name.first}} {{.name.last}}- **Email**: {{.email}}- **Location**: {{.location.city}}, {{.location.country}}- **Phone**: {{.phone}}{{- end }}
如上配置了两个MCP工具对应两个rest api接口,一个是get-hello,另一个是get-list
点击右上角的保存。
配置 MCP Server 会话保持路由规则
mcpServer:enable: true # 启用 MCP Serversse_path_suffix: "/sse" # SSE 连接的路径后缀redis:address: "192.168.18.158:6379" # Redis服务地址。这里需要使用本机的内网 IP,不可以使用 127.0.0.1username: "" # Redis用户名(可选)password: "" # Redis密码(可选)db: 0 # Redis数据库(可选)match_list: # MCP Server 会话保持路由规则(当匹配下面路径时,将被识别为一个 MCP 会话,通过 SSE 等机制进行会话保持)- match_rule_domain: "*"match_rule_path: "/user"match_rule_type: "prefix"- match_rule_domain: "*"match_rule_path: "/ota"match_rule_type: "prefix"servers: []# 以下配置无需修改,此处省略
使用Cline调用MCP服务
在 AI Agent 中配置 MCP Server 的 SSE Server,下面使用VS Code插件Cline调用

{"mcpServers": {"ota_higress_mcp": {"type": "sse","url": "http://192.168.18.158:8081/ota/sse"}}
}
配置好大模型,我这里使用阿里的千问qwen3-max

给AI Agent提问,它会把mcp工具信息当前提示词喂给大模型,大模型根据mcp工具信息分析并返回需要调用的哪个工具,以及工具需要的参数
然后调用MCP工具,根据MCP工具返回的内容,丢给大模型丰富内容后输出给用户

参考文档:https://higress.cn/ai/mcp-quick-start_docker/?spm=36971b57.21353015.0.0.43a670953diNCa
