SpringAI入门:集成MCP
AI应用中的MCP是Anthropic于2024年11月推出的模型上下文协议(Model Context Protocol),被誉为AI领域的“USB-C接口”。它是一套开放通信协议,核心是解决AI模型与外部工具、数据源交互的碎片化问题。其能打破不同AI平台接口不兼容的壁垒,支持一次开发的工具供多模型复用,切换模型无需重写代码。且MCP服务器可部署在本地或内网,敏感数据无需上传第三方平台,仅传递调
在以前的文章我是不愿意对概念上多做介绍的,因为概念这些东西AI或者网上一查就可以了解到,但是最近写文章发现没有一点铺垫的话太干了,而且没有引出和简单的介绍对于文章内容也不好理解,就想我把代码给你你拿着去跑吧。那种感觉最开始写文章确实是因为很少能在再网上找到完整直接跑通的代码,才开始自己写让大家理解并能拿着我的代码直接复现。但是还是要有一点铺垫吧。依旧不多说直接介绍

MCP简介
AI应用中的MCP是Anthropic于2024年11月推出的模型上下文协议(Model Context Protocol),被誉为AI领域的“USB-C接口”。
它是一套开放通信协议,核心是解决AI模型与外部工具、数据源交互的碎片化问题。 其能打破不同AI平台接口不兼容的壁垒,支持一次开发的工具供多模型复用,切换模型无需重写代码。且MCP服务器可部署在本地或内网,敏感数据无需上传第三方平台,仅传递调用结果,降低泄露风险。 该协议采用Host、Client、Server架构,Claude Desktop等AI应用作为Host,通过内置Client与部署了各类工具的Server通信。
MCP全称Model Context Protocol(模型上下文协议),是Anthropic开源的标准化协议,相当于AI领域的“万能接口”,核心是为大语言模型与外部数据源、工具及服务搭建统一连接框架,破解各系统间的数据孤岛与接口不兼容问题,降低AI应用开发成本。它采用Host、Client、Server的客户端 - 服务器架构,规范了AI与外部交互的通信流程,保障交互的安全性和稳定性。 它的具体功能集中在以下几方面:
1. 打通多类数据通道:能连接本地文件、PostgreSQL等数据库以及Google Drive、各类Web API等远程服务,让AI无需手动上传数据,就能直接读取或写入这些本地与云端的数据,比如开发者可通过它让AI实时调取本地项目文档内容。
2.便捷调用外部工具:支持AI用自然语言调用Git提交代码、执行SQL查询、调用GitHub接口获取代码片段等操作。像程序员可借助Cursor搭配MCP,让AI自动完成代码搜索、仓库创建等一系列和代码开发相关的操作。
3.助力高效开发与生态扩展:对开发者而言,不用重复开发适配不同模型的工具接口,可直接复用现成的MCP服务;同时它支持多语言SDK,开发者能快速定制服务器,拓展出适配新场景的功能,目前社区已有覆盖文件管理、数据库查询等多种场景的MCP服务器实现方案。
一、MCP调用
这里我们调用的是高德的MCP,可以访问 概述-MCP Server | 高德地图API
这次的内容比较简单,编写时费时间的就是SpringAI的版本适配,配置文件格式适配
1.Maven配置添加
<!--既支持sse\也支持Stdio-->
<dependency>
<groupId>org.springframework.ai</groupId>
<artifactId>spring-ai-starter-mcp-client-webflux</artifactId>
</dependency>
2.添加application配置
这里报错了很久这是我探索到的合适能运行的配置文件,因为之前写的配置文件总是自动拼接/sse,好像是SpringAI这个版本的问题,也不是很清楚
spring:
ai:
mcp:
client:
enabled: true
toolcallback:
enabled: true
sse:
connections:
amap:
url: https://mcp.amap.com
# 关键点:这里的key务必通过环境变量传入,不要写死
sse-endpoint: /sse?key=your_api_key
type: async
request-timeout: 60000
3.修改AIConfig
/**
* @Description: deepseek模型
* @param
* @return org.springframework.ai.chat.client.ChatClient
*/
@Bean
@Primary
public ChatClient deepseek(ToolCallbackProvider toolCallbackProvider){
return ChatClient.builder(deepSeekChatModel)
.defaultToolCallbacks(toolCallbackProvider.getToolCallbacks())//MCP自动注册为工具
.defaultAdvisors(new SimpleLoggerAdvisor())//记录日志
.defaultAdvisors(PromptChatMemoryAdvisor.builder(chatMemory).build())
.defaultTools(userTool)
.build();
}
4.启动

二、自定义MCP
这个先留着我先研究研究

更多推荐

所有评论(0)