Spring AI 2.0 中,构建MCP Server 时,@Tool和@McpTool 注解有什么不同?
@Tool 会生成 Spring AI 的 ToolCallback。通常通过 .tools(...)、.defaultTools(...) 或 ToolCallbackProvider 提供给模型。
@McpTool 会被 MCP Server 的 annotation scanner 自动发现并直接注册为 MCP Tool。
@Tool 代码可以通过创建 ToolCallbackProvider 间接暴露为 MCP Tool。但新建 MCP Server 时,官方推荐直接使用 @McpTool:语义更明确,而且能使用完整的 MCP 能力。官方文档也明确描述为“暴露 Spring Bean 为 MCP Tool 时,使用 @McpTool 而不是 @Tool”。
Spring AI Client 最终看到的都是 MCP Tool,不关心服务端原来使用哪个 Java 注解。
两者都可以构建 MCP Server Tool,但不是简单地换个注解就完全等价。
新建 MCP Server:优先 @McpTool,自动扫描且支持 MCP 上下文、metadata、sampling、elicitation 等能力。
已有大量 @Tool:可以保留,通过 ToolCallbackProvider 转成 MCP Tool。
Spring AI 客户端调用时:没有区别,客户端最终拿到的都是 MCP Tool。

