跳到主要内容
极客日志极客日志面向AI+效率的开发者社区
首页博客GitHub 精选镜像工具UI配色美学隐私政策关于联系
搜索内容 / 工具 / 仓库 / 镜像...⌘K搜索
注册
博客列表
JavaAIjava

Spring AI Alibaba 框架入门及 MCP 集成指南

综述由AI生成Spring AI Alibaba 框架的基础使用,涵盖包依赖引入、阿里百炼大模型调用、消息交互、工具调用、结构化输出及 RAG 功能。同时讲解了 MCP(模型上下文协议)的概念,包括客户端与服务端开发示例,以及基于 Nacos 的服务注册发现方案。旨在帮助开发者快速接入国内友好的大模型对接框架。

嘘发布于 2026/4/5更新于 2026/5/2536 浏览
Spring AI Alibaba 框架入门及 MCP 集成指南

一、简介

1、springAI-alibaba

国内可以使用 springAI-alibaba,文档默认支持阿里百炼大模型。

二、基本使用(编程式)

参考文档:https://java2ai.com/docs/frameworks/agent-framework/tutorials/agents

1、包

<!-- Spring AI Alibaba Agent Framework -->
<dependency>
    <groupId>com.alibaba.cloud.ai</groupId>
    <artifactId>spring-ai-alibaba-agent-framework</artifactId>
    <version>1.1.2.0</version>
</dependency>
<!-- DashScope ChatModel 支持(如果使用其他模型,请跳转 Spring AI 文档选择对应的 starter) -->
<dependency>
    <groupId>com.alibaba.cloud.ai</groupId>
    <artifactId>spring-ai-alibaba-starter-dashscope</artifactId>
    <version>1.1.2.1</version>
</dependency>

2、Models 模型(基于阿里百炼大模型)

/**
 * 示例 2:简单调用
 */
public static void simpleCall() {
    DashScopeApi   DashScopeApi.builder()
        .apiKey(System.getProperty())
        .build();
       DashScopeChatModel.builder()
        .dashScopeApi(dashScopeApi)
        .build();
    
       chatModel.call();
    System.out.println(response);
}


    {
       DashScopeApi.builder()
        .apiKey(System.getProperty())
        .build();
       DashScopeChatModel.builder()
        .dashScopeApi(dashScopeApi)
        .build();
    
    Flux<ChatResponse> responseStream = chatModel.stream( ());
    
    responseStream.subscribe(
        chatResponse -> {
               chatResponse.getResult().getOutput().getText();
            System.out.print(content);
        },
        error -> System.err.println( + error.getMessage()),
        () -> System.out.println()
    );
}
dashScopeApi
=
"AI_DASHSCOPE_API_KEY"
ChatModel
chatModel
=
// 使用字符串直接调用
String
response
=
"介绍一下 Spring 框架"
/** * 示例 6:流式响应 */
public
static
void
streamingResponse
()
DashScopeApi
dashScopeApi
=
"AI_DASHSCOPE_API_KEY"
ChatModel
chatModel
=
// 使用流式 API
new
Prompt
"详细解释 Spring Boot 的自动配置原理"
// 订阅并处理流式响应
String
content
=
"错误:"
"\n流式响应完成"

3、Messages 消息

Messages 是 Spring AI Alibaba 中模型交互的基本单元。它们代表模型的输入和输出,携带在与 LLM 交互时表示对话状态所需的内容和元数据。

Messages 是包含以下内容的对象:

  • Role(角色) - 标识消息类型(如 system、user、assistant)
  • Content(内容) - 表示消息的实际内容(如文本、图像、音频、文档等)
  • Metadata(元数据) - 可选字段,如响应信息、消息 ID 和 token 使用情况
/**
 * 示例 5:详细的角色设定
 */
public static void detailedSystemMessage() {
    DashScopeApi dashScopeApi = DashScopeApi.builder()
        .apiKey(System.getenv("AI_DASHSCOPE_API_KEY"))
        .build();
    ChatModel chatModel = DashScopeChatModel.builder()
        .dashScopeApi(dashScopeApi)
        .build();
    // 详细的角色设定
    SystemMessage systemMsg = new SystemMessage("""
        你是一位资深的 Java 开发者,擅长 Web 框架。
        始终提供代码示例并解释你的推理。
        在解释中要简洁但透彻。
        """);
    List<Message> messages = List.of(
        systemMsg,
        new UserMessage("如何创建 REST API?")
    );
    ChatResponse response = chatModel.call(new Prompt(messages));
}

4、Tools 工具调用

许多 AI 应用程序通过自然语言与用户交互。然而,某些业务场景需要模型使用结构化输入直接与外部系统(如 API、数据库或文件系统)进行交互。

Tools 是 agents 调用来执行操作的组件。它们通过定义良好的输入和输出让模型与外部世界交互,从而扩展模型的能力。

工具调用的工作原理非常简单,并不是 AI 服务器自己调用这些工具、也不是把工具的代码发送给 AI 服务器让它执行,它只能提出要求,表示"我需要执行 XX 工具完成任务"。而真正执行工具的是我们自己的应用程序,执行后再把结果告诉 AI,让它继续工作。

工具调用的流程:

  1. 工具定义:程序告诉 AI"你可以使用这些工具",并描述每个工具的功能和所需参数
  2. 工具选择:AI 在对话中判断需要使用某个工具,并准备好相应的参数(所以工具的描述至关重要)
  3. 返回意图:AI 返回"我想用 XX 工具,参数是 XXX"的信息
  4. 工具执行:我们的程序接收请求,执行相应的工具操作
  5. 结果返回:程序将工具执行的结果发回给 AI
  6. 继续对话:AI 根据工具返回的结果,生成最终回答给用户

5、结构化输出

结构化输出允许 Agent 以特定的、可预测的格式返回数据。相比于解析自然语言响应,您可以直接获得 JSON 对象或 Java POJO 形式的结构化数据,应用程序可以直接使用。

当 outputFormat 或 outputType 被指定时,Spring AI Alibaba 会自动选择:

  • 当大模型服务支持'原生结构化输出'时(目前支持 OpenAiChatModel、DashScopeChatModel),自动使用模型内置的结构化输出能力(这也是目前最稳定、可靠的方式,因为模型服务会自动提供校验支持)。
  • 针对其他没有'原生结构化输出'的模型,Spring AI Alibaba 会使用内置的 ToolCall 策略,通过一个动态的 ToolCall 来格式化模型输出。
  • 结构化响应将在 Agent 的状态对象 OverAllState 中返回,可通过 structured_output 读取。

6、RAG

参考文档:https://java2ai.com/docs/frameworks/agent-framework/advanced/rag

三、对接其他模型

1、对接其他模型

参考文档:https://java2ai.com/integration/chatmodels/comparison

四、MCP

1、简介

MCP (Model Context Protocol, 模型上下文协议) 是一种开放标准,目的是增强 AI 与外部系统的交互能力。MCP 为 AI 提供了与外部工具、资源和服务交互的标准化方式,让 AI 能够访问最新数据、执行复杂操作,并与现有系统集成。

本质是 Tools 远程调用。

参考文档:https://java2ai.com/integration/mcps/mcp-overview

2、MCP 客户端开发

3、MCP 服务端开发

(1)实现 STREAMABLE 的 mcp 服务端
import org.springaicommunity.mcp.annotation.McpTool;
import org.springaicommunity.mcp.annotation.McpToolParam;
import org.springframework.stereotype.Component;

@Component
public class McpTools {
    /**
     * 简单操作,无状态
     */
    @McpTool(name = "getCityWeather", description = "获取指定城市当天天气")
    public String getCityWeather(@McpToolParam(description = "城市", required = true) String city) {
        System.out.println("查询天气:" + city);
        return city + "今天天气为上午小雨,下午转阴";
    }

    @McpTool(name = "getTime", description = "获取当前时间")
    public String getTime() {
        System.out.println("获取时间");
        return "当前时间是:" + java.time.LocalDateTime.now();
    }
}
# application.yml
spring:
  ai:
    mcp:
      server:
        name: mcp-server
        version: 1.0.0
        type: SYNC
        protocol: STREAMABLE # or STDIO, STREAMABLE
        capabilities:
          tool: true
          resource: true
          prompt: true
          completion: true
        streamable-http:
          mcp-endpoint: /mcp # 默认/mcp

启动之后可以访问 localhost:8080/mcp,看响应

4、基于 nacos 实现 MCP 服务注册发现

目录

  1. 一、简介
  2. 1、springAI-alibaba
  3. 二、基本使用(编程式)
  4. 1、包
  5. 2、Models 模型(基于阿里百炼大模型)
  6. 3、Messages 消息
  7. 4、Tools 工具调用
  8. 5、结构化输出
  9. 6、RAG
  10. 三、对接其他模型
  11. 1、对接其他模型
  12. 四、MCP
  13. 1、简介
  14. 2、MCP 客户端开发
  15. 3、MCP 服务端开发
  16. (1)实现 STREAMABLE 的 mcp 服务端
  17. application.yml
  18. 4、基于 nacos 实现 MCP 服务注册发现
  • 💰 8折买阿里云服务器限时8折了解详情
  • Magick API 一键接入全球大模型注册送1000万token查看
  • 🤖 一键搭建Deepseek满血版了解详情
  • 一键打造专属AI 智能体了解详情
极客日志微信公众号二维码

微信扫一扫,关注极客日志

微信公众号「极客日志V2」,在微信中扫描左侧二维码关注。展示文案:极客日志V2 zeeklog

更多推荐文章

查看全部
  • 宇树机器人 G1 二次开发:FAST_LIO 建图配置与运行指南
  • 大模型辅助开发:人类与 AI 的职责边界及协作指南
  • 鸿蒙金融理财全栈项目:生态合作、用户运营与数据变现
  • LLM 训练性能基准测试与优化策略
  • Python 副业开发指南:技术栈与实战方向解析
  • Arcade-plus 专业谱面制作从入门到精通指南
  • 从 PX4 到 Gazebo:无人机视角跟随技术的演进与优化策略
  • ComfyUI Photoshop插件完整教程:5步实现AI绘画工作流
  • Android 陀螺仪开发:从基础到 VR 运动策略封装
  • C# 命令行参数与条件判断实战
  • 基于 Web 的足球青训俱乐部管理系统设计与实现
  • OpenClaw 开源汉化版安装与配置指南
  • Django Markdown 渲染中的 XSS 防护实践
  • OpenClaw 深度解析:AI 代理工具的真实能力与潜在风险
  • 5 种主流生成模型对比:VAE、GAN、AR、Flow 与 Diffusion 原理及代码
  • WebSocket 实战:基于 Spring Boot 构建实时通信系统
  • 基于 C++ 的 x86 虚拟化抽象框架设计与实现
  • 自动化机器学习实战:从调参到模型部署指南
  • 从登录页实战到 XSS 防御:Web 前端安全入门全攻略
  • AI 绘画内容安全与 NSFW 检测实战指南:从基础原理到安全实践

相关免费在线工具

  • Keycode 信息

    查找任何按下的键的javascript键代码、代码、位置和修饰符。 在线工具,Keycode 信息在线工具,online

  • Escape 与 Native 编解码

    JavaScript 字符串转义/反转义;Java 风格 \uXXXX(Native2Ascii)编码与解码。 在线工具,Escape 与 Native 编解码在线工具,online

  • JavaScript / HTML 格式化

    使用 Prettier 在浏览器内格式化 JavaScript 或 HTML 片段。 在线工具,JavaScript / HTML 格式化在线工具,online

  • JavaScript 压缩与混淆

    Terser 压缩、变量名混淆,或 javascript-obfuscator 高强度混淆(体积会增大)。 在线工具,JavaScript 压缩与混淆在线工具,online

  • RSA密钥对生成器

    生成新的随机RSA私钥和公钥pem证书。 在线工具,RSA密钥对生成器在线工具,online

  • Mermaid 预览与可视化编辑

    基于 Mermaid.js 实时预览流程图、时序图等图表,支持源码编辑与即时渲染。 在线工具,Mermaid 预览与可视化编辑在线工具,online