Spring-AI之MCP

引言

在 AI 技术快速发展的今天,模型与外部数据源、工具的集成效率成为制约其应用落地的关键瓶颈。传统模式下,每个数据源或工具都需要单独开发 API 接口,导致重复劳动与扩展性不足。在AI项目开发中可以发现,集成AI模型复杂,现有框架如LangChain Tools、LlamaIndex和Vercel AI SDK存在问题。LangChain和LlamaIndex代码抽象高,商业化过重;Vercel AI SDK与Nextjs绑定过深。

一 什么是MCP(Model Context Protocol)

定义

MCP(Model Context Protocol,模型上下文协议) ,2024年11月底,由 Anthropic 推出的一种开放标准,旨在统一大型语言模型(LLM)与外部数据源和工具之间的通信协议。MCP 的主要目的在于解决当前 AI 模型因数据孤岛限制而无法充分发挥潜力的难题,MCP 使得 AI 应用能够安全地访问和操作本地及远程数据,为 AI 应用提供了连接万物的接口。

(旨在通过结构化数据格式和标准化通信流程,帮助模型在不同场景下高效理解、记忆和利用上下文信息。它解决了传统模型在处理长对话、多轮交互或复杂任务时上下文丢失、信息冗余等问题。)

通过标准化的架构设计,为 AI 模型与外部系统的无缝连接提供了 “即插即用” 的解决方案,被誉为 AI 时代的 “USB-C 接口”。

MCP的优势在于:一是开放标准利于服务商开发API,二是避免开发者重复造轮子,可利用现有MCP服务增强Agent。

附官方链接: https://modelcontextprotocol.io/introduction

Function Calling是AI模型调用函数的机制,MCP是一个标准协议,使AI模型与API无缝交互,而AI Agent是一个自主运行的智能系统,利用Function Calling和MCP来分析和执行任务,实现特定目标。

价值

  1. 打破数据孤岛
  2. 简化开发流程
  3. 增强模型能力

举个栗子,在过去,为了让大模型等 AI 应用使用我们的数据,要么复制粘贴,要么上传下载,非常麻烦。

即使是最强大模型也会受到数据隔离的限制,形成信息孤岛,要做出更强大的模型,每个新数据源都需要自己重新定制实现,使真正互联的系统难以扩展,存在很多的局限性。

现在,MCP 可以直接在 AI 与数据(包括本地数据和互联网数据)之间架起一座桥梁,通过 MCP 服务器和 MCP 客户端,大家只要都遵循这套协议,就能实现“万物互联”。

有了MCP,可以和数据和文件系统、开发工具、Web 和浏览器自动化、生产力和通信、各种社区生态能力全部集成,实现强大的协作工作能力,它的价值远不可估量。

与传统 API 集成的区别

功能

传统 API

MCP 协议

整合难度

需为每个工具单独开发接口

标准化协议一次整合所有工具

实时双向通信

不支持

支持(如 AI 实时获取数据库更新)

动态发现工具

不支持

支持(模型自动识别可用工具)

扩展性

弱(需额外开发)

强(即插即用)

安全性

分散管理

统一权限控制

MCP 与 Function Calling 的区别

这两种技术都旨在增强 AI 模型与外部数据的交互能力,但 MCP 不止可以增强 AI 模型,还可以是其他的应用系统。

安全问题

MCP 通过标准化的数据访问接口,大大减少了直接接触敏感数据的环节,降低了数据泄露的风险。

还有,MCP 内置了安全机制,确保只有经过验证的请求才能访问特定资源,相当于在数据安全又加上了一道防线。同时,MCP协议还支持多种加密算法,以确保数据在传输过程中的安全性。

例如,MCP 服务器自己控制资源,不需要将 API 密钥等敏感信息提供给 LLM 提供商。这样一来,即使 LLM 提供商受到攻击,攻击者也无法获取到这些敏感信息。

二 核心架构与原理

MCP 采用客户端 - 服务器模型(Client-Server Model),其核心组件包括:

  • MCP 主机(MCP Hosts):发起请求的LLM应用程序(例如 Claude Desktop、IDE 或 AI 工具)。
  • MCP 客户端(MCP Clients):在主机程序内部,与 MCP server 保持 1:1的连接。负责与 MCP 服务器通信,传递模型的意图与请求。
  • MCP 服务器 (MCP Servers):为 MCP client 提供上下文、工具 和 prompt 信息。作为连接 AI 模型与外部系统的中介,承担 “翻译” 与 “桥梁” 角色。(解析模型意图,调用外部资源执行操作,并将结果返回模型)
  • 资源 (Resources):本地或外部资源。(如文件、数据库、API 等)

附官方架构图:

MCP Client

  • MCP client 首先从 MCP server 获取可用的工具列表。
  • 将用户的查询连同工具描述通过 function calling 一起发送给 LLM。
  • LLM 决定是否需要使用工具以及使用哪些工具。
  • 如果需要使用工具,MCP client 会通过 MCP server 执行相应的工具调用。
  • 工具调用的结果会被发送回 LLM。
  • LLM 基于所有信息生成自然语言响应。
  • 最后将响应展示给用户。

MCP Server

MCP server 是 MCP 架构中的关键组件,它可以提供 3 种主要类型的功能:

  • 资源(Resources):类似文件的数据,可以被客户端读取,如 API 响应或文件内容。
  • 工具(Tools):可以被 LLM 调用的函数(需要用户批准)。
  • 提示(Prompts):预先编写的模板,帮助用户完成特定任务。

这些功能使 MCP server 能够为 AI 应用提供丰富的上下文信息和操作能力,从而增强 LLM 的实用性和灵活性。

通信机制

MCP 协议支持两种主要的通信机制:基于标准输入输出的本地通信和基于SSEServer-Sent Events)的远程通信。

这两种机制都使用 JSON-RPC 2.0 格式进行消息传输,确保了通信的标准化和可扩展性。

  • 本地通信通过 stdio 传输数据,适用于在同一台机器上运行的客户端和服务器之间的通信。
  • 远程通信利用 SSE 与 HTTP 结合,实现跨网络的实时数据传输,适用于需要访问远程资源或分布式部署的场景。

附一些官方支持的 SDK

我们这里主要看 Java 的 https://github.com/modelcontextprotocol/java-sdk

Spring AI 正好有对其集成,很好。

三 Spring AI 集成 MCP

Spring AI MCP 扩展了MCP Java SDK与Spring Boot集成,提供客户端和服务器启动器。 使用Spring Initializer引导带有MCP支持的AI应用程序。

Spring AI 通过三大模块实现 MCP 协议与 Java 生态的深度整合:

  1. MCP 客户端库
  2. 工具适配器
  3. 安全增强组件

The Java MCP implementation follows a three-layer architecture:

附 Spring AI MCP 官方文档:https://docs.spring.io/spring-ai/reference/api/mcp/mcp-overview.html

MCP Client

MCP Server

典型的应用场景

  1. 自然语言驱动的 Docker 管理

https://www.51cto.com/article/807150.html

  1. 智能数据库查询

https://juejin.cn/post/7483454392979570700

  1. Git 仓库只能管理

https://juejin.cn/post/7474220344699666458

四 未来发展方向

技术演进路径

  1. 异步流支持:通过 SSE 实现实时数据推送(如日志监控)
  2. 多云适配:集成 Kubernetes 实现服务动态扩缩容
  3. 低代码开发:通过 Spring AI CLI 生成 MCP 接口文

生态建设规划

  • 工具市场:构建 Spring AI 官方工具库(含 MySQL、Redis 等主流服务)
  • 行业解决方案:开发金融、医疗等垂直领域的 MCP 插件
  • 性能优化:引入 AOT 编译提升 MCP 服务器响应速度

五 总结

MCP 协议与 Spring AI 的深度整合,为企业级 AI 应用提供了标准化、安全化、高效化的开发范式。通过统一的通信协议和生态工具,开发者可将精力聚焦于业务创新,而非底层集成。未来,随着 MCP 生态的持续完善,Spring AI 将推动更多行业实现 "对话即服务" 的智能协作革命。

反思

如何应用到我们的业务上,或着我们应该如何跟上这场革命的浪潮,成为飞在风口上的🐷。

全部评论
大大,问问有没有门路招招我啊,我在不进场就进狱了。
点赞 回复 分享
发布于 01-01 12:38 河北

相关推荐

03-16 16:19
已编辑
长沙学院 Java
如果你现在想入行AI,别一上来就啃什么反向传播、数学推导,大概率坚持不下来。直接奔着RAG去,这是企业最缺、上手最快、简历最好写的方向。RAG到底是啥?全称检索增强生成,说白了就一句话:让AI学会翻资料再回答问题。以前的大模型全凭“脑子里的知识”答题,问它“咱们公司年假怎么休”,它直接懵——它又没在你公司上过班。RAG不一样:你先把自己公司的员工手册、技术文档、会议纪要、客服聊天记录全喂进去,存在一个叫“向量数据库”的地方。员工来问问题,系统先去库里找相关材料,然后把材料+问题一起给大模型,模型照着材料回答。效果立竿见影:客服不用翻几百页手册了,秒回客户问题新员工入职,自己问AI就能熟悉业务代码报错了,AI自动查历史bug库给解决方案销售要写方案,AI去库里翻过往中标文档做参考为啥企业抢着要?因为每个公司都有自己的知识积累,通用的GPT用不上。而RAG能把公司内部经验和AI能力打通,成本低、见效快、不出错。老板一听就两眼放光。入门学啥?就两样:1. 向量数据库——存知识的地方。学学怎么把文档切碎、转成向量、存进去、搜出来。主流的Chroma、Milvus、Pinecone挑一个玩熟。2. LangChain——搭流程的工具。学学怎么把“查资料+问模型”串成一条流水线,文档怎么切、怎么搜、怎么拼给模型。怎么做项目?就做一个:公司内部知识库问答机器人。拿几百页员工手册或者技术文档,搭一个能回答任何内部问题的机器人。部署到飞书、钉钉或者企业微信上,真能让同事用起来。这个项目往简历上一写,面试官一看:这人来了就能干活。
现在入门AI应该走哪些方...
点赞 评论 收藏
分享
评论
5
10
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务