当前位置: 首页 > news >正文

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

http://www.dtcms.com/a/585842.html

相关文章:

  • MyBatis:性能优化实战 - 从 SQL 优化到索引设计
  • 【Golang】常见数据结构原理剖析
  • 做百度推广得用网站是吗做小说网站做国外域名还是国内的好处
  • Ubuntu 复制王者:rsync -av 终极指南 —— 进度可视化 + 无损同步,效率甩 cp 几条街!
  • ubuntu磁盘管理、磁盘扩容
  • 专业设计网站排名百达翡丽手表网站
  • 广度优先搜索
  • 高端网站建设公司名称动物自己做的网站
  • 编译OpenCV
  • jQuery Mobile 事件详解
  • 网站换模板影响国家域名注册中心
  • 佛山的网站建设公司凡科建站微信小程序
  • 建设部网站网上大厅长沙景点免费
  • 不练不熟,不写就忘 之 compose 之 动画之 animateSizeAsState动画练习
  • 函数模板和类模板
  • 从 0 到 1:我的 C++ 游戏开发全记录
  • 手机屏幕表面缺陷检测分割系统1:数据集说明(含下载链接)
  • 【MyBatis】 吃透 MyBatis:多表查询、SQL 注入防护(#{} vs ${})与连接池优化
  • 智能体AI的六大核心设计模式
  • 基于SLERP(Spherical Linear Interpolation) 进行旋转滤波
  • 站长工具seo查询5g5g成都市四方建设工程监理有限公司网站
  • 网站建设百科深圳网站建设公司fantodo
  • 接口自动化详细介绍
  • 深入解析多态:面向对象编程灵魂
  • 基于开源链动2+1模式AI智能名片S2B2C商城小程序的赛道力构建与品牌发展研究
  • 怎么做网站地图的样式wordpress网站后缀
  • 【报错解决】java:无效的目标发行版:17;源发行版17需要目标发行版17
  • C/C++输入输出初级(一) (算法竞赛)
  • java list<string> to string[] 怎么转换
  • 【Javaweb学习|黑马笔记|Day4】Web后端基础