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

Spring AI MCP

MCP是什么

MCP是模型上下文协议(Model Context Protocol)的简称,是一个开源协议,由Anthropic(Claude开发公司)开发,旨在让大型语言模型(LLM)能够以标准化的方式连接到外部数据源和工具。它就像AI应用的通用接口,帮助开发者构建更灵活、更具上下文感知能力的AI应用,而无需为每个AI模型和外部系统组合进行定制集成。MCP被设计为一个通用接口,类似于USB-C端口,允许LLM应用以一致的方式连接到各种数据源和工具,如文件、数据库、API等。

MCP的三个概念

MCP Server

基于各语言的MCP SDK开发的程序或服务。简单来说就是一个后端服务,这个服务提供的方法就是MCP Tool。

MCP Tool

MCP Tool 属于MCP Server,一个MCP Server可以有多个MCP Tool。类似一个类里有多个方法,又或者一个服务里有多个接口。

MCP Client

当一段代码,一个Agent,一个客户端,基于MCP的规范去使用、去调用MCP Server里的MCP Tool时,它就是MCP Client。

MCP的调用流程

调用流程如图所示,其实和function calling是类似的
来自阿里云文章

MCP 案例

MCP 的两种传输协议,以下案例使用 sse (http),另一种是 stdio

MCP Server

基于Spring AI 的 MCP 服务端,提供天气预报的服务
■ 根据地区查询当天天气
■ 根据地区查询近期天气预报

// 定义 Tools
class WeatherServer {private WeatherExec weatherExec ;@Tool(name = "todayWeather", description = "根据地区查询当日天气")public WeatherModel todayWeather(String address) {return weatherExec.todayWeather(address);}@Tool(name = "futureWeather", description = "根据地区查询近期天气预报")public WeatherForecastModel futureWeather(String address) {return weatherExec.futureWeather(address);}}class Config {// 配置 Tools Bean@Beanpublic ToolCallbackProvider toolCallbackProvider(CustomService customService) {return MethodToolCallbackProvider.builder().toolObjects(customService).build();}}

MCP Client

这里仅描述 MCP 客户端和服务端的一些交互,暂不涉及 LLM

建立连接
获取MCP Server 的工具列表
执行一个工具

建立连接

客户端与服务端基于 SSE 建立长连接

curl --location 'http://localhost:8080/sse'

响应 endpoint /mcp/message 即触发事件的接口地址

发送获取 MCP 工具列表事件

触发事件,通过SSE返回结果

curl --location 'http://localhost:8080/mcp/message' \
--header 'Content-Type: application/json' \
--data '{"method": "tools/list","jsonrpc": "2.0","id": "xxx-id-001"
}'

sse 响应 message

{"jsonrpc": "2.0","id": "xxx-id-001","result": {"tools": [{"name": "todayWeather","description": "根据地区查询当日天气","inputSchema": {"type": "object","properties": {"address": {"type": "string"}}}},{...}]}
}

发送执行 MCP 工具事件

触发事件,通过SSE返回结果

curl --location 'http://localhost:8080/mcp/message' \
--header 'Content-Type: application/json' \
--data '{"method": "tools/call","jsonrpc": "2.0","id": "xxx-id-002","params": {"name": "todayWeather","arguments": {"address": "广州"}}
}'

sse 响应 message

{"jsonrpc": "2.0","id": "xxx-id-002","result": {"content": [{"type": "text","type": "text","text": "MCP Server 执行工具返回的数据"}],"isError": false}
}

Agent

MCP + LLM 其实就是个Agent
在这里插入图片描述

  1. 用户向Agent提问
  2. Agent调用MCP Server的接口,获取可用工具列表
  3. Agent调用LLM
    • 非函数调用,直接回复用户
    • 函数调用则继续
  4. Agent调用MCP Server的接口执行工具函数,获取执行结果
  5. 再次调用大模型,获取最终答案
  6. Agent回答用户

相关文章:

  • Linux之信号
  • Linux——系统安全及应用
  • 2025年pta团队设计天梯赛题解
  • 【软件工程】 适配器模式
  • C#接口开发异常:System.Web.HttpRequestValidationException
  • 怎么建立自然语言领域的评价标准
  • 人工智能在智能家居中的应用与发展
  • ubuntu20.04安装安装x11vnc服务基于gdm3或lightdm这两种主流的显示管理器。
  • PyTorch深度学习框架60天进阶学习计划 - 第47天:模型压缩蒸馏技术(一)
  • Java面试(2025)—— Spring MVC
  • CentOS7系统安装Docker教程
  • 目标跟踪中的聚类算法:DBSCAN Kmeans GMM
  • 【第十六届 蓝桥杯 省 C/Python A/Java C 登山】题解
  • <数据集>小船识别数据集<目标检测>
  • 平板电脑做欧盟网络安全法案(EU)2022/30
  • 14.第二阶段x64游戏实战-分析人物的名字
  • 基于opencv和PaddleOCR识别身份证信息
  • Spring Boot 整合 JavaFX 核心知识点详解
  • 科学视角下的养生新范式——高压氧舱:重塑健康边界的氧护革命
  • 使用 Electron 打包可执行文件和资源:完整实战教程
  • 大学2025丨浙大哲学院院长王俊:文科的价值不在于直接创造GDP
  • 【社论】地铁读书人也是一道城市风景
  • 印度空军计划增购40架法制“阵风”战机,此前已购买36架
  • 从南宋遗韵到海派风情,解码江南服饰美学基因
  • 艺术开卷|近现代中国古代书画东渡日本的历史图景
  • 石黑一雄《莫失莫忘》与“克隆人”:殖民地的记忆与行动