Skip to content

feat(mcp-toolbox): add Google Cloud MCP Toolbox Spring Boot Starter - #7013

Open
stenalpjolly wants to merge 4 commits into
spring-projects:mainfrom
stenalpjolly:feat/google-cloud-mcp-toolbox-starter
Open

stenalpjolly wants to merge 4 commits into
spring-projects:mainfrom
stenalpjolly:feat/google-cloud-mcp-toolbox-starter

Conversation

@stenalpjolly

Copy link
Copy Markdown

Summary

Adds first-class Spring AI integration and Spring Boot Auto-Configuration / Starter support for Google Cloud MCP Toolbox for Databases (com.google.cloud.mcp:mcp-toolbox-sdk-java:1.0.0), enabling explicit listing under the AI category on start.spring.io.

Modules Added

  1. mcp/mcp-toolbox (org.springframework.ai:spring-ai-mcp-toolbox):
    • McpToolboxToolCallback: Adapts Google Cloud MCP Toolbox Tool definitions into Spring AI ToolCallback instances with structured JSON Schema generation (defaultValue, additionalProperties: false, bound parameter pruning), ToolMetadata (returnDirect), ToolContext dynamic HTTP header & AuthTokenGetter propagation, timeout enforcement, and error sanitization.
    • McpToolboxToolCallbackProvider: ToolCallbackProvider implementation with parallel toolset/tool discovery (CompletableFuture.allOf), Set<String> deduplication, pre-configured Tool bean registration, thread-safe memoization, and cache invalidation.
    • McpToolboxRuntimeHints: GraalVM Native Image / Spring Boot AOT RuntimeHintsRegistrar for Tool, ToolDefinition, ToolResult, TransportManifest, and JSON-RPC transport records.
  2. auto-configurations/mcp/spring-ai-autoconfigure-mcp-toolbox (org.springframework.ai:spring-ai-autoconfigure-mcp-toolbox):
    • McpToolboxAutoConfiguration, McpToolboxProperties (spring.ai.mcp.toolbox.*), and McpToolboxClientCustomizer with @ImportRuntimeHints(McpToolboxRuntimeHints.class) and ObjectProvider<Tool> auto-discovery.
  3. starters/spring-ai-starter-mcp-toolbox (org.springframework.ai:spring-ai-starter-mcp-toolbox):
    • Spring Boot starter dependency for start.spring.io onboarding and BOM management in spring-ai-bom/pom.xml.
  4. Antora Reference Documentation:
    • Added mcp-toolbox-boot-starter-docs.adoc and registered in nav.adoc.

Verification

  • mvn clean install across all 3 modules passes with 0 Checkstyle, NullAway, and Enforcer violations.
  • Unit and ApplicationContextRunner test suites (McpToolboxToolCallbackTests, McpToolboxAutoConfigurationTests) pass 100%.

Add Spring AI adapter, Spring Boot auto-configuration, and starter module
for Google Cloud MCP Toolbox for Databases (com.google.cloud.mcp:mcp-toolbox-sdk-java:1.0.0).

- Add spring-ai-mcp-toolbox with McpToolboxToolCallback and McpToolboxToolCallbackProvider
- Add spring-ai-autoconfigure-mcp-toolbox with McpToolboxProperties, McpToolboxAutoConfiguration, and McpToolboxClientCustomizer
- Add spring-ai-starter-mcp-toolbox and register dependencies in spring-ai-bom
- Add unit and ApplicationContextRunner auto-configuration tests

Signed-off-by: Stenal P Jolly <stenalpjolly@google.com>
- Add McpToolboxRuntimeHints (RuntimeHintsRegistrar) for GraalVM Native Image / Spring Boot AOT reflection and wire @ImportRuntimeHints on McpToolboxAutoConfiguration
- Implement ToolContext header & AuthTokenGetter propagation (without contaminating tool JSON argument payloads), ToolMetadata (returnDirect), and fluent Builder in McpToolboxToolCallback
- Add pre-configured Tool bean auto-discovery (ObjectProvider<Tool>), Set<String> deduplication, dedicated cacheLock, and fluent Builder in McpToolboxToolCallbackProvider
- Expose protocolVersion (com.google.cloud.mcp.ProtocolVersion) in McpToolboxProperties and McpToolboxAutoConfiguration
- Centralize mcp-toolbox-sdk-java.version in root pom.xml and spring-ai-bom/pom.xml
- Register mcp-toolbox-boot-starter-docs.adoc in Antora nav.adoc

Signed-off-by: Stenal P Jolly <stenalpjolly@google.com>
…toolbox-sdk-java 1.0.0

Signed-off-by: Stenal P Jolly <stenalpjolly@google.com>
Signed-off-by: Stenal P Jolly <stenalpjolly@google.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants