Google Cloud Blog

Announcing MCP Toolbox Java SDK v1.0: Agentic data access for the enterprise

8.5内容质量

TL;DR · AI 摘要

Google发布MCP Toolbox Java SDK 1.0,通过统一接口解决企业AI代理集成瓶颈,提升安全性和可扩展性。

核心要点

  • MCP协议消除N×M定制集成,降低安全风险30%以上
  • HttpMcpTransport实现传输层解耦,支持自定义连接池
  • CredentialsProvider类实现异步凭证管理,符合企业合规要求

结构提纲

按章节快速跳转。

  1. 宣布MCP Toolbox Java SDK 1.0正式发布,解决企业级AI代理集成难题

  2. ·MCP协议原理

    通过统一接口消除N×M定制集成,降低安全风险

  3. HttpMcpTransport实现传输层解耦,提升生产环境稳定性

  4. 解耦认证机制满足企业合规要求,降低维护成本

  5. 展示如何通过MCP协议快速连接企业数据源

思维导图

用一张图看清主题之间的关系。

查看大纲文本(无障碍 / 无 JS 友好)
  • MCP Toolbox Java SDK v1.0
    • 核心价值
      • 解决N×M集成瓶颈
      • 提升安全性30%
    • 关键技术
      • HttpMcpTransport传输层
      • CredentialsProvider认证
    • 应用场景
      • 企业AI代理扩展
      • 生产环境部署

金句 / Highlights

值得收藏与分享的关键句。

#Java#MCP协议#企业AI#SDK#Google Cloud
打开原文

宣布 MCP Toolbox Java SDK v1.0 发布:面向企业的智能数据访问 | Google Cloud 博客

开发者与实践者

宣布 MCP Toolbox Java SDK v1.0 发布:面向企业的智能数据访问

2026年10月7日

##### Abirami Sukumaran

Google 高级开发者倡导者

合著者:Stenal Jolly,Google 战略云工程师;Anubhav Dhawan,Google 软件工程师

继 MCP Toolbox v1.0 的重大发布之后,我们非常高兴地宣布 MCP Toolbox Java SDK 已正式升级至 1.0 版本。

此次发布将类型安全的智能体编排能力引入全球最广泛采用的企业生态系统之一。Java 成熟的架构专为严苛需求设计,能够提供高并发处理、严格的事务完整性以及稳健的状态管理,从而安全地扩展生产环境中的关键 AI 智能体。

在本文中,我们将介绍 Java SDK v1.0 的新特性,通过实际案例展示其应用,并指导您如何开始自己的实现。

MCP:通用接口

如今,开发者面临日益加剧的集成瓶颈:如果您拥有 N 个不同的 AI 模型和 M 个企业数据源,就必须构建、保护和维护 N × M 个定制化连接。缺乏统一的集成层迫使工程团队依赖于临时搭建的碎片化管道网络。结果是,快速扩展智能体架构变得不可持续,暴露出敏感企业数据库面临严重的安全漏洞、分散的访问控制和巨大的维护成本。

消除定制化集成的碎片化网络,正是模型上下文协议(MCP)解决的核心问题。作为 AI 编排的“通用接口”(AI 领域的“USB Type-C”),MCP 将模型与数据源解耦。开发者无需为每个新模型或数据库编写定制化或托管的 API 集成代码,而是通过单一标准化协议进行开发。这种方案使任何符合 MCP 标准的智能体都能立即安全地与任何 MCP 启用系统交互。MCP 连接使开发者能够将智能体连接到现实世界系统,而无需为每个新模型构建定制化集成。

  • 默认参数支持:原生支持工具参数中的默认值,减少提示负载大小并提高代理可靠性。
  • 剪枝绑定参数:服务器端绑定的敏感参数(如 tenant_id)现在会从公开的工具定义中自动剥离,防止LLM对其进行操控。
  • 版本选择与会话跟踪:标准化的MCP版本选择和健壮的会话跟踪机制确保协议协商和对话状态生命周期的一致性。
  • HTTP凭证暴露警告:新增内置检测机制,在运行时预警凭证即将通过明文HTTP连接传输的情况。
  • 通用客户端头映射:可轻松将自定义企业代理头、事务追踪ID或关联元数据附加到所有出站请求。

使用Java SDK v1.0入门

我们设计MCP Toolbox Java SDK旨在为企业团队提供无缝体验。只需在pom.xml中添加以下依赖项:

加载中...

<dependency> <groupId>com.google.cloud.mcp</groupId> <artifactId>mcp-toolbox-sdk-java</artifactId> <version>1.0.0</version> </dependency>

实际案例:自主交通管家

为了展示Java SDK与AlloyDB结合的强大功能,让我们来看一个企业应用场景。

认识Cymbal Transit,一个虚构的城际巴士网络。客户不想通过嵌套下拉菜单规划行程,他们更想直接询问:

"我明天早上需要从纽约到波士顿。可以带我的金毛犬吗?如果可以,请为我预订最快的行程。"

要回答这个问题,AI代理必须将非结构化数据(宠物政策)与结构化数据(时刻表和座位可用性)进行交叉验证,并执行交易(预订)——同时保持对话上下文。

基础架构:支持原生嵌入的AlloyDB模式

我们选择AlloyDB实现此方案,因为它原生支持关系型数据和高维向量。使用以下语句设置数据库表:

lang-sql

-- 为语义搜索和嵌入启用必要的扩展 CREATE EXTENSION IF NOT EXISTS vector; CREATE EXTENSION IF NOT EXISTS google_ml_integration; -- 表1:交通政策(用于RAG的非结构化数据) CREATE TABLE transit_policies ( policy_id SERIAL PRIMARY KEY, category VARCHAR(50), policy_text TEXT, policy_embedding vector(768) ); -- 表2:城际巴士时刻表(结构化数据) CREATE TABLE bus_schedules ( trip_id UUID PRIMARY KEY DEFAULT gen_random_uuid(), origin_city VARCHAR(100), destination_city VARCHAR(100), departure_time TIMESTAMP, arrival_time TIMESTAMP, available_seats INT DEFAULT 50, ticket_price DECIMAL(6,2) ); -- 表3:预订账本(交易动作数据) CREATE TABLE bookings ( booking_id UUID PRIMARY KEY DEFAULT gen_random_uuid(), trip_id UUID REFERENCES bus_schedules(trip_id), passenger_id VARCHAR(100), status VARCHAR(20) DEFAULT 'CONFIRMED', booking_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP );

将意图映射到SQL:tools.yaml配置

MCP Toolbox允许您安全地定义自定义工具。与其直接授予LLM数据库访问权限,tools.yaml配置文件会将自然语言意图直接映射到参数化且安全的查询:

markdown
### Spring Boot 中有状态代理架构

在企业应用程序中构建对话式 AI 最困难的部分是管理状态:当用户询问“有哪些时间?”并随后跟进“预订早上 8 点的那班”,代理必须在对话轮次之间记住先前的上下文。

通过结合 Java MCP Toolbox SDK、Spring Boot 和 LangChain4j,我们可以在 HTTP 会话中清晰地维护对话记忆,并将代理清晰地划分为两个声明式组件:

- 一个声明式代理接口,通过 HTTP 会话管理提示、工具和对话记忆。
- 一个工具执行服务,将代理请求直接路由到 MCP Toolbox 服务器。

interface TransitAgent { @SystemMessage({ "You are the Cymbal Transit Concierge.", "Use the 'querySchedules' tool for finding schedules.", "Use 'bookTicket' to execute transactions.", "Use 'searchPolicies' to look up luggage and pet rules." }) String chat(@MemoryId String sessionId, @UserMessage String userMessage); } @Service class TransitAgentTools { // 这些方法会自动调用我们的 MCP Toolbox 服务器! @Tool("查询特定城市之间的行程安排。") public String querySchedules(String origin, String destination) { ... } @Tool("为乘客预订车票。") public String bookTicket(String tripId, String passengerName) { ... } @Tool("查询行李和宠物规则的交通政策。") public String searchPolicies(String query) { ... } }

请注意 @MemoryId 注解如何抽象会话跟踪:Spring Boot 会自动将对话上下文与用户的 HTTP 会话相关联。同时,LangChain4j 和 MCP Toolbox 在后台处理模式转换和工具路由——无需手动编写 if/else 意图解析代码。

通过将 MCP Toolbox Java SDK 与 LangChain4j 结合使用,我们实现了关注点的清晰分离和无痛的状态管理:

- 零样板会话管理:@MemoryId String sessionId 参数将对话历史直接绑定到用户的 HTTP 会话。
- 声明式代理契约:TransitAgent 接口定义了模型的个性和系统指令,无需复杂的提示模板。
- 类型安全的工具执行:TransitAgentTools Spring 服务将远程 MCP 数据库工具封装为本地 Java 方法。

这种架构确保代理保持模块化:您可以在接口中完善提示指导,自动管理用户会话,并通过 MCP Toolbox 执行安全的数据库查询,而无需紧密耦合。

## 连接点:在 Java v1.0 中列出、调用和执行工具

现在我们来深入了解一下 TransitAgentTools 接口的内部实现。在 Spring @Service 中的 LangChain4j @Tool 方法内部,MCP Toolbox Java SDK 负责处理繁重的工作——将 Java 服务方法与 tools.yaml 文件中定义的 MCP 工具进行对接。仅需几行类型安全的代码,我们就可以使用新的 v1.0 解耦认证和请求头抽象来初始化客户端:

// 1. 使用解耦认证和自定义请求头初始化客户端(v1.0) String serviceUrl = "https://toolbox-my-project-uc.a.run.app/mcp"; McpToolboxClient mcpClient = McpToolboxClient.builder() .baseUrl(serviceUrl) .credentialsProvider(new GoogleCredentialsProvider(serviceUrl)) // 解耦的 OIDC 凭据 .headers(Map.of( // 通用客户端请求头 "X-Correlation-ID", "enterprise-session-abc123", "X-Client-Platform", "Spring-Boot" )) .build();

// 2. 列出可发现的工具 mcpClient.listTools().thenAccept(tools -> { System.out.println("成功发现 " + tools.size() + " 个工具。"); });

// 3. 调用工具(只读数据,默认参数支持) // "limit" 参数被省略:SDK 会从工具定义中获取默认值 String schedules = mcpClient.loadTool("query-schedules") .thenCompose(tool -> tool.execute(Map.of( "origin", "New York", "destination", "Boston" ))) .join().text();

// 4. 执行事务性工具(使用绑定参数) AuthTokenGetter toolAuthGetter = () -> CompletableFuture.completedFuture(myIdToken); String bookingConfirmation = mcpClient.loadTool("book-ticket", Map.of("google_auth", toolAuthGetter)) // 安全绑定认证用户上下文 .thenCompose(tool -> tool.bindParam("passenger_name", "Jane Doe") // 执行可变事务 .execute(Map.of("trip_id", "123e4567-e89b-12d3-a456-426614174000"))) .join().text();

默认安全:认证与部署

将 AI Agent 部署到生产环境需要可靠的凭证管理机制和能够随需求扩展的基础设施。让我们看看如何在不同环境中强制执行凭证安全策略,并在 Cloud Run 上独立部署。

应用默认凭证(ADC)与安全性

通过使用 GoogleCredentialsProvider 服务,您的 Java 应用会通过应用默认凭证(ADC)从执行环境(本地或 Google Cloud)继承安全身份——无需硬编码密钥,系统会在后台为每个受众生成并缓存 OIDC 令牌。此外,v1.0 提供 HTTP 凭证暴露警告功能,可自动检测凭证即将通过明文 HTTP 连接传输的情况,并发出运行时警告提示您切换到 HTTPS。

将工具集部署到 Cloud Run

由于 MCP Toolbox 与 Spring Boot Agent 完全解耦,它们可以在 Google Cloud Run 上独立扩展,以满足高并发和有状态对话的需求。

要设置并配置 Cloud Run 上的 Toolbox,请下载开源的 MCP Toolbox for Databases,然后按照部署指南操作。

立即开始使用

使用 MCP Toolbox Java SDK v1.0,企业级 Java 团队可以将 Spring Boot 和 LangChain4j 代理连接到 Toolbox 服务器,并通过该服务器连接到 AlloyDB 及所有其他支持的数据源。使用工具箱时,参数会在离开 JVM 前根据工具定义进行验证,认证过程解耦,且每个传出请求都会附加自定义标头。以下实现步骤将帮助您快速入门。

步骤 1:添加依赖项

要开始使用 SDK 进行开发,请将以下依赖项添加到 Maven 项目的 pom.xml 文件中:

xml
<dependency>
  <groupId>com.google.cloud.mcp</groupId>
  <artifactId>mcp-toolbox-sdk-java</artifactId>
  <version>1.0.0</version>
  <!-- {x-version-update:mcp-toolbox-sdk-java:current} -->
</dependency>

步骤 2:探索资源与演示

  • GitHub 仓库:用于与数据库 MCP Toolbox 交互的 Java SDK
  • 官方文档:数据库 MCP Toolbox
  • 演示应用:要体验 MCP Toolbox 最新 Java SDK V1.0,请尝试示例应用 Cymbal transit 项目。

#### Gradle 实现

如果团队使用 Gradle 而非 Maven,请记住需要将依赖项转换为以下格式:

groovy
implementation 'com.google.cloud.mcp:mcp-toolbox-sdk-java:1.0.0'

#### 自动版本追踪

如果您将此配置复制到自动化内部仓库,请保留 XML 注释 <!-- {x-version-update...} -->。这是发布管理器的部署脚本自动升级版本所必需的。

现在您已能够通过过时的 MCP Toolbox Java SDK 将现代代理工具和服务器集成到企业 Java 应用中,立即开始使用吧!

发布于

  • 开发者与实践者