推出 Model Context Protocol Java SDK

发布 | Mark Pollack | 2025 年 2 月 14 日 | ...

这篇博文由 David Soria ParraChristian TzolovDariusz Jędrzejczyk 联合撰写。

什么是 MCP

Model Context Protocol (MCP) 是由 Anthropic 开发的一项开放协议,它正在改变 AI 应用程序连接和共享上下文的方式。它已获得跨 AI 应用程序的广泛支持,作为大型语言模型 (LLM) 与数据源、工具和 AI 代理交互的标准接口。无论您是构建需要访问数据库的自主系统,编排复杂的 AI 工作流,还是创建多个代理协作的系统,MCP 都提供了使这些集成无缝的基础层。

MCP 的独特之处在于其对可组合性和互操作性的关注。 MCP 不仅仅是连接到数据源,它还使开发人员能够构建丰富、交互式的 AI 系统,在这些系统中,代理可以通过一致的接口共享上下文、访问工具并协同工作。这意味着您可以快速接入不断增长的预构建集成生态系统,同时保持在不同 LLM 提供商之间切换的灵活性,使其成为构建复杂 AI 应用程序的理想基础。

推出 MCP Java SDK

去年 11 月开始的实验性项目,现已发展成为与 Spring AI 团队和 Anthropic 的激动人心的合作。我们很高兴地宣布,该实验性项目已移入官方 MCP Java SDK。
该 SDK 是该协议的最新语言绑定,与 Python、TypeScript 和 Kotlin SDK 一起,可在 modelcontextprotocol.io 上找到。Java 长期以来一直是企业的语言,MCP Java SDK 使组织能够更轻松地开发尖端的 AI 应用程序。

MCP Java SDK 为集成 AI 模型与外部工具和数据源提供了全面的基础。该 SDK 的主要功能包括:

客户端和服务器实现

  • 支持同步和异步 MCP 通信。
  • 支持协议版本兼容性协商,实现顺畅的互操作性。

工具和资源管理

  • 动态发现、注册和执行工具。
  • 接收关于工具和资源的实时列表变更通知。
  • 使用 URI 模板管理资源,实现结构化访问和订阅。

Prompt 处理和 AI 采样支持

  • 检索和管理 Prompt,以自定义 AI 模型行为。
  • 支持采样策略,以微调 AI 交互。

多种传输实现

  • 基于 Stdio 的传输,用于直接进程通信。
  • 基于 Java HttpClient 的 SSE 客户端传输,用于基于 HTTP 的流式传输。
  • 基于 Servlet 的 SSE 服务器传输,用于传统服务器环境中的 HTTP 流式传输。
  • 基于 Spring 的传输,用于与 Spring Boot 无缝集成。
    • 基于 Spring WebFlux 的 SSE 传输,用于响应式应用程序。

    • 基于 Spring WebMVC 的 SSE 传输,用于基于 Servlet 的应用程序。

请查阅 文档,了解有关入门的更多信息,并访问 GitHub 仓库 来提出问题和参与讨论。

Spring AI 和 MCP

Spring AI 项目通过添加开发人员生产力增强功能来扩展 MCP Java SDK,以集成 Spring Boot 应用程序。借助 Spring Boot starters,开发人员可以使用 Spring 的依赖注入和配置管理来快速配置 MCP 客户端和服务器,从而更轻松地将 AI 驱动的工作流集成到他们的应用程序中。

客户端 Starters

  • spring-ai-mcp-client-spring-boot-starter – 支持 STDIO 和基于 HTTP 的 SSE 传输的核心客户端启动器。
  • spring-ai-mcp-client-webflux-spring-boot-starter – 用于响应式应用程序的基于 WebFlux 的 SSE 传输实现。

服务器 Starters

  • spring-ai-mcp-server-spring-boot-starter – 支持 STDIO 传输的核心服务器启动器。
  • spring-ai-mcp-server-webmvc-spring-boot-starter – 用于基于 Servlet 的应用程序的基于 Spring MVC 的 SSE 传输实现。
  • spring-ai-mcp-server-webflux-spring-boot-starter – 用于响应式应用程序的基于 WebFlux 的 SSE 传输实现。

以下是如何声明式配置一个通过 STDIO 传输的客户端应用程序的示例。在 application.yml 中,定义以下配置:

spring:
  ai:
    mcp:
      client:
        stdio:
          servers-configuration: classpath:mcp-servers.json

引用的 JSON 文件以 Claude Desktop 格式定义了要连接的服务器。

{
  "mcpServers": {
    "filesystem": {
      "command": "npx",
      "args": [
        "-y",
        "@modelcontextprotocol/server-filesystem",
        "/Users/username/Desktop",
        "/Users/username/Downloads"
      ]
    }
  }
}

当客户端应用程序启动时,它将启动 MCP 服务器,建立 STDIO 通信通道,并管理服务器的生命周期。

Spring AI M6 还引入了 @Tool 注解,这简化了 MCP 服务器的创建。有关更多信息,请阅读 Spring AI 关于 MCP 的 参考文档

下一步

我们期待在 GitHub 上收到反馈,并非常感谢 Anthropic 团队的支持。

获取 Spring 新闻通讯

通过 Spring 新闻通讯保持联系

订阅

领先一步

VMware 提供培训和认证,助您加速进步。

了解更多

获得支持

Tanzu Spring 提供 OpenJDK™、Spring 和 Apache Tomcat® 的支持和二进制文件,只需一份简单的订阅。

了解更多

即将举行的活动

查看 Spring 社区所有即将举行的活动。

查看所有