v1alpha1

package
v0.6.7 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Nov 25, 2025 License: Apache-2.0 Imports: 14 Imported by: 2

Documentation

Overview

Package v1alpha1 contains API Schema definitions for the toolhive v1alpha1 API group +kubebuilder:object:generate=true +groupName=toolhive.stacklok.dev

Index

Constants

View Source
const (
	ConditionReasonListMCPServersFailed    = "ListMCPServersCheckFailed"
	ConditionReasonListMCPServersSucceeded = "ListMCPServersCheckSucceeded"
)

MCPGroupConditionReason represents the reason for a condition's last transition

View Source
const (
	// RegistrySourceTypeConfigMap is the type for registry data stored in ConfigMaps
	RegistrySourceTypeConfigMap = "configmap"

	// RegistrySourceTypeGit is the type for registry data stored in Git repositories
	RegistrySourceTypeGit = "git"

	// RegistrySourceTypeAPI is the type for registry data fetched from API endpoints
	RegistrySourceTypeAPI = "api"
)
View Source
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"
)

Condition types for MCPRegistry

View Source
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"
)

Condition types for MCPRemoteProxy

View Source
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"
)

Condition reasons for MCPRemoteProxy

View Source
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

View Source
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"
)
View Source
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"
)
View Source
const (
	// ConditionReasonPodTemplateValid indicates PodTemplateSpec validation succeeded
	ConditionReasonPodTemplateValid = "ValidPodTemplateSpec"

	// ConditionReasonPodTemplateInvalid indicates PodTemplateSpec validation failed
	ConditionReasonPodTemplateInvalid = "InvalidPodTemplateSpec"
)
View Source
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

View Source
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

View Source
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

View Source
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

View Source
const (
	// ConditionTypeVirtualMCPServerReady indicates whether the VirtualMCPServer is ready
	ConditionTypeVirtualMCPServerReady = "Ready"

	// ConditionTypeVirtualMCPServerGroupRefValidated indicates whether the GroupRef is valid
	ConditionTypeVirtualMCPServerGroupRefValidated = "GroupRefValidated"
)

Condition types for VirtualMCPServer Note: ConditionTypeAuthConfigured is shared with MCPRemoteProxy and defined in mcpremoteproxy_types.go

View Source
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"
)

Condition reasons for VirtualMCPServer

View Source
const (
	// BackendAuthTypeDiscovered automatically discovers from backend's externalAuthConfigRef
	BackendAuthTypeDiscovered = "discovered"

	// BackendAuthTypePassThrough forwards client token unchanged
	BackendAuthTypePassThrough = "pass_through"

	// BackendAuthTypeExternalAuthConfigRef references an MCPExternalAuthConfig resource
	BackendAuthTypeExternalAuthConfigRef = "external_auth_config_ref"
)

Backend authentication types

View Source
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

View Source
const (
	// WorkflowStepTypeToolCall calls a backend tool
	WorkflowStepTypeToolCall = "tool"

	// WorkflowStepTypeElicitation requests user input
	WorkflowStepTypeElicitation = "elicitation"
)

Workflow step types

View Source
const (
	ConditionTypeMCPServersChecked = "MCPServersChecked"
)

Condition types for MCPGroup

View Source
const (
	// ConditionTypeWorkflowValidated indicates whether the workflow has been validated
	ConditionTypeWorkflowValidated = "WorkflowValidated"
)

Condition types for VirtualMCPCompositeToolDefinition

View Source
const (
	// ExternalAuthTypeTokenExchange is the type for RFC-8693 token exchange
	ExternalAuthTypeTokenExchange = "tokenExchange"
)

External auth configuration types

View Source
const (
	// RegistryFormatToolHive is the native ToolHive registry format
	RegistryFormatToolHive = "toolhive"
)

Registry formats

Variables

View Source
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

func (in *APISource) DeepCopy() *APISource

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new APISource.

func (*APISource) DeepCopyInto added in v0.4.1

func (in *APISource) DeepCopyInto(out *APISource)

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

func (in *APIStatus) DeepCopy() *APIStatus

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new APIStatus.

func (*APIStatus) DeepCopyInto added in v0.3.6

func (in *APIStatus) DeepCopyInto(out *APIStatus)

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

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;pass_through;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

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

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new CompositeToolDefinitionRef.

func (*CompositeToolDefinitionRef) DeepCopyInto added in v0.5.2

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 parameters for the composite tool
	// +optional
	Parameters map[string]ParameterSpec `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"`
}

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

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 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

func (in *EnvVar) DeepCopy() *EnvVar

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new EnvVar.

func (*EnvVar) DeepCopyInto

func (in *EnvVar) DeepCopyInto(out *EnvVar)

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"`
}

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

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 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

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

func (in *GitSource) DeepCopy() *GitSource

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new GitSource.

func (*GitSource) DeepCopyInto added in v0.3.6

func (in *GitSource) DeepCopyInto(out *GitSource)

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

func (in *GroupRef) DeepCopy() *GroupRef

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new GroupRef.

func (*GroupRef) DeepCopyInto added in v0.5.2

func (in *GroupRef) DeepCopyInto(out *GroupRef)

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, local, or oidc
	// +kubebuilder:validation:Enum=anonymous;local;oidc
	// +optional
	Type string `json:"type,omitempty"`

	// 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"`
}

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

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

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.

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

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new MCPExternalAuthConfigList.

func (*MCPExternalAuthConfigList) DeepCopyInto added in v0.3.9

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
	// +kubebuilder:validation:Required
	Type string `json:"type"`

	// TokenExchange configures RFC-8693 OAuth 2.0 Token Exchange
	// Only used when Type is "tokenExchange"
	// +optional
	TokenExchange *TokenExchangeConfig `json:"tokenExchange,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

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new MCPExternalAuthConfigSpec.

func (*MCPExternalAuthConfigSpec) DeepCopyInto added in v0.3.9

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

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new MCPExternalAuthConfigStatus.

func (*MCPExternalAuthConfigStatus) DeepCopyInto added in v0.3.9

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

func (in *MCPGroup) DeepCopy() *MCPGroup

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new MCPGroup.

func (*MCPGroup) DeepCopyInto added in v0.4.0

func (in *MCPGroup) DeepCopyInto(out *MCPGroup)

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

func (in *MCPGroup) DeepCopyObject() runtime.Object

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 server names in this group
	// +optional
	Servers []string `json:"servers"`

	// ServerCount is the number of servers
	// +optional
	ServerCount int `json:"serverCount"`

	// 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) 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) GetConfigMapSourceName added in v0.6.6

func (r *MCPRegistry) GetConfigMapSourceName() string

GetConfigMapSourceName returns the name of the first configmap source if present, otherwise returns an empty string

func (*MCPRegistry) GetStorageName added in v0.3.6

func (r *MCPRegistry) GetStorageName() string

GetStorageName returns the name used for registry storage resources

func (*MCPRegistry) IsConfigMapRegistrySource added in v0.6.6

func (r *MCPRegistry) IsConfigMapRegistrySource() bool

IsConfigMapRegistrySource returns true if any registry source is a configmap

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 and API
	// +optional
	ConfigMapRef *corev1.ConfigMapKeySelector `json:"configMapRef,omitempty"`

	// Git defines the Git repository source configuration
	// Mutually exclusive with ConfigMapRef and API
	// +optional
	Git *GitSource `json:"git,omitempty"`

	// API defines the API source configuration
	// Mutually exclusive with ConfigMapRef and Git
	// +optional
	API *APISource `json:"api,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 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"`
}

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"`
}

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

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

func (in *MCPServer) DeepCopy() *MCPServer

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new MCPServer.

func (*MCPServer) DeepCopyInto

func (in *MCPServer) DeepCopyInto(out *MCPServer)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

func (*MCPServer) DeepCopyObject

func (in *MCPServer) DeepCopyObject() runtime.Object

DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.

func (*MCPServer) GetMcpPort added in v0.5.1

func (m *MCPServer) GetMcpPort() int32

GetMcpPort returns the MCP port of the MCPServer

func (*MCPServer) GetName added in v0.3.10

func (m *MCPServer) GetName() string

GetName returns the name of the MCPServer

func (*MCPServer) GetNamespace added in v0.3.10

func (m *MCPServer) GetNamespace() string

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

func (m *MCPServer) GetProxyPort() int32

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 MemoryCacheConfig added in v0.5.2

type MemoryCacheConfig struct {
	// MaxEntries is the maximum number of cache entries
	// +kubebuilder:default=1000
	// +optional
	MaxEntries int `json:"maxEntries,omitempty"`

	// TTLOffset is the duration before token expiry to refresh
	// +kubebuilder:default="5m"
	// +optional
	TTLOffset string `json:"ttlOffset,omitempty"`
}

MemoryCacheConfig configures in-memory token caching

func (*MemoryCacheConfig) DeepCopy added in v0.5.2

func (in *MemoryCacheConfig) DeepCopy() *MemoryCacheConfig

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new MemoryCacheConfig.

func (*MemoryCacheConfig) DeepCopyInto added in v0.5.2

func (in *MemoryCacheConfig) DeepCopyInto(out *MemoryCacheConfig)

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

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new OpenTelemetryMetricsConfig.

func (*OpenTelemetryMetricsConfig) DeepCopyInto added in v0.2.14

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

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new OpenTelemetryTracingConfig.

func (*OpenTelemetryTracingConfig) DeepCopyInto added in v0.2.17

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 {
	// 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

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new OutboundNetworkPermissions.

func (*OutboundNetworkPermissions) DeepCopyInto

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
	// - mixed: Discover most, override specific backends
	// +kubebuilder:validation:Enum=discovered;inline;mixed
	// +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, mixed)
	// +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 ParameterSpec added in v0.5.2

type ParameterSpec struct {
	// Type is the parameter type (string, integer, boolean, etc.)
	// +kubebuilder:validation:Required
	Type string `json:"type"`

	// Description describes the parameter
	// +optional
	Description string `json:"description,omitempty"`

	// Default is the default value for the parameter
	// +optional
	Default string `json:"default,omitempty"`

	// Required indicates if the parameter is required
	// +kubebuilder:default=false
	// +optional
	Required bool `json:"required,omitempty"`
}

ParameterSpec defines a parameter for a composite tool

func (*ParameterSpec) DeepCopy added in v0.5.2

func (in *ParameterSpec) DeepCopy() *ParameterSpec

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ParameterSpec.

func (*ParameterSpec) DeepCopyInto added in v0.5.2

func (in *ParameterSpec) DeepCopyInto(out *ParameterSpec)

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

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

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

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 RedisCacheConfig added in v0.5.2

type RedisCacheConfig struct {
	// Address is the Redis server address
	// +kubebuilder:validation:Required
	Address string `json:"address"`

	// DB is the Redis database number
	// +kubebuilder:default=0
	// +optional
	DB int `json:"db,omitempty"`

	// KeyPrefix is the prefix for cache keys
	// +kubebuilder:default="vmcp:tokens:"
	// +optional
	KeyPrefix string `json:"keyPrefix,omitempty"`

	// PasswordRef references a secret containing the Redis password
	// +optional
	PasswordRef *SecretKeyRef `json:"passwordRef,omitempty"`

	// TLS enables TLS for Redis connections
	// +kubebuilder:default=false
	// +optional
	TLS bool `json:"tls,omitempty"`
}

RedisCacheConfig configures Redis token caching

func (*RedisCacheConfig) DeepCopy added in v0.5.2

func (in *RedisCacheConfig) DeepCopy() *RedisCacheConfig

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RedisCacheConfig.

func (*RedisCacheConfig) DeepCopyInto added in v0.5.2

func (in *RedisCacheConfig) DeepCopyInto(out *RedisCacheConfig)

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

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ResourceMetadataOverrides.

func (*ResourceMetadataOverrides) DeepCopyInto added in v0.0.40

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

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

func (in *SecretRef) DeepCopy() *SecretRef

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SecretRef.

func (*SecretRef) DeepCopyInto

func (in *SecretRef) DeepCopyInto(out *SecretRef)

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

const (
	// SyncPhaseSyncing means sync is currently in progress
	SyncPhaseSyncing SyncPhase = "Syncing"

	// SyncPhaseComplete means sync completed successfully
	SyncPhaseComplete SyncPhase = "Complete"

	// SyncPhaseFailed means sync failed
	SyncPhaseFailed SyncPhase = "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

func (in *TagFilter) DeepCopy() *TagFilter

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new TagFilter.

func (*TagFilter) DeepCopyInto added in v0.2.17

func (in *TagFilter) DeepCopyInto(out *TagFilter)

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 TokenCacheConfig added in v0.5.2

type TokenCacheConfig struct {
	// Provider defines the cache provider type
	// +kubebuilder:validation:Enum=memory;redis
	// +kubebuilder:default=memory
	// +optional
	Provider string `json:"provider,omitempty"`

	// Memory configures in-memory token caching
	// Only used when Provider is "memory"
	// +optional
	Memory *MemoryCacheConfig `json:"memory,omitempty"`

	// Redis configures Redis token caching
	// Only used when Provider is "redis"
	// +optional
	Redis *RedisCacheConfig `json:"redis,omitempty"`
}

TokenCacheConfig configures token caching behavior

func (*TokenCacheConfig) DeepCopy added in v0.5.2

func (in *TokenCacheConfig) DeepCopy() *TokenCacheConfig

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new TokenCacheConfig.

func (*TokenCacheConfig) DeepCopyInto added in v0.5.2

func (in *TokenCacheConfig) DeepCopyInto(out *TokenCacheConfig)

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

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new VirtualMCPCompositeToolDefinition.

func (*VirtualMCPCompositeToolDefinition) DeepCopyInto added in v0.5.2

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

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

ValidateCreate implements webhook.CustomValidator

func (*VirtualMCPCompositeToolDefinition) ValidateDelete added in v0.5.2

ValidateDelete implements webhook.CustomValidator

func (*VirtualMCPCompositeToolDefinition) ValidateUpdate added in v0.5.2

ValidateUpdate 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

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new VirtualMCPCompositeToolDefinitionList.

func (*VirtualMCPCompositeToolDefinitionList) DeepCopyInto added in v0.5.2

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

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
	// Each key is a parameter name, each value is the parameter specification
	// +optional
	Parameters map[string]ParameterSpec `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
	// - best_effort: Try all steps, report partial success
	// +kubebuilder:validation:Enum=abort;continue;best_effort
	// +kubebuilder:default=abort
	// +optional
	FailureMode string `json:"failureMode,omitempty"`
}

VirtualMCPCompositeToolDefinitionSpec defines the desired state of VirtualMCPCompositeToolDefinition

func (*VirtualMCPCompositeToolDefinitionSpec) DeepCopy added in v0.5.2

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new VirtualMCPCompositeToolDefinitionSpec.

func (*VirtualMCPCompositeToolDefinitionSpec) DeepCopyInto added in v0.5.2

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

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new VirtualMCPCompositeToolDefinitionStatus.

func (*VirtualMCPCompositeToolDefinitionStatus) DeepCopyInto added in v0.5.2

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) 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

ValidateCreate implements webhook.CustomValidator

func (*VirtualMCPServer) ValidateDelete added in v0.5.2

ValidateDelete implements webhook.CustomValidator

func (*VirtualMCPServer) ValidateUpdate added in v0.5.2

ValidateUpdate 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

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
	// +optional
	IncomingAuth *IncomingAuthConfig `json:"incomingAuth,omitempty"`

	// 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"`

	// TokenCache configures token caching behavior
	// +optional
	TokenCache *TokenCacheConfig `json:"tokenCache,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"`
}

VirtualMCPServerSpec defines the desired state of VirtualMCPServer

func (*VirtualMCPServerSpec) DeepCopy added in v0.5.2

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

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

func (in *Volume) DeepCopy() *Volume

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Volume.

func (*Volume) DeepCopyInto

func (in *Volume) DeepCopyInto(out *Volume)

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 templates
	// Supports Go template syntax with .params and .steps
	// +optional
	Arguments map[string]string `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"`

	// 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"`
}

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.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL