SpringAI实践-MCP使用

news/2026/1/18 14:00:27/文章来源:https://www.cnblogs.com/hotMemo/p/19484482

大多数Agent都不会仅仅满足于只回答问题,它们还需要理解用户意图后,需要做一些真正执行的操作。Agent应用中,调用的大模型相当于Agent的大脑,负责推理,而集成的MCP Server,则相当于真正的“手”做一些执行操作。

MCP是一套协议,这套协议产生的意义,是因为,在MCP出现之前,将AI模型与不同的API或工具集成在一块需要做大量定制的开发工作,最终得到的结果是,比如一个公司的Agent A 可以用一个mcp server,但另一个公司的Agent B 可能不能使用,就好比,安卓上的软件,没法装在苹果的ios系统上。有了MCP这个协议之后,所有遵循这套协议的agent都可以调用mcp server,并且每种mcp server只需要开发一套,就可以被多个agent使用。

MCP 协议,并非指单一的协议文件,而是一套完整的开放标准体系,有哪些标准呢? 粗略的说一下:

在MCP没出现之前,研究人员为了一个很纯粹的目的,就是Agent要调用外部的工具,他们都会有自己的思路,很定制,可能会把一些调用的代码嵌入在核心的代码里,没有分模块。于是MCP协议,首先就先规定,大模型的Agent调用外部工具的系统架构是什么,即 Client-Server 架构,Agent所有对外部的操作都通过Agent里的Mcp Client模块来进行,不会把这些直接调用外部的步骤放在核心代码里,Agent内部只会调用MCP Client,有种门面模式、外观模式的感觉。这种架构也很好的把Agent 跟 mcp-server解耦出来,它们两可以各自发展,比如当前mcp-server就已经有很多了,然后agent可以从这些mcp-server中选哪些应用。

image

然后,还需要约定 MCP-CLIENT 跟 MCP-SERVER 之间的通信消息的格式,采用JSON-RPC 2.0的方式,比如:

image

image

 

image

 

 JSON-RPC 2.0 这个格式,其实也就是约定了请求参数结构,返回结构,或者出现异常时的 结构化的返回结构,因为 mcp-client 和 mcp-server 本质就是普通的程序,只要格式不统一,运行的时候就会报错。只有约定了格式,mcp-client传给mcp-server的命令,mcp-server才能解析出来调用它自己内部的哪个方法,传哪些参数,然后mcp-server 传给mcp-client,mcp-client才能根据哪个字段把返回信息提取出来,这个返回信息可能是操作的结果或者是借助mcp-server获取的内容,传给大模型,做下一轮的推理。

规定完传输格式后,还需要规定怎么传输:

当前MCP-CLIENT 和 MCP-SERVER 之间有两中传输方式,一种是通过STDIO,一种是SSE,

STDIO的方式,就是把mcp-server 部署在跟Agent的同一台机器上,之间的通信通过机器内部的I/O操作来实现,所以用这种方式,首先需要有满足让mcp_server这套环境执行的环境,比如,如果mcp_server是用SpringAI开发出来的,机器上肯定需要有jdk环境,mcp_server才能运行,进而agent才能调用它,这种方式,主要应用在只需要操作本机器里面内容的场景,倾向于安全封闭环境,无需联网的场景,比如读写文件,读写本地的数据库,操作本地浏览器等。

SSE的方式,就是MCP-CLIENT 跟 MCP-SERVER之间的交互通过网络,即SSE协议。

MCP-CLIENT 跟 MCP-SERVER 之间交互流程是怎样的呢?

 

image

 使用Roo Agent使用MCP:

使用新版的webstorm 安装如下的插件:

image

 然后配置这个Agent使用的大模型:

image

 然后安装MCP server:

image

然后将 

image

 这里的json文件放在webStrom打开的文件里:

然后看到上面的command是npx,所以本次需要有运行npx命令的环境,即要安装nodejs和npm

image

 之后可以看到,这里多了一个playwright的mcp工具,之后对这个agent输入命令: 完成 这个地址的https://www.wenjuan.group/s/UZBZJvllIyk/问卷考试

然后会发现,agent会自动把浏览器打开,完成考试。

SpringAI怎么使用Mcp server:

1、添加mcp-client的依赖:

<dependency>
<groupId>org.springframework.ai</groupId>
<artifactId>spring-ai-starter-mcp-client-webflux</artifactId>
</dependency>
在 src/resources 下创建 mcp-servers-config.json,然后在 application.properties文件中引用它:
spring.ai.mcp.client.stdio.servers-configuration=classpath:mcp-servers-config.json
后把tools注入到客户端中:

image

之后也可以实现同样的效果。

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/1178394.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

leetcode 883. Projection Area of 3D Shapes 三维形体投影面积-耗时100

Problem: 883. Projection Area of 3D Shapes 三维形体投影面积 解题过程 耗时100%&#xff0c;xy投影数!0的数量&#xff0c;另外两侧投影拿到行最大值、列最大值&#xff0c;累加 Code class Solution { public:int projectionArea(vector<vector<int>>& gr…

400w微型逆变器, 基于stm32g474实现 设计方案,不是成品 带有源代码、原理图(AD...

400w微型逆变器, 基于stm32g474实现 设计方案&#xff0c;不是成品 带有源代码、原理图(AD)、PCB(AD)一、项目概述 本项目是基于STM32G474微控制器实现的400W微型逆变器控制系统&#xff0c;通过精准的硬件外设配置与软件逻辑设计&#xff0c;实现直流到交流的电能转换&#xf…

基于SpringBoot的粮仓管理系统毕设

博主介绍&#xff1a;✌ 专注于Java,python,✌关注✌私信我✌具体的问题&#xff0c;我会尽力帮助你。一、研究目的本研究旨在设计并实现一个基于SpringBoot框架的粮仓管理系统&#xff0c;以满足现代粮仓管理的高效、便捷和智能化需求。具体研究目的如下&#xff1a; 首先&…

也许是集合幂级数

这里会选一些集合幂级数题,但是作者至今不知道集合幂级数是什么东西,所以可能做法不是集合幂级数()。 P13275 好像是区分金银的题? 感觉比省选的岁月简单啊,不知道是不是这个题不是在图上的缘故。 就首先,你考虑…

【后端】【Java】一文详解Spring Boot RESTful 接口统一返回与异常处理实践 - 详解

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

Spring Boot 3 + GraalVM Native Image 原理:从启动 10秒 到 0.05秒,AOT 编译到底干了什么? - 详解

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

2026年知名的翻译企业,天使翻译公司口碑与实力并存 - 工业品牌热点

2026年全球化商务与跨文化交流持续升温,专业翻译服务已成为企业拓展国际市场、个人处理跨境事务的核心支撑。无论是法律合同的精准转译、国际会议的同传保障,还是音视频内容的本地化适配,优质翻译服务商的专业能力直…

基于SpringBoot的进销存系统毕设

博主介绍&#xff1a;✌ 专注于Java,python,✌关注✌私信我✌具体的问题&#xff0c;我会尽力帮助你。一、研究目的本研究旨在设计并实现一个基于SpringBoot框架的进销存系统&#xff0c;以满足现代企业对库存管理、销售管理和采购管理的需求。具体研究目的如下&#xff1a;提高…

SpringAI实践-MCP使用与创建

大多数Agent都不会仅仅满足于只回答问题,它们还需要理解用户意图后,需要做一些真正执行的操作。Agent应用中,调用的大模型相当于Agent的大脑,负责推理,而集成的MCP Server,则相当于真正的“手”做一些执行操作。 …

Python、CSharp、Go、Nextjs,不同框架的性能到底差多少?

前言 不知不觉居然12月了,最近琐事太多,产出并不高,继续整理一下近期的一些笔记吧。 上次我对部署 Django 框架时用的不同服务器进行对比测试,详见:不同Django服务器和部署方式的性能调研 在探索的过程中,我还对…

芯片制造企业如何利用百度WEB编辑器处理PDF技术文档?

河南软件工程大三狗的CMS升级记&#xff1a;从Word粘贴到Latex公式&#xff0c;99元预算的极限操作&#xff01; 一、项目背景&#xff1a;穷学生的倔强 作为一枚即将毕业的大三狗&#xff0c;自己撸了个CMS新闻管理系统&#xff0c;但后台编辑器太挫——从Word复制内容粘贴进…

2025年值得关注的高温塑料回收厂家有哪些?,排行前列的高温塑料回收精选国内优质品牌榜单 - 品牌推荐师

随着全球高温塑料应用场景的持续扩展,工业生产中产生的PEEK、PI、PTFE等特种塑料废弃物规模激增。据行业数据显示,2024年国内高温塑料回收市场规模已突破120亿元,但企业间技术水平、服务能力参差不齐,导致采购方在…

基于SpringBoot框架的社区网格化管理平台

博主介绍&#xff1a;✌ 专注于Java,python,✌关注✌私信我✌具体的问题&#xff0c;我会尽力帮助你。一、研究目的本研究旨在构建一个基于SpringBoot框架的社区网格化管理平台&#xff0c;以实现社区资源的优化配置、提高社区管理效率、提升居民生活质量。具体研究目的如下&am…

2026年不锈钢EP管供应企业推荐,南通地区十大厂家有哪些? - 工业品牌热点

本榜单依托全维度市场调研与真实行业口碑,深度筛选出五家不锈钢EP管领域标杆企业,为半导体、新能源、医药等对流体输送纯度有严苛要求的行业企业选型提供客观依据,助力精准匹配适配的不锈钢EP管供应伙伴。 TOP1 推荐…

基于SpringBoot的社区疫情管理系统毕业设计源码

博主介绍&#xff1a;✌ 专注于Java,python,✌关注✌私信我✌具体的问题&#xff0c;我会尽力帮助你。一、研究目的本研究旨在设计并实现一个基于SpringBoot框架的社区疫情管理系统&#xff0c;以满足当前疫情防控工作的实际需求。具体研究目的如下&#xff1a;构建一个高效、可…

【开题答辩全过程】以 基于SSM框架的药店管理系统的设计与开发为例,包含答辩的问题和答案

个人简介 一名14年经验的资深毕设内行人&#xff0c;语言擅长Java、php、微信小程序、Python、Golang、安卓Android等 开发项目包括大数据、深度学习、网站、小程序、安卓、算法。平常会做一些项目定制化开发、代码讲解、答辩教学、文档编写、也懂一些降重方面的技巧。 感谢大家…

历年CSP-J初赛真题解析 | 2017年CSP-J初赛

​欢迎大家订阅我的专栏:算法题解:C++与Python实现! 本专栏旨在帮助大家从基础到进阶 ,逐步提升编程能力,助力信息学竞赛备战! 专栏特色 1.经典算法练习:根据信息学竞赛大纲,精心挑选经典算法题目,提供清晰的…

基于SpringBoot的社区防疫物资申报系统毕业设计源码

博主介绍&#xff1a;✌ 专注于Java,python,✌关注✌私信我✌具体的问题&#xff0c;我会尽力帮助你。一、研究目的本研究旨在开发一套基于SpringBoot框架的社区防疫物资申报系统&#xff0c;以满足当前疫情防控形势下社区防疫物资管理的需求。具体研究目的如下&#xff1a;提高…

人间美味——胡萝卜炒包菜粉丝

做法极其简单,包菜切丝,胡萝卜切丝,葱切丝,白粉丝泡上。起锅烧油,炒素菜,加一点大油,下葱丝,下两辣椒段,下包菜丝。包菜稍软,下胡萝卜丝、粉丝。翻炒一会,加盐、酱油、味精调味,出锅装盘。 包菜是甜口的,…

【开题答辩全过程】以 基于SSM框架的健身房管理系统为例,包含答辩的问题和答案

个人简介一名14年经验的资深毕设内行人&#xff0c;语言擅长Java、php、微信小程序、Python、Golang、安卓Android等开发项目包括大数据、深度学习、网站、小程序、安卓、算法。平常会做一些项目定制化开发、代码讲解、答辩教学、文档编写、也懂一些降重方面的技巧。感谢大家的…