solon-ai-mcp 是 solon-ai 的扩展特性。提供 mcp 协议的支持。通过它,可以方便的发布 Tool Service,方便的使用 Tool Service。

引入依赖包

<dependency>
<groupId>org.noear</groupId>
<artifactId>solon-ai-mcp</artifactId>
<version>3.1.3-SNAPSHOT</version>
</dependency>

服务端演示(发布工具服务)

引入依赖包后,服务端默认不会启用,需要通过配置启用。

solon.ai.mcp.server:
enabled: true
sseEndpoint: "/mcp/sse"

启用 mcp server 后,所有组件的 @FunctionMapping 方法,会自动成为 mcp server 的 tool 服务。

@Component
public class McpServerTool {
@FunctionMapping(description = "查询天气预报")
public String getWeather(@FunctionParam(description = "城市位置") String location) {
return "晴,14度";
}
} public class McpServerApp {
public static void main(String[] args) {
Solon.start(McpServerApp.class, args);
}
}

客户端演示(使用工具服务)

客户端可以使用原生的 modelcontextprotocol 接口,也可以使用 McpClientWrapper (包装简化过)

  • 直接调用
public void case1(){
McpClientWrapper mcpClient = new McpClientWrapper("http://localhost:8080", "/mcp/sse"); String rst = mcpClient.callToolAsText("getWeather", Map.of("location", "杭州"));
}
  • 绑定给模型使用
public void case2(){
McpClientWrapper mcpClient = new McpClientWrapper("http://localhost:8080", "/mcp/sse");
ChatModel chatModel = ChatModel.of("http://127.0.0.1:11434/api/chat")
.provider("ollama")
.model("qwen2.5:1.5b")
.build(); ChatResponse resp = chatModel.prompt("杭州今天的天气怎么样?")
.options(options -> {
//转为函数集合用于绑定
options.functionAdd(mcpClient.toFunctions());
})
.call();
}

项目仓库地址

官网

无耳 Solon Ai MCP,发布工具服务,使用工具服务。效果预览!的更多相关文章

  1. 谷歌发布 Android 8.1 首个开发者预览版,优化内存效率

    今晨,谷歌推出了 Android 8.1 首个开发者预览版,此次升级涵盖了针对多个功能的提升优化,其中包含对 Android Go (设备运行内存小于等于 1 GB)和加速设备上对机器学习的全新神经网 ...

  2. 在使用 AjaxFileUpload 上传文件时,在项目发布到 iis 后,图片不能预览

    在使用 AjaxFileUpload  上传文件时,图片已经上传成功了,在站点没有发布时,可以预览,可是在项目发布到 iis 后,图片就不能预览,在网上找了很多的方案也没解决,最后的解决方案如下: 1 ...

  3. Android 发布可穿戴设备 SDK 的开发者预览版

    今早上安卓官网查资料,发现网站上赫然显示着"Android Wear"几个大字.难道……?点进去看,果然,Android发布了可穿戴设备的SDK的开发者预览版. 其中这第五张图…… ...

  4. 发布 vscode 插件 Cnblogs Client For VSCode 预览版

    为了方便大家使用 vscode 发布博文,我们做了一个小插件,今天发布预览版,欢迎大家试用并反馈问题与建议. 插件的英文名称是 Cnblogs Client For VSCode,简称是 vscode ...

  5. 微信小程序,预览在开发工具上显示正常,手机预览二维码报request->fail错误,打开手机的调试功能又正常。

    这里错误很明显是属于网址错误,开发工具和手机调试都能走request->success: 唯独常规模式下无法显示. 最开始调试过很多方法,没找出原因.最后到小程序开发设置才发现,自己未配置服务器 ...

  6. HarmonyOS 3.0.0开发者预览版全新发布

    2021年10月22日在华为开发者大会HDC.Together 2021 主题演讲上,我们发布了HarmonyOS 3.0.0开发者预览版,主要内容包括:Harmony设计系统.ArkUI 3.0.A ...

  7. vs2015下载及预览与发布

    VS2015 RC发布下载,通用Windows平台必备神器! 几个月前微软发布了Visual Studio 2015的技术预览版本,之后又先后发布了6个更新版本.如今,微软已在其官方页面中公布了最新开 ...

  8. Window 7 平台的IE11浏览器预览版发布

    继之前Windows 8.1 带来了IE11浏览器之后,今天Window 7 以及Windows Server 2008 R2平台的IE11浏览器预览版也已经发布. 当然这还只是一个开发者预览版,可能 ...

  9. 微软.NET CORE 3.0 预览版 7 发布:大幅减少 SDK 空间大小

    据悉,这个预览版是 .Net Core 3 中重要的版本,可以视为原计划在 7 月发布的 RC 版本 (引自微软 .NET Core 首席 Program Manager Richard 先生原话), ...

  10. 它来了!!!有史以来第一个64位Visual Studio(2022)预览版将在今夏发布!

    美国时间2021年4月19日,微软产品研发部一位负责人Amanda Silver在其博客上发布一则<Visual Studio 2022>的消息,表示将在今年(2021年)夏天发布Visu ...

随机推荐

  1. 【python】如何优雅的终止while循环

    1. 背景需求 python需要与外界或终端交互时,常常需要使用while循环一直跑. 如果需要终止程序,一般使用Ctrl+c,此时终端会打印一大堆backtrace,并且无法保留当前运行的状态,非常 ...

  2. kali 2019-04版安装问题

    在这里主要解决的是kali的undercover mode 存在BUG,切换后出现无法还原.或还原失败的情况. 如果要解决的是中文乱码.kali桌面种类与安装和kali桌面切换的问题,直接看最底部的连 ...

  3. RPM常用命令以及组合使用场景

    本文分享自天翼云开发者社区<RPM常用命令以及组合使用场景>,作者:邬祥钊   当涉及到管理基于 Red Hat 系的 Linux 系统时,RPM (Red Hat Package Man ...

  4. 从图像到信息,AI识图开启智能识别新时代

    当前用户在使用各类应用时,文字.图片和视频已经成为互联网内容的主要载体,许多用户在浏览过程中通常想要选取页面上的文字或者得到图片或者视频画面的具体信息.比如,识别文本中的特定实体(如电话号码.邮箱.网 ...

  5. IDEA测试Flink程序

    一.导入项目,添加jar包 右键项目=>open module setting 选择Flink1.9的lib目录下flink-dist_2.11-1.9.2.jar包(对应运行版本) 保存即可. ...

  6. Flink白话解析Watermark

    一.摘要 如果想使用Flink,Flink的Watermark是很难绕过去的概念.本文帮大家梳理Watermark概念 二.Watermark疑问 1.Flink应用的常见需求是什么 如公司运营一个官 ...

  7. StarUML画流程图

    一.新建流程图 1.1 新建流程图 1.2 左侧操作符介绍 Flow:顾名思义就是流,用来从一个操作流向下一个操作. Process: 过程 Terminator:用在结束的时候. Dicision: ...

  8. Docker部署 .Net程序

    项目准备   首先创建一个项目,这里准备的是api项目,当然也可以是其他项目,按照自己需要的项目创建即可: 添加Dockerfile   接下来添加Dockfile文件,Dockerfile文件是Do ...

  9. QT5笔记: 16. 时间和定时器的常用功能

    例子 #ifndef WIDGET_H #define WIDGET_H #include <QTime> #include <QTimer> #include <QWi ...

  10. 使用Go复刻skiplist核心功能

    0.引言 正好做LC每日一题要求实现一个跳表,于是学习了redis的扩展skiplist,并使用Go进行复刻学习.学习参考了文章:Redis内部数据结构详解(6)--skiplist - 铁蕾的个人博 ...