solon-ai-mcp,提供了各种 mcp 相关能力,支持 java8, java11, java17, java21, java24 。是 solon-ai 项目的重要组成部分,也可以嵌入到 springboot2, springboot3, jfinal, vert.x 等项目中使用。

依赖包:

<dependency>
<groupId>org.noear</groupId>
<artifactId>solon-ai-mcp</artifactId>
<version>最新版</version>
</dependency>

1、看一个简单的 web 控制器

此控制器有两个方法:get_weather,获取天气;get_rainfall,获取降雨量。后面基于它进行快速改造演示。

@Mapping("/web/api")
@Controller
public class McpServerTool {
@Mapping("get_weather")
public String get_weather(String location) {
return "晴,14度";
} @Mapping("get_rainfall")
public String get_rainfall(String location) {
return "555毫米";
}
}

2、改造方案1:复用 mvc 注解,并添加 @McpServerEndpoint 注解

在 mvc 注解基础上,给方法和参数添加描述信息 description 信息(只适合 solon-web 项目,它的注解带有 description 属性)。再添加 @McpServerEndpoint 注解

@McpServerEndpoint(sseEndpoint = "/mcp/sse")
@Mapping("/web/api")
@Controller
public class McpServerTool {
@Mapping(path="get_weather", description = "查询天气预报")
public String get_weather(@Param(description = "城市位置") String location) {
return "晴,14度";
} @Mapping(path="get_rainfall", description = "查询城市降雨量")
public String get_rainfall(@Param(description = "城市位置") String location) {
return "555毫米";
}
}

这个方案的提醒说明:

  • @Mapping (通用注解)相当于 ai 的 @ToolMapping(专用注解)
  • @Param (通用注解)相当于 ai 的 @ToolParam(专用注解)
  • 必须申明 description 属性(否则会异常提示)
  • 入参使用 json 基础支持类型(暂时不支持实体入参。比如:字符串,数字,布尔,日期)

3、改造方案2:在控制器上,添加完整的 Mcp 相关注解

这个方案也适合 springboot2-web、sprngboot3-web、spring-mvc 或 jfinal 等项目,原控制器的代码不用动(原来有没有注解,不影响)。就像添加 swagger 注解那样,添加 mcp 相关注解即可。

注解简单说明(? 表示可选属性):

注解 描述
@ToolMapping(name?, description, returnDirect?, resultConverter?) 工具映射
@ToolParam(name?, description, required?) 工具的参数申明

改造后的代码:

@McpServerEndpoint(sseEndpoint = "/mcp/sse")
@Mapping("/web/api")
@RestController
public class McpServerTool {
@ToolMapping(description = "查询天气预报")
@GetMapping("get_weather")
public String get_weather(@ToolParam(description = "城市位置") String location) {
return "晴,14度";
} @ToolMapping(description = "查询城市降雨量")
@GetMapping("get_rainfall")
public String get_rainfall(@ToolParam(description = "城市位置") String location) {
return "555毫米";
}
}

提醒说明:

  • 入参使用 json 基础支持类型(暂时不支持实体入参。比如:字符串,数字,布尔,日期)

4、也可以转为本地的大模型工具提供者使用(ToolProvider)

上两个方案去掉 @McpServerEndpoint 注解,就不会发布为 MCP 服务端点。使用 MethodToolProvider 加载它,就能成为本地的工具提供者。

MethodToolProvider toolProvider = new MethodToolProvider(new McpServerTool());

var chatModel = ChatModel.of(...)
.defaultToolsAdd(toolProvider) //添加默认工具
.build(); chatModel.prompt("杭州今天的天气怎么样?")
.call();

5、附代码仓库

solon-ai(源码)

solon-ai-mcp-embedded-examples(嵌入示例)

把 Java WebApi 快速转为 Mcp-Server(使用 Solon AI MCP)的更多相关文章

  1. Java Web快速入门——全十讲

    Java Web快速入门——全十讲 这是一次培训的讲义,就是我在给学生讲的过程中记录下来的,非常完整,原来发表在Blog上,我感觉这里的学生可能更需要. 内容比较长,你可以先收藏起来,慢慢看. 第一讲 ...

  2. JAVA WEB快速入门之从编写一个基于SpringBoot+Mybatis快速创建的REST API项目了解SpringBoot、SpringMVC REST API、Mybatis等相关知识

    JAVA WEB快速入门系列之前的相关文章如下:(文章全部本人[梦在旅途原创],文中内容可能部份图片.代码参照网上资源) 第一篇:JAVA WEB快速入门之环境搭建 第二篇:JAVA WEB快速入门之 ...

  3. JAVA WEB快速入门之从编写一个基于SpringMVC框架的网站了解Maven、SpringMVC、SpringJDBC

    接上篇<JAVA WEB快速入门之通过一个简单的Spring项目了解Spring的核心(AOP.IOC)>,了解了Spring的核心(AOP.IOC)后,我们再来学习与实践Maven.Sp ...

  4. JAVA WEB快速入门之从编写一个JSP WEB网站了解JSP WEB网站的基本结构、调试、部署

    接上篇<JAVA WEB快速入门之环境搭建>,在完成了环境搭建后(JDK.Tomcat.IDE),现在是万事具备,就差写代码了,今天就来从编写一个JSP WEB网站了解JSP WEB网站的 ...

  5. Java将文件转为字节数组

    Java将文件转为字节数组 关键字:文件,文件流,字节流,字节数组,二进制 摘要:最近工作中碰到的需求是,利用http传输二进制数据到服务器对应接口,需要传输userId, file(加密后)等一系列 ...

  6. Ubuntu下快速安装LAMP server

    Ubuntu下可快速安装LAMP server(Apache+MySQL+PHP5). 首先,打开Ubuntu虚拟机,Terminal打开root权限:“sudo -s”. 一.安装LAMP serv ...

  7. Java API 快速速查宝典

    Java API 快速速查宝典 作者:明日科技,陈丹丹,李银龙,王国辉 著 出版社:人民邮电出版社 出版时间:2012年5月 Java编程的最基本要素是方法.属性和事件,掌握这些要素,就掌握了解决实际 ...

  8. 快速查看SQL Server 中各表的数据量以及占用空间大小

    快速查看SQL Server 中各表的数据量以及占用空间大小. CREATE TABLE #T (NAME nvarchar(100),ROWS char(20),reserved varchar(1 ...

  9. JAVA WEB快速入门之通过一个简单的Spring项目了解Spring的核心(AOP、IOC)

    接上篇<JAVA WEB快速入门之从编写一个JSP WEB网站了解JSP WEB网站的基本结构.调试.部署>,通过一个简单的JSP WEB网站了解了JAVA WEB相关的知识,比如:Ser ...

  10. Java开发快速上手

    Java开发快速上手 前言 1.我的大学 2.对初学者的建议 3.大牛的三大特点 4.与他人的差距 第一章 了解Java开发语言 前言 基础常识 1.1 什么是Java 1.1.1 跨平台性 1.2 ...

随机推荐

  1. SqlServer性能检测之Sql语句排查

    很多时候,我们在用SQL语句查询数据时,难免会漏掉对SQL语句性能的考虑,所以有时就会造成SqlServer服务占用过高的问题,为了大致排查是哪些SQL语句造成的问题,我们可以通过如下SQL查询出最近 ...

  2. [记录点滴] 小心 Hadoop Speculative 调度策略

    [记录点滴] 小心 Hadoop Speculative 调度策略 目录 [记录点滴] 小心 Hadoop Speculative 调度策略 [0x00] 摘要 [0x01] 缘由 [0x02] 代码 ...

  3. 自助式BI:灵活应变的商业智能

    在这个信息爆炸的时代,商业智能(BI)已经成为企业决策的必备工具.无论是哪个行业,哪个规模的企业,似乎都无法忽视这一强大工具的存在.然而,传统的BI模式往往存在着一些限制,使得企业无法灵活地应对各种业 ...

  4. [BZOJ3569] DZY Loves Chinese II 题解

    考虑不联通的情况.图不好做,就造一棵生成树出来,由于是无向图,所以只有树边和返祖边. 发现在一条树边断开后,生成树会分成两个连通块,由覆盖这条树边的返祖边链接,只有这些返祖边也全部断开,原图才会不联通 ...

  5. Linux服务器部署SpringBoot项目教程

    1. 服务器配置1.1 购买服务器1.2 配置安全组1.3 登录实例1.4 安装宝塔面板2. 配置宝塔2.1 创建数据库3. 打包部署项目3.1 修改项目配置3.2 打包3.3 部署3.4 放行端口3 ...

  6. sql server 新建用户数据库授权

    必须对数据库进行 db_owner 授权.

  7. php框架里面数组合并的方法

    php框架里面用call_user_func_array(array($dispatch, $actionName), $param);传参的时候,接收的$actionName方法不能接收数组参数. ...

  8. go grpc的入门使用

    简介 什么是grpc grpc是一个由google推出的.高性能.开源.通用的rpc框架.它是基于HTTP2协议标准设计开发,默认采用Protocol Buffers数据序列化协议,支持多种开发语言. ...

  9. MOS管的引脚,G、S、D分别代表什么?

    引脚解析: G:gate 栅极,N沟道的电源一般接在D. S:source 源极,输出S,P沟道的电源一般接在S. D:drain 漏极,输出D.增强耗尽接法基本一样. mos管是金属(metal)- ...

  10. 2D小游戏--猜对应卡牌(unity)

    博客地址:https://www.cnblogs.com/zylyehuo/ 项目名称 guess_card_game 参考源码链接: https://www.manning.com/books/un ...