如果你一直关注Spring AI对MCP(Model Context Protocol)的支持,就会发现在最新的里程碑版本1.1.0-M3里,Spring AI的MCP模块将发生重大更新。和当前的稳定版本Spring AI 1.0.3对比下帮助文档,




MCP特性演进
变化主要是两处:

1.MCP Security

众所周知,MCP第一个版本(mcp-2024-11-05)推出后,对安全方面并没有约定,从第二个版本(MCP-2025-03-26)开始,对安全进行了规范,在第三个版本(mcp-2025-06-18)进一步完善。

各个企业按照第一个版本规范实现的MCP服务,或多或少自己实现了一些安全逻辑。这个时候应该检验一下自己的安全实现了,不然将来可能会出现由于安全限制无法和外部mcp服务通信的情况。
Spring AI MCP的安全实现还在WIP阶段,从现有的实现看,倒是不复杂,基本是Java后端程序员熟悉的OAuth2那一套。

2.MCP Annotations

这个就变化大了,官方的解释是:

The MCP Annotations enable developers to create and register MCP operation handlers using declarative annotations.
This approach simplifies implementing MCP server and client functionality by reducing boilerplate code and improving maintainability.

其实就是2点, 1.减少样板代码并提高可维护性 2.简化并规范MCP服务器和客户端功能的实现

MCP协议推出后,很多人说:“MCP不就是大模型function call调用的工具么,只是规范了协议”,其实不然,传统工具主要面向人类和系统设计,其接口和交互逻辑以人类可用性为中心;而 MCP(Model Context Protocol)则面向大模型和智能体,提供标准化、模型友好的调用和协作机制,使大模型能够高效、安全地调用外部服务、路由任务及管理长任务状态。MCP Annotations主要包含以下注解:

服务端注解

@McpTool- 实现具有自动 JSON 模式生成的 MCP 工具
@McpResource- 通过 URI 模板提供对资源的访问
@McpPrompt- 生成提示信息
@McpComplete- 提供自动完成功能

客户端注解

@McpLogging- 处理日志消息通知
@McpSampling- 处理采样请求
@McpElicitation- 处理收集额外信息的引出请求
@McpProgress- 处理长时间运行操作期间的进度通知
@McpToolListChanged- 处理工具列表更改通知
@McpResourceListChanged- 处理资源列表变更通知
@McpPromptListChanged- 处理提示列表更改通知

特殊参数和注释

McpSyncServerExchange- 用于有状态同步操作的特殊参数类型,用于访问服务器交换功能,包括日志通知、进度更新和其他服务器端操作。此参数会自动注入,并从 JSON 模式生成中排除。
McpAsyncServerExchange- 用于有状态异步操作的特殊参数类型,提供对服务器交换功能的访问,并支持响应式操作。此参数会自动注入,并从 JSON 模式生成中排除。
McpTransportContext- 用于无状态操作的特殊参数类型,提供对传输层上下文的轻量级访问,无需完整的服务器交换功能。此参数会自动注入,并从 JSON 模式生成中排除。
McpProgressToken- 标记一个方法参数,用于接收请求中的进度令牌。此参数会自动注入,并从生成的 JSON 模式中排除。
McpMeta- 特殊参数类型,用于访问 MCP 请求、通知和结果的元数据。此参数会自动注入,并不受参数数量限制和 JSON 模式生成的影响。

如果大家开发过MCP服务和客户端,看到这些注解应该就知道自己的代码要发生多大的改变。

Anthropic 最近发布的Claude Agent Skills,和MCP Annotations是一个思路,只不过MCP Annotations对工具定义进行规范,保证多模型、多工具、多智能体之间可以统一调用,Agent Skills更偏向 智能体内部能力管理,关注模型自己如何选择和调用技能。

社区里边有观点说,Agent Skills有可能会替代MCP,其实从定义上看,二者是不同维度的东西。当然也不好说,因为从技术层面,Agent Skills 可以做到 MCP 想要做的事情,比如让模型调用工具、组合任务、返回结果。但在规范化和工程可控性上,MCP还是更擅长一些。

另外,当前Claude Agent Skills最大缺陷是锁定在 Claude 模型上,无法跨厂商使用。当然也有一些开源的思路,比如:PolySkill,从字面看Poly,就是大家都熟悉的面向对象语言的特性之一:多态:Polymorphism,或者是SOLID原则的依赖倒置原则 (Dependency Inversion Principle - DIP),Agent 的高层逻辑依赖于抽象目标,而具体的Agent动作则依赖并实现这个抽象目标。有多少大厂能采用就不好说了,以各个大厂的架构和研发能力,大概率内部都已经有一套类似思想的实现了。

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐