java 使用 spring AI 实战MCP

article/2025/8/14 17:16:39

最近在腾讯云edgeone的直播中了解到了MCP,随着了解发现MCP确实是一个未来发展的趋势
MCP :全称 Model Context Protocol 是一种专为人工智能模型设计的通信协议,于2024年11月由Anthropic推出的开放标准。它旨在解决复杂AI系统中多个模型或组件之间的协同、状态管理和资源优化问题,以及AI应用与外部数据源和工具集成中的挑战。
MCP 是一个开放协议,用于标准化应用程序向大语言模型提供上下文的方式。它类似 AI 应用的 USB–C 端口,MCP 连接 AI 模型与不同数据源和工具,能帮助构建基于大语言模型的智能体和复杂工作流,。MCP 具有一系列预构建的集成、可灵活切换 LLM 提供商和遵循客户端 – 服务器架构等特点。

访问地址:https://modelcontextprotocol.io/introduction

在这里插入图片描述
github :https://github.com/modelcontextprotocol

在这里插入图片描述
解决了什么问题:传统上,AI模型与外部数据源的集成需要为每个数据源开发自定义接口,既耗时又容易出错。MCP通过提供一个统一协议,简化了这一过程,开发者可以轻松连接到多个数据源,而无需重复编写代码。这减少了开发复杂性,并降低了维护和安全风险。

功能

  • 上下文状态管理
  • 动态上下文传递:允许模型在处理请求时保留和共享关键信息(如用户历史对话、当前任务状态),确保连贯性。
  • 版本控制:管理不同模型版本的上下文兼容性,避免因升级导致的逻辑冲突。
  • 分布式处理:支持跨服务器、跨设备并行处理,降低延迟并提高吞吐量。
  • 数据隔离:通过加密通道和访问控制确保敏感数据(如用户隐私信息)仅在授权范围内流动。
  • 审计日志:记录模型交互轨迹,便于合规性检查和责任追溯。
  • 缓存机制:对高频查询结果进行缓存,减少重复计算。
  • 模块化设计:支持插件式扩展(如新增自定义指令处理器或集成特定工具API)。
  • 多模态支持:原生适配文本、图像、音频等多种数据格式,简化多模态应用开发。
  • 上下文融合:将物流结果与用户历史偏好(如偏爱快递公司A)结合,生成个性化回复。
  • 反馈闭环:记录用户对回复的满意度,动态优化后续响应策略。

组件

  • ContextManager:管理用户会话上下文(历史消息、订单号、偏好等)。
  • IntentClassifier:自然语言理解模型,识别用户意图(如查询订单、投诉建议)。
  • ServiceRouter:根据意图路由到对应服务(如订单查询API、天气查询模型)。
  • DialoguePolicy:对话策略模型,决定回复策略(如确认信息、追问细节)。

源码:https://github.com/modelcontextprotocol/java-sdk
在这里插入图片描述
源码大家可以拉下来看看做了解,这里偶遇一篇讲MCP Java SDK源码的文章:https://www.51cto.com/article/810408.html

MCP Server 平台 : https://mcp.so/zh

案例:10分钟搞定高德地图MCP!我用AI解决了约会地点选择难题 ,这个案例虽然不是java实现的,但是也很值得大家了解和学习,这个类似的demo我在腾讯云edgeone的直播中有看到相似的案例

在了解MCP信息浏览github时发现一个项目有记录MCP相关
https://github.com/punkpeye/awesome-mcp-servers/blob/main/README-zh.md
在这里插入图片描述
检索java相关发现有个 spring-ai-mcp
在这里插入图片描述
在这里插入图片描述
点进来就到了spring ai 文档中了,原先用过spring ai 调用本地大模型进行聊天,刚好有所了解
在这里插入图片描述
开始 spring aimcp
首先电脑需要有 npx 环境 ,如果没有自行百度进行安装
在这里插入图片描述

在 MCP Server 平台。找一个现成的server进行使用
在这里插入图片描述
找一个操作文件的server
在这里插入图片描述
找到 NPX 留着备用

在这里插入图片描述

初始化项目
在这里插入图片描述

pom文件

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>org.yxy</groupId><artifactId>spring-ai-mcp</artifactId><version>1.0-SNAPSHOT</version><packaging>jar</packaging><name>spring-ai-mcp</name><url>http://maven.apache.org</url><properties><java.version>17</java.version><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding></properties><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId><version>3.2.4</version></dependency><dependency><groupId>org.springframework.ai</groupId><artifactId>spring-ai-mcp-client-spring-boot-starter</artifactId><version>1.0.0-M6</version></dependency><dependency><groupId>org.springframework.ai</groupId><artifactId>spring-ai-ollama-spring-boot-starter</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope><version>3.2.4</version></dependency><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>3.8.1</version><scope>test</scope></dependency></dependencies><build><plugins><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-compiler-plugin</artifactId><configuration><source>8</source><target>8</target></configuration></plugin></plugins></build><dependencyManagement><dependencies><dependency><groupId>org.springframework.ai</groupId><artifactId>spring-ai-bom</artifactId><version>1.0.0-M6</version><type>pom</type><scope>import</scope></dependency></dependencies></dependencyManagement></project>

在这里插入图片描述

application.yml
配置文件 ollama 配置的我原先本地部署的千问模型 大家自行更改
还有就是一个mcp的配置,需要指定mcpsevers的json文件

spring:application:name: spring-ai-mcpai:ollama:base-url: http://localhost:11434chat:options:model: qwen2.5-coder:7bmcp:client:enabled: truename: mcp-clientversion: 1.0.0type: SYNCrequest-timeout: 30sstdio:servers-configuration: classpath:/mcp-servers-config.json

mcp-servers-config.json
我这里是使用的操作文件的server,大家想测试其他的只需要在这个配置文件进行配置
而我这里是windows上使用,所以将 MCP Server 平台 复制过来的命令做了个调整

{"mcpServers": {"filesystem": {"command": "cmd","args": ["/c","npx","-y","@modelcontextprotocol/server-filesystem","F:\\web"]}}
}

OllamaController

package org.yxy.controller;import jakarta.annotation.Resource;
import org.springframework.ai.chat.client.ChatClient;
import org.springframework.ai.mcp.SyncMcpToolCallbackProvider;
import org.springframework.ai.ollama.OllamaChatModel;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;@RestController
public class OllamaController {@Resourceprivate OllamaChatModel ollamaChatModel;@Resourceprivate SyncMcpToolCallbackProvider toolCallbackProvider;@GetMapping("/ai/ollama")public String ollama(@RequestParam(value = "msg") String msg) {ChatClient chatClient = ChatClient.builder(ollamaChatModel).defaultTools(toolCallbackProvider.getToolCallbacks()).build();String content = chatClient.prompt(msg).call().content();System.out.println(content);return content;}}

运行后浏览器直接访问
在这里插入图片描述

如果半天没有响应大家稍等下,本地环境有限,会有点慢
在这里插入图片描述
在这里插入图片描述
简易版demo已实现了,进行下一步
在这里插入图片描述
当我们配置的type是同步使用时就使用同步的依赖,这个可以在多client时进行使用
在这里插入图片描述
所有注册的MCP工具通过ToolCallbackProvider实例以ToolCallback列表的形式提供
在这里插入图片描述
就是我们这里的demo使用的是操作file的Server,这里可以看到其提供的工具
在这里插入图片描述
我让其帮我创建一个文件夹
在这里插入图片描述

在这里插入图片描述
在我打断点请求查看时发现创建成功了
这里的 toolCallbackProvider.getToolCallbacks()[9]是 list_allowed_directories方法所在数组中的位置,本想查看来着,结果创建成功了

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述


http://www.hkcw.cn/article/vyaZVavDVv.shtml

相关文章

Spring AI+MCP强强联合:三步打造智能体开发王炸组合!

环境&#xff1a;SpringBoot3.4.2 1. 简介 1.1 什么是MCP Model Context Protocol&#xff08;MCP&#xff09;模型上下文协议是一种标准化协议&#xff0c;它让大模型能够更容易地和外部的数据、工具连接起来。你可以把MCP想象成一个通用的插头或者接口&#xff0c;就像USB-…

如何在Pycharm中插入AI插件(OpenAI及DeepSeeK)

1.首先在pycharm找到ai插件&#xff0c;安装 注&#xff1a;有时叫codeGPT&#xff0c;有时叫proxy AI,其实都是同个插件来的&#xff1b;可以通过logo来确认。 2.安装成功后&#xff0c;会在设置-工具里出现CodeGPT 步骤&#xff1a;选择CodeGPT&#xff0c;选择custom op…

拥抱AI未来:Hugging Face平台使用指南与实战技巧

目录 &#x1f354; huggingface介绍 &#x1f354; 使用步骤 2.1 创建一个帐户 2.2 登录 2.3 在huggingface上创建模型仓库 2.4 上传本地模型到平台 1 页面发布步骤介绍 2 git clone操作 3 把我们要上传的模型文件copy到本地mymodel04文件夹中 4 上传本地mymodel04文…

强化学习—多智能体

强化学习—多智能体 多智能体强化学习基本概念多智能体强化学习的挑战主要方法与算法应用领域总结 纳什均衡基本定义直观理解特点应用领域计算方法总结 笔记四种常见设定多智能体下的基本概念单智能体策略梯度方法用在多智能体问题中的问题多智能体强化学习(中心化、去中心化)架…

别卷了!秘塔 AI 把“学不完“变成“暴风吸入“

大家好&#xff0c;我是泽安&#xff0c;见字如面&#xff01; “提到秘塔 AI&#xff0c;80%的人可能一脸懵——但如果你还在用传统方式学习&#xff0c;那你真的亏大了&#xff01;” 2025 年 AI 工具大爆发&#xff0c;但大多数还是“通用型”&#xff0c;而秘塔 AI 却悄悄…

Spring Boot集成Spring Ai框架【详解 搭建Spring Ai项目,以及简单的ai大模型智能体应用,附有图文+示例代码】

文章目录 一.Spring Ai介绍1.0 认识Spring Ai1.1 特征1.1 大模型专业名字介绍1.1.1 RAG(检索增强生成)RAG 的基本原理RAG 的关键技术RAG 的优势RAG 的应用场景 1.1.2 fine-tuning(微调)1.1.3 function-call(函数调用) 1.2 创建简单的Spring Ai项目 二.Spring Ai简单的智能应用2…

如何使用服务器训练AI模型

如何使用服务器训练模型 大家好&#xff0c;这里是肆十二&#xff0c;之前有小伙伴反馈说自己的电脑只有cpu&#xff0c;没有GPU&#xff0c;也想要体验一下使用gpu训练模型&#xff0c;或者有的小伙伴反馈说自己所在的实验室提供了linux的服务器&#xff0c;但是不怎么会用&a…

(4)ModalAI VOXL

文章目录 前言 4.1 购买什么 4.2 硬件设置 4.3 VOXL 摄像机配置 4.4 自动驾驶仪配置 4.4.1 使用 OpticalFlow 进行 EKF3 光源转换 4.5 视频 前言 本文介绍了如何将 ModalAI VOXL-CAM 与 ArduPilot 配合使用&#xff0c;以替代 GPS&#xff0c;从而实现 Loiter、PosHold…

Cursor —— AI编辑器 使用详解

Cursor - The AI Code Editor 一、Cursor 是什么&#xff1f; Cursor 是一款优秀的AI代码编辑器&#xff0c;它内置了 Deepseek-R1、GPT-4、Claude等 AI 模型。 简单说&#xff0c;就是&#xff1a;Cursor VS Code 编辑器 AI 大模型 Cursor 功能特性&#xff08;代码补全、…

开源免费!AI视频分析神器,智能识别画面,1秒提取关键帧!附详细教程

大家好&#xff01;我是羊仔&#xff0c;专注AI工具、智能体、编程。 在AI时代&#xff0c;每天都有各种各样的新鲜事物涌现&#xff0c;简直可以用“日新月异”来形容。 羊仔就是个喜欢在AI世界里瞎折腾的人&#xff0c;专门给大家伙儿挖掘那些好用又好玩的AI工具。 今天&am…

Browser-Use WebUI:让AI自动使用浏览器帮你查询信息执行任务

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

从零开始:如何用Python训练一个AI模型(超详细教程)

引言 人工智能&#xff08;AI&#xff09;——一个熟悉又神秘的词汇。我们常听说它可以生成诗歌、编写代码、创作艺术&#xff0c;甚至回答各种问题。然而&#xff0c;当你想亲手实现一个“AI 模型”时&#xff0c;却可能感到无从下手。这篇教程正是为你准备的&#xff0c;将带…

黄觉凭《藏海传》火出圈 反派角色引关注

《藏海传》中,平津侯庄芦隐成为火出圈的配角之一。这个角色贯穿整部剧,是核心反派,阴鸷多疑且心狠手辣。黄觉饰演的平津侯在剧中权倾朝野,是肖战饰演的男主藏海复仇计划的主要目标。他与多位演员有精彩的对手戏,无论是与藏海之间的对决还是与曹静贤之间的较量,都为观众带…

马斯克再度否认“吸毒成瘾” 澄清媒体报道不实

当地时间5月31日,马斯克在社交平台上回应了有关他“经常服用氯胺酮、摇头丸和迷幻蘑菇”以及“吸毒成瘾导致膀胱问题”的报道。他表示这些说法并不属实,并指责《纽约时报》的报道是胡编乱造。马斯克解释说,几年前他曾尝试过处方氯胺酮,并在X平台上公开谈论过此事。他认为这…

饲养员当大厨 大熊猫吃上美味粽子 创意粽情温暖国宝心

昨天是端午节,长沙生态动物园为大熊猫准备了特别的粽子。饲养员们发挥创意与爱心,为这些国宝打造了一场舌尖上的惊喜。为了让大熊猫吃得健康又开心,饲养员们在食材选择上费尽心思。新鲜的苹果、火龙果、青提、橙子、玉米、圣女果和胡萝卜等被精心挑选出来。粽叶经过严格的清…

专家:中国战机见证中巴友谊 体系化空战显神威

巴参谋长联席会议主席在接受采访时提到,歼-10CE和“枭龙”战机在体系化空战中表现出色。他表示,“阵风”和歼-10CE都是优秀的飞机,但体系化空战是取得胜利的关键。智能技术、网络技术等现代技术的应用对空战胜利起到了重要作用。他特别表扬了中国的歼-10CE和“枭龙”战机,称…

一分钟带你盘点粤港澳车展 七大展馆亮点纷呈

2025粤港澳大湾区国际汽车博览会的展位图已经公布,展会将于5月31日开幕,持续至6月8日,在深圳国际会展中心举行。本次车展设置了7个展馆,每个展馆都有各自的特色和看点。1号馆是比亚迪的专馆,包括比亚迪、腾势、仰望、方程豹等品牌将参展。此外,还将展示比亚迪的多项前沿技…

网友偶遇撒贝宁大喊我去过赛里木湖 美景让人直呼没白活

整理露营装备的北京摄影师小王突然抬头问我:“你见过凌晨五点的赛里木湖吗?”他蹲在帐篷前,手里握着三脚架,镜片上还沾着草屑。“去年我刷到撒老师那句‘白活论’,当天就订了机票。结果你猜怎么着?我在这湖边住了三天,每天换着角度拍,手机相册愣是没一张重复的风景!”…

比亚迪下一步的发展究竟会怎样 技术创新引领未来

在汽车江湖里,比亚迪无疑是一颗耀眼的新星。近年来,它在新能源汽车领域一路狂飙,让无数人为之侧目。那么,比亚迪未来3年的发展空间到底有多大呢?技术创新是比亚迪发展的强劲引擎。以刀片电池为例,凭借高安全性和长续航能力在市场上出尽风头。相关数据显示,搭载刀片电池的…

《折腰》编剧说刘宇宁就是魏劭的样子 铁血柔情的完美诠释

《折腰》的结局让人不舍,这部剧期待已久,突然开播带来了惊喜。短短半个月的追剧时光转瞬即逝,观众们又要从《折腰》的世界中抽离出来。刘宇宁饰演的男主魏劭是一个让人印象深刻的角色。终于迎来了一个不那么传统的古装角色,但他的命运依旧坎坷。坊间流传着关于魏劭的各种说…