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 将推动更多行业实现 "对话即服务" 的智能协作革命。

反思

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

全部评论

相关推荐

09-28 14:47
已编辑
江苏科技大学 算法工程师
饿了么oc 腾讯 oc字节 oc京东oc美团 oc快手 oc百度 oc滴滴 oc大疆 oc小红书 ocpdd oc得物 oc一觉醒来,看着充满感谢信的邮箱,还是继续做梦热门游戏公司合集1、途游26秋招内推链接:https://app.mokahr.com/m/campus_apply/tuyoogame/71965?recommendCode=DS5MtUec&hash=%23%2Fjobs#/jobs内推码:DS5MtUec2、库洛游戏秋招内推链接:https://kurogame.jobs.feishu.cn/s/Lh6S1eA5DdY内推码:DU6G8JP(校园大使推荐)3、funplus26秋招内推链接:https://app.mokahr.com/m/campus_apply/funplus01/147931?recommendCode=DSZ6Bux5&hash=%23%2Fjobs#/jobs内推码:DSZ6Bux54、柠檬微趣26秋招链接https://app.mokahr.com/su/enjcqt内推码:NTAgHHs5、莉莉丝秋招内推链接:https://lilithgames.jobs.feishu.cn/s/5bD7iVfBpU4内推码:FEZCZAQ(校园大使推荐)6、搜狐畅游秋招内推链接:https://app.mokahr.com/m/campus-recruitment/cyou-inc/42233?recommendCode=DSRjUpNf&hash=%23%2Fjobs#/jobs内推码DSRjUpNf7、网易互娱26秋招内推链接https://game.campus.163.com/m/home?st=NWNjMjRmOWUtZDY5MS00OWU5LThkYjktOThkMjZlYTg2OTdj内推码:oKFLGH8、三七互娱秋招内推链接:https://app.mokahr.com/m/campus-recruitment/37/58016?recommendCode=DSmcGDRP&hash=%23%2Fjobs#/jobs内推码DSmcGDRP9、米哈游26秋招内推链接https://jobs.mihoyo.com/m/?recommendationCode=T47E&isRecommendation=true#/campus/position内推码T47E10、字节旗下沐瞳科技内推链接https://moonton.jobs.feishu.cn/campus/m/position/list?share_token=NTsxNzU0OTI3NzUxMTA0Ozc1MzU3ODcwMDEyNTExMjE0MzQ7NzUzNTc4NDE3ODM2MjkyNzQxNDsxLzI推荐码 ADTU52G(校园大使推荐)11、叠纸26秋招内推链接https://career.papegames.com/s/XsfzMK2VFIg内推码:TBVQ96N12、游酷盛世26秋招投递链接:https://jobs.66y.com/s/_QcUpR9Tfws内推码:TDZ74EF13、丘比特&雷霆👉 秋招内推链接:https://hr.g-bits.com/mobile/index.html#/🔎 内推码:74LBM414、深蓝互动26秋招内推链接:https://app.mokahr.com/m/campus_apply/blueinteractive/38434?recommendCode=DSWr6vny#/jobs内推码:DSWr6vny15、飞鱼科技(保卫萝卜)26秋招内推链接:https://app.mokahr.com/m/campus_apply/feiyu/142123?recommendCode=DSBQNVkT&hash=%23%2Fjobs#/jobs16、点点互动26秋招正式批投递官网:http://career.centurygames.cn/campus/jobs?shareId=a2b8d43a-73a6-4d51-81c4-2a4627e0a2c9&shareSource=1内推码:EVVY8R17、友塔游戏内推链接(即内推):https://www.yotta-hr.com/zh/internal-recommendation?token=64ff2ac0d1f7ee03f8f13b8d62a8c3dc-999602-2014813873&sub=08618、鹰角网络26秋招内推链接https://app.mokahr.com/m/campus-recruitment/hypergryph/26326?recommendCode=DSDPc7nN&hash=%23%2Fjobs#/jobs内推码:DSDPc7nN
ahbt:又疯一个
点赞 评论 收藏
分享
评论
3
1
分享

创作者周榜

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