尧图网站建设 尧图网络
  • 首页
  • 关于我们
  • 服务项目
  • 案例展示
  • 建站流程
  • 资讯中心
  • 联系我们
首页/资讯中心/详情

longchain4j 学习系列(4)-mcp调用

longchain4j 学习系列(4)-mcp调用
📅 发布时间:2026/6/19 22:30:57

继续学习langchain4j,以下是langchain4j 调用MCP的示例:

1、添加pom依赖

1 <dependency>
2     <groupId>dev.langchain4j</groupId>
3     <artifactId>langchain4j-mcp</artifactId>
4     <version>1.1.0-beta7</version>
5 </dependency>
View Code

这里要注意版本号,不同的版本api细节略有不同。

2、Mcp Client初始化

/*** 初始化SSE客户端** @param sseUrl SSE服务器连接地址* @return McpClient实例*/
private static McpClient initSseClient(String sseUrl) {// 构建默认MCP客户端return new DefaultMcpClient.Builder().clientName("yjmyzz.cnblogs.com").protocolVersion("2024-11-05").toolExecutionTimeout(Duration.ofSeconds(10))// 配置HTTP传输层参数.transport(new HttpMcpTransport.Builder()// 设置SSE服务器连接URL.sseUrl(sseUrl)// 设置连接超时时间.timeout(Duration.ofSeconds(10))// 启用请求日志记录.logRequests(true)// 启用响应日志记录.logResponses(true).build()).build();
}

3、定义1个Assistant接口

    private interface Assistant {String chat(String userMessage);}

4、调用MCP

    /*** 直接获取订单状态信息** @param orderId 订单ID,用于查询指定订单的状态* @return ResponseEntity<String> 包含订单状态信息的响应实体,成功时返回订单状态JSON字符串,* 失败时返回包含错误信息的JSON字符串*/@GetMapping(value = "/order", produces = MediaType.APPLICATION_JSON_VALUE)public ResponseEntity<String> getOrderStatusDirect(@RequestParam String orderId) {McpClient mcpClient = null;try {// 初始化SSE客户端连接mcpClient = initSseClient("http://localhost:8070/sse");// 构建AI助手服务,配置聊天模型和工具提供者Assistant assistant = AiServices.builder(Assistant.class).chatModel(deepSeekChatModel).toolProvider(McpToolProvider.builder().mcpClients(mcpClient).build()).build();// 调用AI助手查询订单状态String response = assistant.chat("查询订单状态,订单号:" + orderId);return ResponseEntity.ok(response);} catch (Exception e) {log.error("查询订单状态时发生错误", e);return ResponseEntity.ok("{\"error\":\"查询订单状态失败: " + e.getMessage() + "\"}");} finally {// 确保MCP客户端连接被正确关闭if (mcpClient != null) {try {mcpClient.close();} catch (Exception e) {log.error("关闭MCP客户端时发生错误", e);}}}}

注:这里的mcp server 可参考 spring-ai 学习系列(5)-MCP(webflux sse)

image

日志:

2025-10-03T20:30:43.277+08:00  INFO 18312 --- [longchain4j-study] [nio-8080-exec-2] d.l.http.client.log.LoggingHttpClient    : HTTP request:
- method: POST
- url: https://api.deepseek.com/chat/completions
- headers: [Authorization: Beare...00], [User-Agent: langchain4j-openai], [Content-Type: application/json]
- body: {"model" : "deepseek-chat","messages" : [ {"role" : "user","content" : "查询订单状态,订单号:25070602"} ],"temperature" : 0.7,"stream" : false,"max_tokens" : 2048,"tools" : [ {"type" : "function","function" : {"name" : "queryOrderStatus","description" : "根据订单号查询订单状态","parameters" : {"type" : "object","properties" : {"orderNo" : {"type" : "string","description" : "订单号,格式为8位数字,比如:25070601"}},"required" : [ "orderNo" ]}}} ]
}...2025-10-03T20:30:45.770+08:00  INFO 18312 --- [longchain4j-study] [nio-8080-exec-2] d.l.http.client.log.LoggingHttpClient    : HTTP request:
- method: POST
- url: https://api.deepseek.com/chat/completions
- headers: [Authorization: Beare...00], [User-Agent: langchain4j-openai], [Content-Type: application/json]
- body: {"model" : "deepseek-chat","messages" : [ {"role" : "user","content" : "查询订单状态,订单号:25070602"}, {"role" : "assistant","content" : "我来帮您查询订单号为25070602的订单状态。","tool_calls" : [ {"id" : "call_00_QnwEmctjY5kaQf5MEQ5C2i9Y","type" : "function","function" : {"name" : "queryOrderStatus","arguments" : "{\"orderNo\": \"25070602\"}"}} ]}, {"role" : "tool","tool_call_id" : "call_00_QnwEmctjY5kaQf5MEQ5C2i9Y","content" : "\"订单号:25070602,订单状态:已完成\""} ],"temperature" : 0.7,"stream" : false,"max_tokens" : 2048,"tools" : [ {"type" : "function","function" : {"name" : "queryOrderStatus","description" : "根据订单号查询订单状态","parameters" : {"type" : "object","properties" : {"orderNo" : {"type" : "string","description" : "订单号,格式为8位数字,比如:25070601"}},"required" : [ "orderNo" ]}}} ]
}

 

文中代码:GitHub - yjmyzz/langchain4j-study at day04

作者:菩提树下的杨过
出处:http://yjmyzz.cnblogs.com
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

相关新闻

  • Java 学习路线可按「基础→进阶→实战→架构」四阶段推进
  • 读 《d2l:Chapter3. 线性神经网络 》随笔
  • iPadOS16有什么新功能

最新新闻

  • 2026郑州非急救转运救护车TOP5盘点|中原跨省、嵩山山地、院区转诊首选康跃转运 - 吉修匠
  • 2026.6.7
  • OpenFigen:开源AI模型服务化与工作流编排的工程实践指南
  • 2026东莞石龙工厂法律顾问哪家好?工厂法务首选5家律所盘点(首选广东卡夫律师事务所) - GrowthUME
  • 2026北京防水补漏权威指南:卫生间/屋面/外墙/地下室正规施工+透明报价+避坑全攻略 - 苏易修缮
  • 南通同城购宠指南:钟秀中路+天都花苑正规宠舍,无套路带质保 - 萌宠俱乐部

日新闻

  • 5分钟掌握Python进化算法:Geatpy高性能优化工具完全指南
  • Microchip 24AA044 EEPROM选型与应用全指南:从参数解析到实战编程
  • 华为的鸿蒙到底有多牛?为什么称作遥遥领先?

周新闻

  • 3步解锁iOS设备:applera1n激活锁绕过完全指南
  • 39 2026 人工智能证书终极盘点,普通人选 AI 证书可以从这些方向入手
  • Redis 暴露公网有多危险?从端口检查到补救步骤

月新闻

  • 【总结】入门篇:50句话让你记住架构核心概念
  • WeChatMsg技术方案解析:实现Mac微信数据自主管理的完整解决方案
  • WeChatMsg:革新性微信数据备份方案,打造你的专属数字记忆库

关于尧图

  • 公司简介
  • 团队介绍
  • 企业文化
  • 荣誉资质

服务项目

  • 定制开发
  • 电商建站
  • UI 设计
  • 运维服务

快速链接

  • 案例展示
  • 建站流程
  • 常见问题
  • 资讯中心

联系方式

  • 📍北京市朝阳区互联网产业园 A 座 10 层
  • 📞400-888-8888
  • ✉️contact@rkmt.cn
  • 🕐周一至周日 9:00-21:00

© 2024 北京尧图网络科技有限公司 版权所有 | 京 ICP 备 XXXXXXXX 号