SpringAI + MCPServer + MCPClient 快速入门编写大纲
源代码地址:https://download.youkuaiyun.com/download/user_admin_god/90926893
1. 介绍
本文通过使用免费的智普AI的glm-4-flash模型,设计并实现了一个智能问答系统。在该系统中,我们编写了一个工具接口,专门处理那些大模型无法解答的复杂问题,并将其集成到MCPServer中。MCPClient的Web端接口能够智能地判断何时使用智普AI的glm-4-flash模型,何时调用MCPServer的工具接口,从而确保在大模型无法处理的情况下,系统通过MCP实现高效的协调与问题解决。这一方案不仅提升了AI问答的能力,还能更灵活地应对多样化的用户需求。
1.1 目标
本文的主要目标是帮助开发者了解如何结合 SpringAI、MCPServer 和 MCPClient 来创建一个高效的分布式应用程序。通过这个快速入门指南,开发者将能够:
- 迅速掌握这些组件的基本用法及如何将它们集成到实际项目中;
- 理解各个模块之间的架构设计和通信流程;
- 学习如何通过SpringAI 提供的人工智能服务来增强应用功能;
- 轻松实现一个客户端-服务器模型,并使用 SpringAI 实现智能化服务。
1.2 技术栈概述
(一)SpringAI
SpringAI 是一个基于 Spring 框架的人工智能服务构建工具,旨在帮助开发者通过简单的配置和接口集成AI功能。无论是自然语言处理、图像识别还是其他类型的智能服务,SpringAI 都提供了一套简洁的API接口,支持与流行的AI平台(如OpenAI)无缝对接。开发者可以通过它轻松实现复杂的AI任务。
SpringAI特点:
AI 模型集成与管理
Spring AI 提供对多种 AI 模型的支持,包括聊天模型、文本生成、图像生成、语音识别与合成等,支持同步和流式 API 选项。
统一的 API 接口
框架提供跨 AI 提供商的可移植 API,支持 OpenAI、Anthropic、Google、Microsoft、ZhiPu等主流平台,简化了不同模型间的切换和集成。
向量数据库支持
Spring AI 支持多种向量数据库,如 Chroma、Milvus、PostgreSQL/PGVector、Redis、Weaviate 等,提供类似 SQL 的元数据过滤 API,方便进行高效的相似性搜索和数据存储。
函数调用与工具集成
框架支持模型调用外部函数和工具,允许模型在推理过程中访问实时数据或执行特定操作,增强了模型的实用性和灵活性。
结构化输出与 POJO 映射
Spring AI 支持将 AI 模型的输出映射到 Java POJO(Plain Old Java Object),实现结构化数据处理,方便与其他系统的集成。
提示词模板与检索增强生成(RAG)
框架提供提示词模板功能,支持检索增强生成(RAG)策略,将外部知识库与 AI 模型结合,提高生成内容的准确性和相关性。
自动配置与 Spring Boot 集成
Spring AI 与 Spring Boot 无缝集成,支持自动配置和启动器,使得 AI 功能的集成过程更加简便和高效。
(二)MCPServer
MCPServer 是一个提供具体功能的服务端程序,类似于一个工具箱,里面包含了各种工具,例如文件读写、数据库查询、API 调用等。这些工具能够使大型语言模型(LLMs)以标准化的方式访问外部服务或数据源。
主要职责:
- 提供工具:Server 定义并实现具体的工具(
Tool),这些工具构成了 MCP 的核心功能。例如,它可以是天气查询接口、数学运算功能、数据分析工具等。 - 处理请求:当 MCP Client 发送请求时,Server 负责解析请求内容,并根据需求执行相应的操作。
- 返回结果:完成操作后,Server 将处理结果返回给 Client。这可能包括从数据库获取信息、调用第三方 API,或进行其他数据处理任务。
(三)MCPClient
MCPClient 如同大型语言模型(LLM)的遥控器,负责向 Server 发送指令并接收结果。它的角色是将自然语言指令翻译成 Server 能理解的请求格式。
主要职责:
- 构建请求:Client 根据用户输入或 LLM 的需求,构建符合 MCP 协议的请求。它需要理解用户的意图,并将其转化为 Server 可执行的具体命令。
- 与 Server 通信:一旦构建好请求,Client 会通过网络与 Server 建立连接并发送请求。通常,这一过程遵循 JSON-RPC 2.0 规范,以确保通信的标准化和一致性。
- 接收响应:在接收到 Server 的响应后,Client 负责解读这些信息,并将有用的结果反馈给用户或 LLM。
2. 环境准备
-
3.1 软件要求
- JDK 21+:建议使用 JDK 21 或更高版本,可以通过华为云镜像下载链接获取。
- Spring Boot 3:推荐使用 Spring Boot 3.4.5 版本。Spring Boot 是一个非常流行的框架,能够简化 Java 后端应用的构建过程,自动配置和快速开发。
- Maven 3.9.2:Maven 是一种强大的构建和项目管理工具,用于依赖管理、构建配置及项目生命周期管理。建议使用 Maven 3.9.2 版本。
- IntelliJ IDEA 2024.3:这款IDE是目前最受开发者青睐的Java开发工具之一,具备强大的代码编辑与调试功能,能够极大地提高开发效率。
- MySQL 8.0+:MySQL 是一个开源的关系型数据库管理系统,8.0 版本具有更高的性能和更强的特性支持。
- Mybatis-Plus 3.5.12:这是 Mybatis 的增强工具,能够简化数据库操作,并提高代码的可维护性。3.5.12 版本是本项目所推荐的版本。
-
3.2 安装步骤
- 安装 Java 开发环境
-
首先,下载并安装 JDK 21+,确保系统的环境变量已经配置好,例如
JAVA_HOME和PATH,这样 Java 可以在命令行中直接调用。 -
安装完成后,通过执行以下命令验证是否成功安装:
java -version输出应该显示 JDK 的版本信息。
- 配置 Spring Boot 项目
-
使用IntelliJ IDEA打开或创建一个新的 Spring Boot 项目。可以通过以下步骤快速创建 Spring Boot 项目:
- 打开 IntelliJ IDEA,选择 File -> New Project。
-
在项目类型中选择 Spring Initializr,并根据项目需求配置相关的参数。
-
完成项目初始化后,选择正确的 Spring Boot 版本(3.4.5 推荐版本)。
- 添加必要的依赖项
在
pom.xml文件中添加项目所需的依赖项,主要包括:- spring-boot-starter-web:提供构建 Web 应用的基础功能,支持 RESTful 风格的 Web 服务。
- spring-retry:用于支持自动重试机制,可以帮助应用在失败时进行重试,确保应用的高可用性。
- spring-cloud:提供 Spring Cloud 的相关组件,适合微服务架构的开发。
3. 项目创建结构
两个模块 mcp-client 和 mcp-server
├─mcp-client
│ ├─src
│ │ └─main
│ │ ├─java
│ │ │ └─com
│ │ │ └─gt
│ │ │ └─demo
│ │ │ └─mcpclient
│ │ │ ├─ai
│ │ │ ├─controller
│ │ │ ├─domain
│ │ │ ├─mapper
│ │ │ ├─service
│ │ │ │ └─impl
│ │ │ └─utils
│ │ └─resources
└─mcp-server
├─src
│ └─main
│ ├─java
│ │ └─com
│ │ └─gt
│ │ └─demo
│ │ └─mcpserver
│ │ ├─ai
│ │ ├─controller
│ │ ├─domain
│ │ ├─mapper
│ │ ├─proxy
│ │ ├─service
│ │ │ └─impl
│ │ └─utils
│ └─resources
4. 工程核心代码
- 4.1 MCPServer Pom依赖
<properties>
<java.version>21</java.version>
<maven.compiler.source>21</maven.compiler.source>
<maven.compiler.target>21</maven.compiler.target>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId

最低0.47元/天 解锁文章
398





