介绍 Model Context Protocol Java SDK

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

本博客文章由 David Soria ParraChristian TzolovDariusz Jędrzejczyk 合著。

什么是 MCP

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

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

介绍 MCP Java SDK

去年 11 月启动的一个实验项目,现已发展成为与 Spring AI 团队和 Anthropic 的激动人心的合作。我们很高兴地宣布,该实验项目已纳入官方 MCP Java SDK。
该 SDK 是该协议最新的语言绑定,与 Python、TypeScript 和 Kotlin SDK 一起发布在 modelcontextprotocol.io 上。长期以来,Java 一直是企业语言,而 MCP Java SDK 使组织更容易开发前沿的人工智能应用。

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

客户端和服务端实现

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

工具和资源管理

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

提示处理和人工智能采样支持

  • 获取和管理提示,以自定义人工智能模型行为。
  • 支持采样策略,以微调人工智能交互。

多种传输实现

  • 基于 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 starter,开发者可以使用 Spring 的依赖注入和配置管理快速配置 MCP 客户端和服务端,从而更容易将人工智能驱动的工作流集成到他们的应用中。

客户端 Starter

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

服务端 Starter

  • spring-ai-mcp-server-spring-boot-starter – 核心服务端 starter,支持 STDIO 传输。
  • spring-ai-mcp-server-webmvc-spring-boot-starter – 基于 Spring MVC 的 SSE 传输实现,用于基于 Servlet 的应用。
  • 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 社区即将举办的所有活动。

查看全部