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

使用java8开发mcp server

        目前,MCP官网给出的java sdk必须要求java17+以上。然而,使用 SolonMCP,可以基于 java8 开发(像 MVC 的开发风格),比较简单。本文就基于Solon AI MCP 实现一个简单的 MCP Server 入门。

官网java-sdk:For Server Developers - Model Context Protocol

一、SolonMCP 简介

SolonMCP(全称:solon-ai-mcp)是 solon 的一个扩展。支持内嵌到 jfinal,vert.x,springboot2,springboot3 等框架使用。

Maven 主要依赖包:

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

solon-ai-mcp:https://solon.noear.org/article/993

二、 编写tools

1、启动类

可以用idea基于solon创建一个初始项目,也可以创建一个空的maven项目开始。

import org.noear.solon.Solon;
import org.noear.solon.annotation.SolonMain;@SolonMain
public class App {public static void main(String[] args) {Solon.start(App.class, args);}
}

2、mcp tools

        solon-ai-mcp 支持多端点的架构,可以手动构建端点,或者注解构建端点(@McpServerEndpoint)。再使用 @ToolMapping 注解编写工具,就像开发 MVC 一样简单和熟悉。

  • @ToolMapping 注解标记这个方法是一个工具映射,通过 description 属性告诉大模型这个工具是做什么的,其实就是提示词,大模型会根据自己的理解调用这个工具,所以这个描述很重要。
  • @Param:工具调用时需要传什么参数
import org.noear.solon.ai.annotation.ToolMapping;
import org.noear.solon.ai.mcp.server.annotation.McpServerEndpoint;
import org.noear.solon.annotation.Param;import java.sql.SQLException;@McpServerEndpoint(sseEndpoint = "/sse/mcp")
public class McpController {@ToolMapping(description = "查询手机号归属地") public String getPhone(@Param(name = "phone", description = "手机号") String phone) {return "手机号归属地:北京";}@ToolMapping(description = "查询IP归属地")public String getIp(@Param(name = "ip", description = "IP") String ip) {return "IP归属地:上海";}
}

 配置下配置文件里的端口既可以启动服务了,本地可以运行启动类,如下就说明启动成功。

3、单测测试

@SolonTest(App.class)
public class HelloTest extends HttpTester {@Testpublic void testmcp() throws IOException {McpClientToolProvider clientToolProvider = McpClientToolProvider.builder().apiUrl("http://localhost:8080/sse/mcp").build();String rst = clientToolProvider.callToolAsText("getPhone", Maps.of("phone", "11111112222"));log.warn(rst);}

如下说明测试成功

4、客户端测试

使用cursor等客户端连接测试。

首先启动服务,服务可以本地启动,也可以部署到一个服务器上运行,客户端上配置 http://ip:端口/sse/mcp即可

http://www.xdnf.cn/news/674677.html

相关文章:

  • 让学习回归到技术上来(技术 !=== 死记硬背)
  • name ‘selective_scan_fn‘ is not defined运行出现这个错误
  • 修改 Ubuntu Installer 从串口输出的方法
  • 电子邮箱设置SSL:构建邮件传输的加密护城河
  • Qwen2.5-VL视觉-语言模型做图片理解调研
  • 深入解析Spring Boot与Redis的集成实践
  • 麒麟系统 Linux(aarch64处理器)系统java项目接入海康SDK问题
  • 自动化Web页面性能测试介绍
  • [Java实战]Spring Boot切面编程实现日志记录(三十六)
  • ojs导入显示空白页错误信息
  • C-自定义类型
  • go中的channel
  • 蓝桥杯b组c++赛道---字典树
  • WPF【10_2】数据库与WPF实战-示例
  • 中级统计师-统计学基础知识-第七章 回归分析
  • 8.安卓逆向2-frida hook技术-frida环境安装
  • 【IOS】【OC】【应用内打印功能的实现】如何在APP内实现打印功能,连接本地打印机,把想要打印的界面打印成图片
  • 简单网络交换、路由-华三单区域OSPF
  • AGI大模型(34):Advanced RAG之Pre-Retrieval(预检索)优化
  • OpenAI O3惊现算法的自由意识,AGI初现?
  • 在VSTO C#中获取Excel范围内最后一个非空单元格,可以通过以下几种方法实现
  • C标准库函数:字符串操作
  • 【深度学习】7. 深度卷积神经网络架构:从 ILSVRC、LeNet 到 AlexNet、ZFNet、VGGNet,含pytorch代码结构
  • NLP助力非结构化文本抽取:实体关系提取实战
  • 【ASR】基于分块非自回归模型的流式端到端语音识别
  • qt之开发大恒usb3.0相机二
  • Pytorch
  • 题目 3341: 蓝桥杯2025年第十六届省赛真题-抽奖
  • 颠覆传统,智领未来——UMI企业智脑:重新定义企业智能化转型的全新可能
  • 不同电脑同一个网络ip地址一样吗?如何更改