Skip to main content
Version: 2.7.0.2

McpServer快速开始

本文档演示如何将McpServer服务接入到Apache ShenYu网关。您可以直接在工程下找到本文档的示例代码

环境准备#

请参考运维部署的内容,选择一种方式启动shenyu-admin。比如,通过 本地部署 启动Apache ShenYu后台管理系统。

启动成功后,需要在基础配置->插件管理中,把McpServer divide插件设置为开启。注意:本文使用divide插件用于 ToolCall(),如需使用 http 以外的其他协议,请开启相关的插件,并更换相关依赖

启动网关,如果是通过源码的方式,直接运行shenyu-bootstrap中的ShenyuBootstrapApplication

注意,在启动前,请确保网关已经引入相关依赖。

引入网关对McpServer的支持插件,确保网关的 pom.xml 文件中存在如下依赖:

        <!--if you use http proxy start this-->        <dependency>            <groupId>org.apache.shenyu</groupId>            <artifactId>shenyu-spring-boot-starter-plugin-divide</artifactId>            <version>${project.version}</version>        </dependency>                <dependency>        <groupId>org.apache.shenyu</groupId>        <artifactId>shenyu-spring-boot-starter-plugin-httpclient</artifactId>        <version>${project.version}</version>        </dependency>
        <!--Mcp Server Plugin Start-->        <dependency>            <groupId>org.apache.shenyu</groupId>            <artifactId>shenyu-spring-boot-starter-plugin-mcp-server</artifactId>            <version>${project.version}</version>        </dependency>        <!--Mcp Server Plugin end-->

运行shenyu-examples-mcp项目#

下载 shenyu-examples-mcp .

运行相应的main方法启动项目。

成功启动会有如下日志:

2025-11-07T22:39:35.596+08:00  INFO 4336 --- [           main] o.s.b.w.embedded.tomcat.TomcatWebServer  : Tomcat started on port 8150 (http) with context path ''2025-11-07T22:39:35.673+08:00  INFO 4336 --- [           main] o.a.shenyu.ShenyuTestMcpApplication      : Started ShenyuTestMcpApplication in 2.125 seconds (process running for 2.571)2025-11-07T22:39:36.086+08:00  INFO 4336 --- [or_consumer_-65] o.a.s.r.client.http.utils.RegisterUtils  : login success: {"id":"1","userName":"admin","role":1,"enabled":true,"dateCreated":"2025-11-07 22:39:25","dateUpdated":"2025-11-07 22:39:25","token":"eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ1c2VyTmFtZSI6ImFkbWluIiwiZXhwIjoxNzYyNjEyNzc2fQ.kSfDHEMBR99G4pUv28Bw2ZV3CcUxZTFH91Nyb7IJZxA","expiredTime":86400000} 2025-11-07T22:39:36.153+08:00  INFO 4336 --- [or_consumer_-65] o.a.s.r.client.http.utils.RegisterUtils  : mcp client register success: {"metaDataRegisterDTO":{"appName":"/order","contextPath":"/order","path":"http://localhost:8150","pathDesc":"","rpcType":"mcp","serviceName":"","methodName":"findAll","ruleName":"findAllOrder","parameterTypes":"","enabled":true,"host":"192.168.219.1","port":-1,"pluginNames":[],"registerMetaData":false,"timeMillis":1762526375637,"addPrefixed":false,"namespaceId":"649330b6-c2d7-4edc-be8e-8a54df9eb385"},"namespaceId":"649330b6-c2d7-4edc-be8e-8a54df9eb385","mcpConfig":"{\"name\":\"findAllOrder\",\"parameters\":[],\"requestConfig\":\"{\\\"requestTemplate\\\":{\\\"url\\\":\\\"/order/findAll\\\",\\\"method\\\":\\\"Get\\\",\\\"argsPosition\\\":{},\\\"argsToJsonBody\\\":\\\"false\\\",\\\"headers\\\":[{\\\"aaa\\\":\\\"bbb\\\"}]}}\",\"description\":\"find all order\"}"} 2025-11-07T22:39:36.153+08:00  INFO 4336 --- [or_consumer_-66] o.a.s.r.client.http.utils.RegisterUtils  : mcp client register success: {"metaDataRegisterDTO":{"appName":"/order","contextPath":"/order","path":"http://localhost:8150","pathDesc":"","rpcType":"mcp","serviceName":"","methodName":"findByName","ruleName":"findByName","parameterTypes":"java.lang.String","enabled":true,"host":"192.168.219.1","port":-1,"pluginNames":[],"registerMetaData":false,"timeMillis":1762526375655,"addPrefixed":false,"namespaceId":"649330b6-c2d7-4edc-be8e-8a54df9eb385"},"namespaceId":"649330b6-c2d7-4edc-be8e-8a54df9eb385","mcpConfig":"{\"name\":\"findByName\",\"parameters\":[{\"name\":\"name\",\"in\":\"query\",\"description\":\"name\",\"required\":false}],\"requestConfig\":\"{\\\"requestTemplate\\\":{\\\"url\\\":\\\"/order/findByName\\\",\\\"method\\\":\\\"GET\\\",\\\"argsPosition\\\":{\\\"name\\\":\\\"query\\\"},\\\"argsToJsonBody\\\":\\\"false\\\",\\\"headers\\\":[]}}\",\"description\":\"findByName\"}"} 2025-11-07T22:39:36.153+08:00  INFO 4336 --- [or_consumer_-67] o.a.s.r.client.http.utils.RegisterUtils  : mcp client register success: {"metaDataRegisterDTO":{"appName":"/order","contextPath":"/order","path":"http://localhost:8150","pathDesc":"","rpcType":"mcp","serviceName":"","methodName":"findById","ruleName":"findOrderById","parameterTypes":"java.lang.String","enabled":true,"host":"192.168.219.1","port":-1,"pluginNames":[],"registerMetaData":false,"timeMillis":1762526375670,"addPrefixed":false,"namespaceId":"649330b6-c2d7-4edc-be8e-8a54df9eb385"},"namespaceId":"649330b6-c2d7-4edc-be8e-8a54df9eb385","mcpConfig":"{\"name\":\"findOrderById\",\"parameters\":[{\"name\":\"id\",\"in\":\"path\",\"description\":\"the id of order\",\"required\":true,\"type\":\"string\"}],\"requestConfig\":\"{\\\"requestTemplate\\\":{\\\"url\\\":\\\"/order/findById\\\",\\\"method\\\":\\\"Get\\\",\\\"argsPosition\\\":{\\\"id\\\":\\\"path\\\"},\\\"argsToJsonBody\\\":\\\"false\\\",\\\"headers\\\":[{\\\"aaa\\\":\\\"bbb\\\"}]}}\",\"description\":\"find order by id\"}"} 

测试#

shenyu-examples-mcp项目成功启动之后会自动把加 @ShenyuMcpTool @ShenyuSpringMvcClient注解的接口方法注册到网关。

打开插件列表 -> mcp -> McpServer 插件列表 -> proxy -> divide可以看到插件规则配置列表:

请确保divide 插件,selector -> Modify -> Discovery Config 中有如下配置

下面使用自定义Agent模拟客户端通过mcp sse的方式来调用shenyu Mcp Server服务:

创建mcp客户端,并在其中添加如下url。如果你使用的是市面上Agent,请在其相关配置中添加如下url

令 Agent 发起工具调用