AgentPlatformAutoConfigurationFilter

Auto-configuration filter that excludes Spring AI's default MCP client auto-configuration to allow the Agent Platform's resilient implementation to take precedence.

This filter implements Spring Boot's AutoConfigurationImportFilter interface to intercept and filter auto-configuration classes during application context initialization. It specifically excludes McpClientAutoConfiguration from Spring AI, enabling the Agent Platform to register its own QuiteMcpClientAutoConfiguration which extends the base configuration with enhanced error handling and startup resilience.

Purpose

Spring AI's default McpClientAutoConfiguration can cause application startup failures when MCP client initialization encounters errors. This filter prevents that auto-configuration from loading, allowing QuiteMcpClientAutoConfiguration to provide the same functionality with graceful error handling that logs failures without blocking application startup.

How It Works

  1. Spring Boot discovers all auto-configurations from META-INF/spring.factories or META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports
  2. Before loading them, it applies registered AutoConfigurationImportFilter instances
  3. This filter examines each auto-configuration class name
  4. Returns false for McpClientAutoConfiguration, preventing its registration
  5. Returns true for all other auto-configurations, allowing normal processing

Registration

This filter must be registered in META-INF/spring.factories:
org.springframework.boot.autoconfigure.AutoConfigurationImportFilter=\
com.embabel.agent.autoconfigure.platform.AgentPlatformAutoConfigurationFilter

Relationship to QuiteMcpClientAutoConfiguration

This filter works in tandem with QuiteMcpClientAutoConfiguration:
  • Filter: Prevents Spring AI's default configuration from loading
  • QuiteMcpClientAutoConfiguration: Extends the excluded configuration with error handling
  • Result: Agent Platform gets resilient MCP client setup without startup failures

Design Pattern Analogy

Think of this as a Strategic Design pattern from Domain-Driven Design:
  • Spring AI's McpClientAutoConfiguration = External bounded context with its own rules
  • This Filter = Context boundary enforcement preventing unwanted context intrusion
  • QuiteMcpClientAutoConfiguration = Anti-Corruption Layer translating external concepts into Agent Platform's resilient domain model

Just as an Anti-Corruption Layer protects your domain from external system changes, this filter protects the Agent Platform from Spring AI's initialization behavior while still leveraging its core functionality through inheritance.

Null Safety

The match implementation handles null entries in the auto-configuration class array, which can occur during Spring Boot's internal processing. Null entries are treated as non-matching (filtered out).

Since

1.0

See also

AutoConfigurationImportFilter
org.springframework.ai.mcp.client.common.autoconfigure.McpClientAutoConfiguration

Constructors

Link copied to clipboard
constructor()

Functions

Link copied to clipboard
open fun match(autoConfigurationClasses: Array<String>, metadata: AutoConfigurationMetadata): Array<Boolean>
Filters auto-configuration classes to exclude Spring AI's default MCP client configuration.