掘金 人工智能 05月29日 15:08
部署Higress让服务无痛实现MCP Server
index_new5.html
../../../zaker_core/zaker_tpl_static/wap/tpl_guoji1.html

 

本文介绍了如何通过Higress服务网关,使普通的Restful服务轻松接入MCP Server协议,解决传统接入方式带来的问题。通过部署Higress、配置MCP Server、设置SSE匹配规则、启动业务服务、配置路由策略以及MCP Server Tools,实现业务服务与MCP协议解耦,降低项目复杂度和技术难度,提高开发效率。最后通过测试验证了方案的可行性。

🚀 接入痛点:传统MCP Server接入方式存在对JDK和Tomcat版本的要求,增加接入难度;需要编写接入协议代码,增加人力和时间成本;SSE通信方式需要维护session,增加项目复杂度和成本。

🛠️ 解决方案:通过Higress服务网关接入MCP,解决上述问题。Higress提供MCP Server功能,并支持分布式session共享,简化接入流程。

⚙️ 部署配置:配置Higress的docker-compose文件,启动Higress和Redis服务。在Higress配置文件中开启MCP Server功能,配置Redis地址、SSE请求后缀及请求映射规则。

🌐 业务服务:准备一个提供Restful接口的业务服务(例如Hello服务),并将其部署到Higress可以访问的网络环境中。配置Higress路由,将用户请求转发到Hello服务。

💡 MCP Server Tools:通过配置MCP服务器插件,将目标接口配置成Tools给MCP Client使用。可以使用Cherry Studio等工具进行测试,验证配置的正确性。

前言

在前面的几小节MCP Server实现示例中都需要在服务中接入MCP的实现,这样做会存在以下几个问题:

    MCP Server的实现对JDK和tomcat等都有版本要求,导致很多已有项目接入MCP存在困难;想要接入MCP Server都要写一套接入协议的代码,人力成本和时间成本投入线性增长;SSE通信方式需要维护session,项目复杂度和成本投入增大;

遇到这些问题的话,那么通过Higress来达到接入MCP的方式可以说是首选了。接下来就是实战如何部署配置Higress,并完成普通Restful接口实现MCP协议的过程。

Docker Compose配置编写

关于docker、docker-compose如何安装的问题不在此篇文章的研究范围,默认为已经安装好docker、docker-compose,下面是我们部署Higress示例的相关docker-compose.yaml配置:

version: "3"services:  higress-ai:    image: "higress-registry.cn-hangzhou.cr.aliyuncs.com/higress/all-in-one:latest"    ports:      - "8001:8001"      - "8080:8080"      - "8443:8443"    volumes:      - "./higress:/data"  higress-redis:    image: "higress-registry.cn-hangzhou.cr.aliyuncs.com/higress/redis-stack-server:7.4.0-v3"    ports:      - "6379:6379"

我们通过下面命令直接把容器运行起来:

docker-compose up -d

Higress McpServer配置

我们在相对路径./higress/configmaps中,找到higress-config.yaml文件,需要新增以下配置:

apiVersion: v1kind: ConfigMapmetadata:  name: higress-config  namespace: higress-system  creationTimestamp: "2000-01-01T00:00:00Z"  resourceVersion: "1"data:  higress: |-    # 下面为新增配置    mcpServer:      # mcp server sse请求后缀,提供给mcp client访问      sse_path_suffix: /sse      enable: true      # 解决session共享问题,交给redis存储      redis:        # redis的ip和端口,需要把$ip替换成redis的ip        address: $ip:6379        # redis用户名密码,根据实际来填写        username: ""        password: ""        # 目标db        db: 0      # 指定映射规则,符合规则的请求会转成mcp sse请求      match_list:        - match_rule_domain: "*"          match_rule_path: /mcp          match_rule_type: "prefix"      servers: []

重启Higress容器:

docker-compose restart higress-ai

上面的配置就是开启Higress Mcp Server的功能,并实现了分布式session共享,指定了相应的请求映射规则,这样的话,符合规则的请求都会按照MCP Server请求来处理,那么MCP Client就需要按照这个映射规则来配置请求MCP Server的SSE url。

测试一下服务是否启动成功,浏览器访问(云服务器需要确认8001端口是否开放):http://ip:8001/,成功后将出现Higress重置密码的界面。

准备业务服务

我们需要准备一个业务服务,比如查询天气,或者只返回hello world也行,对外提供restful接口,为了方便演示,我们做了一个Hello服务,代码如下:

@RestController  public class HelloController {    @GetMapping("/hello")  public Map<String, String> hello() {  Map<String,String> result = new HashMap<>();  result.put("text","hello");  return result;}  }

然后我们把这个服务打成war包,并部署起来。要求是该Hello服务提供的接口需要能被Higress所在的网络环境访问。为了方便起见,我们同样使用docker来部署Hello服务,docker-compose配置如下:

  tomcat:    image: "tomcat:10-jre17"    ports:      - "8081:8080"    volumes:      - "./tomcat/webapps:/usr/local/tomcat/webapps"

通过下面命令把tomcat镜像和服务运行起来:

docker-compose up -d tomcat

tomcat服务运行起来后,我们会看到对应的文件夹也创建好了,此时webapps里面并没有任何war包。接下来我们需要把打好的war包上传到webapps文件夹里面:

上传之前先把tomcat容器停止,避免上传过程中就被自动解包:

docker-compose stop tomcat

执行上传操作:

scp xxxxx.war root@ip:xxxx/tomcat/webapps/ROOT.war

上面命令中的xxxx需要替换成war包的名称和目标路径,ip需要替换成目标服务器的ip地址,可参考scp命令指南。

上传完毕后,启动tomcat容器:

docker-compose up -d tomcat

打开浏览器测试一下服务是否启动成功(云服务器需要确定安全组开启了8080端口):http://ip:8081/hello

配置Higress,接入MCP Server Tools

    配置服务来源现在我们需要在Higress上配置Hello服务,因为我们的Hello服务是单独部署的,没有接入任何注册中心,也没有配置域名,那么直接通过固定地址的方式配置:

    新增路由配置

    接下来就要配置路由,把用户请求路由到Hello服务上:

    新增MCP Server Tools

    最后我们通过配置MCP服务器插件的方式,把目标接口配置成Tools给到MCP Client:

    上述配置规则可参考MCP Server 插件配置

测试

我们依然可以使用cherry studio来测试是否成功生成MCP Server:

小结

至此,我们就实现了通过Higress让普通的restful服务无痛接入MCP Server协议的能力,通过统一的服务网关接入MCP Server协议,使得业务服务与MCP协议解耦,并轻松接入MCP Server,能够最大限度地降低项目复杂性和技术难度,极大地提高了开发效率,这种架构模式必然成为趋势。在这小节中,我们主要做了以下几件事情:

1、部署Higress服务,使用redis作为session存储方案;

2、启动MCP Server配置,设置SSE匹配模式;

3、启动业务服务,开放业务接口(Hello服务);

4、配置Higress路由策略;

5、配置MCP Server Tools及服务接口;

Fish AI Reader

Fish AI Reader

AI辅助创作,多种专业模板,深度分析,高质量内容生成。从观点提取到深度思考,FishAI为您提供全方位的创作支持。新版本引入自定义参数,让您的创作更加个性化和精准。

FishAI

FishAI

鱼阅,AI 时代的下一个智能信息助手,助你摆脱信息焦虑

联系邮箱 441953276@qq.com

相关标签

Higress MCP Server 服务网关 Restful 解耦
相关文章