Spring AI 2.0 开发Java Agent智能体 - MCP(模型上下文协议)

大家好,我是Java1234_小锋老师,最近更新《2027版本 Spring AI 2.0 开发Java Agent智能体 视频教程》专辑,感谢大家支持。

本课程主要介绍和讲解Spring AI 2.0简介,Spring AI 2.0 HelloWorld搭建,Advisors --- 拦截器模式增强AI能力,对话与提示词工程(Prompt),工具调用 (Function Calling / Tools) ,RAG (检索增强生成),MCP(模型 上下文协议)和多模态支持。

等这个Spring AI2.0基础课程录制完成,接下来要发布2个 企业级Java AI实战课程,RAG 企业知识库系统和AI智能客服系统。大家可以点点关注,后面更精彩。

视频教程+课件+源码打包下载:

链接:https://pan.baidu.com/s/1o-zRfndo1HHrS_uFroOiCw?pwd=1234

提取码:0000

Spring AI 2.0 开发Java Agent智能体 - MCP(模型上下文协议)

MCP 的全称是 Model Context Protocol (模型上下文协议),是由 Anthropic 公司于 2024 年 11 月开源的一个开放协议。

你可以把它理解为 AI 应用的"通用 USB 接口" 。它的核心目标是解决一个实际问题:让大模型(LLM)能够安全、标准、便捷地连接到各种外部数据源和工具

核心价值:解决"数据孤岛"问题

在没有 MCP 之前,每个 AI 应用如果要访问数据库、文件、API 或浏览器,需要为每个数据源编写定制的集成代码("写死"的代码连接器),开发成本高、复用性差、维护困难。

MCP 定义了一套统一的、标准化的 API 规范,就像为 AI 生态制定了通用的"插座"标准。一套协议,所有支持它的 AI 和工具都能即插即用。

MCP 的工作方式(三个角色)

  1. MCP 主机 (Host):需要访问外部数据的 AI 应用,例如 Claude 桌面版、IDE 插件等。

  2. MCP 客户端 (Client):内嵌于主机中,负责与 MCP 服务器进行一一通信。

  3. MCP 服务器 (Server):轻量级的服务程序,通过标准协议暴露特定功能(如文件读写、数据库查询、API 调用)。它充当"翻译器",将 AI 需求转化为具体系统或数据操作。

Spring AI 2.0 中的 集成MCP

Spring AI 并不是简单"包一层 SDK",而是把组装工作 交给 Boot Starter,把声明工作 交给注解模块,同时把一部分曾与 MCP Java SDK 同行的 Spring 专用传输实现收回到 org.springframework.ai 体系

Spring AI 2.0 MCP具体示例 - 实时本地天气预报

大模型是不知道当前的某个城市天气预报的,这个功能实现可以让大模型调用MCP来实现。

首先新建mcp-server项目。

pom.xml引入依赖:

复制代码
<dependency>
            <groupId>org.springframework.ai</groupId>
            <artifactId>spring-ai-starter-mcp-server-webmvc</artifactId>
            <exclusions>
                <exclusion>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-starter-web</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-webmvc</artifactId>
        </dependency>

application.yml,配置下mcp

复制代码
# MCP 客户端(SSE):默认 GET /sse ,POST 消息 /mcp/message(可通过下方属性覆盖)
spring:
  application:
    name: mcp-server
  ai:
    mcp:
      server:
        name: mcp-server
        version: 1.0.0
        type: SYNC
        instructions: "提供按城市名的模拟天气预报查询(演示数据)。"
        annotation-scanner:
          enabled: true
        # sse-endpoint: /sse
        # sse-message-endpoint: /mcp/message
        # base-url: ""

server:
  port: 8888

定义 WeatherMcpTools

复制代码
package com.java1234;

import org.springframework.ai.mcp.annotation.McpTool;
import org.springframework.ai.mcp.annotation.McpToolParam;
import org.springframework.stereotype.Component;

@Component
public class WeatherMcpTools {

    @McpTool(
            name = "getWeatherForecast",
            description = "根据城市名称查询模拟天气预报(演示数据,非真实气象来源)",
            generateOutputSchema = true)
    public String getWeatherForecast(
            @McpToolParam(description = "城市名称,例如:北京、上海", required = true) String city) {
        System.out.println("执行到天气预报MCP-SERVER");
        return city+" 天气晴天 空气质量优。";
    }
}

然后我们直接启动mcp-server项目

接下来就是mcp-client客户端开发了。

pom.xml加下mcp-client客户端依赖

复制代码
		<!-- MCP 客户端:通过 SSE 连接本机 mcp-server(默认端口 8888) -->
		<dependency>
			<groupId>org.springframework.ai</groupId>
			<artifactId>spring-ai-starter-mcp-client</artifactId>
		</dependency>

application.yml里配置下mcp

复制代码
spring:
  application:
    name: helloWorld
  ai:
    model:
      embedding: openai
    mcp:
      client:
        enabled: true
        type: SYNC
        # 与 mcp-server 一致;须先启动 mcp-server(默认 http://localhost:8888)
        sse:
          connections:
            mcp-weather:
              url: http://localhost:8888

新建MyMcpController,

复制代码
package com.java1234.controller;

import org.springframework.ai.chat.client.ChatClient;
import org.springframework.ai.mcp.SyncMcpToolCallbackProvider;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

/**
 * 演示:通过 Spring AI MCP 客户端连接本机 {@code mcp-server},由大模型按需调用远端 MCP 工具(如天气预报)。
 * <p>
 * 使用前请先启动 {@code mcp-server}(默认端口 8888)。
 */
@RestController
public class MyMcpController {

    @Autowired
    private ChatClient chatClient;

    @Autowired
    private SyncMcpToolCallbackProvider mcpToolCallbackProvider;


    @RequestMapping("/ai/mcp")
    public String aiWithMcp() {
        String q =  "查一下上海天气";
        String result= chatClient.prompt()
                .system("用户询问天气时,你必须调用工具查询后再用简短中文回答。")
                .user(q)
                .toolCallbacks(mcpToolCallbackProvider)
                .call()
                .content();
        System.out.println( result);
        return "OK";
    }
}

浏览器调用:http://localhost:8080/ai/mcp

控制返回:

相关推荐
2601_957884845 小时前
深度拆解:大模型RAG架构下,GEO优化的技术实现路径
人工智能·架构
这个DBA有点耶5 小时前
DBA的AI助手:向量检索与NL2SQL入门
数据库·人工智能·postgresql·学习方法·dba
YOLO数据集集合5 小时前
无人机航拍林业树种分割|单木树冠检测|三维点云|遥感影像数据集10059期
人工智能·yolo·目标检测·无人机
Lei活在当下5 小时前
先用起来,再理解,关于协程Coroutine应该知道的事
android·java·jvm
Java爱好狂.5 小时前
Java程序员体系化学习路线(2026最新版)
java·后端·java面试·java架构师·java程序员·java八股文·java学习路线
Pocker_Spades_A5 小时前
工业智能化的时序选型指南:当数据底座遇见机器学习
人工智能·机器学习
2601_955781985 小时前
飞书远程控机:OpenClaw配置全攻略
人工智能·开源·github·飞书·open claw安装·open claw部署
Inhand陈工5 小时前
游轮WiFi覆盖方案复盘:6台5G CPE + AP实现全船高速上网
人工智能·物联网·网络协议·网络安全·信息与通信·iot
程序猿追5 小时前
在 HarmonyOS 模拟器上种出斐波那契螺旋线
大数据·人工智能·microsoft·华为·harmonyos
:mnong6 小时前
跟着 Sesame Robot 项目学习
人工智能·robot·esp