Documentation
¶
Overview ¶
Package v1alpha1 contains API Schema definitions for the toolhive v1alpha1 API group +kubebuilder:object:generate=true +groupName=toolhive.stacklok.dev
Index ¶
- Constants
- Variables
- type APIPhase
- type APISource
- type APIStatus
- type AdvancedWorkflowStep
- type AggregationConfig
- type AuditConfig
- type AuthzConfigRef
- type BackendAuthConfig
- type CircuitBreakerConfig
- type CompositeToolDefinitionRef
- type CompositeToolSpec
- type ConfigMapAuthzRef
- type ConfigMapOIDCRef
- type ConflictResolutionConfig
- type DiscoveredBackend
- type ElicitationResponseHandler
- type ElicitationStep
- type EnvVar
- type ErrorHandling
- type ExternalAuthConfigRef
- type ExternalAuthType
- type FailureHandlingConfig
- type GitSource
- type GroupRef
- type HeaderInjectionConfig
- type IncomingAuthConfig
- type InlineAuthzConfig
- type InlineOIDCConfig
- type KubernetesOIDCConfig
- type MCPExternalAuthConfig
- func (in *MCPExternalAuthConfig) DeepCopy() *MCPExternalAuthConfig
- func (in *MCPExternalAuthConfig) DeepCopyInto(out *MCPExternalAuthConfig)
- func (in *MCPExternalAuthConfig) DeepCopyObject() runtime.Object
- func (r *MCPExternalAuthConfig) SetupWebhookWithManager(mgr ctrl.Manager) error
- func (r *MCPExternalAuthConfig) ValidateCreate(_ context.Context, _ runtime.Object) (admission.Warnings, error)
- func (*MCPExternalAuthConfig) ValidateDelete(_ context.Context, _ runtime.Object) (admission.Warnings, error)
- func (r *MCPExternalAuthConfig) ValidateUpdate(_ context.Context, _ runtime.Object, _ runtime.Object) (admission.Warnings, error)
- type MCPExternalAuthConfigList
- type MCPExternalAuthConfigSpec
- type MCPExternalAuthConfigStatus
- type MCPGroup
- type MCPGroupList
- type MCPGroupPhase
- type MCPGroupSpec
- type MCPGroupStatus
- type MCPRegistry
- func (r *MCPRegistry) BuildPGPassSecretName() string
- func (in *MCPRegistry) DeepCopy() *MCPRegistry
- func (in *MCPRegistry) DeepCopyInto(out *MCPRegistry)
- func (in *MCPRegistry) DeepCopyObject() runtime.Object
- func (r *MCPRegistry) DeriveOverallPhase() MCPRegistryPhase
- func (r *MCPRegistry) GetAPIResourceName() string
- func (r *MCPRegistry) GetDatabaseConfig() *MCPRegistryDatabaseConfig
- func (r *MCPRegistry) GetDatabasePort() int
- func (r *MCPRegistry) GetPodTemplateSpecRaw() *runtime.RawExtension
- func (r *MCPRegistry) GetStorageName() string
- func (r *MCPRegistry) HasDatabaseConfig() bool
- func (r *MCPRegistry) HasPodTemplateSpec() bool
- type MCPRegistryConfig
- type MCPRegistryDatabaseConfig
- type MCPRegistryList
- type MCPRegistryPhase
- type MCPRegistrySpec
- type MCPRegistryStatus
- type MCPRemoteProxy
- func (in *MCPRemoteProxy) DeepCopy() *MCPRemoteProxy
- func (in *MCPRemoteProxy) DeepCopyInto(out *MCPRemoteProxy)
- func (in *MCPRemoteProxy) DeepCopyObject() runtime.Object
- func (m *MCPRemoteProxy) GetName() string
- func (m *MCPRemoteProxy) GetNamespace() string
- func (m *MCPRemoteProxy) GetOIDCConfig() *OIDCConfigRef
- func (m *MCPRemoteProxy) GetProxyPort() int32
- type MCPRemoteProxyList
- type MCPRemoteProxyPhase
- type MCPRemoteProxySpec
- type MCPRemoteProxyStatus
- type MCPServer
- func (in *MCPServer) DeepCopy() *MCPServer
- func (in *MCPServer) DeepCopyInto(out *MCPServer)
- func (in *MCPServer) DeepCopyObject() runtime.Object
- func (m *MCPServer) GetMcpPort() int32
- func (m *MCPServer) GetName() string
- func (m *MCPServer) GetNamespace() string
- func (m *MCPServer) GetOIDCConfig() *OIDCConfigRef
- func (m *MCPServer) GetProxyPort() int32
- type MCPServerList
- type MCPServerPhase
- type MCPServerSpec
- type MCPServerStatus
- type MCPToolConfig
- type MCPToolConfigList
- type MCPToolConfigSpec
- type MCPToolConfigStatus
- type NameFilter
- type NetworkPermissions
- type OIDCConfigRef
- type OpenTelemetryConfig
- type OpenTelemetryMetricsConfig
- type OpenTelemetryTracingConfig
- type OperationalConfig
- type OutboundNetworkPermissions
- type OutgoingAuthConfig
- type OutputPropertySpec
- type OutputSpec
- type PVCSource
- type PermissionProfileRef
- type PermissionProfileSpec
- type PrometheusConfig
- type ProxyDeploymentOverrides
- type RegistryFilter
- type ResourceList
- type ResourceMetadataOverrides
- type ResourceOverrides
- type ResourceRequirements
- type RetryPolicy
- type SecretKeyRef
- type SecretRef
- type StorageReference
- type SyncPhase
- type SyncPolicy
- type SyncStatus
- type TagFilter
- type TelemetryConfig
- type TimeoutConfig
- type TokenExchangeConfig
- type ToolConfigRef
- type ToolOverride
- type ValidationStatus
- type VirtualMCPCompositeToolDefinition
- func (in *VirtualMCPCompositeToolDefinition) DeepCopy() *VirtualMCPCompositeToolDefinition
- func (in *VirtualMCPCompositeToolDefinition) DeepCopyInto(out *VirtualMCPCompositeToolDefinition)
- func (in *VirtualMCPCompositeToolDefinition) DeepCopyObject() runtime.Object
- func (r *VirtualMCPCompositeToolDefinition) GetValidationErrors() []string
- func (r *VirtualMCPCompositeToolDefinition) SetupWebhookWithManager(mgr ctrl.Manager) error
- func (r *VirtualMCPCompositeToolDefinition) Validate() error
- func (r *VirtualMCPCompositeToolDefinition) ValidateCreate(_ context.Context, _ runtime.Object) (admission.Warnings, error)
- func (*VirtualMCPCompositeToolDefinition) ValidateDelete(_ context.Context, _ runtime.Object) (admission.Warnings, error)
- func (r *VirtualMCPCompositeToolDefinition) ValidateUpdate(_ context.Context, _ runtime.Object, _ runtime.Object) (admission.Warnings, error)
- type VirtualMCPCompositeToolDefinitionList
- type VirtualMCPCompositeToolDefinitionSpec
- type VirtualMCPCompositeToolDefinitionStatus
- type VirtualMCPServer
- func (in *VirtualMCPServer) DeepCopy() *VirtualMCPServer
- func (in *VirtualMCPServer) DeepCopyInto(out *VirtualMCPServer)
- func (in *VirtualMCPServer) DeepCopyObject() runtime.Object
- func (v *VirtualMCPServer) GetOIDCConfig() *OIDCConfigRef
- func (*VirtualMCPServer) GetProxyPort() int32
- func (r *VirtualMCPServer) SetupWebhookWithManager(mgr ctrl.Manager) error
- func (r *VirtualMCPServer) Validate() error
- func (r *VirtualMCPServer) ValidateCreate(_ context.Context, _ runtime.Object) (admission.Warnings, error)
- func (*VirtualMCPServer) ValidateDelete(_ context.Context, _ runtime.Object) (admission.Warnings, error)
- func (r *VirtualMCPServer) ValidateUpdate(_ context.Context, _ runtime.Object, _ runtime.Object) (admission.Warnings, error)
- type VirtualMCPServerList
- type VirtualMCPServerPhase
- type VirtualMCPServerSpec
- type VirtualMCPServerStatus
- type Volume
- type WorkflowStep
- type WorkloadToolConfig
Constants ¶
const ( ConditionReasonListMCPServersFailed = "ListMCPServersCheckFailed" ConditionReasonListMCPServersSucceeded = "ListMCPServersCheckSucceeded" )
MCPGroupConditionReason represents the reason for a condition's last transition
const ( // ConditionSourceAvailable indicates whether the source is available and accessible ConditionSourceAvailable = "SourceAvailable" // ConditionDataValid indicates whether the registry data is valid ConditionDataValid = "DataValid" // ConditionSyncSuccessful indicates whether the last sync was successful ConditionSyncSuccessful = "SyncSuccessful" // ConditionAPIReady indicates whether the registry API is ready ConditionAPIReady = "APIReady" // ConditionRegistryPodTemplateValid indicates whether the PodTemplateSpec is valid ConditionRegistryPodTemplateValid = "PodTemplateValid" )
Condition types for MCPRegistry
const ( // ConditionReasonRegistryPodTemplateValid indicates PodTemplateSpec validation succeeded ConditionReasonRegistryPodTemplateValid = "ValidPodTemplateSpec" // ConditionReasonRegistryPodTemplateInvalid indicates PodTemplateSpec validation failed ConditionReasonRegistryPodTemplateInvalid = "InvalidPodTemplateSpec" )
Condition reasons for MCPRegistry PodTemplateSpec validation
const ( // ConditionTypeReady indicates overall readiness of the proxy ConditionTypeReady = "Ready" // ConditionTypeRemoteAvailable indicates whether the remote MCP server is reachable ConditionTypeRemoteAvailable = "RemoteAvailable" // ConditionTypeAuthConfigured indicates whether authentication is properly configured ConditionTypeAuthConfigured = "AuthConfigured" // ConditionTypeMCPRemoteProxyGroupRefValidated indicates whether the GroupRef is valid ConditionTypeMCPRemoteProxyGroupRefValidated = "GroupRefValidated" )
Condition types for MCPRemoteProxy
const ( // ConditionReasonDeploymentReady indicates the deployment is ready ConditionReasonDeploymentReady = "DeploymentReady" // ConditionReasonDeploymentNotReady indicates the deployment is not ready ConditionReasonDeploymentNotReady = "DeploymentNotReady" // ConditionReasonRemoteURLReachable indicates the remote URL is reachable ConditionReasonRemoteURLReachable = "RemoteURLReachable" // ConditionReasonRemoteURLUnreachable indicates the remote URL is unreachable ConditionReasonRemoteURLUnreachable = "RemoteURLUnreachable" // ConditionReasonAuthValid indicates authentication configuration is valid ConditionReasonAuthValid = "AuthValid" // ConditionReasonAuthInvalid indicates authentication configuration is invalid ConditionReasonAuthInvalid = "AuthInvalid" // ConditionReasonMissingOIDCConfig indicates OIDCConfig is not specified ConditionReasonMissingOIDCConfig = "MissingOIDCConfig" // ConditionReasonMCPRemoteProxyGroupRefValidated indicates the GroupRef is valid ConditionReasonMCPRemoteProxyGroupRefValidated = "GroupRefIsValid" // ConditionReasonMCPRemoteProxyGroupRefNotFound indicates the GroupRef is invalid ConditionReasonMCPRemoteProxyGroupRefNotFound = "GroupRefNotFound" // ConditionReasonMCPRemoteProxyGroupRefNotReady indicates the referenced MCPGroup is not in the Ready state ConditionReasonMCPRemoteProxyGroupRefNotReady = "GroupRefNotReady" )
Condition reasons for MCPRemoteProxy
const ( // ConditionImageValidated indicates whether this image is fine to be used ConditionImageValidated = "ImageValidated" // ConditionGroupRefValidated indicates whether the GroupRef is valid ConditionGroupRefValidated = "GroupRefValidated" // ConditionPodTemplateValid indicates whether the PodTemplateSpec is valid ConditionPodTemplateValid = "PodTemplateValid" )
Condition types for MCPServer
const ( // ConditionReasonImageValidationFailed indicates image validation failed ConditionReasonImageValidationFailed = "ImageValidationFailed" // ConditionReasonImageValidationSuccess indicates image validation succeeded ConditionReasonImageValidationSuccess = "ImageValidationSuccess" // ConditionReasonImageValidationError indicates an error occurred during validation ConditionReasonImageValidationError = "ImageValidationError" // ConditionReasonImageValidationSkipped indicates image validation was skipped ConditionReasonImageValidationSkipped = "ImageValidationSkipped" )
const ( // ConditionReasonGroupRefValidated indicates the GroupRef is valid ConditionReasonGroupRefValidated = "GroupRefIsValid" // ConditionReasonGroupRefNotFound indicates the GroupRef is invalid ConditionReasonGroupRefNotFound = "GroupRefNotFound" // ConditionReasonGroupRefNotReady indicates the referenced MCPGroup is not in the Ready state ConditionReasonGroupRefNotReady = "GroupRefNotReady" )
const ( // ConditionReasonPodTemplateValid indicates PodTemplateSpec validation succeeded ConditionReasonPodTemplateValid = "ValidPodTemplateSpec" // ConditionReasonPodTemplateInvalid indicates PodTemplateSpec validation failed ConditionReasonPodTemplateInvalid = "InvalidPodTemplateSpec" )
const ( // PermissionProfileTypeBuiltin is the type for built-in permission profiles PermissionProfileTypeBuiltin = "builtin" // PermissionProfileTypeConfigMap is the type for permission profiles stored in ConfigMaps PermissionProfileTypeConfigMap = "configmap" )
Permission profile types
const ( // OIDCConfigTypeKubernetes is the type for Kubernetes service account token validation OIDCConfigTypeKubernetes = "kubernetes" // OIDCConfigTypeConfigMap is the type for OIDC configuration stored in ConfigMaps OIDCConfigTypeConfigMap = "configMap" // OIDCConfigTypeInline is the type for inline OIDC configuration OIDCConfigTypeInline = "inline" )
OIDC configuration types
const ( // AuthzConfigTypeConfigMap is the type for authorization configuration stored in ConfigMaps AuthzConfigTypeConfigMap = "configMap" // AuthzConfigTypeInline is the type for inline authorization configuration AuthzConfigTypeInline = "inline" )
Authorization configuration types
const ( // ConditionReasonValidationSuccess indicates workflow validation succeeded ConditionReasonValidationSuccess = "ValidationSuccess" // ConditionReasonValidationFailed indicates workflow validation failed ConditionReasonValidationFailed = "ValidationFailed" // ConditionReasonSchemaInvalid indicates parameter or step schema is invalid ConditionReasonSchemaInvalid = "SchemaInvalid" // ConditionReasonTemplateInvalid indicates template syntax is invalid ConditionReasonTemplateInvalid = "TemplateInvalid" // ConditionReasonDependencyCycle indicates step dependencies contain cycles ConditionReasonDependencyCycle = "DependencyCycle" // ConditionReasonToolNotFound indicates a referenced tool doesn't exist ConditionReasonToolNotFound = "ToolNotFound" // ConditionReasonWorkflowReady indicates the workflow is ready to use ConditionReasonWorkflowReady = "WorkflowReady" // ConditionReasonWorkflowNotReady indicates the workflow is not ready ConditionReasonWorkflowNotReady = "WorkflowNotReady" )
Condition reasons for VirtualMCPCompositeToolDefinition
const ( BackendStatusReady = "ready" BackendStatusDegraded = "degraded" BackendStatusUnknown = "unknown" )
Backend status constants for DiscoveredBackend.Status
const ( // ConditionTypeVirtualMCPServerReady indicates whether the VirtualMCPServer is ready ConditionTypeVirtualMCPServerReady = "Ready" // ConditionTypeVirtualMCPServerGroupRefValidated indicates whether the GroupRef is valid ConditionTypeVirtualMCPServerGroupRefValidated = "GroupRefValidated" // ConditionTypeCompositeToolRefsValidated indicates whether the CompositeToolRefs are valid ConditionTypeCompositeToolRefsValidated = "CompositeToolRefsValidated" // ConditionTypeVirtualMCPServerPodTemplateSpecValid indicates whether the PodTemplateSpec is valid ConditionTypeVirtualMCPServerPodTemplateSpecValid = "PodTemplateSpecValid" // ConditionTypeVirtualMCPServerBackendsDiscovered indicates whether backends have been discovered ConditionTypeVirtualMCPServerBackendsDiscovered = "BackendsDiscovered" )
Condition types for VirtualMCPServer Note: ConditionTypeAuthConfigured is shared with MCPRemoteProxy and defined in mcpremoteproxy_types.go
const ( // ConditionReasonIncomingAuthValid indicates incoming auth is valid ConditionReasonIncomingAuthValid = "IncomingAuthValid" // ConditionReasonIncomingAuthInvalid indicates incoming auth is invalid ConditionReasonIncomingAuthInvalid = "IncomingAuthInvalid" // ConditionReasonGroupRefValid indicates the GroupRef is valid ConditionReasonVirtualMCPServerGroupRefValid = "GroupRefValid" // ConditionReasonGroupRefNotFound indicates the referenced MCPGroup was not found ConditionReasonVirtualMCPServerGroupRefNotFound = "GroupRefNotFound" // ConditionReasonGroupRefNotReady indicates the referenced MCPGroup is not ready ConditionReasonVirtualMCPServerGroupRefNotReady = "GroupRefNotReady" // ConditionReasonCompositeToolRefsValid indicates the CompositeToolRefs are valid ConditionReasonCompositeToolRefsValid = "CompositeToolRefsValid" // ConditionReasonCompositeToolRefNotFound indicates a referenced VirtualMCPCompositeToolDefinition was not found ConditionReasonCompositeToolRefNotFound = "CompositeToolRefNotFound" // ConditionReasonCompositeToolRefInvalid indicates a referenced VirtualMCPCompositeToolDefinition is invalid ConditionReasonCompositeToolRefInvalid = "CompositeToolRefInvalid" // ConditionReasonVirtualMCPServerPodTemplateSpecValid indicates PodTemplateSpec validation succeeded ConditionReasonVirtualMCPServerPodTemplateSpecValid = "PodTemplateSpecValid" // ConditionReasonVirtualMCPServerPodTemplateSpecInvalid indicates PodTemplateSpec validation failed ConditionReasonVirtualMCPServerPodTemplateSpecInvalid = "InvalidPodTemplateSpec" // ConditionReasonVirtualMCPServerBackendsDiscoveredSuccessfully indicates backends were discovered successfully ConditionReasonVirtualMCPServerBackendsDiscoveredSuccessfully = "BackendsDiscoveredSuccessfully" // ConditionReasonVirtualMCPServerBackendDiscoveryFailed indicates backend discovery failed ConditionReasonVirtualMCPServerBackendDiscoveryFailed = "BackendDiscoveryFailed" // ConditionReasonVirtualMCPServerDeploymentFailed indicates the deployment failed ConditionReasonVirtualMCPServerDeploymentFailed = "DeploymentFailed" // ConditionReasonVirtualMCPServerDeploymentReady indicates the deployment is ready ConditionReasonVirtualMCPServerDeploymentReady = "DeploymentReady" // ConditionReasonVirtualMCPServerDeploymentNotReady indicates the deployment is not ready ConditionReasonVirtualMCPServerDeploymentNotReady = "DeploymentNotReady" )
Condition reasons for VirtualMCPServer
const ( // BackendAuthTypeDiscovered automatically discovers from backend's externalAuthConfigRef BackendAuthTypeDiscovered = "discovered" // BackendAuthTypeExternalAuthConfigRef references an MCPExternalAuthConfig resource BackendAuthTypeExternalAuthConfigRef = "external_auth_config_ref" )
Backend authentication types
const ( // ConflictResolutionPrefix prefixes tool names with workload identifier ConflictResolutionPrefix = "prefix" // ConflictResolutionPriority uses priority order to resolve conflicts ConflictResolutionPriority = "priority" // ConflictResolutionManual requires explicit overrides for all conflicts ConflictResolutionManual = "manual" )
Conflict resolution strategies
const ( // WorkflowStepTypeToolCall calls a backend tool WorkflowStepTypeToolCall = "tool" // WorkflowStepTypeElicitation requests user input WorkflowStepTypeElicitation = "elicitation" )
Workflow step types
const ( // ErrorActionAbort aborts the workflow on error ErrorActionAbort = "abort" // ErrorActionContinue continues the workflow on error ErrorActionContinue = "continue" // ErrorActionRetry retries the step on error ErrorActionRetry = "retry" )
Error handling actions
const (
ConditionTypeMCPServersChecked = "MCPServersChecked"
)
Condition types for MCPGroup
const (
// ConditionTypeWorkflowValidated indicates whether the workflow has been validated
ConditionTypeWorkflowValidated = "WorkflowValidated"
)
Condition types for VirtualMCPCompositeToolDefinition
const (
// RegistryFormatToolHive is the native ToolHive registry format
RegistryFormatToolHive = "toolhive"
)
Registry formats
Variables ¶
var ( // GroupVersion is group version used to register these objects GroupVersion = schema.GroupVersion{Group: "toolhive.stacklok.dev", Version: "v1alpha1"} // SchemeBuilder is used to add go types to the GroupVersionKind scheme SchemeBuilder = &scheme.Builder{GroupVersion: GroupVersion} // AddToScheme adds the types in this group-version to the given scheme. AddToScheme = SchemeBuilder.AddToScheme )
Functions ¶
This section is empty.
Types ¶
type APIPhase ¶ added in v0.3.6
type APIPhase string
APIPhase represents the API service state +kubebuilder:validation:Enum=NotStarted;Deploying;Ready;Unhealthy;Error
const ( // APIPhaseNotStarted means API deployment has not been created APIPhaseNotStarted APIPhase = "NotStarted" // APIPhaseDeploying means API is being deployed APIPhaseDeploying APIPhase = "Deploying" // APIPhaseReady means API is ready to serve requests APIPhaseReady APIPhase = "Ready" // APIPhaseUnhealthy means API is deployed but not healthy APIPhaseUnhealthy APIPhase = "Unhealthy" // APIPhaseError means API deployment failed APIPhaseError APIPhase = "Error" )
type APISource ¶ added in v0.4.1
type APISource struct {
// Endpoint is the base API URL (without path)
// The controller will append the appropriate paths:
// Phase 1 (ToolHive API):
// - /v0/servers - List all servers (single response, no pagination)
// - /v0/servers/{name} - Get specific server (future)
// - /v0/info - Get registry metadata (future)
// Example: "http://my-registry-api.default.svc.cluster.local/api"
// +kubebuilder:validation:Required
// +kubebuilder:validation:MinLength=1
// +kubebuilder:validation:Pattern="^https?://.*"
Endpoint string `json:"endpoint"`
}
APISource defines API source configuration for ToolHive Registry APIs Phase 1: Supports ToolHive API endpoints (no pagination) Phase 2: Will add support for upstream MCP Registry API with pagination
func (*APISource) DeepCopy ¶ added in v0.4.1
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new APISource.
func (*APISource) DeepCopyInto ¶ added in v0.4.1
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type APIStatus ¶ added in v0.3.6
type APIStatus struct {
// Phase represents the current API service phase
// +kubebuilder:validation:Enum=NotStarted;Deploying;Ready;Unhealthy;Error
Phase APIPhase `json:"phase"`
// Message provides additional information about the API status
// +optional
Message string `json:"message,omitempty"`
// Endpoint is the URL where the API is accessible
// +optional
Endpoint string `json:"endpoint,omitempty"`
// ReadySince is the timestamp when the API became ready
// +optional
ReadySince *metav1.Time `json:"readySince,omitempty"`
}
APIStatus provides detailed information about the API service
func (*APIStatus) DeepCopy ¶ added in v0.3.6
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new APIStatus.
func (*APIStatus) DeepCopyInto ¶ added in v0.3.6
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type AdvancedWorkflowStep ¶ added in v0.5.2
type AdvancedWorkflowStep struct {
// RetryPolicy defines retry behavior for this step (Phase 2)
// +optional
RetryPolicy *RetryPolicy `json:"retryPolicy,omitempty"`
// Transform defines output transformation template (Phase 2)
// Allows mapping step output to different structure
// +optional
Transform string `json:"transform,omitempty"`
// CacheKey defines a cache key template for result caching (Phase 2)
// If specified and cache hit occurs, step is skipped
// +optional
CacheKey string `json:"cacheKey,omitempty"`
}
AdvancedWorkflowStep extends WorkflowStep with Phase 2 features This is embedded in WorkflowStep for future expansion
func (*AdvancedWorkflowStep) DeepCopy ¶ added in v0.5.2
func (in *AdvancedWorkflowStep) DeepCopy() *AdvancedWorkflowStep
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new AdvancedWorkflowStep.
func (*AdvancedWorkflowStep) DeepCopyInto ¶ added in v0.5.2
func (in *AdvancedWorkflowStep) DeepCopyInto(out *AdvancedWorkflowStep)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type AggregationConfig ¶ added in v0.5.2
type AggregationConfig struct {
// ConflictResolution defines the strategy for resolving tool name conflicts
// - prefix: Automatically prefix tool names with workload identifier
// - priority: First workload in priority order wins
// - manual: Explicitly define overrides for all conflicts
// +kubebuilder:validation:Enum=prefix;priority;manual
// +kubebuilder:default=prefix
// +optional
ConflictResolution string `json:"conflictResolution,omitempty"`
// ConflictResolutionConfig provides configuration for the chosen strategy
// +optional
ConflictResolutionConfig *ConflictResolutionConfig `json:"conflictResolutionConfig,omitempty"`
// Tools defines per-workload tool filtering and overrides
// References existing MCPToolConfig resources
// +optional
Tools []WorkloadToolConfig `json:"tools,omitempty"`
}
AggregationConfig defines tool aggregation and conflict resolution strategies
func (*AggregationConfig) DeepCopy ¶ added in v0.5.2
func (in *AggregationConfig) DeepCopy() *AggregationConfig
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new AggregationConfig.
func (*AggregationConfig) DeepCopyInto ¶ added in v0.5.2
func (in *AggregationConfig) DeepCopyInto(out *AggregationConfig)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type AuditConfig ¶ added in v0.2.17
type AuditConfig struct {
// Enabled controls whether audit logging is enabled
// When true, enables audit logging with default configuration
// +kubebuilder:default=false
// +optional
Enabled bool `json:"enabled,omitempty"`
}
AuditConfig defines audit logging configuration for the MCP server
func (*AuditConfig) DeepCopy ¶ added in v0.2.17
func (in *AuditConfig) DeepCopy() *AuditConfig
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new AuditConfig.
func (*AuditConfig) DeepCopyInto ¶ added in v0.2.17
func (in *AuditConfig) DeepCopyInto(out *AuditConfig)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type AuthzConfigRef ¶ added in v0.1.2
type AuthzConfigRef struct {
// Type is the type of authorization configuration
// +kubebuilder:validation:Enum=configMap;inline
// +kubebuilder:default=configMap
Type string `json:"type"`
// ConfigMap references a ConfigMap containing authorization configuration
// Only used when Type is "configMap"
// +optional
ConfigMap *ConfigMapAuthzRef `json:"configMap,omitempty"`
// Inline contains direct authorization configuration
// Only used when Type is "inline"
// +optional
Inline *InlineAuthzConfig `json:"inline,omitempty"`
}
AuthzConfigRef defines a reference to authorization configuration
func (*AuthzConfigRef) DeepCopy ¶ added in v0.1.2
func (in *AuthzConfigRef) DeepCopy() *AuthzConfigRef
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new AuthzConfigRef.
func (*AuthzConfigRef) DeepCopyInto ¶ added in v0.1.2
func (in *AuthzConfigRef) DeepCopyInto(out *AuthzConfigRef)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type BackendAuthConfig ¶ added in v0.5.2
type BackendAuthConfig struct {
// Type defines the authentication type
// +kubebuilder:validation:Enum=discovered;external_auth_config_ref
// +kubebuilder:validation:Required
Type string `json:"type"`
// ExternalAuthConfigRef references an MCPExternalAuthConfig resource
// Only used when Type is "external_auth_config_ref"
// +optional
ExternalAuthConfigRef *ExternalAuthConfigRef `json:"externalAuthConfigRef,omitempty"`
}
BackendAuthConfig defines authentication configuration for a backend MCPServer
func (*BackendAuthConfig) DeepCopy ¶ added in v0.5.2
func (in *BackendAuthConfig) DeepCopy() *BackendAuthConfig
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new BackendAuthConfig.
func (*BackendAuthConfig) DeepCopyInto ¶ added in v0.5.2
func (in *BackendAuthConfig) DeepCopyInto(out *BackendAuthConfig)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type CircuitBreakerConfig ¶ added in v0.5.2
type CircuitBreakerConfig struct {
// Enabled controls whether circuit breaker is enabled
// +kubebuilder:default=false
// +optional
Enabled bool `json:"enabled,omitempty"`
// FailureThreshold is the number of failures before opening the circuit
// +kubebuilder:default=5
// +optional
FailureThreshold int `json:"failureThreshold,omitempty"`
// Timeout is the duration to wait before attempting to close the circuit
// +kubebuilder:default="60s"
// +optional
Timeout string `json:"timeout,omitempty"`
}
CircuitBreakerConfig configures circuit breaker behavior
func (*CircuitBreakerConfig) DeepCopy ¶ added in v0.5.2
func (in *CircuitBreakerConfig) DeepCopy() *CircuitBreakerConfig
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new CircuitBreakerConfig.
func (*CircuitBreakerConfig) DeepCopyInto ¶ added in v0.5.2
func (in *CircuitBreakerConfig) DeepCopyInto(out *CircuitBreakerConfig)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type CompositeToolDefinitionRef ¶ added in v0.5.2
type CompositeToolDefinitionRef struct {
// Name is the name of the VirtualMCPCompositeToolDefinition resource in the same namespace
// +kubebuilder:validation:Required
Name string `json:"name"`
}
CompositeToolDefinitionRef references a VirtualMCPCompositeToolDefinition resource
func (*CompositeToolDefinitionRef) DeepCopy ¶ added in v0.5.2
func (in *CompositeToolDefinitionRef) DeepCopy() *CompositeToolDefinitionRef
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new CompositeToolDefinitionRef.
func (*CompositeToolDefinitionRef) DeepCopyInto ¶ added in v0.5.2
func (in *CompositeToolDefinitionRef) DeepCopyInto(out *CompositeToolDefinitionRef)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type CompositeToolSpec ¶ added in v0.5.2
type CompositeToolSpec struct {
// Name is the name of the composite tool
// +kubebuilder:validation:Required
Name string `json:"name"`
// Description describes the composite tool
// +kubebuilder:validation:Required
Description string `json:"description"`
// Parameters defines the input parameter schema in JSON Schema format.
// Should be a JSON Schema object with "type": "object" and "properties".
// Per MCP specification, this should follow standard JSON Schema for tool inputSchema.
// Example:
// {
// "type": "object",
// "properties": {
// "param1": {"type": "string", "default": "value"},
// "param2": {"type": "integer"}
// },
// "required": ["param2"]
// }
// +optional
// +kubebuilder:pruning:PreserveUnknownFields
// +kubebuilder:validation:Type=object
Parameters *runtime.RawExtension `json:"parameters,omitempty"`
// Steps defines the workflow steps
// +kubebuilder:validation:Required
// +kubebuilder:validation:MinItems=1
Steps []WorkflowStep `json:"steps"`
// Timeout is the maximum execution time for the composite tool
// +kubebuilder:default="30m"
// +optional
Timeout string `json:"timeout,omitempty"`
// Output defines the structured output schema for the composite tool.
// Specifies how to construct the final output from workflow step results.
// If not specified, the workflow returns the last step's output (backward compatible).
// +optional
Output *OutputSpec `json:"output,omitempty"`
}
CompositeToolSpec defines an inline composite tool For complex workflows, reference VirtualMCPCompositeToolDefinition resources instead
func (*CompositeToolSpec) DeepCopy ¶ added in v0.5.2
func (in *CompositeToolSpec) DeepCopy() *CompositeToolSpec
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new CompositeToolSpec.
func (*CompositeToolSpec) DeepCopyInto ¶ added in v0.5.2
func (in *CompositeToolSpec) DeepCopyInto(out *CompositeToolSpec)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type ConfigMapAuthzRef ¶ added in v0.1.2
type ConfigMapAuthzRef struct {
// Name is the name of the ConfigMap
// +kubebuilder:validation:Required
Name string `json:"name"`
// Key is the key in the ConfigMap that contains the authorization configuration
// +kubebuilder:default=authz.json
// +optional
Key string `json:"key,omitempty"`
}
ConfigMapAuthzRef references a ConfigMap containing authorization configuration
func (*ConfigMapAuthzRef) DeepCopy ¶ added in v0.1.2
func (in *ConfigMapAuthzRef) DeepCopy() *ConfigMapAuthzRef
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ConfigMapAuthzRef.
func (*ConfigMapAuthzRef) DeepCopyInto ¶ added in v0.1.2
func (in *ConfigMapAuthzRef) DeepCopyInto(out *ConfigMapAuthzRef)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type ConfigMapOIDCRef ¶ added in v0.0.40
type ConfigMapOIDCRef struct {
// Name is the name of the ConfigMap
// +kubebuilder:validation:Required
Name string `json:"name"`
// Key is the key in the ConfigMap that contains the OIDC configuration
// +kubebuilder:default=oidc.json
// +optional
Key string `json:"key,omitempty"`
}
ConfigMapOIDCRef references a ConfigMap containing OIDC configuration
func (*ConfigMapOIDCRef) DeepCopy ¶ added in v0.0.40
func (in *ConfigMapOIDCRef) DeepCopy() *ConfigMapOIDCRef
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ConfigMapOIDCRef.
func (*ConfigMapOIDCRef) DeepCopyInto ¶ added in v0.0.40
func (in *ConfigMapOIDCRef) DeepCopyInto(out *ConfigMapOIDCRef)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type ConflictResolutionConfig ¶ added in v0.5.2
type ConflictResolutionConfig struct {
// PrefixFormat defines the prefix format for the "prefix" strategy
// Supports placeholders: {workload}, {workload}_, {workload}.
// +kubebuilder:default="{workload}_"
// +optional
PrefixFormat string `json:"prefixFormat,omitempty"`
// PriorityOrder defines the workload priority order for the "priority" strategy
// +optional
PriorityOrder []string `json:"priorityOrder,omitempty"`
}
ConflictResolutionConfig provides configuration for conflict resolution strategies
func (*ConflictResolutionConfig) DeepCopy ¶ added in v0.5.2
func (in *ConflictResolutionConfig) DeepCopy() *ConflictResolutionConfig
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ConflictResolutionConfig.
func (*ConflictResolutionConfig) DeepCopyInto ¶ added in v0.5.2
func (in *ConflictResolutionConfig) DeepCopyInto(out *ConflictResolutionConfig)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type DiscoveredBackend ¶ added in v0.5.2
type DiscoveredBackend struct {
// Name is the name of the backend MCPServer
Name string `json:"name"`
// AuthConfigRef is the name of the discovered MCPExternalAuthConfig (if any)
// +optional
AuthConfigRef string `json:"authConfigRef,omitempty"`
// AuthType is the type of authentication configured
// +optional
AuthType string `json:"authType,omitempty"`
// Status is the current status of the backend (ready, degraded, unavailable)
// +optional
Status string `json:"status,omitempty"`
// LastHealthCheck is the timestamp of the last health check
// +optional
LastHealthCheck metav1.Time `json:"lastHealthCheck,omitempty"`
// URL is the URL of the backend MCPServer
// +optional
URL string `json:"url,omitempty"`
}
DiscoveredBackend represents a discovered backend MCPServer in the MCPGroup
func (*DiscoveredBackend) DeepCopy ¶ added in v0.5.2
func (in *DiscoveredBackend) DeepCopy() *DiscoveredBackend
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new DiscoveredBackend.
func (*DiscoveredBackend) DeepCopyInto ¶ added in v0.5.2
func (in *DiscoveredBackend) DeepCopyInto(out *DiscoveredBackend)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type ElicitationResponseHandler ¶ added in v0.6.12
type ElicitationResponseHandler struct {
// Action defines the action to take when the user declines or cancels
// - skip_remaining: Skip remaining steps in the workflow
// - abort: Abort the entire workflow execution
// - continue: Continue to the next step
// +kubebuilder:validation:Enum=skip_remaining;abort;continue
// +kubebuilder:default=abort
// +optional
Action string `json:"action,omitempty"`
}
ElicitationResponseHandler defines how to handle user responses to elicitation requests
func (*ElicitationResponseHandler) DeepCopy ¶ added in v0.6.12
func (in *ElicitationResponseHandler) DeepCopy() *ElicitationResponseHandler
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ElicitationResponseHandler.
func (*ElicitationResponseHandler) DeepCopyInto ¶ added in v0.6.12
func (in *ElicitationResponseHandler) DeepCopyInto(out *ElicitationResponseHandler)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type ElicitationStep ¶ added in v0.5.2
type ElicitationStep struct {
// Message is the elicitation message to display to the user
// Supports template expansion
// +kubebuilder:validation:Required
Message string `json:"message"`
// Schema defines the expected response schema
// Uses JSON Schema format
// +optional
// +kubebuilder:pruning:PreserveUnknownFields
// +kubebuilder:validation:Type=object
Schema *runtime.RawExtension `json:"schema,omitempty"`
// Timeout is the maximum time to wait for user input
// +kubebuilder:default="5m"
// +kubebuilder:validation:Pattern=`^([0-9]+(\.[0-9]+)?(ms|s|m|h))+$`
// +optional
Timeout string `json:"timeout,omitempty"`
// DefaultResponse is the default response if user doesn't respond in time
// +optional
// +kubebuilder:pruning:PreserveUnknownFields
// +kubebuilder:validation:Type=object
DefaultResponse *runtime.RawExtension `json:"defaultResponse,omitempty"`
}
ElicitationStep defines user input elicitation (Phase 2)
func (*ElicitationStep) DeepCopy ¶ added in v0.5.2
func (in *ElicitationStep) DeepCopy() *ElicitationStep
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ElicitationStep.
func (*ElicitationStep) DeepCopyInto ¶ added in v0.5.2
func (in *ElicitationStep) DeepCopyInto(out *ElicitationStep)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type EnvVar ¶
type EnvVar struct {
// Name of the environment variable
// +kubebuilder:validation:Required
Name string `json:"name"`
// Value of the environment variable
// +kubebuilder:validation:Required
Value string `json:"value"`
}
EnvVar represents an environment variable in a container
func (*EnvVar) DeepCopy ¶
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new EnvVar.
func (*EnvVar) DeepCopyInto ¶
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type ErrorHandling ¶ added in v0.5.2
type ErrorHandling struct {
// Action defines the action to take on error
// +kubebuilder:validation:Enum=abort;continue;retry
// +kubebuilder:default=abort
// +optional
Action string `json:"action,omitempty"`
// MaxRetries is the maximum number of retries
// Only used when Action is "retry"
// +optional
MaxRetries int `json:"maxRetries,omitempty"`
// RetryDelay is the delay between retry attempts
// Only used when Action is "retry"
// +kubebuilder:validation:Pattern=`^([0-9]+(\.[0-9]+)?(ms|s|m))+$`
// +optional
RetryDelay string `json:"retryDelay,omitempty"`
}
ErrorHandling defines error handling behavior for workflow steps
func (*ErrorHandling) DeepCopy ¶ added in v0.5.2
func (in *ErrorHandling) DeepCopy() *ErrorHandling
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ErrorHandling.
func (*ErrorHandling) DeepCopyInto ¶ added in v0.5.2
func (in *ErrorHandling) DeepCopyInto(out *ErrorHandling)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type ExternalAuthConfigRef ¶ added in v0.3.9
type ExternalAuthConfigRef struct {
// Name is the name of the MCPExternalAuthConfig resource
// +kubebuilder:validation:Required
Name string `json:"name"`
}
ExternalAuthConfigRef defines a reference to a MCPExternalAuthConfig resource. The referenced MCPExternalAuthConfig must be in the same namespace as the MCPServer.
func (*ExternalAuthConfigRef) DeepCopy ¶ added in v0.3.9
func (in *ExternalAuthConfigRef) DeepCopy() *ExternalAuthConfigRef
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ExternalAuthConfigRef.
func (*ExternalAuthConfigRef) DeepCopyInto ¶ added in v0.3.9
func (in *ExternalAuthConfigRef) DeepCopyInto(out *ExternalAuthConfigRef)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type ExternalAuthType ¶ added in v0.6.8
type ExternalAuthType string
ExternalAuthType represents the type of external authentication
const ( // ExternalAuthTypeTokenExchange is the type for RFC-8693 token exchange ExternalAuthTypeTokenExchange ExternalAuthType = "tokenExchange" // ExternalAuthTypeHeaderInjection is the type for custom header injection ExternalAuthTypeHeaderInjection ExternalAuthType = "headerInjection" // ExternalAuthTypeUnauthenticated is the type for no authentication // This should only be used for backends on trusted networks (e.g., localhost, VPC) // or when authentication is handled by network-level security ExternalAuthTypeUnauthenticated ExternalAuthType = "unauthenticated" )
External auth configuration types
type FailureHandlingConfig ¶ added in v0.5.2
type FailureHandlingConfig struct {
// HealthCheckInterval is the interval between health checks
// +kubebuilder:default="30s"
// +optional
HealthCheckInterval string `json:"healthCheckInterval,omitempty"`
// UnhealthyThreshold is the number of consecutive failures before marking unhealthy
// +kubebuilder:default=3
// +optional
UnhealthyThreshold int `json:"unhealthyThreshold,omitempty"`
// PartialFailureMode defines behavior when some backends are unavailable
// - fail: Fail entire request if any backend is unavailable
// - best_effort: Continue with available backends
// +kubebuilder:validation:Enum=fail;best_effort
// +kubebuilder:default=fail
// +optional
PartialFailureMode string `json:"partialFailureMode,omitempty"`
// CircuitBreaker configures circuit breaker behavior
// +optional
CircuitBreaker *CircuitBreakerConfig `json:"circuitBreaker,omitempty"`
}
FailureHandlingConfig configures failure handling behavior
func (*FailureHandlingConfig) DeepCopy ¶ added in v0.5.2
func (in *FailureHandlingConfig) DeepCopy() *FailureHandlingConfig
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new FailureHandlingConfig.
func (*FailureHandlingConfig) DeepCopyInto ¶ added in v0.5.2
func (in *FailureHandlingConfig) DeepCopyInto(out *FailureHandlingConfig)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type GitSource ¶ added in v0.3.6
type GitSource struct {
// Repository is the Git repository URL (HTTP/HTTPS/SSH)
// +kubebuilder:validation:Required
// +kubebuilder:validation:MinLength=1
// +kubebuilder:validation:Pattern="^(file:///|https?://|git@|ssh://|git://).*"
Repository string `json:"repository"`
// Branch is the Git branch to use (mutually exclusive with Tag and Commit)
// +kubebuilder:validation:MinLength=1
// +optional
Branch string `json:"branch,omitempty"`
// Tag is the Git tag to use (mutually exclusive with Branch and Commit)
// +kubebuilder:validation:MinLength=1
// +optional
Tag string `json:"tag,omitempty"`
// Commit is the Git commit SHA to use (mutually exclusive with Branch and Tag)
// +kubebuilder:validation:MinLength=1
// +optional
Commit string `json:"commit,omitempty"`
// Path is the path to the registry file within the repository
// +kubebuilder:validation:Pattern=^.*\.json$
// +kubebuilder:default=registry.json
// +optional
Path string `json:"path,omitempty"`
}
GitSource defines Git repository source configuration
func (*GitSource) DeepCopy ¶ added in v0.3.6
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new GitSource.
func (*GitSource) DeepCopyInto ¶ added in v0.3.6
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type GroupRef ¶ added in v0.5.2
type GroupRef struct {
// Name is the name of the MCPGroup resource in the same namespace
// +kubebuilder:validation:Required
Name string `json:"name"`
}
GroupRef references an MCPGroup resource
func (*GroupRef) DeepCopy ¶ added in v0.5.2
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new GroupRef.
func (*GroupRef) DeepCopyInto ¶ added in v0.5.2
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type HeaderInjectionConfig ¶ added in v0.6.8
type HeaderInjectionConfig struct {
// HeaderName is the name of the HTTP header to inject
// +kubebuilder:validation:Required
// +kubebuilder:validation:MinLength=1
HeaderName string `json:"headerName"`
// ValueSecretRef references a Kubernetes Secret containing the header value
// +kubebuilder:validation:Required
ValueSecretRef *SecretKeyRef `json:"valueSecretRef"`
}
HeaderInjectionConfig holds configuration for custom HTTP header injection authentication. This allows injecting a secret-based header value into requests to backend MCP servers. For security reasons, only secret references are supported (no plaintext values).
func (*HeaderInjectionConfig) DeepCopy ¶ added in v0.6.8
func (in *HeaderInjectionConfig) DeepCopy() *HeaderInjectionConfig
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new HeaderInjectionConfig.
func (*HeaderInjectionConfig) DeepCopyInto ¶ added in v0.6.8
func (in *HeaderInjectionConfig) DeepCopyInto(out *HeaderInjectionConfig)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type IncomingAuthConfig ¶ added in v0.5.2
type IncomingAuthConfig struct {
// Type defines the authentication type: anonymous or oidc
// When no authentication is required, explicitly set this to "anonymous"
// +kubebuilder:validation:Enum=anonymous;oidc
// +kubebuilder:validation:Required
Type string `json:"type"`
// OIDCConfig defines OIDC authentication configuration
// Reuses MCPServer OIDC patterns
// +optional
OIDCConfig *OIDCConfigRef `json:"oidcConfig,omitempty"`
// AuthzConfig defines authorization policy configuration
// Reuses MCPServer authz patterns
// +optional
AuthzConfig *AuthzConfigRef `json:"authzConfig,omitempty"`
}
IncomingAuthConfig configures authentication for clients connecting to the Virtual MCP server
func (*IncomingAuthConfig) DeepCopy ¶ added in v0.5.2
func (in *IncomingAuthConfig) DeepCopy() *IncomingAuthConfig
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new IncomingAuthConfig.
func (*IncomingAuthConfig) DeepCopyInto ¶ added in v0.5.2
func (in *IncomingAuthConfig) DeepCopyInto(out *IncomingAuthConfig)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type InlineAuthzConfig ¶ added in v0.1.2
type InlineAuthzConfig struct {
// Policies is a list of Cedar policy strings
// +kubebuilder:validation:Required
// +kubebuilder:validation:MinItems=1
Policies []string `json:"policies"`
// EntitiesJSON is a JSON string representing Cedar entities
// +kubebuilder:default="[]"
// +optional
EntitiesJSON string `json:"entitiesJson,omitempty"`
}
InlineAuthzConfig contains direct authorization configuration
func (*InlineAuthzConfig) DeepCopy ¶ added in v0.1.2
func (in *InlineAuthzConfig) DeepCopy() *InlineAuthzConfig
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new InlineAuthzConfig.
func (*InlineAuthzConfig) DeepCopyInto ¶ added in v0.1.2
func (in *InlineAuthzConfig) DeepCopyInto(out *InlineAuthzConfig)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type InlineOIDCConfig ¶ added in v0.0.40
type InlineOIDCConfig struct {
// Issuer is the OIDC issuer URL
// +kubebuilder:validation:Required
Issuer string `json:"issuer"`
// Audience is the expected audience for the token
// +optional
Audience string `json:"audience,omitempty"`
// JWKSURL is the URL to fetch the JWKS from
// +optional
JWKSURL string `json:"jwksUrl,omitempty"`
// IntrospectionURL is the URL for token introspection endpoint
// +optional
IntrospectionURL string `json:"introspectionUrl,omitempty"`
// ClientID is the OIDC client ID
// +optional
ClientID string `json:"clientId,omitempty"`
// ClientSecret is the client secret for introspection (optional)
// Deprecated: Use ClientSecretRef instead for better security
// +optional
ClientSecret string `json:"clientSecret,omitempty"`
// ClientSecretRef is a reference to a Kubernetes Secret containing the client secret
// If both ClientSecret and ClientSecretRef are provided, ClientSecretRef takes precedence
// +optional
ClientSecretRef *SecretKeyRef `json:"clientSecretRef,omitempty"`
// ThvCABundlePath is the path to CA certificate bundle file for HTTPS requests
// The file must be mounted into the pod (e.g., via ConfigMap or Secret volume)
// +optional
ThvCABundlePath string `json:"thvCABundlePath,omitempty"`
// JWKSAuthTokenPath is the path to file containing bearer token for JWKS/OIDC requests
// The file must be mounted into the pod (e.g., via Secret volume)
// +optional
JWKSAuthTokenPath string `json:"jwksAuthTokenPath,omitempty"`
// JWKSAllowPrivateIP allows JWKS/OIDC endpoints on private IP addresses
// Use with caution - only enable for trusted internal IDPs
// +kubebuilder:default=false
// +optional
JWKSAllowPrivateIP bool `json:"jwksAllowPrivateIP"`
// ProtectedResourceAllowPrivateIP allows protected resource endpoint on private IP addresses
// Use with caution - only enable for trusted internal IDPs or testing
// +kubebuilder:default=false
// +optional
ProtectedResourceAllowPrivateIP bool `json:"protectedResourceAllowPrivateIP"`
// InsecureAllowHTTP allows HTTP (non-HTTPS) OIDC issuers for development/testing
// WARNING: This is insecure and should NEVER be used in production
// Only enable for local development, testing, or trusted internal networks
// +kubebuilder:default=false
// +optional
InsecureAllowHTTP bool `json:"insecureAllowHTTP"`
// Scopes is the list of OAuth scopes to advertise in the well-known endpoint (RFC 9728)
// If empty, defaults to ["openid"]
// +optional
Scopes []string `json:"scopes,omitempty"`
}
InlineOIDCConfig contains direct OIDC configuration
func (*InlineOIDCConfig) DeepCopy ¶ added in v0.0.40
func (in *InlineOIDCConfig) DeepCopy() *InlineOIDCConfig
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new InlineOIDCConfig.
func (*InlineOIDCConfig) DeepCopyInto ¶ added in v0.0.40
func (in *InlineOIDCConfig) DeepCopyInto(out *InlineOIDCConfig)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type KubernetesOIDCConfig ¶ added in v0.0.40
type KubernetesOIDCConfig struct {
// ServiceAccount is the name of the service account to validate tokens for
// If empty, uses the pod's service account
// +optional
ServiceAccount string `json:"serviceAccount,omitempty"`
// Namespace is the namespace of the service account
// If empty, uses the MCPServer's namespace
// +optional
Namespace string `json:"namespace,omitempty"`
// Audience is the expected audience for the token
// +kubebuilder:default=toolhive
// +optional
Audience string `json:"audience,omitempty"`
// Issuer is the OIDC issuer URL
// +kubebuilder:default="https://kubernetes.default.svc"
// +optional
Issuer string `json:"issuer,omitempty"`
// JWKSURL is the URL to fetch the JWKS from
// If empty, OIDC discovery will be used to automatically determine the JWKS URL
// +optional
JWKSURL string `json:"jwksUrl,omitempty"`
// IntrospectionURL is the URL for token introspection endpoint
// If empty, OIDC discovery will be used to automatically determine the introspection URL
// +optional
IntrospectionURL string `json:"introspectionUrl,omitempty"`
// UseClusterAuth enables using the Kubernetes cluster's CA bundle and service account token
// When true, uses /var/run/secrets/kubernetes.io/serviceaccount/ca.crt for TLS verification
// and /var/run/secrets/kubernetes.io/serviceaccount/token for bearer token authentication
// Defaults to true if not specified
// +optional
UseClusterAuth *bool `json:"useClusterAuth"`
}
KubernetesOIDCConfig configures OIDC for Kubernetes service account token validation
func (*KubernetesOIDCConfig) DeepCopy ¶ added in v0.0.40
func (in *KubernetesOIDCConfig) DeepCopy() *KubernetesOIDCConfig
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new KubernetesOIDCConfig.
func (*KubernetesOIDCConfig) DeepCopyInto ¶ added in v0.0.40
func (in *KubernetesOIDCConfig) DeepCopyInto(out *KubernetesOIDCConfig)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type MCPExternalAuthConfig ¶ added in v0.3.9
type MCPExternalAuthConfig struct {
metav1.TypeMeta `json:",inline"` // nolint:revive
metav1.ObjectMeta `json:"metadata,omitempty"`
Spec MCPExternalAuthConfigSpec `json:"spec,omitempty"`
Status MCPExternalAuthConfigStatus `json:"status,omitempty"`
}
MCPExternalAuthConfig is the Schema for the mcpexternalauthconfigs API. MCPExternalAuthConfig resources are namespace-scoped and can only be referenced by MCPServer resources within the same namespace. Cross-namespace references are not supported for security and isolation reasons.
func (*MCPExternalAuthConfig) DeepCopy ¶ added in v0.3.9
func (in *MCPExternalAuthConfig) DeepCopy() *MCPExternalAuthConfig
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new MCPExternalAuthConfig.
func (*MCPExternalAuthConfig) DeepCopyInto ¶ added in v0.3.9
func (in *MCPExternalAuthConfig) DeepCopyInto(out *MCPExternalAuthConfig)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (*MCPExternalAuthConfig) DeepCopyObject ¶ added in v0.3.9
func (in *MCPExternalAuthConfig) DeepCopyObject() runtime.Object
DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
func (*MCPExternalAuthConfig) SetupWebhookWithManager ¶ added in v0.6.12
func (r *MCPExternalAuthConfig) SetupWebhookWithManager(mgr ctrl.Manager) error
SetupWebhookWithManager sets up the webhook with the Manager
func (*MCPExternalAuthConfig) ValidateCreate ¶ added in v0.6.12
func (r *MCPExternalAuthConfig) ValidateCreate(_ context.Context, _ runtime.Object) (admission.Warnings, error)
ValidateCreate implements webhook.CustomValidator
func (*MCPExternalAuthConfig) ValidateDelete ¶ added in v0.6.12
func (*MCPExternalAuthConfig) ValidateDelete(_ context.Context, _ runtime.Object) (admission.Warnings, error)
ValidateDelete implements webhook.CustomValidator
type MCPExternalAuthConfigList ¶ added in v0.3.9
type MCPExternalAuthConfigList struct {
metav1.TypeMeta `json:",inline"` // nolint:revive
metav1.ListMeta `json:"metadata,omitempty"`
Items []MCPExternalAuthConfig `json:"items"`
}
MCPExternalAuthConfigList contains a list of MCPExternalAuthConfig
func (*MCPExternalAuthConfigList) DeepCopy ¶ added in v0.3.9
func (in *MCPExternalAuthConfigList) DeepCopy() *MCPExternalAuthConfigList
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new MCPExternalAuthConfigList.
func (*MCPExternalAuthConfigList) DeepCopyInto ¶ added in v0.3.9
func (in *MCPExternalAuthConfigList) DeepCopyInto(out *MCPExternalAuthConfigList)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (*MCPExternalAuthConfigList) DeepCopyObject ¶ added in v0.3.9
func (in *MCPExternalAuthConfigList) DeepCopyObject() runtime.Object
DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
type MCPExternalAuthConfigSpec ¶ added in v0.3.9
type MCPExternalAuthConfigSpec struct {
// Type is the type of external authentication to configure
// +kubebuilder:validation:Enum=tokenExchange;headerInjection;unauthenticated
// +kubebuilder:validation:Required
Type ExternalAuthType `json:"type"`
// TokenExchange configures RFC-8693 OAuth 2.0 Token Exchange
// Only used when Type is "tokenExchange"
// +optional
TokenExchange *TokenExchangeConfig `json:"tokenExchange,omitempty"`
// HeaderInjection configures custom HTTP header injection
// Only used when Type is "headerInjection"
// +optional
HeaderInjection *HeaderInjectionConfig `json:"headerInjection,omitempty"`
}
MCPExternalAuthConfigSpec defines the desired state of MCPExternalAuthConfig. MCPExternalAuthConfig resources are namespace-scoped and can only be referenced by MCPServer resources in the same namespace.
func (*MCPExternalAuthConfigSpec) DeepCopy ¶ added in v0.3.9
func (in *MCPExternalAuthConfigSpec) DeepCopy() *MCPExternalAuthConfigSpec
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new MCPExternalAuthConfigSpec.
func (*MCPExternalAuthConfigSpec) DeepCopyInto ¶ added in v0.3.9
func (in *MCPExternalAuthConfigSpec) DeepCopyInto(out *MCPExternalAuthConfigSpec)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type MCPExternalAuthConfigStatus ¶ added in v0.3.9
type MCPExternalAuthConfigStatus struct {
// ObservedGeneration is the most recent generation observed for this MCPExternalAuthConfig.
// It corresponds to the MCPExternalAuthConfig's generation, which is updated on mutation by the API Server.
// +optional
ObservedGeneration int64 `json:"observedGeneration,omitempty"`
// ConfigHash is a hash of the current configuration for change detection
// +optional
ConfigHash string `json:"configHash,omitempty"`
// ReferencingServers is a list of MCPServer resources that reference this MCPExternalAuthConfig
// This helps track which servers need to be reconciled when this config changes
// +optional
ReferencingServers []string `json:"referencingServers,omitempty"`
}
MCPExternalAuthConfigStatus defines the observed state of MCPExternalAuthConfig
func (*MCPExternalAuthConfigStatus) DeepCopy ¶ added in v0.3.9
func (in *MCPExternalAuthConfigStatus) DeepCopy() *MCPExternalAuthConfigStatus
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new MCPExternalAuthConfigStatus.
func (*MCPExternalAuthConfigStatus) DeepCopyInto ¶ added in v0.3.9
func (in *MCPExternalAuthConfigStatus) DeepCopyInto(out *MCPExternalAuthConfigStatus)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type MCPGroup ¶ added in v0.4.0
type MCPGroup struct {
metav1.TypeMeta `json:",inline"` // nolint:revive
metav1.ObjectMeta `json:"metadata,omitempty"`
Spec MCPGroupSpec `json:"spec,omitempty"`
Status MCPGroupStatus `json:"status,omitempty"`
}
MCPGroup is the Schema for the mcpgroups API
func (*MCPGroup) DeepCopy ¶ added in v0.4.0
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new MCPGroup.
func (*MCPGroup) DeepCopyInto ¶ added in v0.4.0
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (*MCPGroup) DeepCopyObject ¶ added in v0.4.0
DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
type MCPGroupList ¶ added in v0.4.0
type MCPGroupList struct {
metav1.TypeMeta `json:",inline"` // nolint:revive
metav1.ListMeta `json:"metadata,omitempty"`
Items []MCPGroup `json:"items"`
}
MCPGroupList contains a list of MCPGroup
func (*MCPGroupList) DeepCopy ¶ added in v0.4.0
func (in *MCPGroupList) DeepCopy() *MCPGroupList
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new MCPGroupList.
func (*MCPGroupList) DeepCopyInto ¶ added in v0.4.0
func (in *MCPGroupList) DeepCopyInto(out *MCPGroupList)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (*MCPGroupList) DeepCopyObject ¶ added in v0.4.0
func (in *MCPGroupList) DeepCopyObject() runtime.Object
DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
type MCPGroupPhase ¶ added in v0.4.0
type MCPGroupPhase string
MCPGroupPhase represents the lifecycle phase of an MCPGroup +kubebuilder:validation:Enum=Ready;Pending;Failed
const ( // MCPGroupPhaseReady indicates the MCPGroup is ready MCPGroupPhaseReady MCPGroupPhase = "Ready" // MCPGroupPhasePending indicates the MCPGroup is pending MCPGroupPhasePending MCPGroupPhase = "Pending" // MCPGroupPhaseFailed indicates the MCPGroup has failed MCPGroupPhaseFailed MCPGroupPhase = "Failed" )
type MCPGroupSpec ¶ added in v0.4.0
type MCPGroupSpec struct {
// Description provides human-readable context
// +optional
Description string `json:"description,omitempty"`
}
MCPGroupSpec defines the desired state of MCPGroup
func (*MCPGroupSpec) DeepCopy ¶ added in v0.4.0
func (in *MCPGroupSpec) DeepCopy() *MCPGroupSpec
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new MCPGroupSpec.
func (*MCPGroupSpec) DeepCopyInto ¶ added in v0.4.0
func (in *MCPGroupSpec) DeepCopyInto(out *MCPGroupSpec)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type MCPGroupStatus ¶ added in v0.4.0
type MCPGroupStatus struct {
// Phase indicates current state
// +optional
// +kubebuilder:default=Pending
Phase MCPGroupPhase `json:"phase,omitempty"`
// Servers lists MCPServer names in this group
// +optional
Servers []string `json:"servers"`
// ServerCount is the number of MCPServers
// +optional
ServerCount int `json:"serverCount"`
// RemoteProxies lists MCPRemoteProxy names in this group
// +optional
RemoteProxies []string `json:"remoteProxies,omitempty"`
// RemoteProxyCount is the number of MCPRemoteProxies
// +optional
RemoteProxyCount int `json:"remoteProxyCount,omitempty"`
// Conditions represent observations
// +optional
Conditions []metav1.Condition `json:"conditions,omitempty"`
}
MCPGroupStatus defines observed state
func (*MCPGroupStatus) DeepCopy ¶ added in v0.4.0
func (in *MCPGroupStatus) DeepCopy() *MCPGroupStatus
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new MCPGroupStatus.
func (*MCPGroupStatus) DeepCopyInto ¶ added in v0.4.0
func (in *MCPGroupStatus) DeepCopyInto(out *MCPGroupStatus)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type MCPRegistry ¶ added in v0.2.17
type MCPRegistry struct {
metav1.TypeMeta `json:",inline"` // nolint:revive
metav1.ObjectMeta `json:"metadata,omitempty"`
Spec MCPRegistrySpec `json:"spec,omitempty"`
Status MCPRegistryStatus `json:"status,omitempty"`
}
MCPRegistry is the Schema for the mcpregistries API
func (*MCPRegistry) BuildPGPassSecretName ¶ added in v0.6.14
func (r *MCPRegistry) BuildPGPassSecretName() string
BuildPGPassSecretName returns the name of the generated pgpass secret for this registry
func (*MCPRegistry) DeepCopy ¶ added in v0.2.17
func (in *MCPRegistry) DeepCopy() *MCPRegistry
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new MCPRegistry.
func (*MCPRegistry) DeepCopyInto ¶ added in v0.2.17
func (in *MCPRegistry) DeepCopyInto(out *MCPRegistry)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (*MCPRegistry) DeepCopyObject ¶ added in v0.2.17
func (in *MCPRegistry) DeepCopyObject() runtime.Object
DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
func (*MCPRegistry) DeriveOverallPhase ¶ added in v0.3.6
func (r *MCPRegistry) DeriveOverallPhase() MCPRegistryPhase
DeriveOverallPhase determines the overall MCPRegistry phase based on sync and API status
func (*MCPRegistry) GetAPIResourceName ¶ added in v0.3.6
func (r *MCPRegistry) GetAPIResourceName() string
GetAPIResourceName returns the base name for registry API resources (deployment, service)
func (*MCPRegistry) GetDatabaseConfig ¶ added in v0.6.14
func (r *MCPRegistry) GetDatabaseConfig() *MCPRegistryDatabaseConfig
GetDatabaseConfig returns the database configuration. Callers should check HasDatabaseConfig() before calling this method.
func (*MCPRegistry) GetDatabasePort ¶ added in v0.6.14
func (r *MCPRegistry) GetDatabasePort() int
GetDatabasePort returns the database port. If the port is not specified, it returns 5432. We do this because its likely to be 5432 due to it being the default port for PostgreSQL.
func (*MCPRegistry) GetPodTemplateSpecRaw ¶ added in v0.6.9
func (r *MCPRegistry) GetPodTemplateSpecRaw() *runtime.RawExtension
GetPodTemplateSpecRaw returns the raw PodTemplateSpec
func (*MCPRegistry) GetStorageName ¶ added in v0.3.6
func (r *MCPRegistry) GetStorageName() string
GetStorageName returns the name used for registry storage resources
func (*MCPRegistry) HasDatabaseConfig ¶ added in v0.6.14
func (r *MCPRegistry) HasDatabaseConfig() bool
HasDatabaseConfig returns true if the MCPRegistry has a valid database configuration. A valid configuration requires: - DatabaseConfig to be non-nil - Host to be specified - Database to be specified - User to be specified - MigrationUser to be specified - DBAppUserPasswordSecretRef.Name to be specified - DBMigrationUserPasswordSecretRef.Name to be specified
func (*MCPRegistry) HasPodTemplateSpec ¶ added in v0.6.9
func (r *MCPRegistry) HasPodTemplateSpec() bool
HasPodTemplateSpec returns true if the MCPRegistry has a PodTemplateSpec
type MCPRegistryConfig ¶ added in v0.6.7
type MCPRegistryConfig struct {
// Name is a unique identifier for this registry configuration within the MCPRegistry
// +kubebuilder:validation:Required
// +kubebuilder:validation:MinLength=1
Name string `json:"name"`
// Format is the data format (toolhive, upstream)
// +kubebuilder:validation:Enum=toolhive;upstream
// +kubebuilder:default=toolhive
Format string `json:"format,omitempty"`
// ConfigMapRef defines the ConfigMap source configuration
// Mutually exclusive with Git, API, and PVCRef
// +optional
ConfigMapRef *corev1.ConfigMapKeySelector `json:"configMapRef,omitempty"`
// Git defines the Git repository source configuration
// Mutually exclusive with ConfigMapRef, API, and PVCRef
// +optional
Git *GitSource `json:"git,omitempty"`
// API defines the API source configuration
// Mutually exclusive with ConfigMapRef, Git, and PVCRef
// +optional
API *APISource `json:"api,omitempty"`
// PVCRef defines the PersistentVolumeClaim source configuration
// Mutually exclusive with ConfigMapRef, Git, and API
// +optional
PVCRef *PVCSource `json:"pvcRef,omitempty"`
// SyncPolicy defines the automatic synchronization behavior for this registry.
// If specified, enables automatic synchronization at the given interval.
// Manual synchronization is always supported via annotation-based triggers
// regardless of this setting.
// +optional
SyncPolicy *SyncPolicy `json:"syncPolicy,omitempty"`
// Filter defines include/exclude patterns for registry content
// +optional
Filter *RegistryFilter `json:"filter,omitempty"`
}
MCPRegistryConfig defines the configuration for a registry data source
func (*MCPRegistryConfig) DeepCopy ¶ added in v0.6.7
func (in *MCPRegistryConfig) DeepCopy() *MCPRegistryConfig
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new MCPRegistryConfig.
func (*MCPRegistryConfig) DeepCopyInto ¶ added in v0.6.7
func (in *MCPRegistryConfig) DeepCopyInto(out *MCPRegistryConfig)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type MCPRegistryDatabaseConfig ¶ added in v0.6.9
type MCPRegistryDatabaseConfig struct {
// Host is the database server hostname
// +kubebuilder:default="postgres"
// +optional
Host string `json:"host,omitempty"`
// Port is the database server port
// +kubebuilder:default=5432
// +kubebuilder:validation:Minimum=1
// +kubebuilder:validation:Maximum=65535
// +optional
Port int `json:"port,omitempty"`
// User is the application user (limited privileges: SELECT, INSERT, UPDATE, DELETE)
// Credentials should be provided via pgpass file or environment variables
// +kubebuilder:default="db_app"
// +optional
User string `json:"user,omitempty"`
// MigrationUser is the migration user (elevated privileges: CREATE, ALTER, DROP)
// Used for running database schema migrations
// Credentials should be provided via pgpass file or environment variables
// +kubebuilder:default="db_migrator"
// +optional
MigrationUser string `json:"migrationUser,omitempty"`
// Database is the database name
// +kubebuilder:default="registry"
// +optional
Database string `json:"database,omitempty"`
// SSLMode is the SSL mode for the connection
// Valid values: disable, allow, prefer, require, verify-ca, verify-full
// +kubebuilder:validation:Enum=disable;allow;prefer;require;verify-ca;verify-full
// +kubebuilder:default="prefer"
// +optional
SSLMode string `json:"sslMode,omitempty"`
// MaxOpenConns is the maximum number of open connections to the database
// +kubebuilder:default=10
// +kubebuilder:validation:Minimum=1
// +optional
MaxOpenConns int `json:"maxOpenConns,omitempty"`
// MaxIdleConns is the maximum number of idle connections in the pool
// +kubebuilder:default=2
// +kubebuilder:validation:Minimum=0
// +optional
MaxIdleConns int `json:"maxIdleConns,omitempty"`
// ConnMaxLifetime is the maximum amount of time a connection may be reused (Go duration format)
// Examples: "30m", "1h", "24h"
// +kubebuilder:validation:Pattern=^([0-9]+(\.[0-9]+)?(ns|us|µs|ms|s|m|h))+$
// +kubebuilder:default="30m"
// +optional
ConnMaxLifetime string `json:"connMaxLifetime,omitempty"`
// DBAppUserPasswordSecretRef references a Kubernetes Secret containing the password for the application database user.
// The operator will use this password along with DBMigrationUserPasswordSecretRef to generate a pgpass file
// that is mounted to the registry API container.
//
// +kubebuilder:validation:Required
DBAppUserPasswordSecretRef corev1.SecretKeySelector `json:"dbAppUserPasswordSecretRef"`
// DBMigrationUserPasswordSecretRef references a Kubernetes Secret containing the password for the migration database user.
// The operator will use this password along with DBAppUserPasswordSecretRef to generate a pgpass file
// that is mounted to the registry API container.
//
// +kubebuilder:validation:Required
DBMigrationUserPasswordSecretRef corev1.SecretKeySelector `json:"dbMigrationUserPasswordSecretRef"`
}
MCPRegistryDatabaseConfig defines PostgreSQL database configuration for the registry API server. Uses a two-user security model: separate users for operations and migrations.
func (*MCPRegistryDatabaseConfig) DeepCopy ¶ added in v0.6.9
func (in *MCPRegistryDatabaseConfig) DeepCopy() *MCPRegistryDatabaseConfig
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new MCPRegistryDatabaseConfig.
func (*MCPRegistryDatabaseConfig) DeepCopyInto ¶ added in v0.6.9
func (in *MCPRegistryDatabaseConfig) DeepCopyInto(out *MCPRegistryDatabaseConfig)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type MCPRegistryList ¶ added in v0.2.17
type MCPRegistryList struct {
metav1.TypeMeta `json:",inline"` // nolint:revive
metav1.ListMeta `json:"metadata,omitempty"`
Items []MCPRegistry `json:"items"`
}
MCPRegistryList contains a list of MCPRegistry
func (*MCPRegistryList) DeepCopy ¶ added in v0.2.17
func (in *MCPRegistryList) DeepCopy() *MCPRegistryList
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new MCPRegistryList.
func (*MCPRegistryList) DeepCopyInto ¶ added in v0.2.17
func (in *MCPRegistryList) DeepCopyInto(out *MCPRegistryList)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (*MCPRegistryList) DeepCopyObject ¶ added in v0.2.17
func (in *MCPRegistryList) DeepCopyObject() runtime.Object
DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
type MCPRegistryPhase ¶ added in v0.2.17
type MCPRegistryPhase string
MCPRegistryPhase represents the phase of the MCPRegistry +kubebuilder:validation:Enum=Pending;Ready;Failed;Syncing;Terminating
const ( // MCPRegistryPhasePending means the MCPRegistry is being initialized MCPRegistryPhasePending MCPRegistryPhase = "Pending" // MCPRegistryPhaseReady means the MCPRegistry is ready and operational MCPRegistryPhaseReady MCPRegistryPhase = "Ready" // MCPRegistryPhaseFailed means the MCPRegistry has failed MCPRegistryPhaseFailed MCPRegistryPhase = "Failed" // MCPRegistryPhaseSyncing means the MCPRegistry is currently syncing data MCPRegistryPhaseSyncing MCPRegistryPhase = "Syncing" // MCPRegistryPhaseTerminating means the MCPRegistry is being deleted MCPRegistryPhaseTerminating MCPRegistryPhase = "Terminating" )
type MCPRegistrySpec ¶ added in v0.2.17
type MCPRegistrySpec struct {
// DisplayName is a human-readable name for the registry
// +optional
DisplayName string `json:"displayName,omitempty"`
// Registries defines the configuration for the registry data sources
// +kubebuilder:validation:Required
// +kubebuilder:validation:MinItems=1
Registries []MCPRegistryConfig `json:"registries"`
// EnforceServers indicates whether MCPServers in this namespace must have their images
// present in at least one registry in the namespace. When any registry in the namespace
// has this field set to true, enforcement is enabled for the entire namespace.
// MCPServers with images not found in any registry will be rejected.
// When false (default), MCPServers can be deployed regardless of registry presence.
// +kubebuilder:default=false
// +optional
EnforceServers bool `json:"enforceServers,omitempty"`
// PodTemplateSpec defines the pod template to use for the registry API server
// This allows for customizing the pod configuration beyond what is provided by the other fields.
// Note that to modify the specific container the registry API server runs in, you must specify
// the `registry-api` container name in the PodTemplateSpec.
// This field accepts a PodTemplateSpec object as JSON/YAML.
// +optional
// +kubebuilder:pruning:PreserveUnknownFields
// +kubebuilder:validation:Type=object
PodTemplateSpec *runtime.RawExtension `json:"podTemplateSpec,omitempty"`
// DatabaseConfig defines the PostgreSQL database configuration for the registry API server.
// If not specified, defaults will be used:
// - Host: "postgres"
// - Port: 5432
// - User: "db_app"
// - MigrationUser: "db_migrator"
// - Database: "registry"
// - SSLMode: "prefer"
// - MaxOpenConns: 10
// - MaxIdleConns: 2
// - ConnMaxLifetime: "30m"
// +optional
DatabaseConfig *MCPRegistryDatabaseConfig `json:"databaseConfig,omitempty"`
}
MCPRegistrySpec defines the desired state of MCPRegistry
func (*MCPRegistrySpec) DeepCopy ¶ added in v0.2.17
func (in *MCPRegistrySpec) DeepCopy() *MCPRegistrySpec
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new MCPRegistrySpec.
func (*MCPRegistrySpec) DeepCopyInto ¶ added in v0.2.17
func (in *MCPRegistrySpec) DeepCopyInto(out *MCPRegistrySpec)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type MCPRegistryStatus ¶ added in v0.2.17
type MCPRegistryStatus struct {
// Phase represents the current overall phase of the MCPRegistry
// Derived from sync and API status
// +optional
Phase MCPRegistryPhase `json:"phase,omitempty"`
// Message provides additional information about the current phase
// +optional
Message string `json:"message,omitempty"`
// SyncStatus provides detailed information about data synchronization
// +optional
SyncStatus *SyncStatus `json:"syncStatus,omitempty"`
// APIStatus provides detailed information about the API service
// +optional
APIStatus *APIStatus `json:"apiStatus,omitempty"`
// LastAppliedFilterHash is the hash of the last applied filter
// +optional
LastAppliedFilterHash string `json:"lastAppliedFilterHash,omitempty"`
// StorageRef is a reference to the internal storage location
// +optional
StorageRef *StorageReference `json:"storageRef,omitempty"`
// LastManualSyncTrigger tracks the last processed manual sync annotation value
// Used to detect new manual sync requests via toolhive.stacklok.dev/sync-trigger annotation
// +optional
LastManualSyncTrigger string `json:"lastManualSyncTrigger,omitempty"`
// Conditions represent the latest available observations of the MCPRegistry's state
// +optional
// +listType=map
// +listMapKey=type
Conditions []metav1.Condition `json:"conditions,omitempty"`
}
MCPRegistryStatus defines the observed state of MCPRegistry
func (*MCPRegistryStatus) DeepCopy ¶ added in v0.2.17
func (in *MCPRegistryStatus) DeepCopy() *MCPRegistryStatus
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new MCPRegistryStatus.
func (*MCPRegistryStatus) DeepCopyInto ¶ added in v0.2.17
func (in *MCPRegistryStatus) DeepCopyInto(out *MCPRegistryStatus)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type MCPRemoteProxy ¶ added in v0.3.10
type MCPRemoteProxy struct {
metav1.TypeMeta `json:",inline"` // nolint:revive
metav1.ObjectMeta `json:"metadata,omitempty"`
Spec MCPRemoteProxySpec `json:"spec,omitempty"`
Status MCPRemoteProxyStatus `json:"status,omitempty"`
}
MCPRemoteProxy is the Schema for the mcpremoteproxies API It enables proxying remote MCP servers with authentication, authorization, audit logging, and tool filtering
func (*MCPRemoteProxy) DeepCopy ¶ added in v0.3.10
func (in *MCPRemoteProxy) DeepCopy() *MCPRemoteProxy
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new MCPRemoteProxy.
func (*MCPRemoteProxy) DeepCopyInto ¶ added in v0.3.10
func (in *MCPRemoteProxy) DeepCopyInto(out *MCPRemoteProxy)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (*MCPRemoteProxy) DeepCopyObject ¶ added in v0.3.10
func (in *MCPRemoteProxy) DeepCopyObject() runtime.Object
DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
func (*MCPRemoteProxy) GetName ¶ added in v0.3.10
func (m *MCPRemoteProxy) GetName() string
GetName returns the name of the MCPRemoteProxy
func (*MCPRemoteProxy) GetNamespace ¶ added in v0.3.10
func (m *MCPRemoteProxy) GetNamespace() string
GetNamespace returns the namespace of the MCPRemoteProxy
func (*MCPRemoteProxy) GetOIDCConfig ¶ added in v0.3.10
func (m *MCPRemoteProxy) GetOIDCConfig() *OIDCConfigRef
GetOIDCConfig returns the OIDC configuration reference
func (*MCPRemoteProxy) GetProxyPort ¶ added in v0.5.1
func (m *MCPRemoteProxy) GetProxyPort() int32
GetProxyPort returns the proxy port of the MCPRemoteProxy
type MCPRemoteProxyList ¶ added in v0.3.10
type MCPRemoteProxyList struct {
metav1.TypeMeta `json:",inline"` // nolint:revive
metav1.ListMeta `json:"metadata,omitempty"`
Items []MCPRemoteProxy `json:"items"`
}
MCPRemoteProxyList contains a list of MCPRemoteProxy
func (*MCPRemoteProxyList) DeepCopy ¶ added in v0.3.10
func (in *MCPRemoteProxyList) DeepCopy() *MCPRemoteProxyList
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new MCPRemoteProxyList.
func (*MCPRemoteProxyList) DeepCopyInto ¶ added in v0.3.10
func (in *MCPRemoteProxyList) DeepCopyInto(out *MCPRemoteProxyList)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (*MCPRemoteProxyList) DeepCopyObject ¶ added in v0.3.10
func (in *MCPRemoteProxyList) DeepCopyObject() runtime.Object
DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
type MCPRemoteProxyPhase ¶ added in v0.3.10
type MCPRemoteProxyPhase string
MCPRemoteProxyPhase is a label for the condition of a MCPRemoteProxy at the current time +kubebuilder:validation:Enum=Pending;Ready;Failed;Terminating
const ( // MCPRemoteProxyPhasePending means the proxy is being created MCPRemoteProxyPhasePending MCPRemoteProxyPhase = "Pending" // MCPRemoteProxyPhaseReady means the proxy is ready and operational MCPRemoteProxyPhaseReady MCPRemoteProxyPhase = "Ready" // MCPRemoteProxyPhaseFailed means the proxy failed to start or encountered an error MCPRemoteProxyPhaseFailed MCPRemoteProxyPhase = "Failed" // MCPRemoteProxyPhaseTerminating means the proxy is being deleted MCPRemoteProxyPhaseTerminating MCPRemoteProxyPhase = "Terminating" )
type MCPRemoteProxySpec ¶ added in v0.3.10
type MCPRemoteProxySpec struct {
// RemoteURL is the URL of the remote MCP server to proxy
// +kubebuilder:validation:Required
// +kubebuilder:validation:Pattern=`^https?://`
RemoteURL string `json:"remoteURL"`
// Port is the port to expose the MCP proxy on
// +kubebuilder:validation:Minimum=1
// +kubebuilder:validation:Maximum=65535
// +kubebuilder:default=8080
Port int32 `json:"port,omitempty"`
// Transport is the transport method for the remote proxy (sse or streamable-http)
// +kubebuilder:validation:Enum=sse;streamable-http
// +kubebuilder:default=streamable-http
Transport string `json:"transport,omitempty"`
// OIDCConfig defines OIDC authentication configuration for the proxy
// This validates incoming tokens from clients. Required for proxy mode.
// +kubebuilder:validation:Required
OIDCConfig OIDCConfigRef `json:"oidcConfig"`
// ExternalAuthConfigRef references a MCPExternalAuthConfig resource for token exchange.
// When specified, the proxy will exchange validated incoming tokens for remote service tokens.
// The referenced MCPExternalAuthConfig must exist in the same namespace as this MCPRemoteProxy.
// +optional
ExternalAuthConfigRef *ExternalAuthConfigRef `json:"externalAuthConfigRef,omitempty"`
// AuthzConfig defines authorization policy configuration for the proxy
// +optional
AuthzConfig *AuthzConfigRef `json:"authzConfig,omitempty"`
// Audit defines audit logging configuration for the proxy
// +optional
Audit *AuditConfig `json:"audit,omitempty"`
// ToolConfigRef references a MCPToolConfig resource for tool filtering and renaming.
// The referenced MCPToolConfig must exist in the same namespace as this MCPRemoteProxy.
// Cross-namespace references are not supported for security and isolation reasons.
// If specified, this allows filtering and overriding tools from the remote MCP server.
// +optional
ToolConfigRef *ToolConfigRef `json:"toolConfigRef,omitempty"`
// Telemetry defines observability configuration for the proxy
// +optional
Telemetry *TelemetryConfig `json:"telemetry,omitempty"`
// Resources defines the resource requirements for the proxy container
// +optional
Resources ResourceRequirements `json:"resources,omitempty"`
// TrustProxyHeaders indicates whether to trust X-Forwarded-* headers from reverse proxies
// When enabled, the proxy will use X-Forwarded-Proto, X-Forwarded-Host, X-Forwarded-Port,
// and X-Forwarded-Prefix headers to construct endpoint URLs
// +kubebuilder:default=false
// +optional
TrustProxyHeaders bool `json:"trustProxyHeaders,omitempty"`
// ResourceOverrides allows overriding annotations and labels for resources created by the operator
// +optional
ResourceOverrides *ResourceOverrides `json:"resourceOverrides,omitempty"`
// GroupRef is the name of the MCPGroup this proxy belongs to
// Must reference an existing MCPGroup in the same namespace
// +optional
GroupRef string `json:"groupRef,omitempty"`
}
MCPRemoteProxySpec defines the desired state of MCPRemoteProxy
func (*MCPRemoteProxySpec) DeepCopy ¶ added in v0.3.10
func (in *MCPRemoteProxySpec) DeepCopy() *MCPRemoteProxySpec
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new MCPRemoteProxySpec.
func (*MCPRemoteProxySpec) DeepCopyInto ¶ added in v0.3.10
func (in *MCPRemoteProxySpec) DeepCopyInto(out *MCPRemoteProxySpec)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type MCPRemoteProxyStatus ¶ added in v0.3.10
type MCPRemoteProxyStatus struct {
// Phase is the current phase of the MCPRemoteProxy
// +optional
Phase MCPRemoteProxyPhase `json:"phase,omitempty"`
// URL is the internal cluster URL where the proxy can be accessed
// +optional
URL string `json:"url,omitempty"`
// ExternalURL is the external URL where the proxy can be accessed (if exposed externally)
// +optional
ExternalURL string `json:"externalURL,omitempty"`
// ObservedGeneration reflects the generation of the most recently observed MCPRemoteProxy
// +optional
ObservedGeneration int64 `json:"observedGeneration,omitempty"`
// Conditions represent the latest available observations of the MCPRemoteProxy's state
// +optional
Conditions []metav1.Condition `json:"conditions,omitempty"`
// ToolConfigHash stores the hash of the referenced ToolConfig for change detection
// +optional
ToolConfigHash string `json:"toolConfigHash,omitempty"`
// ExternalAuthConfigHash is the hash of the referenced MCPExternalAuthConfig spec
// +optional
ExternalAuthConfigHash string `json:"externalAuthConfigHash,omitempty"`
// Message provides additional information about the current phase
// +optional
Message string `json:"message,omitempty"`
}
MCPRemoteProxyStatus defines the observed state of MCPRemoteProxy
func (*MCPRemoteProxyStatus) DeepCopy ¶ added in v0.3.10
func (in *MCPRemoteProxyStatus) DeepCopy() *MCPRemoteProxyStatus
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new MCPRemoteProxyStatus.
func (*MCPRemoteProxyStatus) DeepCopyInto ¶ added in v0.3.10
func (in *MCPRemoteProxyStatus) DeepCopyInto(out *MCPRemoteProxyStatus)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type MCPServer ¶
type MCPServer struct {
metav1.TypeMeta `json:",inline"` // nolint:revive
metav1.ObjectMeta `json:"metadata,omitempty"`
Spec MCPServerSpec `json:"spec,omitempty"`
Status MCPServerStatus `json:"status,omitempty"`
}
MCPServer is the Schema for the mcpservers API
func (*MCPServer) DeepCopy ¶
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new MCPServer.
func (*MCPServer) DeepCopyInto ¶
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (*MCPServer) DeepCopyObject ¶
DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
func (*MCPServer) GetMcpPort ¶ added in v0.5.1
GetMcpPort returns the MCP port of the MCPServer
func (*MCPServer) GetNamespace ¶ added in v0.3.10
GetNamespace returns the namespace of the MCPServer
func (*MCPServer) GetOIDCConfig ¶ added in v0.3.10
func (m *MCPServer) GetOIDCConfig() *OIDCConfigRef
GetOIDCConfig returns the OIDC configuration reference
func (*MCPServer) GetProxyPort ¶ added in v0.5.1
GetProxyPort returns the proxy port of the MCPServer
type MCPServerList ¶
type MCPServerList struct {
metav1.TypeMeta `json:",inline"` // nolint:revive
metav1.ListMeta `json:"metadata,omitempty"`
Items []MCPServer `json:"items"`
}
MCPServerList contains a list of MCPServer
func (*MCPServerList) DeepCopy ¶
func (in *MCPServerList) DeepCopy() *MCPServerList
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new MCPServerList.
func (*MCPServerList) DeepCopyInto ¶
func (in *MCPServerList) DeepCopyInto(out *MCPServerList)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (*MCPServerList) DeepCopyObject ¶
func (in *MCPServerList) DeepCopyObject() runtime.Object
DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
type MCPServerPhase ¶
type MCPServerPhase string
MCPServerPhase is the phase of the MCPServer +kubebuilder:validation:Enum=Pending;Running;Failed;Terminating
const ( // MCPServerPhasePending means the MCPServer is being created MCPServerPhasePending MCPServerPhase = "Pending" // MCPServerPhaseRunning means the MCPServer is running MCPServerPhaseRunning MCPServerPhase = "Running" // MCPServerPhaseFailed means the MCPServer failed to start MCPServerPhaseFailed MCPServerPhase = "Failed" // MCPServerPhaseTerminating means the MCPServer is being deleted MCPServerPhaseTerminating MCPServerPhase = "Terminating" )
type MCPServerSpec ¶
type MCPServerSpec struct {
// Image is the container image for the MCP server
// +kubebuilder:validation:Required
Image string `json:"image"`
// Transport is the transport method for the MCP server (stdio, streamable-http or sse)
// +kubebuilder:validation:Enum=stdio;streamable-http;sse
// +kubebuilder:default=stdio
Transport string `json:"transport,omitempty"`
// ProxyMode is the proxy mode for stdio transport (sse or streamable-http)
// This setting is only used when Transport is "stdio"
// +kubebuilder:validation:Enum=sse;streamable-http
// +kubebuilder:default=streamable-http
// +optional
ProxyMode string `json:"proxyMode,omitempty"`
// Port is the port to expose the MCP server on
// +kubebuilder:validation:Minimum=1
// +kubebuilder:validation:Maximum=65535
// +kubebuilder:default=8080
// Deprecated: Use ProxyPort instead
Port int32 `json:"port,omitempty"`
// TargetPort is the port that MCP server listens to
// +kubebuilder:validation:Minimum=1
// +kubebuilder:validation:Maximum=65535
// +optional
// Deprecated: Use McpPort instead
TargetPort int32 `json:"targetPort,omitempty"`
// ProxyPort is the port to expose the proxy runner on
// +kubebuilder:validation:Minimum=1
// +kubebuilder:validation:Maximum=65535
// +kubebuilder:default=8080
ProxyPort int32 `json:"proxyPort,omitempty"`
// McpPort is the port that MCP server listens to
// +kubebuilder:validation:Minimum=1
// +kubebuilder:validation:Maximum=65535
// +optional
McpPort int32 `json:"mcpPort,omitempty"`
// Args are additional arguments to pass to the MCP server
// +optional
Args []string `json:"args,omitempty"`
// Env are environment variables to set in the MCP server container
// +optional
Env []EnvVar `json:"env,omitempty"`
// Volumes are volumes to mount in the MCP server container
// +optional
Volumes []Volume `json:"volumes,omitempty"`
// Resources defines the resource requirements for the MCP server container
// +optional
Resources ResourceRequirements `json:"resources,omitempty"`
// Secrets are references to secrets to mount in the MCP server container
// +optional
Secrets []SecretRef `json:"secrets,omitempty"`
// ServiceAccount is the name of an already existing service account to use by the MCP server.
// If not specified, a ServiceAccount will be created automatically and used by the MCP server.
// +optional
ServiceAccount *string `json:"serviceAccount,omitempty"`
// PermissionProfile defines the permission profile to use
// +optional
PermissionProfile *PermissionProfileRef `json:"permissionProfile,omitempty"`
// PodTemplateSpec defines the pod template to use for the MCP server
// This allows for customizing the pod configuration beyond what is provided by the other fields.
// Note that to modify the specific container the MCP server runs in, you must specify
// the `mcp` container name in the PodTemplateSpec.
// This field accepts a PodTemplateSpec object as JSON/YAML.
// +optional
// +kubebuilder:pruning:PreserveUnknownFields
// +kubebuilder:validation:Type=object
PodTemplateSpec *runtime.RawExtension `json:"podTemplateSpec,omitempty"`
// ResourceOverrides allows overriding annotations and labels for resources created by the operator
// +optional
ResourceOverrides *ResourceOverrides `json:"resourceOverrides,omitempty"`
// OIDCConfig defines OIDC authentication configuration for the MCP server
// +optional
OIDCConfig *OIDCConfigRef `json:"oidcConfig,omitempty"`
// AuthzConfig defines authorization policy configuration for the MCP server
// +optional
AuthzConfig *AuthzConfigRef `json:"authzConfig,omitempty"`
// Audit defines audit logging configuration for the MCP server
// +optional
Audit *AuditConfig `json:"audit,omitempty"`
// ToolsFilter is the filter on tools applied to the MCP server
// Deprecated: Use ToolConfigRef instead
// +optional
ToolsFilter []string `json:"tools,omitempty"`
// ToolConfigRef references a MCPToolConfig resource for tool filtering and renaming.
// The referenced MCPToolConfig must exist in the same namespace as this MCPServer.
// Cross-namespace references are not supported for security and isolation reasons.
// If specified, this takes precedence over the inline ToolsFilter field.
// +optional
ToolConfigRef *ToolConfigRef `json:"toolConfigRef,omitempty"`
// ExternalAuthConfigRef references a MCPExternalAuthConfig resource for external authentication.
// The referenced MCPExternalAuthConfig must exist in the same namespace as this MCPServer.
// +optional
ExternalAuthConfigRef *ExternalAuthConfigRef `json:"externalAuthConfigRef,omitempty"`
// Telemetry defines observability configuration for the MCP server
// +optional
Telemetry *TelemetryConfig `json:"telemetry,omitempty"`
// TrustProxyHeaders indicates whether to trust X-Forwarded-* headers from reverse proxies
// When enabled, the proxy will use X-Forwarded-Proto, X-Forwarded-Host, X-Forwarded-Port,
// and X-Forwarded-Prefix headers to construct endpoint URLs
// +kubebuilder:default=false
// +optional
TrustProxyHeaders bool `json:"trustProxyHeaders,omitempty"`
// GroupRef is the name of the MCPGroup this server belongs to
// Must reference an existing MCPGroup in the same namespace
// +optional
GroupRef string `json:"groupRef,omitempty"`
}
MCPServerSpec defines the desired state of MCPServer
func (*MCPServerSpec) DeepCopy ¶
func (in *MCPServerSpec) DeepCopy() *MCPServerSpec
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new MCPServerSpec.
func (*MCPServerSpec) DeepCopyInto ¶
func (in *MCPServerSpec) DeepCopyInto(out *MCPServerSpec)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type MCPServerStatus ¶
type MCPServerStatus struct {
// Conditions represent the latest available observations of the MCPServer's state
// +optional
Conditions []metav1.Condition `json:"conditions,omitempty"`
// ToolConfigHash stores the hash of the referenced ToolConfig for change detection
// +optional
ToolConfigHash string `json:"toolConfigHash,omitempty"`
// ExternalAuthConfigHash is the hash of the referenced MCPExternalAuthConfig spec
// +optional
ExternalAuthConfigHash string `json:"externalAuthConfigHash,omitempty"`
// URL is the URL where the MCP server can be accessed
// +optional
URL string `json:"url,omitempty"`
// Phase is the current phase of the MCPServer
// +optional
Phase MCPServerPhase `json:"phase,omitempty"`
// Message provides additional information about the current phase
// +optional
Message string `json:"message,omitempty"`
}
MCPServerStatus defines the observed state of MCPServer
func (*MCPServerStatus) DeepCopy ¶
func (in *MCPServerStatus) DeepCopy() *MCPServerStatus
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new MCPServerStatus.
func (*MCPServerStatus) DeepCopyInto ¶
func (in *MCPServerStatus) DeepCopyInto(out *MCPServerStatus)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type MCPToolConfig ¶ added in v0.3.0
type MCPToolConfig struct {
metav1.TypeMeta `json:",inline"` // nolint:revive
metav1.ObjectMeta `json:"metadata,omitempty"`
Spec MCPToolConfigSpec `json:"spec,omitempty"`
Status MCPToolConfigStatus `json:"status,omitempty"`
}
MCPToolConfig is the Schema for the mcptoolconfigs API. MCPToolConfig resources are namespace-scoped and can only be referenced by MCPServer resources within the same namespace. Cross-namespace references are not supported for security and isolation reasons.
func (*MCPToolConfig) DeepCopy ¶ added in v0.3.0
func (in *MCPToolConfig) DeepCopy() *MCPToolConfig
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new MCPToolConfig.
func (*MCPToolConfig) DeepCopyInto ¶ added in v0.3.0
func (in *MCPToolConfig) DeepCopyInto(out *MCPToolConfig)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (*MCPToolConfig) DeepCopyObject ¶ added in v0.3.0
func (in *MCPToolConfig) DeepCopyObject() runtime.Object
DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
type MCPToolConfigList ¶ added in v0.3.0
type MCPToolConfigList struct {
metav1.TypeMeta `json:",inline"` // nolint:revive
metav1.ListMeta `json:"metadata,omitempty"`
Items []MCPToolConfig `json:"items"`
}
MCPToolConfigList contains a list of MCPToolConfig
func (*MCPToolConfigList) DeepCopy ¶ added in v0.3.0
func (in *MCPToolConfigList) DeepCopy() *MCPToolConfigList
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new MCPToolConfigList.
func (*MCPToolConfigList) DeepCopyInto ¶ added in v0.3.0
func (in *MCPToolConfigList) DeepCopyInto(out *MCPToolConfigList)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (*MCPToolConfigList) DeepCopyObject ¶ added in v0.3.0
func (in *MCPToolConfigList) DeepCopyObject() runtime.Object
DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
type MCPToolConfigSpec ¶ added in v0.3.0
type MCPToolConfigSpec struct {
// ToolsFilter is a list of tool names to filter (allow list).
// Only tools in this list will be exposed by the MCP server.
// If empty, all tools are exposed.
// +optional
ToolsFilter []string `json:"toolsFilter,omitempty"`
// ToolsOverride is a map from actual tool names to their overridden configuration.
// This allows renaming tools and/or changing their descriptions.
// +optional
ToolsOverride map[string]ToolOverride `json:"toolsOverride,omitempty"`
}
MCPToolConfigSpec defines the desired state of MCPToolConfig. MCPToolConfig resources are namespace-scoped and can only be referenced by MCPServer resources in the same namespace.
func (*MCPToolConfigSpec) DeepCopy ¶ added in v0.3.0
func (in *MCPToolConfigSpec) DeepCopy() *MCPToolConfigSpec
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new MCPToolConfigSpec.
func (*MCPToolConfigSpec) DeepCopyInto ¶ added in v0.3.0
func (in *MCPToolConfigSpec) DeepCopyInto(out *MCPToolConfigSpec)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type MCPToolConfigStatus ¶ added in v0.3.0
type MCPToolConfigStatus struct {
// ObservedGeneration is the most recent generation observed for this MCPToolConfig.
// It corresponds to the MCPToolConfig's generation, which is updated on mutation by the API Server.
// +optional
ObservedGeneration int64 `json:"observedGeneration,omitempty"`
// ConfigHash is a hash of the current configuration for change detection
// +optional
ConfigHash string `json:"configHash,omitempty"`
// ReferencingServers is a list of MCPServer resources that reference this MCPToolConfig
// This helps track which servers need to be reconciled when this config changes
// +optional
ReferencingServers []string `json:"referencingServers,omitempty"`
}
MCPToolConfigStatus defines the observed state of MCPToolConfig
func (*MCPToolConfigStatus) DeepCopy ¶ added in v0.3.0
func (in *MCPToolConfigStatus) DeepCopy() *MCPToolConfigStatus
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new MCPToolConfigStatus.
func (*MCPToolConfigStatus) DeepCopyInto ¶ added in v0.3.0
func (in *MCPToolConfigStatus) DeepCopyInto(out *MCPToolConfigStatus)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type NameFilter ¶ added in v0.2.17
type NameFilter struct {
// Include is a list of glob patterns to include
// +optional
Include []string `json:"include,omitempty"`
// Exclude is a list of glob patterns to exclude
// +optional
Exclude []string `json:"exclude,omitempty"`
}
NameFilter defines name-based filtering
func (*NameFilter) DeepCopy ¶ added in v0.2.17
func (in *NameFilter) DeepCopy() *NameFilter
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new NameFilter.
func (*NameFilter) DeepCopyInto ¶ added in v0.2.17
func (in *NameFilter) DeepCopyInto(out *NameFilter)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type NetworkPermissions ¶
type NetworkPermissions struct {
// Mode specifies the network mode for the container (e.g., "host", "bridge", "none")
// When empty, the default container runtime network mode is used
// +optional
Mode string `json:"mode,omitempty"`
// Outbound defines the outbound network permissions
// +optional
Outbound *OutboundNetworkPermissions `json:"outbound,omitempty"`
}
NetworkPermissions defines the network permissions for an MCP server
func (*NetworkPermissions) DeepCopy ¶
func (in *NetworkPermissions) DeepCopy() *NetworkPermissions
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new NetworkPermissions.
func (*NetworkPermissions) DeepCopyInto ¶
func (in *NetworkPermissions) DeepCopyInto(out *NetworkPermissions)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type OIDCConfigRef ¶ added in v0.0.40
type OIDCConfigRef struct {
// Type is the type of OIDC configuration
// +kubebuilder:validation:Enum=kubernetes;configMap;inline
// +kubebuilder:default=kubernetes
Type string `json:"type"`
// ResourceURL is the explicit resource URL for OAuth discovery endpoint (RFC 9728)
// If not specified, defaults to the in-cluster Kubernetes service URL
// +optional
ResourceURL string `json:"resourceUrl,omitempty"`
// Kubernetes configures OIDC for Kubernetes service account token validation
// Only used when Type is "kubernetes"
// +optional
Kubernetes *KubernetesOIDCConfig `json:"kubernetes,omitempty"`
// ConfigMap references a ConfigMap containing OIDC configuration
// Only used when Type is "configmap"
// +optional
ConfigMap *ConfigMapOIDCRef `json:"configMap,omitempty"`
// Inline contains direct OIDC configuration
// Only used when Type is "inline"
// +optional
Inline *InlineOIDCConfig `json:"inline,omitempty"`
}
OIDCConfigRef defines a reference to OIDC configuration
func (*OIDCConfigRef) DeepCopy ¶ added in v0.0.40
func (in *OIDCConfigRef) DeepCopy() *OIDCConfigRef
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new OIDCConfigRef.
func (*OIDCConfigRef) DeepCopyInto ¶ added in v0.0.40
func (in *OIDCConfigRef) DeepCopyInto(out *OIDCConfigRef)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type OpenTelemetryConfig ¶ added in v0.2.14
type OpenTelemetryConfig struct {
// Enabled controls whether OpenTelemetry is enabled
// +kubebuilder:default=false
// +optional
Enabled bool `json:"enabled,omitempty"`
// Endpoint is the OTLP endpoint URL for tracing and metrics
// +optional
Endpoint string `json:"endpoint,omitempty"`
// ServiceName is the service name for telemetry
// If not specified, defaults to the MCPServer name
// +optional
ServiceName string `json:"serviceName,omitempty"`
// Headers contains authentication headers for the OTLP endpoint
// Specified as key=value pairs
// +optional
Headers []string `json:"headers,omitempty"`
// Insecure indicates whether to use HTTP instead of HTTPS for the OTLP endpoint
// +kubebuilder:default=false
// +optional
Insecure bool `json:"insecure,omitempty"`
// Metrics defines OpenTelemetry metrics-specific configuration
// +optional
Metrics *OpenTelemetryMetricsConfig `json:"metrics,omitempty"`
// Tracing defines OpenTelemetry tracing configuration
// +optional
Tracing *OpenTelemetryTracingConfig `json:"tracing,omitempty"`
}
OpenTelemetryConfig defines pure OpenTelemetry configuration
func (*OpenTelemetryConfig) DeepCopy ¶ added in v0.2.14
func (in *OpenTelemetryConfig) DeepCopy() *OpenTelemetryConfig
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new OpenTelemetryConfig.
func (*OpenTelemetryConfig) DeepCopyInto ¶ added in v0.2.14
func (in *OpenTelemetryConfig) DeepCopyInto(out *OpenTelemetryConfig)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type OpenTelemetryMetricsConfig ¶ added in v0.2.14
type OpenTelemetryMetricsConfig struct {
// Enabled controls whether OTLP metrics are sent
// +kubebuilder:default=false
// +optional
Enabled bool `json:"enabled,omitempty"`
}
OpenTelemetryMetricsConfig defines OpenTelemetry metrics configuration
func (*OpenTelemetryMetricsConfig) DeepCopy ¶ added in v0.2.14
func (in *OpenTelemetryMetricsConfig) DeepCopy() *OpenTelemetryMetricsConfig
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new OpenTelemetryMetricsConfig.
func (*OpenTelemetryMetricsConfig) DeepCopyInto ¶ added in v0.2.14
func (in *OpenTelemetryMetricsConfig) DeepCopyInto(out *OpenTelemetryMetricsConfig)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type OpenTelemetryTracingConfig ¶ added in v0.2.17
type OpenTelemetryTracingConfig struct {
// Enabled controls whether OTLP tracing is sent
// +kubebuilder:default=false
// +optional
Enabled bool `json:"enabled,omitempty"`
// SamplingRate is the trace sampling rate (0.0-1.0)
// +kubebuilder:default="0.05"
// +optional
SamplingRate string `json:"samplingRate,omitempty"`
}
OpenTelemetryTracingConfig defines OpenTelemetry tracing configuration
func (*OpenTelemetryTracingConfig) DeepCopy ¶ added in v0.2.17
func (in *OpenTelemetryTracingConfig) DeepCopy() *OpenTelemetryTracingConfig
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new OpenTelemetryTracingConfig.
func (*OpenTelemetryTracingConfig) DeepCopyInto ¶ added in v0.2.17
func (in *OpenTelemetryTracingConfig) DeepCopyInto(out *OpenTelemetryTracingConfig)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type OperationalConfig ¶ added in v0.5.2
type OperationalConfig struct {
// LogLevel sets the logging level for the Virtual MCP server.
// Set to "debug" to enable debug logging. When not set, defaults to info level.
// +kubebuilder:validation:Enum=debug
// +optional
LogLevel string `json:"logLevel,omitempty"`
// Timeouts configures timeout settings
// +optional
Timeouts *TimeoutConfig `json:"timeouts,omitempty"`
// FailureHandling configures failure handling behavior
// +optional
FailureHandling *FailureHandlingConfig `json:"failureHandling,omitempty"`
}
OperationalConfig defines operational settings
func (*OperationalConfig) DeepCopy ¶ added in v0.5.2
func (in *OperationalConfig) DeepCopy() *OperationalConfig
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new OperationalConfig.
func (*OperationalConfig) DeepCopyInto ¶ added in v0.5.2
func (in *OperationalConfig) DeepCopyInto(out *OperationalConfig)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type OutboundNetworkPermissions ¶
type OutboundNetworkPermissions struct {
// InsecureAllowAll allows all outbound network connections (not recommended)
// +kubebuilder:default=false
// +optional
InsecureAllowAll bool `json:"insecureAllowAll,omitempty"`
// AllowHost is a list of hosts to allow connections to
// +optional
AllowHost []string `json:"allowHost,omitempty"`
// AllowPort is a list of ports to allow connections to
// +optional
AllowPort []int32 `json:"allowPort,omitempty"`
}
OutboundNetworkPermissions defines the outbound network permissions
func (*OutboundNetworkPermissions) DeepCopy ¶
func (in *OutboundNetworkPermissions) DeepCopy() *OutboundNetworkPermissions
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new OutboundNetworkPermissions.
func (*OutboundNetworkPermissions) DeepCopyInto ¶
func (in *OutboundNetworkPermissions) DeepCopyInto(out *OutboundNetworkPermissions)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type OutgoingAuthConfig ¶ added in v0.5.2
type OutgoingAuthConfig struct {
// Source defines how backend authentication configurations are determined
// - discovered: Automatically discover from backend's MCPServer.spec.externalAuthConfigRef
// - inline: Explicit per-backend configuration in VirtualMCPServer
// +kubebuilder:validation:Enum=discovered;inline
// +kubebuilder:default=discovered
// +optional
Source string `json:"source,omitempty"`
// Default defines default behavior for backends without explicit auth config
// +optional
Default *BackendAuthConfig `json:"default,omitempty"`
// Backends defines per-backend authentication overrides
// Works in all modes (discovered, inline)
// +optional
Backends map[string]BackendAuthConfig `json:"backends,omitempty"`
}
OutgoingAuthConfig configures authentication from Virtual MCP to backend MCPServers
func (*OutgoingAuthConfig) DeepCopy ¶ added in v0.5.2
func (in *OutgoingAuthConfig) DeepCopy() *OutgoingAuthConfig
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new OutgoingAuthConfig.
func (*OutgoingAuthConfig) DeepCopyInto ¶ added in v0.5.2
func (in *OutgoingAuthConfig) DeepCopyInto(out *OutgoingAuthConfig)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type OutputPropertySpec ¶ added in v0.6.10
type OutputPropertySpec struct {
// Type is the JSON Schema type: "string", "integer", "number", "boolean", "object", "array"
// +kubebuilder:validation:Required
// +kubebuilder:validation:Enum=string;integer;number;boolean;object;array
Type string `json:"type"`
// Description is a human-readable description exposed to clients and models
// +optional
Description string `json:"description,omitempty"`
// Value is a template string for constructing the runtime value
// Supports template syntax: {{.steps.step_id.output.field}}, {{.params.param_name}}
// For object types, this can be a JSON string that will be deserialized
// +optional
Value string `json:"value,omitempty"`
// Properties defines nested properties for object types
// +optional
// +kubebuilder:pruning:PreserveUnknownFields
// +kubebuilder:validation:Schemaless
Properties map[string]OutputPropertySpec `json:"properties,omitempty"`
// Default is the fallback value if template expansion fails
// +optional
// +kubebuilder:pruning:PreserveUnknownFields
// +kubebuilder:validation:Schemaless
Default *runtime.RawExtension `json:"default,omitempty"`
}
OutputPropertySpec defines a single output property
func (*OutputPropertySpec) DeepCopy ¶ added in v0.6.10
func (in *OutputPropertySpec) DeepCopy() *OutputPropertySpec
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new OutputPropertySpec.
func (*OutputPropertySpec) DeepCopyInto ¶ added in v0.6.10
func (in *OutputPropertySpec) DeepCopyInto(out *OutputPropertySpec)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type OutputSpec ¶ added in v0.6.10
type OutputSpec struct {
// Properties defines the output properties
// Map key is the property name, value is the property definition
// +optional
Properties map[string]OutputPropertySpec `json:"properties,omitempty"`
// Required lists property names that must be present in the output
// +optional
Required []string `json:"required,omitempty"`
}
OutputSpec defines the structured output schema for a composite tool workflow
func (*OutputSpec) DeepCopy ¶ added in v0.6.10
func (in *OutputSpec) DeepCopy() *OutputSpec
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new OutputSpec.
func (*OutputSpec) DeepCopyInto ¶ added in v0.6.10
func (in *OutputSpec) DeepCopyInto(out *OutputSpec)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type PVCSource ¶ added in v0.6.10
type PVCSource struct {
// ClaimName is the name of the PersistentVolumeClaim
// +kubebuilder:validation:Required
// +kubebuilder:validation:MinLength=1
ClaimName string `json:"claimName"`
// Path is the relative path to the registry file within the PVC.
// The PVC is mounted at /config/registry/{registryName}/.
// The full file path becomes: /config/registry/{registryName}/{path}
//
// This design:
// - Each registry gets its own mount point (consistent with ConfigMap sources)
// - Multiple registries can share the same PVC by mounting it at different paths
// - Users control PVC organization freely via the path field
//
// Examples:
// Registry "production" using PVC "shared-data" with path "prod/registry.json":
// PVC contains /prod/registry.json → accessed at /config/registry/production/prod/registry.json
//
// Registry "development" using SAME PVC "shared-data" with path "dev/registry.json":
// PVC contains /dev/registry.json → accessed at /config/registry/development/dev/registry.json
// (Same PVC, different mount path)
//
// Registry "staging" using DIFFERENT PVC "other-pvc" with path "registry.json":
// PVC contains /registry.json → accessed at /config/registry/staging/registry.json
// (Different PVC, independent mount)
//
// Registry "team-a" with path "v1/servers.json":
// PVC contains /v1/servers.json → accessed at /config/registry/team-a/v1/servers.json
// (Subdirectories allowed in path)
// +kubebuilder:validation:Pattern=^.*\.json$
// +kubebuilder:default=registry.json
// +optional
Path string `json:"path,omitempty"`
}
PVCSource defines PersistentVolumeClaim source configuration
func (*PVCSource) DeepCopy ¶ added in v0.6.10
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PVCSource.
func (*PVCSource) DeepCopyInto ¶ added in v0.6.10
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type PermissionProfileRef ¶
type PermissionProfileRef struct {
// Type is the type of permission profile reference
// +kubebuilder:validation:Enum=builtin;configmap
// +kubebuilder:default=builtin
Type string `json:"type"`
// Name is the name of the permission profile
// If Type is "builtin", Name must be one of: "none", "network"
// If Type is "configmap", Name is the name of the ConfigMap
// +kubebuilder:validation:Required
Name string `json:"name"`
// Key is the key in the ConfigMap that contains the permission profile
// Only used when Type is "configmap"
// +optional
Key string `json:"key,omitempty"`
}
PermissionProfileRef defines a reference to a permission profile
func (*PermissionProfileRef) DeepCopy ¶
func (in *PermissionProfileRef) DeepCopy() *PermissionProfileRef
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PermissionProfileRef.
func (*PermissionProfileRef) DeepCopyInto ¶
func (in *PermissionProfileRef) DeepCopyInto(out *PermissionProfileRef)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type PermissionProfileSpec ¶
type PermissionProfileSpec struct {
// Read is a list of paths that the MCP server can read from
// +optional
Read []string `json:"read,omitempty"`
// Write is a list of paths that the MCP server can write to
// +optional
Write []string `json:"write,omitempty"`
// Network defines the network permissions for the MCP server
// +optional
Network *NetworkPermissions `json:"network,omitempty"`
}
PermissionProfileSpec defines the permissions for an MCP server
func (*PermissionProfileSpec) DeepCopy ¶
func (in *PermissionProfileSpec) DeepCopy() *PermissionProfileSpec
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PermissionProfileSpec.
func (*PermissionProfileSpec) DeepCopyInto ¶
func (in *PermissionProfileSpec) DeepCopyInto(out *PermissionProfileSpec)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type PrometheusConfig ¶ added in v0.2.14
type PrometheusConfig struct {
// Enabled controls whether Prometheus metrics endpoint is exposed
// +kubebuilder:default=false
// +optional
Enabled bool `json:"enabled,omitempty"`
}
PrometheusConfig defines Prometheus-specific configuration
func (*PrometheusConfig) DeepCopy ¶ added in v0.2.14
func (in *PrometheusConfig) DeepCopy() *PrometheusConfig
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PrometheusConfig.
func (*PrometheusConfig) DeepCopyInto ¶ added in v0.2.14
func (in *PrometheusConfig) DeepCopyInto(out *PrometheusConfig)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type ProxyDeploymentOverrides ¶ added in v0.1.8
type ProxyDeploymentOverrides struct {
// ResourceMetadataOverrides is embedded to inherit annotations and labels fields
ResourceMetadataOverrides `json:",inline"` // nolint:revive
PodTemplateMetadataOverrides *ResourceMetadataOverrides `json:"podTemplateMetadataOverrides,omitempty"`
// Env are environment variables to set in the proxy container (thv run process)
// These affect the toolhive proxy itself, not the MCP server it manages
// Use TOOLHIVE_DEBUG=true to enable debug logging in the proxy
// +optional
Env []EnvVar `json:"env,omitempty"`
}
ProxyDeploymentOverrides defines overrides specific to the proxy deployment
func (*ProxyDeploymentOverrides) DeepCopy ¶ added in v0.1.8
func (in *ProxyDeploymentOverrides) DeepCopy() *ProxyDeploymentOverrides
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ProxyDeploymentOverrides.
func (*ProxyDeploymentOverrides) DeepCopyInto ¶ added in v0.1.8
func (in *ProxyDeploymentOverrides) DeepCopyInto(out *ProxyDeploymentOverrides)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type RegistryFilter ¶ added in v0.2.17
type RegistryFilter struct {
// NameFilters defines name-based filtering
// +optional
NameFilters *NameFilter `json:"names,omitempty"`
// Tags defines tag-based filtering
// +optional
Tags *TagFilter `json:"tags,omitempty"`
}
RegistryFilter defines include/exclude patterns for registry content
func (*RegistryFilter) DeepCopy ¶ added in v0.2.17
func (in *RegistryFilter) DeepCopy() *RegistryFilter
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RegistryFilter.
func (*RegistryFilter) DeepCopyInto ¶ added in v0.2.17
func (in *RegistryFilter) DeepCopyInto(out *RegistryFilter)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type ResourceList ¶
type ResourceList struct {
// CPU is the CPU limit in cores (e.g., "500m" for 0.5 cores)
// +optional
CPU string `json:"cpu,omitempty"`
// Memory is the memory limit in bytes (e.g., "64Mi" for 64 megabytes)
// +optional
Memory string `json:"memory,omitempty"`
}
ResourceList is a set of (resource name, quantity) pairs
func (*ResourceList) DeepCopy ¶
func (in *ResourceList) DeepCopy() *ResourceList
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ResourceList.
func (*ResourceList) DeepCopyInto ¶
func (in *ResourceList) DeepCopyInto(out *ResourceList)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type ResourceMetadataOverrides ¶ added in v0.0.40
type ResourceMetadataOverrides struct {
// Annotations to add or override on the resource
// +optional
Annotations map[string]string `json:"annotations,omitempty"`
// Labels to add or override on the resource
// +optional
Labels map[string]string `json:"labels,omitempty"`
}
ResourceMetadataOverrides defines metadata overrides for a resource
func (*ResourceMetadataOverrides) DeepCopy ¶ added in v0.0.40
func (in *ResourceMetadataOverrides) DeepCopy() *ResourceMetadataOverrides
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ResourceMetadataOverrides.
func (*ResourceMetadataOverrides) DeepCopyInto ¶ added in v0.0.40
func (in *ResourceMetadataOverrides) DeepCopyInto(out *ResourceMetadataOverrides)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type ResourceOverrides ¶ added in v0.0.40
type ResourceOverrides struct {
// ProxyDeployment defines overrides for the Proxy Deployment resource (toolhive proxy)
// +optional
ProxyDeployment *ProxyDeploymentOverrides `json:"proxyDeployment,omitempty"`
// ProxyService defines overrides for the Proxy Service resource (points to the proxy deployment)
// +optional
ProxyService *ResourceMetadataOverrides `json:"proxyService,omitempty"`
}
ResourceOverrides defines overrides for annotations and labels on created resources
func (*ResourceOverrides) DeepCopy ¶ added in v0.0.40
func (in *ResourceOverrides) DeepCopy() *ResourceOverrides
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ResourceOverrides.
func (*ResourceOverrides) DeepCopyInto ¶ added in v0.0.40
func (in *ResourceOverrides) DeepCopyInto(out *ResourceOverrides)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type ResourceRequirements ¶
type ResourceRequirements struct {
// Limits describes the maximum amount of compute resources allowed
// +optional
Limits ResourceList `json:"limits,omitempty"`
// Requests describes the minimum amount of compute resources required
// +optional
Requests ResourceList `json:"requests,omitempty"`
}
ResourceRequirements describes the compute resource requirements
func (*ResourceRequirements) DeepCopy ¶
func (in *ResourceRequirements) DeepCopy() *ResourceRequirements
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ResourceRequirements.
func (*ResourceRequirements) DeepCopyInto ¶
func (in *ResourceRequirements) DeepCopyInto(out *ResourceRequirements)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type RetryPolicy ¶ added in v0.5.2
type RetryPolicy struct {
// MaxRetries is the maximum number of retry attempts
// +kubebuilder:validation:Minimum=1
// +kubebuilder:validation:Maximum=10
// +kubebuilder:default=3
// +optional
MaxRetries int `json:"maxRetries,omitempty"`
// BackoffStrategy defines the backoff strategy
// - fixed: Fixed delay between retries
// - exponential: Exponential backoff
// +kubebuilder:validation:Enum=fixed;exponential
// +kubebuilder:default=exponential
// +optional
BackoffStrategy string `json:"backoffStrategy,omitempty"`
// InitialDelay is the initial delay before first retry
// +kubebuilder:default="1s"
// +kubebuilder:validation:Pattern=`^([0-9]+(\.[0-9]+)?(ms|s|m))+$`
// +optional
InitialDelay string `json:"initialDelay,omitempty"`
// MaxDelay is the maximum delay between retries
// +kubebuilder:default="30s"
// +kubebuilder:validation:Pattern=`^([0-9]+(\.[0-9]+)?(ms|s|m))+$`
// +optional
MaxDelay string `json:"maxDelay,omitempty"`
// RetryableErrors defines which errors should trigger retry
// If empty, all errors are retryable
// Supports regex patterns
// +optional
RetryableErrors []string `json:"retryableErrors,omitempty"`
}
RetryPolicy defines retry behavior for workflow steps
func (*RetryPolicy) DeepCopy ¶ added in v0.5.2
func (in *RetryPolicy) DeepCopy() *RetryPolicy
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RetryPolicy.
func (*RetryPolicy) DeepCopyInto ¶ added in v0.5.2
func (in *RetryPolicy) DeepCopyInto(out *RetryPolicy)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type SecretKeyRef ¶ added in v0.3.9
type SecretKeyRef struct {
// Name is the name of the secret
// +kubebuilder:validation:Required
Name string `json:"name"`
// Key is the key within the secret
// +kubebuilder:validation:Required
Key string `json:"key"`
}
SecretKeyRef is a reference to a key within a Secret
func (*SecretKeyRef) DeepCopy ¶ added in v0.3.9
func (in *SecretKeyRef) DeepCopy() *SecretKeyRef
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SecretKeyRef.
func (*SecretKeyRef) DeepCopyInto ¶ added in v0.3.9
func (in *SecretKeyRef) DeepCopyInto(out *SecretKeyRef)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type SecretRef ¶
type SecretRef struct {
// Name is the name of the secret
// +kubebuilder:validation:Required
Name string `json:"name"`
// Key is the key in the secret itself
// +kubebuilder:validation:Required
Key string `json:"key"`
// TargetEnvName is the environment variable to be used when setting up the secret in the MCP server
// If left unspecified, it defaults to the key
// +optional
TargetEnvName string `json:"targetEnvName,omitempty"`
}
SecretRef is a reference to a secret
func (*SecretRef) DeepCopy ¶
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SecretRef.
func (*SecretRef) DeepCopyInto ¶
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type StorageReference ¶ added in v0.2.17
type StorageReference struct {
// Type is the storage type (configmap)
// +kubebuilder:validation:Enum=configmap
Type string `json:"type"`
// ConfigMapRef is a reference to a ConfigMap storage
// Only used when Type is "configmap"
// +optional
ConfigMapRef *corev1.LocalObjectReference `json:"configMapRef,omitempty"`
}
StorageReference defines a reference to internal storage
func (*StorageReference) DeepCopy ¶ added in v0.2.17
func (in *StorageReference) DeepCopy() *StorageReference
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new StorageReference.
func (*StorageReference) DeepCopyInto ¶ added in v0.2.17
func (in *StorageReference) DeepCopyInto(out *StorageReference)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type SyncPhase ¶ added in v0.3.6
type SyncPhase string
SyncPhase represents the data synchronization state +kubebuilder:validation:Enum=Syncing;Complete;Failed
type SyncPolicy ¶ added in v0.2.17
type SyncPolicy struct {
// Interval is the sync interval for automatic synchronization (Go duration format)
// Examples: "1h", "30m", "24h"
// +kubebuilder:validation:Pattern=^([0-9]+(\.[0-9]+)?(ns|us|µs|ms|s|m|h))+$
// +kubebuilder:validation:Required
Interval string `json:"interval"`
}
SyncPolicy defines automatic synchronization behavior. When specified, enables automatic synchronization at the given interval. Manual synchronization via annotation-based triggers is always available regardless of this policy setting.
func (*SyncPolicy) DeepCopy ¶ added in v0.2.17
func (in *SyncPolicy) DeepCopy() *SyncPolicy
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SyncPolicy.
func (*SyncPolicy) DeepCopyInto ¶ added in v0.2.17
func (in *SyncPolicy) DeepCopyInto(out *SyncPolicy)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type SyncStatus ¶ added in v0.3.6
type SyncStatus struct {
// Phase represents the current synchronization phase
// +kubebuilder:validation:Enum=Syncing;Complete;Failed
Phase SyncPhase `json:"phase"`
// Message provides additional information about the sync status
// +optional
Message string `json:"message,omitempty"`
// LastAttempt is the timestamp of the last sync attempt
// +optional
LastAttempt *metav1.Time `json:"lastAttempt,omitempty"`
// AttemptCount is the number of sync attempts since last success
// +optional
// +kubebuilder:validation:Minimum=0
AttemptCount int `json:"attemptCount,omitempty"`
// LastSyncTime is the timestamp of the last successful sync
// +optional
LastSyncTime *metav1.Time `json:"lastSyncTime,omitempty"`
// LastSyncHash is the hash of the last successfully synced data
// Used to detect changes in source data
// +optional
LastSyncHash string `json:"lastSyncHash,omitempty"`
// ServerCount is the total number of servers in the registry
// +optional
// +kubebuilder:validation:Minimum=0
ServerCount int `json:"serverCount,omitempty"`
}
SyncStatus provides detailed information about data synchronization
func (*SyncStatus) DeepCopy ¶ added in v0.3.6
func (in *SyncStatus) DeepCopy() *SyncStatus
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SyncStatus.
func (*SyncStatus) DeepCopyInto ¶ added in v0.3.6
func (in *SyncStatus) DeepCopyInto(out *SyncStatus)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type TagFilter ¶ added in v0.2.17
type TagFilter struct {
// Include is a list of tags to include
// +optional
Include []string `json:"include,omitempty"`
// Exclude is a list of tags to exclude
// +optional
Exclude []string `json:"exclude,omitempty"`
}
TagFilter defines tag-based filtering
func (*TagFilter) DeepCopy ¶ added in v0.2.17
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new TagFilter.
func (*TagFilter) DeepCopyInto ¶ added in v0.2.17
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type TelemetryConfig ¶ added in v0.2.14
type TelemetryConfig struct {
// OpenTelemetry defines OpenTelemetry configuration
// +optional
OpenTelemetry *OpenTelemetryConfig `json:"openTelemetry,omitempty"`
// Prometheus defines Prometheus-specific configuration
// +optional
Prometheus *PrometheusConfig `json:"prometheus,omitempty"`
}
TelemetryConfig defines observability configuration for the MCP server
func (*TelemetryConfig) DeepCopy ¶ added in v0.2.14
func (in *TelemetryConfig) DeepCopy() *TelemetryConfig
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new TelemetryConfig.
func (*TelemetryConfig) DeepCopyInto ¶ added in v0.2.14
func (in *TelemetryConfig) DeepCopyInto(out *TelemetryConfig)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type TimeoutConfig ¶ added in v0.5.2
type TimeoutConfig struct {
// Default is the default timeout for backend requests
// +kubebuilder:default="30s"
// +optional
Default string `json:"default,omitempty"`
// PerWorkload defines per-workload timeout overrides
// +optional
PerWorkload map[string]string `json:"perWorkload,omitempty"`
}
TimeoutConfig configures timeout settings
func (*TimeoutConfig) DeepCopy ¶ added in v0.5.2
func (in *TimeoutConfig) DeepCopy() *TimeoutConfig
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new TimeoutConfig.
func (*TimeoutConfig) DeepCopyInto ¶ added in v0.5.2
func (in *TimeoutConfig) DeepCopyInto(out *TimeoutConfig)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type TokenExchangeConfig ¶ added in v0.3.9
type TokenExchangeConfig struct {
// TokenURL is the OAuth 2.0 token endpoint URL for token exchange
// +kubebuilder:validation:Required
TokenURL string `json:"tokenUrl"`
// ClientID is the OAuth 2.0 client identifier
// Optional for some token exchange flows (e.g., Google Cloud Workforce Identity)
// +optional
ClientID string `json:"clientId,omitempty"`
// ClientSecretRef is a reference to a secret containing the OAuth 2.0 client secret
// Optional for some token exchange flows (e.g., Google Cloud Workforce Identity)
// +optional
ClientSecretRef *SecretKeyRef `json:"clientSecretRef,omitempty"`
// Audience is the target audience for the exchanged token
// +kubebuilder:validation:Required
Audience string `json:"audience"`
// Scopes is a list of OAuth 2.0 scopes to request for the exchanged token
// +optional
Scopes []string `json:"scopes,omitempty"`
// SubjectTokenType is the type of the incoming subject token.
// Accepts short forms: "access_token" (default), "id_token", "jwt"
// Or full URNs: "urn:ietf:params:oauth:token-type:access_token",
// "urn:ietf:params:oauth:token-type:id_token",
// "urn:ietf:params:oauth:token-type:jwt"
// For Google Workload Identity Federation with OIDC providers (like Okta), use "id_token"
// +kubebuilder:validation:Pattern=`^(access_token|id_token|jwt|urn:ietf:params:oauth:token-type:(access_token|id_token|jwt))?$`
// +optional
SubjectTokenType string `json:"subjectTokenType,omitempty"`
// ExternalTokenHeaderName is the name of the custom header to use for the exchanged token.
// If set, the exchanged token will be added to this custom header (e.g., "X-Upstream-Token").
// If empty or not set, the exchanged token will replace the Authorization header (default behavior).
// +optional
ExternalTokenHeaderName string `json:"externalTokenHeaderName,omitempty"`
}
TokenExchangeConfig holds configuration for RFC-8693 OAuth 2.0 Token Exchange. This configuration is used to exchange incoming authentication tokens for tokens that can be used with external services. The structure matches the tokenexchange.Config from pkg/auth/tokenexchange/middleware.go
func (*TokenExchangeConfig) DeepCopy ¶ added in v0.3.9
func (in *TokenExchangeConfig) DeepCopy() *TokenExchangeConfig
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new TokenExchangeConfig.
func (*TokenExchangeConfig) DeepCopyInto ¶ added in v0.3.9
func (in *TokenExchangeConfig) DeepCopyInto(out *TokenExchangeConfig)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type ToolConfigRef ¶ added in v0.3.0
type ToolConfigRef struct {
// Name is the name of the MCPToolConfig resource in the same namespace
// +kubebuilder:validation:Required
Name string `json:"name"`
}
ToolConfigRef defines a reference to a MCPToolConfig resource. The referenced MCPToolConfig must be in the same namespace as the MCPServer.
func (*ToolConfigRef) DeepCopy ¶ added in v0.3.0
func (in *ToolConfigRef) DeepCopy() *ToolConfigRef
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ToolConfigRef.
func (*ToolConfigRef) DeepCopyInto ¶ added in v0.3.0
func (in *ToolConfigRef) DeepCopyInto(out *ToolConfigRef)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type ToolOverride ¶ added in v0.3.0
type ToolOverride struct {
// Name is the redefined name of the tool
// +optional
Name string `json:"name,omitempty"`
// Description is the redefined description of the tool
// +optional
Description string `json:"description,omitempty"`
}
ToolOverride represents a tool override configuration. Both Name and Description can be overridden independently, but they can't be both empty.
func (*ToolOverride) DeepCopy ¶ added in v0.3.0
func (in *ToolOverride) DeepCopy() *ToolOverride
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ToolOverride.
func (*ToolOverride) DeepCopyInto ¶ added in v0.3.0
func (in *ToolOverride) DeepCopyInto(out *ToolOverride)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type ValidationStatus ¶ added in v0.5.2
type ValidationStatus string
ValidationStatus represents the validation state of a workflow +kubebuilder:validation:Enum=Valid;Invalid;Unknown
const ( // ValidationStatusValid indicates the workflow is valid ValidationStatusValid ValidationStatus = "Valid" // ValidationStatusInvalid indicates the workflow has validation errors ValidationStatusInvalid ValidationStatus = "Invalid" // ValidationStatusUnknown indicates validation hasn't been performed yet ValidationStatusUnknown ValidationStatus = "Unknown" )
type VirtualMCPCompositeToolDefinition ¶ added in v0.5.2
type VirtualMCPCompositeToolDefinition struct {
metav1.TypeMeta `json:",inline"` // nolint:revive
metav1.ObjectMeta `json:"metadata,omitempty"`
Spec VirtualMCPCompositeToolDefinitionSpec `json:"spec,omitempty"`
Status VirtualMCPCompositeToolDefinitionStatus `json:"status,omitempty"`
}
VirtualMCPCompositeToolDefinition is the Schema for the virtualmcpcompositetooldefinitions API VirtualMCPCompositeToolDefinition defines reusable composite workflows that can be referenced by multiple VirtualMCPServer instances
func (*VirtualMCPCompositeToolDefinition) DeepCopy ¶ added in v0.5.2
func (in *VirtualMCPCompositeToolDefinition) DeepCopy() *VirtualMCPCompositeToolDefinition
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new VirtualMCPCompositeToolDefinition.
func (*VirtualMCPCompositeToolDefinition) DeepCopyInto ¶ added in v0.5.2
func (in *VirtualMCPCompositeToolDefinition) DeepCopyInto(out *VirtualMCPCompositeToolDefinition)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (*VirtualMCPCompositeToolDefinition) DeepCopyObject ¶ added in v0.5.2
func (in *VirtualMCPCompositeToolDefinition) DeepCopyObject() runtime.Object
DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
func (*VirtualMCPCompositeToolDefinition) GetValidationErrors ¶ added in v0.5.2
func (r *VirtualMCPCompositeToolDefinition) GetValidationErrors() []string
GetValidationErrors returns a list of validation errors This is a helper method for the controller to populate status.validationErrors
func (*VirtualMCPCompositeToolDefinition) SetupWebhookWithManager ¶ added in v0.5.2
func (r *VirtualMCPCompositeToolDefinition) SetupWebhookWithManager(mgr ctrl.Manager) error
SetupWebhookWithManager registers the webhook with the manager
func (*VirtualMCPCompositeToolDefinition) Validate ¶ added in v0.5.2
func (r *VirtualMCPCompositeToolDefinition) Validate() error
Validate performs validation for VirtualMCPCompositeToolDefinition This method can be called by the controller during reconciliation or by the webhook
func (*VirtualMCPCompositeToolDefinition) ValidateCreate ¶ added in v0.5.2
func (r *VirtualMCPCompositeToolDefinition) ValidateCreate(_ context.Context, _ runtime.Object) (admission.Warnings, error)
ValidateCreate implements webhook.CustomValidator
func (*VirtualMCPCompositeToolDefinition) ValidateDelete ¶ added in v0.5.2
func (*VirtualMCPCompositeToolDefinition) ValidateDelete(_ context.Context, _ runtime.Object) (admission.Warnings, error)
ValidateDelete implements webhook.CustomValidator
type VirtualMCPCompositeToolDefinitionList ¶ added in v0.5.2
type VirtualMCPCompositeToolDefinitionList struct {
metav1.TypeMeta `json:",inline"` // nolint:revive
metav1.ListMeta `json:"metadata,omitempty"`
Items []VirtualMCPCompositeToolDefinition `json:"items"`
}
VirtualMCPCompositeToolDefinitionList contains a list of VirtualMCPCompositeToolDefinition
func (*VirtualMCPCompositeToolDefinitionList) DeepCopy ¶ added in v0.5.2
func (in *VirtualMCPCompositeToolDefinitionList) DeepCopy() *VirtualMCPCompositeToolDefinitionList
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new VirtualMCPCompositeToolDefinitionList.
func (*VirtualMCPCompositeToolDefinitionList) DeepCopyInto ¶ added in v0.5.2
func (in *VirtualMCPCompositeToolDefinitionList) DeepCopyInto(out *VirtualMCPCompositeToolDefinitionList)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (*VirtualMCPCompositeToolDefinitionList) DeepCopyObject ¶ added in v0.5.2
func (in *VirtualMCPCompositeToolDefinitionList) DeepCopyObject() runtime.Object
DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
type VirtualMCPCompositeToolDefinitionSpec ¶ added in v0.5.2
type VirtualMCPCompositeToolDefinitionSpec struct {
// Name is the workflow name exposed as a composite tool
// +kubebuilder:validation:Required
// +kubebuilder:validation:MinLength=1
// +kubebuilder:validation:MaxLength=64
// +kubebuilder:validation:Pattern=`^[a-z0-9]([a-z0-9_-]*[a-z0-9])?$`
Name string `json:"name"`
// Description is a human-readable description of the workflow
// +kubebuilder:validation:Required
// +kubebuilder:validation:MinLength=1
Description string `json:"description"`
// Parameters defines the input parameter schema for the workflow in JSON Schema format.
// Should be a JSON Schema object with "type": "object" and "properties".
// Per MCP specification, this should follow standard JSON Schema for tool inputSchema.
// Example:
// {
// "type": "object",
// "properties": {
// "param1": {"type": "string", "default": "value"},
// "param2": {"type": "integer"}
// },
// "required": ["param2"]
// }
// +optional
// +kubebuilder:pruning:PreserveUnknownFields
// +kubebuilder:validation:Type=object
Parameters *runtime.RawExtension `json:"parameters,omitempty"`
// Steps defines the workflow step definitions
// Steps are executed sequentially in Phase 1
// Phase 2 will support DAG execution via dependsOn
// +kubebuilder:validation:Required
// +kubebuilder:validation:MinItems=1
Steps []WorkflowStep `json:"steps"`
// Timeout is the overall workflow timeout
// Defaults to 30m if not specified
// +kubebuilder:default="30m"
// +kubebuilder:validation:Pattern=`^([0-9]+(\.[0-9]+)?(ms|s|m|h))+$`
// +optional
Timeout string `json:"timeout,omitempty"`
// FailureMode defines the failure handling strategy
// - abort: Stop execution on first failure (default)
// - continue: Continue executing remaining steps
// +kubebuilder:validation:Enum=abort;continue
// +kubebuilder:default=abort
// +optional
FailureMode string `json:"failureMode,omitempty"`
// Output defines the structured output schema for the composite tool.
// Specifies how to construct the final output from workflow step results.
// If not specified, the workflow returns the last step's output (backward compatible).
// +optional
Output *OutputSpec `json:"output,omitempty"`
}
VirtualMCPCompositeToolDefinitionSpec defines the desired state of VirtualMCPCompositeToolDefinition
func (*VirtualMCPCompositeToolDefinitionSpec) DeepCopy ¶ added in v0.5.2
func (in *VirtualMCPCompositeToolDefinitionSpec) DeepCopy() *VirtualMCPCompositeToolDefinitionSpec
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new VirtualMCPCompositeToolDefinitionSpec.
func (*VirtualMCPCompositeToolDefinitionSpec) DeepCopyInto ¶ added in v0.5.2
func (in *VirtualMCPCompositeToolDefinitionSpec) DeepCopyInto(out *VirtualMCPCompositeToolDefinitionSpec)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type VirtualMCPCompositeToolDefinitionStatus ¶ added in v0.5.2
type VirtualMCPCompositeToolDefinitionStatus struct {
// ValidationStatus indicates the validation state of the workflow
// - Valid: Workflow structure is valid
// - Invalid: Workflow has validation errors
// +optional
ValidationStatus ValidationStatus `json:"validationStatus,omitempty"`
// ValidationErrors contains validation error messages if ValidationStatus is Invalid
// +optional
ValidationErrors []string `json:"validationErrors,omitempty"`
// ReferencingVirtualServers lists VirtualMCPServer resources that reference this workflow
// This helps track which servers need to be reconciled when this workflow changes
// +optional
ReferencingVirtualServers []string `json:"referencingVirtualServers,omitempty"`
// ObservedGeneration is the most recent generation observed for this VirtualMCPCompositeToolDefinition
// It corresponds to the resource's generation, which is updated on mutation by the API Server
// +optional
ObservedGeneration int64 `json:"observedGeneration,omitempty"`
// Conditions represent the latest available observations of the workflow's state
// +optional
Conditions []metav1.Condition `json:"conditions,omitempty"`
}
VirtualMCPCompositeToolDefinitionStatus defines the observed state of VirtualMCPCompositeToolDefinition
func (*VirtualMCPCompositeToolDefinitionStatus) DeepCopy ¶ added in v0.5.2
func (in *VirtualMCPCompositeToolDefinitionStatus) DeepCopy() *VirtualMCPCompositeToolDefinitionStatus
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new VirtualMCPCompositeToolDefinitionStatus.
func (*VirtualMCPCompositeToolDefinitionStatus) DeepCopyInto ¶ added in v0.5.2
func (in *VirtualMCPCompositeToolDefinitionStatus) DeepCopyInto(out *VirtualMCPCompositeToolDefinitionStatus)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type VirtualMCPServer ¶ added in v0.5.2
type VirtualMCPServer struct {
metav1.TypeMeta `json:",inline"` // nolint:revive
metav1.ObjectMeta `json:"metadata,omitempty"`
Spec VirtualMCPServerSpec `json:"spec,omitempty"`
Status VirtualMCPServerStatus `json:"status,omitempty"`
}
VirtualMCPServer is the Schema for the virtualmcpservers API VirtualMCPServer aggregates multiple backend MCPServers into a unified endpoint
func (*VirtualMCPServer) DeepCopy ¶ added in v0.5.2
func (in *VirtualMCPServer) DeepCopy() *VirtualMCPServer
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new VirtualMCPServer.
func (*VirtualMCPServer) DeepCopyInto ¶ added in v0.5.2
func (in *VirtualMCPServer) DeepCopyInto(out *VirtualMCPServer)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (*VirtualMCPServer) DeepCopyObject ¶ added in v0.5.2
func (in *VirtualMCPServer) DeepCopyObject() runtime.Object
DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
func (*VirtualMCPServer) GetOIDCConfig ¶ added in v0.6.11
func (v *VirtualMCPServer) GetOIDCConfig() *OIDCConfigRef
GetOIDCConfig returns the OIDC configuration reference for incoming auth. This implements the OIDCConfigurable interface to allow the OIDC resolver to resolve Kubernetes and ConfigMap OIDC configurations.
func (*VirtualMCPServer) GetProxyPort ¶ added in v0.6.11
func (*VirtualMCPServer) GetProxyPort() int32
GetProxyPort returns the proxy port for the VirtualMCPServer. This implements the OIDCConfigurable interface. vMCP uses port 4483 by default.
func (*VirtualMCPServer) SetupWebhookWithManager ¶ added in v0.5.2
func (r *VirtualMCPServer) SetupWebhookWithManager(mgr ctrl.Manager) error
SetupWebhookWithManager registers the webhook with the manager
func (*VirtualMCPServer) Validate ¶ added in v0.5.2
func (r *VirtualMCPServer) Validate() error
Validate performs validation for VirtualMCPServer This method can be called by the controller during reconciliation or by the webhook
func (*VirtualMCPServer) ValidateCreate ¶ added in v0.5.2
func (r *VirtualMCPServer) ValidateCreate(_ context.Context, _ runtime.Object) (admission.Warnings, error)
ValidateCreate implements webhook.CustomValidator
func (*VirtualMCPServer) ValidateDelete ¶ added in v0.5.2
func (*VirtualMCPServer) ValidateDelete(_ context.Context, _ runtime.Object) (admission.Warnings, error)
ValidateDelete implements webhook.CustomValidator
type VirtualMCPServerList ¶ added in v0.5.2
type VirtualMCPServerList struct {
metav1.TypeMeta `json:",inline"` // nolint:revive
metav1.ListMeta `json:"metadata,omitempty"`
Items []VirtualMCPServer `json:"items"`
}
VirtualMCPServerList contains a list of VirtualMCPServer
func (*VirtualMCPServerList) DeepCopy ¶ added in v0.5.2
func (in *VirtualMCPServerList) DeepCopy() *VirtualMCPServerList
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new VirtualMCPServerList.
func (*VirtualMCPServerList) DeepCopyInto ¶ added in v0.5.2
func (in *VirtualMCPServerList) DeepCopyInto(out *VirtualMCPServerList)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (*VirtualMCPServerList) DeepCopyObject ¶ added in v0.5.2
func (in *VirtualMCPServerList) DeepCopyObject() runtime.Object
DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
type VirtualMCPServerPhase ¶ added in v0.5.2
type VirtualMCPServerPhase string
VirtualMCPServerPhase represents the lifecycle phase of a VirtualMCPServer +kubebuilder:validation:Enum=Pending;Ready;Degraded;Failed
const ( // VirtualMCPServerPhasePending indicates the VirtualMCPServer is being initialized VirtualMCPServerPhasePending VirtualMCPServerPhase = "Pending" // VirtualMCPServerPhaseReady indicates the VirtualMCPServer is ready and serving requests VirtualMCPServerPhaseReady VirtualMCPServerPhase = "Ready" // VirtualMCPServerPhaseDegraded indicates the VirtualMCPServer is running but some backends are unavailable VirtualMCPServerPhaseDegraded VirtualMCPServerPhase = "Degraded" // VirtualMCPServerPhaseFailed indicates the VirtualMCPServer has failed VirtualMCPServerPhaseFailed VirtualMCPServerPhase = "Failed" )
type VirtualMCPServerSpec ¶ added in v0.5.2
type VirtualMCPServerSpec struct {
// GroupRef references an existing MCPGroup that defines backend workloads
// The referenced MCPGroup must exist in the same namespace
// +kubebuilder:validation:Required
GroupRef GroupRef `json:"groupRef"`
// IncomingAuth configures authentication for clients connecting to the Virtual MCP server
// Must be explicitly set - use "anonymous" type when no authentication is required
// +kubebuilder:validation:Required
IncomingAuth *IncomingAuthConfig `json:"incomingAuth"`
// OutgoingAuth configures authentication from Virtual MCP to backend MCPServers
// +optional
OutgoingAuth *OutgoingAuthConfig `json:"outgoingAuth,omitempty"`
// Aggregation defines tool aggregation and conflict resolution strategies
// +optional
Aggregation *AggregationConfig `json:"aggregation,omitempty"`
// CompositeTools defines inline composite tool definitions
// For complex workflows, reference VirtualMCPCompositeToolDefinition resources instead
// +optional
CompositeTools []CompositeToolSpec `json:"compositeTools,omitempty"`
// CompositeToolRefs references VirtualMCPCompositeToolDefinition resources
// for complex, reusable workflows
// +optional
CompositeToolRefs []CompositeToolDefinitionRef `json:"compositeToolRefs,omitempty"`
// Operational defines operational settings like timeouts and health checks
// +optional
Operational *OperationalConfig `json:"operational,omitempty"`
// ServiceType specifies the Kubernetes service type for the Virtual MCP server
// +kubebuilder:validation:Enum=ClusterIP;NodePort;LoadBalancer
// +kubebuilder:default=ClusterIP
// +optional
ServiceType string `json:"serviceType,omitempty"`
// PodTemplateSpec defines the pod template to use for the Virtual MCP server
// This allows for customizing the pod configuration beyond what is provided by the other fields.
// Note that to modify the specific container the Virtual MCP server runs in, you must specify
// the 'vmcp' container name in the PodTemplateSpec.
// This field accepts a PodTemplateSpec object as JSON/YAML.
// +optional
// +kubebuilder:pruning:PreserveUnknownFields
// +kubebuilder:validation:Type=object
PodTemplateSpec *runtime.RawExtension `json:"podTemplateSpec,omitempty"`
// Telemetry configures OpenTelemetry-based observability for the Virtual MCP server
// including distributed tracing, OTLP metrics export, and Prometheus metrics endpoint
// +optional
Telemetry *TelemetryConfig `json:"telemetry,omitempty"`
}
VirtualMCPServerSpec defines the desired state of VirtualMCPServer
func (*VirtualMCPServerSpec) DeepCopy ¶ added in v0.5.2
func (in *VirtualMCPServerSpec) DeepCopy() *VirtualMCPServerSpec
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new VirtualMCPServerSpec.
func (*VirtualMCPServerSpec) DeepCopyInto ¶ added in v0.5.2
func (in *VirtualMCPServerSpec) DeepCopyInto(out *VirtualMCPServerSpec)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type VirtualMCPServerStatus ¶ added in v0.5.2
type VirtualMCPServerStatus struct {
// Conditions represent the latest available observations of the VirtualMCPServer's state
// +optional
Conditions []metav1.Condition `json:"conditions,omitempty"`
// ObservedGeneration is the most recent generation observed for this VirtualMCPServer
// +optional
ObservedGeneration int64 `json:"observedGeneration,omitempty"`
// Phase is the current phase of the VirtualMCPServer
// +optional
// +kubebuilder:default=Pending
Phase VirtualMCPServerPhase `json:"phase,omitempty"`
// Message provides additional information about the current phase
// +optional
Message string `json:"message,omitempty"`
// URL is the URL where the Virtual MCP server can be accessed
// +optional
URL string `json:"url,omitempty"`
// DiscoveredBackends lists discovered backend configurations from the MCPGroup
// +optional
DiscoveredBackends []DiscoveredBackend `json:"discoveredBackends,omitempty"`
// BackendCount is the number of discovered backends
// +optional
BackendCount int `json:"backendCount,omitempty"`
}
VirtualMCPServerStatus defines the observed state of VirtualMCPServer
func (*VirtualMCPServerStatus) DeepCopy ¶ added in v0.5.2
func (in *VirtualMCPServerStatus) DeepCopy() *VirtualMCPServerStatus
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new VirtualMCPServerStatus.
func (*VirtualMCPServerStatus) DeepCopyInto ¶ added in v0.5.2
func (in *VirtualMCPServerStatus) DeepCopyInto(out *VirtualMCPServerStatus)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type Volume ¶
type Volume struct {
// Name is the name of the volume
// +kubebuilder:validation:Required
Name string `json:"name"`
// HostPath is the path on the host to mount
// +kubebuilder:validation:Required
HostPath string `json:"hostPath"`
// MountPath is the path in the container to mount to
// +kubebuilder:validation:Required
MountPath string `json:"mountPath"`
// ReadOnly specifies whether the volume should be mounted read-only
// +kubebuilder:default=false
// +optional
ReadOnly bool `json:"readOnly,omitempty"`
}
Volume represents a volume to mount in a container
func (*Volume) DeepCopy ¶
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Volume.
func (*Volume) DeepCopyInto ¶
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type WorkflowStep ¶ added in v0.5.2
type WorkflowStep struct {
// ID is the unique identifier for this step
// +kubebuilder:validation:Required
ID string `json:"id"`
// Type is the step type (tool, elicitation, etc.)
// +kubebuilder:validation:Enum=tool;elicitation
// +kubebuilder:default=tool
// +optional
Type string `json:"type,omitempty"`
// Tool is the tool to call (format: "workload.tool_name")
// Only used when Type is "tool"
// +optional
Tool string `json:"tool,omitempty"`
// Arguments is a map of argument values with template expansion support.
// Supports Go template syntax with .params and .steps for string values.
// Non-string values (integers, booleans, arrays, objects) are passed as-is.
// Note: the templating is only supported on the first level of the key-value pairs.
// +optional
// +kubebuilder:pruning:PreserveUnknownFields
// +kubebuilder:validation:Type=object
Arguments *runtime.RawExtension `json:"arguments,omitempty"`
// Message is the elicitation message
// Only used when Type is "elicitation"
// +optional
Message string `json:"message,omitempty"`
// Schema defines the expected response schema for elicitation
// +optional
// +kubebuilder:pruning:PreserveUnknownFields
// +kubebuilder:validation:Type=object
Schema *runtime.RawExtension `json:"schema,omitempty"`
// OnDecline defines the action to take when the user explicitly declines the elicitation
// Only used when Type is "elicitation"
// +optional
OnDecline *ElicitationResponseHandler `json:"onDecline,omitempty"`
// OnCancel defines the action to take when the user cancels/dismisses the elicitation
// Only used when Type is "elicitation"
// +optional
OnCancel *ElicitationResponseHandler `json:"onCancel,omitempty"`
// DependsOn lists step IDs that must complete before this step
// +optional
DependsOn []string `json:"dependsOn,omitempty"`
// Condition is a template expression that determines if the step should execute
// +optional
Condition string `json:"condition,omitempty"`
// OnError defines error handling behavior
// +optional
OnError *ErrorHandling `json:"onError,omitempty"`
// Timeout is the maximum execution time for this step
// +optional
Timeout string `json:"timeout,omitempty"`
// DefaultResults provides fallback output values when this step is skipped
// (due to condition evaluating to false) or fails (when onError.action is "continue").
// Each key corresponds to an output field name referenced by downstream steps.
// Required if the step may be skipped AND downstream steps reference this step's output.
// +optional
// +kubebuilder:pruning:PreserveUnknownFields
// +kubebuilder:validation:Schemaless
DefaultResults map[string]runtime.RawExtension `json:"defaultResults,omitempty"`
}
WorkflowStep defines a step in a composite tool workflow
func (*WorkflowStep) DeepCopy ¶ added in v0.5.2
func (in *WorkflowStep) DeepCopy() *WorkflowStep
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new WorkflowStep.
func (*WorkflowStep) DeepCopyInto ¶ added in v0.5.2
func (in *WorkflowStep) DeepCopyInto(out *WorkflowStep)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type WorkloadToolConfig ¶ added in v0.5.2
type WorkloadToolConfig struct {
// Workload is the name of the backend MCPServer workload
// +kubebuilder:validation:Required
Workload string `json:"workload"`
// ToolConfigRef references a MCPToolConfig resource for tool filtering and renaming
// If specified, Filter and Overrides are ignored
// +optional
ToolConfigRef *ToolConfigRef `json:"toolConfigRef,omitempty"`
// Filter is an inline list of tool names to allow (allow list)
// Only used if ToolConfigRef is not specified
// +optional
Filter []string `json:"filter,omitempty"`
// Overrides is an inline map of tool overrides
// Only used if ToolConfigRef is not specified
// +optional
Overrides map[string]ToolOverride `json:"overrides,omitempty"`
}
WorkloadToolConfig defines tool filtering and overrides for a specific workload
func (*WorkloadToolConfig) DeepCopy ¶ added in v0.5.2
func (in *WorkloadToolConfig) DeepCopy() *WorkloadToolConfig
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new WorkloadToolConfig.
func (*WorkloadToolConfig) DeepCopyInto ¶ added in v0.5.2
func (in *WorkloadToolConfig) DeepCopyInto(out *WorkloadToolConfig)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
Source Files
¶
- groupversion_info.go
- mcpexternalauthconfig_types.go
- mcpexternalauthconfig_webhook.go
- mcpgroup_types.go
- mcpregistry_types.go
- mcpremoteproxy_types.go
- mcpserver_types.go
- toolconfig_types.go
- virtualmcpcompositetooldefinition_types.go
- virtualmcpcompositetooldefinition_webhook.go
- virtualmcpserver_types.go
- virtualmcpserver_webhook.go
- workflow_validation.go
- zz_generated.deepcopy.go