Spring AI + MCP 实战:Java 应用轻松调用外部工具

在 AI 应用开发日益普及的今天,如何让 Java 应用“开口说话”并“动手办事”?Spring AI 结合 MCP (Model Context Protocol) 协议,为我们提供了一套标准化的解决方案。本文将带你通过一个具体的 Java 项目场景,了解如何调用外部工具。

1. 背景介绍

传统的 Java 后端开发主要处理业务逻辑,而在大模型时代,应用需要具备与 LLM 交互的能力。Spring AI 提供了统一的抽象层,而 MCP 则解决了模型与外部数据/工具连接的标准问题。

2. MCP 是什么

MCP (Model Context Protocol) 是由 Anthropic 提出的一种开放标准协议。它就像 USB 接口一样,让大模型可以标准地连接各种外部上下文(如数据库、API、文件系统)。对于 Java 开发者来说,这意味着我们可以用统一的代码结构调用不同来源的工具。

3. Spring AI 中 ChatClient 的作用

ChatClient 是 Spring AI 的核心组件之一,它充当了开发者与大模型交互的入口。通过 ChatClient,我们可以发送消息、接收回复,更重要的是,它可以感知并调用外部工具。

4. ToolCallbackProvider 的作用

在 Spring AI 中,ToolCallbackProvider 负责发现和管理可用的工具。它会自动扫描注册的工具(如通过 MCP 协议暴露的工具),并将其转换为模型可识别的 ToolCallback。这样,模型在生成回复时,就能知道该调用哪些工具来完成特定任务。

5. MCP 工具调用的大致流程

  1. 初始化:在 Spring Boot 应用中配置 MCP 客户端。
  2. 注册工具:通过 ToolCallbackProvider 加载 MCP 工具。
  3. 发起请求:使用 ChatClient 发送用户指令。
  4. 工具识别:模型分析意图,决定调用哪个工具。
  5. 执行与返回:Java 应用执行工具逻辑,将结果返回给模型,模型生成最终回答。

代码示例:CSDN 文章发布

以下是在 Spring Boot 测试类中,通过 ChatClient 调用 MCP 工具发布文章的核心逻辑:

@SpringBootTest
class CsdnPublishTest {
    @Autowired
    private ChatClient chatClient;
    @Autowired
    private ToolCallbackProvider toolProvider;

    @Test
    void testPublish() {
        String response = chatClient.prompt()
                .system("你是一个 CSDN 文章发布助手")
                .user("请帮我发布一篇关于 Spring AI 的文章,标题是'AI 实战',标签是'Java',内容如下...[Markdown内容]...")
                .tools(toolProvider.getToolCallbacks())
                .call()
                .content();
        System.out.println(response);
    }
}

6. 测试过程中可能遇到的问题

  • 连接超时:确保 MCP 服务器地址配置正确,网络畅通。
  • 工具未找到:检查 ToolCallbackProvider 是否正确扫描了工具类。
  • 权限问题:调用 CSDN API 时,需确保 Token 有效且具备发布权限。

7. 总结

通过 Spring AI 和 MCP 的结合,Java 开发者可以非常便捷地为大模型应用扩展外部能力。本文通过 CSDN 发布场景,展示了从配置到调用的完整流程,希望能为初学者提供清晰的入门指引。

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐