SpringAI实践-MCP使用与创建

news/2026/1/18 13:58:28/文章来源: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/1178385.shtml

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

相关文章

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等开发项目包括大数据、深度学习、网站、小程序、安卓、算法。平常会做一些项目定制化开发、代码讲解、答辩教学、文档编写、也懂一些降重方面的技巧。感谢大家的…

一个例子带你看懂,火爆全网的 Skills 到底是啥。

上一篇文章有讲到&#xff0c;TRAE 添加了对 Skills 的支持最近爆火的 Skills&#xff0c;TRAE SOLO 也支持了&#xff01; 现在&#xff0c;Google Antigravity 的最新版本&#xff0c;也支持 Skills 了。 01 举个栗子 下面&#xff0c;用一个栗子来分享下在 Antigravity 中…

基于SpringBoot的笔记记录分享网站毕设源码

博主介绍&#xff1a;✌ 专注于Java,python,✌关注✌私信我✌具体的问题&#xff0c;我会尽力帮助你。一、研究目的本研究旨在设计并实现一个基于SpringBoot框架的笔记记录分享网站&#xff0c;以解决当前笔记记录和分享过程中存在的诸多问题。具体研究目的如下&#xff1a;提高…

【开题答辩全过程】以 高校消防器材库管理系统的设计与实现为例,包含答辩的问题和答案

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

基于SpringBoot的箱包存储系统毕设

博主介绍&#xff1a;✌ 专注于Java,python,✌关注✌私信我✌具体的问题&#xff0c;我会尽力帮助你。一、研究目的本研究旨在设计并实现一个基于SpringBoot框架的箱包存储系统&#xff0c;以满足现代物流行业中对于高效、智能、安全存储管理的需求。具体研究目的如下&#xff…

【开题答辩全过程】以 基于SSM框架的网上书城系统设计与实现为例,包含答辩的问题和答案

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

Nginx 配置示例及核心模块详解

Nginx 配置详解 一、配置文件结构 # 全局块&#xff08;主配置&#xff09; main# 事件块 events {... }# HTTP 块 http {# HTTP 全局配置...# 虚拟主机块&#xff08;一个或多个&#xff09;server {# 服务器配置...# 位置块&#xff08;一个或多个&#xff09;location {...}…

深度解析 Agent Skills:赋予 AI 真正的行动力

在人工智能的演进历程中&#xff0c;如果说大语言模型&#xff08;LLM&#xff09;是“大脑”&#xff0c;那么 Agent (智能体) 就是拥有手脚的“完整人”&#xff0c;而 Skills (技能) 正是这些手脚能完成的具体动作。 从单纯的对话机器人&#xff08;Chatbot&#xff09;向能…

基于ssm+vue的智能化在线学习系统[ssm]-计算机毕业设计源码+LW文档

摘要&#xff1a;随着互联网技术的飞速发展&#xff0c;在线学习已成为教育领域的重要趋势。本文介绍了一个基于SSM&#xff08;SpringSpringMVCMyBatis&#xff09;后端框架和Vue前端框架的智能化在线学习系统的设计与实现。该系统旨在为用户提供一个高效、便捷、个性化的在线…

Relink:动态构建查询导向的知识图谱推理框架,新一代 GraphRAG

Graph-based Retrieval-Augmented Generation: Relink Framework文章摘要针对大语言模型幻觉问题&#xff0c;现有GraphRAG方法依赖静态知识图谱&#xff0c;面临知识不完整和干扰事实两大挑战。本文提出Relink框架&#xff0c;突破传统"先构建后推理"范式&#xff0…