在 Spring AI 中,MCP(Model Context Protocol)提供了三大核心能力:Tool(工具)、Resource(资源)和Prompt(提示模板)。本文详细讲解这三个注解的区别和使用场景。


一句话概括

注解 作用 相当于
@McpTool 执行动作 函数调用
@McpResource 读取数据 文件/数据库
@McpPrompt 提示模板 Prompt 模板

@McpTool - 工具

什么是 Tool?

Tool(工具)让 AI 模型可以执行特定的函数调用。当 AI 需要完成某个动作时使用。

使用示例

package com.example.tool;

import org.springframework.ai.tool.annotation.Tool;

public class WeatherTool {

    @Tool(description = "查询城市天气,返回温度和天气状况")
    public Weather getWeather(String city) {
        return weatherService.query(city);
    }
}

注册到 Spring 容器

@Configuration
public class McpConfig {

    @Bean
    public ToolCallbackProvider weatherTool() {
        return MethodToolCallbackProvider.builder()
            .toolObjects(new WeatherTool())
            .build();
    }
}

适用场景

  • 计算器:数学运算
  • API 调用:查询天气、股票
  • 数据库操作:增删改查
  • 文件操作:读写文件

@McpResource - 资源

什么是 Resource?

Resource(资源)让 AI 可以读取外部数据。当 AI 需要了解某些信息时使用。

使用示例

@McpResource(uri = "file://config/app.yaml")
public String getAppConfig() {
    return loadFile("config/app.yaml");
}

适用场景

  • 配置文件:读取应用配置
  • 静态数据:文档、知识库
  • 数据库内容:查询结果返回给 AI

@McpPrompt - 提示模板

什么是 Prompt?

Prompt(提示模板)是预定义的提示词,可以标准化 AI 的交互方式。

使用示例

@McpPrompt(name = "summarize", description = "总结文章内容")
public Prompt summarizePrompt(@Prompt("article") String article) {
    String template = "请用100字总结以下文章:

{{article}}";
    return new PromptTemplate(template)
        .create(Map.of("article", article));
}

适用场景

  • 标准化提示:统一 AI 回复格式
  • 复用逻辑:多处使用相同提示
  • 动态参数:根据输入生成不同提示

典型使用流程

在实际应用中,这三个组件通常配合使用:

用户问题 → @McpResource 读取数据 → @McpPrompt 整理提示 → @McpTool 执行操作


总结

Spring AI MCP 的三大注解各司其职:

  • @McpTool:让 AI 能够执行动作(函数调用)
  • @McpResource:让 AI 能够读取数据(文件/配置)
  • @McpPrompt:让 AI 使用标准化提示(模板)

理解这三者的区别,才能更好地设计 AI 应用的交互逻辑。


参考资料:

  • Spring AI 官方文档
  • MCP 协议规范

标签: Spring AI, MCP, Java, AI工具

Logo

欢迎加入 MCP 技术社区!与志同道合者携手前行,一同解锁 MCP 技术的无限可能!

更多推荐