v1alpha1

package
v0.6.14 Latest Latest
Warning

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

Go to latest
Published: Dec 17, 2025 License: Apache-2.0 Imports: 16 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 (
	// ConditionSourceAvailable indicates whether the source is available and accessible
	ConditionSourceAvailable = "SourceAvailable"

	// ConditionDataValid indicates whether the registry data is valid
	ConditionDataValid = "DataValid"

	// ConditionSyncSuccessful indicates whether the last sync was successful
	ConditionSyncSuccessful = "SyncSuccessful"

	// ConditionAPIReady indicates whether the registry API is ready
	ConditionAPIReady = "APIReady"

	// ConditionRegistryPodTemplateValid indicates whether the PodTemplateSpec is valid
	ConditionRegistryPodTemplateValid = "PodTemplateValid"
)

Condition types for MCPRegistry

View Source
const (
	// ConditionReasonRegistryPodTemplateValid indicates PodTemplateSpec validation succeeded
	ConditionReasonRegistryPodTemplateValid = "ValidPodTemplateSpec"

	// ConditionReasonRegistryPodTemplateInvalid indicates PodTemplateSpec validation failed
	ConditionReasonRegistryPodTemplateInvalid = "InvalidPodTemplateSpec"
)

Condition reasons for MCPRegistry PodTemplateSpec validation

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"

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

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"

	// ConditionReasonMCPRemoteProxyGroupRefValidated indicates the GroupRef is valid
	ConditionReasonMCPRemoteProxyGroupRefValidated = "GroupRefIsValid"

	// ConditionReasonMCPRemoteProxyGroupRefNotFound indicates the GroupRef is invalid
	ConditionReasonMCPRemoteProxyGroupRefNotFound = "GroupRefNotFound"

	// ConditionReasonMCPRemoteProxyGroupRefNotReady indicates the referenced MCPGroup is not in the Ready state
	ConditionReasonMCPRemoteProxyGroupRefNotReady = "GroupRefNotReady"
)

Condition reasons for MCPRemoteProxy

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 (
	BackendStatusReady       = "ready"
	BackendStatusUnavailable = "unavailable"
	BackendStatusDegraded    = "degraded"
	BackendStatusUnknown     = "unknown"
)

Backend status constants for DiscoveredBackend.Status

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

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

	// ConditionTypeCompositeToolRefsValidated indicates whether the CompositeToolRefs are valid
	ConditionTypeCompositeToolRefsValidated = "CompositeToolRefsValidated"
	// ConditionTypeVirtualMCPServerPodTemplateSpecValid indicates whether the PodTemplateSpec is valid
	ConditionTypeVirtualMCPServerPodTemplateSpecValid = "PodTemplateSpecValid"

	// ConditionTypeVirtualMCPServerBackendsDiscovered indicates whether backends have been discovered
	ConditionTypeVirtualMCPServerBackendsDiscovered = "BackendsDiscovered"
)

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

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"

	// ConditionReasonCompositeToolRefsValid indicates the CompositeToolRefs are valid
	ConditionReasonCompositeToolRefsValid = "CompositeToolRefsValid"

	// ConditionReasonCompositeToolRefNotFound indicates a referenced VirtualMCPCompositeToolDefinition was not found
	ConditionReasonCompositeToolRefNotFound = "CompositeToolRefNotFound"

	// ConditionReasonCompositeToolRefInvalid indicates a referenced VirtualMCPCompositeToolDefinition is invalid
	ConditionReasonCompositeToolRefInvalid = "CompositeToolRefInvalid"

	// ConditionReasonVirtualMCPServerPodTemplateSpecValid indicates PodTemplateSpec validation succeeded
	ConditionReasonVirtualMCPServerPodTemplateSpecValid = "PodTemplateSpecValid"

	// ConditionReasonVirtualMCPServerPodTemplateSpecInvalid indicates PodTemplateSpec validation failed
	ConditionReasonVirtualMCPServerPodTemplateSpecInvalid = "InvalidPodTemplateSpec"

	// ConditionReasonVirtualMCPServerBackendsDiscoveredSuccessfully indicates backends were discovered successfully
	ConditionReasonVirtualMCPServerBackendsDiscoveredSuccessfully = "BackendsDiscoveredSuccessfully"

	// ConditionReasonVirtualMCPServerBackendDiscoveryFailed indicates backend discovery failed
	ConditionReasonVirtualMCPServerBackendDiscoveryFailed = "BackendDiscoveryFailed"

	// ConditionReasonVirtualMCPServerDeploymentFailed indicates the deployment failed
	ConditionReasonVirtualMCPServerDeploymentFailed = "DeploymentFailed"

	// ConditionReasonVirtualMCPServerDeploymentReady indicates the deployment is ready
	ConditionReasonVirtualMCPServerDeploymentReady = "DeploymentReady"

	// ConditionReasonVirtualMCPServerDeploymentNotReady indicates the deployment is not ready
	ConditionReasonVirtualMCPServerDeploymentNotReady = "DeploymentNotReady"
)

Condition reasons for VirtualMCPServer

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

	// 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 (
	// ErrorActionAbort aborts the workflow on error
	ErrorActionAbort = "abort"

	// ErrorActionContinue continues the workflow on error
	ErrorActionContinue = "continue"

	// ErrorActionRetry retries the step on error
	ErrorActionRetry = "retry"
)

Error handling actions

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 (
	// 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;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 parameter schema in JSON Schema format.
	// Should be a JSON Schema object with "type": "object" and "properties".
	// Per MCP specification, this should follow standard JSON Schema for tool inputSchema.
	// Example:
	//   {
	//     "type": "object",
	//     "properties": {
	//       "param1": {"type": "string", "default": "value"},
	//       "param2": {"type": "integer"}
	//     },
	//     "required": ["param2"]
	//   }
	// +optional
	// +kubebuilder:pruning:PreserveUnknownFields
	// +kubebuilder:validation:Type=object
	Parameters *runtime.RawExtension `json:"parameters,omitempty"`

	// Steps defines the workflow steps
	// +kubebuilder:validation:Required
	// +kubebuilder:validation:MinItems=1
	Steps []WorkflowStep `json:"steps"`

	// Timeout is the maximum execution time for the composite tool
	// +kubebuilder:default="30m"
	// +optional
	Timeout string `json:"timeout,omitempty"`

	// Output defines the structured output schema for the composite tool.
	// Specifies how to construct the final output from workflow step results.
	// If not specified, the workflow returns the last step's output (backward compatible).
	// +optional
	Output *OutputSpec `json:"output,omitempty"`
}

CompositeToolSpec defines an inline composite tool For complex workflows, reference VirtualMCPCompositeToolDefinition resources instead

func (*CompositeToolSpec) DeepCopy added in v0.5.2

func (in *CompositeToolSpec) DeepCopy() *CompositeToolSpec

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

func (*CompositeToolSpec) DeepCopyInto added in v0.5.2

func (in *CompositeToolSpec) DeepCopyInto(out *CompositeToolSpec)

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

type ConfigMapAuthzRef added in v0.1.2

type ConfigMapAuthzRef struct {
	// Name is the name of the ConfigMap
	// +kubebuilder:validation:Required
	Name string `json:"name"`

	// Key is the key in the ConfigMap that contains the authorization configuration
	// +kubebuilder:default=authz.json
	// +optional
	Key string `json:"key,omitempty"`
}

ConfigMapAuthzRef references a ConfigMap containing authorization configuration

func (*ConfigMapAuthzRef) DeepCopy added in v0.1.2

func (in *ConfigMapAuthzRef) DeepCopy() *ConfigMapAuthzRef

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

func (*ConfigMapAuthzRef) DeepCopyInto added in v0.1.2

func (in *ConfigMapAuthzRef) DeepCopyInto(out *ConfigMapAuthzRef)

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

type ConfigMapOIDCRef added in v0.0.40

type ConfigMapOIDCRef struct {
	// Name is the name of the ConfigMap
	// +kubebuilder:validation:Required
	Name string `json:"name"`

	// Key is the key in the ConfigMap that contains the OIDC configuration
	// +kubebuilder:default=oidc.json
	// +optional
	Key string `json:"key,omitempty"`
}

ConfigMapOIDCRef references a ConfigMap containing OIDC configuration

func (*ConfigMapOIDCRef) DeepCopy added in v0.0.40

func (in *ConfigMapOIDCRef) DeepCopy() *ConfigMapOIDCRef

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

func (*ConfigMapOIDCRef) DeepCopyInto added in v0.0.40

func (in *ConfigMapOIDCRef) DeepCopyInto(out *ConfigMapOIDCRef)

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

type ConflictResolutionConfig added in v0.5.2

type ConflictResolutionConfig struct {
	// PrefixFormat defines the prefix format for the "prefix" strategy
	// Supports placeholders: {workload}, {workload}_, {workload}.
	// +kubebuilder:default="{workload}_"
	// +optional
	PrefixFormat string `json:"prefixFormat,omitempty"`

	// PriorityOrder defines the workload priority order for the "priority" strategy
	// +optional
	PriorityOrder []string `json:"priorityOrder,omitempty"`
}

ConflictResolutionConfig provides configuration for conflict resolution strategies

func (*ConflictResolutionConfig) DeepCopy added in v0.5.2

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

func (*ConflictResolutionConfig) DeepCopyInto added in v0.5.2

func (in *ConflictResolutionConfig) DeepCopyInto(out *ConflictResolutionConfig)

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

type DiscoveredBackend added in v0.5.2

type DiscoveredBackend struct {
	// Name is the name of the backend MCPServer
	Name string `json:"name"`

	// AuthConfigRef is the name of the discovered MCPExternalAuthConfig (if any)
	// +optional
	AuthConfigRef string `json:"authConfigRef,omitempty"`

	// AuthType is the type of authentication configured
	// +optional
	AuthType string `json:"authType,omitempty"`

	// Status is the current status of the backend (ready, degraded, unavailable)
	// +optional
	Status string `json:"status,omitempty"`

	// LastHealthCheck is the timestamp of the last health check
	// +optional
	LastHealthCheck metav1.Time `json:"lastHealthCheck,omitempty"`

	// URL is the URL of the backend MCPServer
	// +optional
	URL string `json:"url,omitempty"`
}

DiscoveredBackend represents a discovered backend MCPServer in the MCPGroup

func (*DiscoveredBackend) DeepCopy added in v0.5.2

func (in *DiscoveredBackend) DeepCopy() *DiscoveredBackend

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

func (*DiscoveredBackend) DeepCopyInto added in v0.5.2

func (in *DiscoveredBackend) DeepCopyInto(out *DiscoveredBackend)

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

type ElicitationResponseHandler added in v0.6.12

type ElicitationResponseHandler struct {
	// Action defines the action to take when the user declines or cancels
	// - skip_remaining: Skip remaining steps in the workflow
	// - abort: Abort the entire workflow execution
	// - continue: Continue to the next step
	// +kubebuilder:validation:Enum=skip_remaining;abort;continue
	// +kubebuilder:default=abort
	// +optional
	Action string `json:"action,omitempty"`
}

ElicitationResponseHandler defines how to handle user responses to elicitation requests

func (*ElicitationResponseHandler) DeepCopy added in v0.6.12

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

func (*ElicitationResponseHandler) DeepCopyInto added in v0.6.12

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

	// RetryDelay is the delay between retry attempts
	// Only used when Action is "retry"
	// +kubebuilder:validation:Pattern=`^([0-9]+(\.[0-9]+)?(ms|s|m))+$`
	// +optional
	RetryDelay string `json:"retryDelay,omitempty"`
}

ErrorHandling defines error handling behavior for workflow steps

func (*ErrorHandling) DeepCopy added in v0.5.2

func (in *ErrorHandling) DeepCopy() *ErrorHandling

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

func (*ErrorHandling) DeepCopyInto added in v0.5.2

func (in *ErrorHandling) DeepCopyInto(out *ErrorHandling)

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

type ExternalAuthConfigRef added in v0.3.9

type ExternalAuthConfigRef struct {
	// Name is the name of the MCPExternalAuthConfig resource
	// +kubebuilder:validation:Required
	Name string `json:"name"`
}

ExternalAuthConfigRef defines a reference to a MCPExternalAuthConfig resource. The referenced MCPExternalAuthConfig must be in the same namespace as the MCPServer.

func (*ExternalAuthConfigRef) DeepCopy added in v0.3.9

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

func (*ExternalAuthConfigRef) DeepCopyInto added in v0.3.9

func (in *ExternalAuthConfigRef) DeepCopyInto(out *ExternalAuthConfigRef)

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

type ExternalAuthType added in v0.6.8

type ExternalAuthType string

ExternalAuthType represents the type of external authentication

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

	// ExternalAuthTypeHeaderInjection is the type for custom header injection
	ExternalAuthTypeHeaderInjection ExternalAuthType = "headerInjection"

	// ExternalAuthTypeUnauthenticated is the type for no authentication
	// This should only be used for backends on trusted networks (e.g., localhost, VPC)
	// or when authentication is handled by network-level security
	ExternalAuthTypeUnauthenticated ExternalAuthType = "unauthenticated"
)

External auth configuration types

type FailureHandlingConfig added in v0.5.2

type FailureHandlingConfig struct {
	// HealthCheckInterval is the interval between health checks
	// +kubebuilder:default="30s"
	// +optional
	HealthCheckInterval string `json:"healthCheckInterval,omitempty"`

	// UnhealthyThreshold is the number of consecutive failures before marking unhealthy
	// +kubebuilder:default=3
	// +optional
	UnhealthyThreshold int `json:"unhealthyThreshold,omitempty"`

	// PartialFailureMode defines behavior when some backends are unavailable
	// - fail: Fail entire request if any backend is unavailable
	// - best_effort: Continue with available backends
	// +kubebuilder:validation:Enum=fail;best_effort
	// +kubebuilder:default=fail
	// +optional
	PartialFailureMode string `json:"partialFailureMode,omitempty"`

	// CircuitBreaker configures circuit breaker behavior
	// +optional
	CircuitBreaker *CircuitBreakerConfig `json:"circuitBreaker,omitempty"`
}

FailureHandlingConfig configures failure handling behavior

func (*FailureHandlingConfig) DeepCopy added in v0.5.2

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 HeaderInjectionConfig added in v0.6.8

type HeaderInjectionConfig struct {
	// HeaderName is the name of the HTTP header to inject
	// +kubebuilder:validation:Required
	// +kubebuilder:validation:MinLength=1
	HeaderName string `json:"headerName"`

	// ValueSecretRef references a Kubernetes Secret containing the header value
	// +kubebuilder:validation:Required
	ValueSecretRef *SecretKeyRef `json:"valueSecretRef"`
}

HeaderInjectionConfig holds configuration for custom HTTP header injection authentication. This allows injecting a secret-based header value into requests to backend MCP servers. For security reasons, only secret references are supported (no plaintext values).

func (*HeaderInjectionConfig) DeepCopy added in v0.6.8

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

func (*HeaderInjectionConfig) DeepCopyInto added in v0.6.8

func (in *HeaderInjectionConfig) DeepCopyInto(out *HeaderInjectionConfig)

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

type IncomingAuthConfig added in v0.5.2

type IncomingAuthConfig struct {
	// Type defines the authentication type: anonymous or oidc
	// When no authentication is required, explicitly set this to "anonymous"
	// +kubebuilder:validation:Enum=anonymous;oidc
	// +kubebuilder:validation:Required
	Type string `json:"type"`

	// OIDCConfig defines OIDC authentication configuration
	// Reuses MCPServer OIDC patterns
	// +optional
	OIDCConfig *OIDCConfigRef `json:"oidcConfig,omitempty"`

	// AuthzConfig defines authorization policy configuration
	// Reuses MCPServer authz patterns
	// +optional
	AuthzConfig *AuthzConfigRef `json:"authzConfig,omitempty"`
}

IncomingAuthConfig configures authentication for clients connecting to the Virtual MCP server

func (*IncomingAuthConfig) DeepCopy added in v0.5.2

func (in *IncomingAuthConfig) DeepCopy() *IncomingAuthConfig

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

func (*IncomingAuthConfig) DeepCopyInto added in v0.5.2

func (in *IncomingAuthConfig) DeepCopyInto(out *IncomingAuthConfig)

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

type InlineAuthzConfig added in v0.1.2

type InlineAuthzConfig struct {
	// Policies is a list of Cedar policy strings
	// +kubebuilder:validation:Required
	// +kubebuilder:validation:MinItems=1
	Policies []string `json:"policies"`

	// EntitiesJSON is a JSON string representing Cedar entities
	// +kubebuilder:default="[]"
	// +optional
	EntitiesJSON string `json:"entitiesJson,omitempty"`
}

InlineAuthzConfig contains direct authorization configuration

func (*InlineAuthzConfig) DeepCopy added in v0.1.2

func (in *InlineAuthzConfig) DeepCopy() *InlineAuthzConfig

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

func (*InlineAuthzConfig) DeepCopyInto added in v0.1.2

func (in *InlineAuthzConfig) DeepCopyInto(out *InlineAuthzConfig)

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

type InlineOIDCConfig added in v0.0.40

type InlineOIDCConfig struct {
	// Issuer is the OIDC issuer URL
	// +kubebuilder:validation:Required
	Issuer string `json:"issuer"`

	// Audience is the expected audience for the token
	// +optional
	Audience string `json:"audience,omitempty"`

	// JWKSURL is the URL to fetch the JWKS from
	// +optional
	JWKSURL string `json:"jwksUrl,omitempty"`

	// IntrospectionURL is the URL for token introspection endpoint
	// +optional
	IntrospectionURL string `json:"introspectionUrl,omitempty"`

	// ClientID is the OIDC client ID
	// +optional
	ClientID string `json:"clientId,omitempty"`

	// ClientSecret is the client secret for introspection (optional)
	// Deprecated: Use ClientSecretRef instead for better security
	// +optional
	ClientSecret string `json:"clientSecret,omitempty"`

	// ClientSecretRef is a reference to a Kubernetes Secret containing the client secret
	// If both ClientSecret and ClientSecretRef are provided, ClientSecretRef takes precedence
	// +optional
	ClientSecretRef *SecretKeyRef `json:"clientSecretRef,omitempty"`

	// ThvCABundlePath is the path to CA certificate bundle file for HTTPS requests
	// The file must be mounted into the pod (e.g., via ConfigMap or Secret volume)
	// +optional
	ThvCABundlePath string `json:"thvCABundlePath,omitempty"`

	// JWKSAuthTokenPath is the path to file containing bearer token for JWKS/OIDC requests
	// The file must be mounted into the pod (e.g., via Secret volume)
	// +optional
	JWKSAuthTokenPath string `json:"jwksAuthTokenPath,omitempty"`

	// JWKSAllowPrivateIP allows JWKS/OIDC endpoints on private IP addresses
	// Use with caution - only enable for trusted internal IDPs
	// +kubebuilder:default=false
	// +optional
	JWKSAllowPrivateIP bool `json:"jwksAllowPrivateIP"`

	// ProtectedResourceAllowPrivateIP allows protected resource endpoint on private IP addresses
	// Use with caution - only enable for trusted internal IDPs or testing
	// +kubebuilder:default=false
	// +optional
	ProtectedResourceAllowPrivateIP bool `json:"protectedResourceAllowPrivateIP"`

	// InsecureAllowHTTP allows HTTP (non-HTTPS) OIDC issuers for development/testing
	// WARNING: This is insecure and should NEVER be used in production
	// Only enable for local development, testing, or trusted internal networks
	// +kubebuilder:default=false
	// +optional
	InsecureAllowHTTP bool `json:"insecureAllowHTTP"`

	// Scopes is the list of OAuth scopes to advertise in the well-known endpoint (RFC 9728)
	// If empty, defaults to ["openid"]
	// +optional
	Scopes []string `json:"scopes,omitempty"`
}

InlineOIDCConfig contains direct OIDC configuration

func (*InlineOIDCConfig) DeepCopy added in v0.0.40

func (in *InlineOIDCConfig) DeepCopy() *InlineOIDCConfig

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

func (*InlineOIDCConfig) DeepCopyInto added in v0.0.40

func (in *InlineOIDCConfig) DeepCopyInto(out *InlineOIDCConfig)

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

type KubernetesOIDCConfig added in v0.0.40

type KubernetesOIDCConfig struct {
	// ServiceAccount is the name of the service account to validate tokens for
	// If empty, uses the pod's service account
	// +optional
	ServiceAccount string `json:"serviceAccount,omitempty"`

	// Namespace is the namespace of the service account
	// If empty, uses the MCPServer's namespace
	// +optional
	Namespace string `json:"namespace,omitempty"`

	// Audience is the expected audience for the token
	// +kubebuilder:default=toolhive
	// +optional
	Audience string `json:"audience,omitempty"`

	// Issuer is the OIDC issuer URL
	// +kubebuilder:default="https://kubernetes.default.svc"
	// +optional
	Issuer string `json:"issuer,omitempty"`

	// JWKSURL is the URL to fetch the JWKS from
	// If empty, OIDC discovery will be used to automatically determine the JWKS URL
	// +optional
	JWKSURL string `json:"jwksUrl,omitempty"`

	// IntrospectionURL is the URL for token introspection endpoint
	// If empty, OIDC discovery will be used to automatically determine the introspection URL
	// +optional
	IntrospectionURL string `json:"introspectionUrl,omitempty"`

	// UseClusterAuth enables using the Kubernetes cluster's CA bundle and service account token
	// When true, uses /var/run/secrets/kubernetes.io/serviceaccount/ca.crt for TLS verification
	// and /var/run/secrets/kubernetes.io/serviceaccount/token for bearer token authentication
	// Defaults to true if not specified
	// +optional
	UseClusterAuth *bool `json:"useClusterAuth"`
}

KubernetesOIDCConfig configures OIDC for Kubernetes service account token validation

func (*KubernetesOIDCConfig) DeepCopy added in v0.0.40

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.

func (*MCPExternalAuthConfig) SetupWebhookWithManager added in v0.6.12

func (r *MCPExternalAuthConfig) SetupWebhookWithManager(mgr ctrl.Manager) error

SetupWebhookWithManager sets up the webhook with the Manager

func (*MCPExternalAuthConfig) ValidateCreate added in v0.6.12

ValidateCreate implements webhook.CustomValidator

func (*MCPExternalAuthConfig) ValidateDelete added in v0.6.12

ValidateDelete implements webhook.CustomValidator

func (*MCPExternalAuthConfig) ValidateUpdate added in v0.6.12

ValidateUpdate implements webhook.CustomValidator

type MCPExternalAuthConfigList added in v0.3.9

type MCPExternalAuthConfigList struct {
	metav1.TypeMeta `json:",inline"` // nolint:revive
	metav1.ListMeta `json:"metadata,omitempty"`
	Items           []MCPExternalAuthConfig `json:"items"`
}

MCPExternalAuthConfigList contains a list of MCPExternalAuthConfig

func (*MCPExternalAuthConfigList) DeepCopy added in v0.3.9

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;headerInjection;unauthenticated
	// +kubebuilder:validation:Required
	Type ExternalAuthType `json:"type"`

	// TokenExchange configures RFC-8693 OAuth 2.0 Token Exchange
	// Only used when Type is "tokenExchange"
	// +optional
	TokenExchange *TokenExchangeConfig `json:"tokenExchange,omitempty"`

	// HeaderInjection configures custom HTTP header injection
	// Only used when Type is "headerInjection"
	// +optional
	HeaderInjection *HeaderInjectionConfig `json:"headerInjection,omitempty"`
}

MCPExternalAuthConfigSpec defines the desired state of MCPExternalAuthConfig. MCPExternalAuthConfig resources are namespace-scoped and can only be referenced by MCPServer resources in the same namespace.

func (*MCPExternalAuthConfigSpec) DeepCopy added in v0.3.9

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

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

	// RemoteProxies lists MCPRemoteProxy names in this group
	// +optional
	RemoteProxies []string `json:"remoteProxies,omitempty"`

	// RemoteProxyCount is the number of MCPRemoteProxies
	// +optional
	RemoteProxyCount int `json:"remoteProxyCount,omitempty"`

	// Conditions represent observations
	// +optional
	Conditions []metav1.Condition `json:"conditions,omitempty"`
}

MCPGroupStatus defines observed state

func (*MCPGroupStatus) DeepCopy added in v0.4.0

func (in *MCPGroupStatus) DeepCopy() *MCPGroupStatus

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

func (*MCPGroupStatus) DeepCopyInto added in v0.4.0

func (in *MCPGroupStatus) DeepCopyInto(out *MCPGroupStatus)

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

type MCPRegistry added in v0.2.17

type MCPRegistry struct {
	metav1.TypeMeta   `json:",inline"` // nolint:revive
	metav1.ObjectMeta `json:"metadata,omitempty"`

	Spec   MCPRegistrySpec   `json:"spec,omitempty"`
	Status MCPRegistryStatus `json:"status,omitempty"`
}

MCPRegistry is the Schema for the mcpregistries API

func (*MCPRegistry) BuildPGPassSecretName added in v0.6.14

func (r *MCPRegistry) BuildPGPassSecretName() string

BuildPGPassSecretName returns the name of the generated pgpass secret for this registry

func (*MCPRegistry) DeepCopy added in v0.2.17

func (in *MCPRegistry) DeepCopy() *MCPRegistry

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

func (*MCPRegistry) DeepCopyInto added in v0.2.17

func (in *MCPRegistry) DeepCopyInto(out *MCPRegistry)

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

func (*MCPRegistry) DeepCopyObject added in v0.2.17

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

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

func (*MCPRegistry) DeriveOverallPhase added in v0.3.6

func (r *MCPRegistry) DeriveOverallPhase() MCPRegistryPhase

DeriveOverallPhase determines the overall MCPRegistry phase based on sync and API status

func (*MCPRegistry) GetAPIResourceName added in v0.3.6

func (r *MCPRegistry) GetAPIResourceName() string

GetAPIResourceName returns the base name for registry API resources (deployment, service)

func (*MCPRegistry) GetDatabaseConfig added in v0.6.14

func (r *MCPRegistry) GetDatabaseConfig() *MCPRegistryDatabaseConfig

GetDatabaseConfig returns the database configuration. Callers should check HasDatabaseConfig() before calling this method.

func (*MCPRegistry) GetDatabasePort added in v0.6.14

func (r *MCPRegistry) GetDatabasePort() int

GetDatabasePort returns the database port. If the port is not specified, it returns 5432. We do this because its likely to be 5432 due to it being the default port for PostgreSQL.

func (*MCPRegistry) GetPodTemplateSpecRaw added in v0.6.9

func (r *MCPRegistry) GetPodTemplateSpecRaw() *runtime.RawExtension

GetPodTemplateSpecRaw returns the raw PodTemplateSpec

func (*MCPRegistry) GetStorageName added in v0.3.6

func (r *MCPRegistry) GetStorageName() string

GetStorageName returns the name used for registry storage resources

func (*MCPRegistry) HasDatabaseConfig added in v0.6.14

func (r *MCPRegistry) HasDatabaseConfig() bool

HasDatabaseConfig returns true if the MCPRegistry has a valid database configuration. A valid configuration requires: - DatabaseConfig to be non-nil - Host to be specified - Database to be specified - User to be specified - MigrationUser to be specified - DBAppUserPasswordSecretRef.Name to be specified - DBMigrationUserPasswordSecretRef.Name to be specified

func (*MCPRegistry) HasPodTemplateSpec added in v0.6.9

func (r *MCPRegistry) HasPodTemplateSpec() bool

HasPodTemplateSpec returns true if the MCPRegistry has a PodTemplateSpec

type MCPRegistryConfig added in v0.6.7

type MCPRegistryConfig struct {
	// Name is a unique identifier for this registry configuration within the MCPRegistry
	// +kubebuilder:validation:Required
	// +kubebuilder:validation:MinLength=1
	Name string `json:"name"`

	// Format is the data format (toolhive, upstream)
	// +kubebuilder:validation:Enum=toolhive;upstream
	// +kubebuilder:default=toolhive
	Format string `json:"format,omitempty"`

	// ConfigMapRef defines the ConfigMap source configuration
	// Mutually exclusive with Git, API, and PVCRef
	// +optional
	ConfigMapRef *corev1.ConfigMapKeySelector `json:"configMapRef,omitempty"`

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

	// API defines the API source configuration
	// Mutually exclusive with ConfigMapRef, Git, and PVCRef
	// +optional
	API *APISource `json:"api,omitempty"`

	// PVCRef defines the PersistentVolumeClaim source configuration
	// Mutually exclusive with ConfigMapRef, Git, and API
	// +optional
	PVCRef *PVCSource `json:"pvcRef,omitempty"`

	// SyncPolicy defines the automatic synchronization behavior for this registry.
	// If specified, enables automatic synchronization at the given interval.
	// Manual synchronization is always supported via annotation-based triggers
	// regardless of this setting.
	// +optional
	SyncPolicy *SyncPolicy `json:"syncPolicy,omitempty"`

	// Filter defines include/exclude patterns for registry content
	// +optional
	Filter *RegistryFilter `json:"filter,omitempty"`
}

MCPRegistryConfig defines the configuration for a registry data source

func (*MCPRegistryConfig) DeepCopy added in v0.6.7

func (in *MCPRegistryConfig) DeepCopy() *MCPRegistryConfig

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

func (*MCPRegistryConfig) DeepCopyInto added in v0.6.7

func (in *MCPRegistryConfig) DeepCopyInto(out *MCPRegistryConfig)

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

type MCPRegistryDatabaseConfig added in v0.6.9

type MCPRegistryDatabaseConfig struct {
	// Host is the database server hostname
	// +kubebuilder:default="postgres"
	// +optional
	Host string `json:"host,omitempty"`

	// Port is the database server port
	// +kubebuilder:default=5432
	// +kubebuilder:validation:Minimum=1
	// +kubebuilder:validation:Maximum=65535
	// +optional
	Port int `json:"port,omitempty"`

	// User is the application user (limited privileges: SELECT, INSERT, UPDATE, DELETE)
	// Credentials should be provided via pgpass file or environment variables
	// +kubebuilder:default="db_app"
	// +optional
	User string `json:"user,omitempty"`

	// MigrationUser is the migration user (elevated privileges: CREATE, ALTER, DROP)
	// Used for running database schema migrations
	// Credentials should be provided via pgpass file or environment variables
	// +kubebuilder:default="db_migrator"
	// +optional
	MigrationUser string `json:"migrationUser,omitempty"`

	// Database is the database name
	// +kubebuilder:default="registry"
	// +optional
	Database string `json:"database,omitempty"`

	// SSLMode is the SSL mode for the connection
	// Valid values: disable, allow, prefer, require, verify-ca, verify-full
	// +kubebuilder:validation:Enum=disable;allow;prefer;require;verify-ca;verify-full
	// +kubebuilder:default="prefer"
	// +optional
	SSLMode string `json:"sslMode,omitempty"`

	// MaxOpenConns is the maximum number of open connections to the database
	// +kubebuilder:default=10
	// +kubebuilder:validation:Minimum=1
	// +optional
	MaxOpenConns int `json:"maxOpenConns,omitempty"`

	// MaxIdleConns is the maximum number of idle connections in the pool
	// +kubebuilder:default=2
	// +kubebuilder:validation:Minimum=0
	// +optional
	MaxIdleConns int `json:"maxIdleConns,omitempty"`

	// ConnMaxLifetime is the maximum amount of time a connection may be reused (Go duration format)
	// Examples: "30m", "1h", "24h"
	// +kubebuilder:validation:Pattern=^([0-9]+(\.[0-9]+)?(ns|us|µs|ms|s|m|h))+$
	// +kubebuilder:default="30m"
	// +optional
	ConnMaxLifetime string `json:"connMaxLifetime,omitempty"`

	// DBAppUserPasswordSecretRef references a Kubernetes Secret containing the password for the application database user.
	// The operator will use this password along with DBMigrationUserPasswordSecretRef to generate a pgpass file
	// that is mounted to the registry API container.
	//
	// +kubebuilder:validation:Required
	DBAppUserPasswordSecretRef corev1.SecretKeySelector `json:"dbAppUserPasswordSecretRef"`

	// DBMigrationUserPasswordSecretRef references a Kubernetes Secret containing the password for the migration database user.
	// The operator will use this password along with DBAppUserPasswordSecretRef to generate a pgpass file
	// that is mounted to the registry API container.
	//
	// +kubebuilder:validation:Required
	DBMigrationUserPasswordSecretRef corev1.SecretKeySelector `json:"dbMigrationUserPasswordSecretRef"`
}

MCPRegistryDatabaseConfig defines PostgreSQL database configuration for the registry API server. Uses a two-user security model: separate users for operations and migrations.

func (*MCPRegistryDatabaseConfig) DeepCopy added in v0.6.9

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

func (*MCPRegistryDatabaseConfig) DeepCopyInto added in v0.6.9

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

type MCPRegistryList added in v0.2.17

type MCPRegistryList struct {
	metav1.TypeMeta `json:",inline"` // nolint:revive
	metav1.ListMeta `json:"metadata,omitempty"`
	Items           []MCPRegistry `json:"items"`
}

MCPRegistryList contains a list of MCPRegistry

func (*MCPRegistryList) DeepCopy added in v0.2.17

func (in *MCPRegistryList) DeepCopy() *MCPRegistryList

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

func (*MCPRegistryList) DeepCopyInto added in v0.2.17

func (in *MCPRegistryList) DeepCopyInto(out *MCPRegistryList)

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

func (*MCPRegistryList) DeepCopyObject added in v0.2.17

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

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

type MCPRegistryPhase added in v0.2.17

type MCPRegistryPhase string

MCPRegistryPhase represents the phase of the MCPRegistry +kubebuilder:validation:Enum=Pending;Ready;Failed;Syncing;Terminating

const (
	// MCPRegistryPhasePending means the MCPRegistry is being initialized
	MCPRegistryPhasePending MCPRegistryPhase = "Pending"

	// MCPRegistryPhaseReady means the MCPRegistry is ready and operational
	MCPRegistryPhaseReady MCPRegistryPhase = "Ready"

	// MCPRegistryPhaseFailed means the MCPRegistry has failed
	MCPRegistryPhaseFailed MCPRegistryPhase = "Failed"

	// MCPRegistryPhaseSyncing means the MCPRegistry is currently syncing data
	MCPRegistryPhaseSyncing MCPRegistryPhase = "Syncing"

	// MCPRegistryPhaseTerminating means the MCPRegistry is being deleted
	MCPRegistryPhaseTerminating MCPRegistryPhase = "Terminating"
)

type MCPRegistrySpec added in v0.2.17

type MCPRegistrySpec struct {
	// DisplayName is a human-readable name for the registry
	// +optional
	DisplayName string `json:"displayName,omitempty"`

	// Registries defines the configuration for the registry data sources
	// +kubebuilder:validation:Required
	// +kubebuilder:validation:MinItems=1
	Registries []MCPRegistryConfig `json:"registries"`

	// EnforceServers indicates whether MCPServers in this namespace must have their images
	// present in at least one registry in the namespace. When any registry in the namespace
	// has this field set to true, enforcement is enabled for the entire namespace.
	// MCPServers with images not found in any registry will be rejected.
	// When false (default), MCPServers can be deployed regardless of registry presence.
	// +kubebuilder:default=false
	// +optional
	EnforceServers bool `json:"enforceServers,omitempty"`

	// PodTemplateSpec defines the pod template to use for the registry API server
	// This allows for customizing the pod configuration beyond what is provided by the other fields.
	// Note that to modify the specific container the registry API server runs in, you must specify
	// the `registry-api` container name in the PodTemplateSpec.
	// This field accepts a PodTemplateSpec object as JSON/YAML.
	// +optional
	// +kubebuilder:pruning:PreserveUnknownFields
	// +kubebuilder:validation:Type=object
	PodTemplateSpec *runtime.RawExtension `json:"podTemplateSpec,omitempty"`

	// DatabaseConfig defines the PostgreSQL database configuration for the registry API server.
	// If not specified, defaults will be used:
	//   - Host: "postgres"
	//   - Port: 5432
	//   - User: "db_app"
	//   - MigrationUser: "db_migrator"
	//   - Database: "registry"
	//   - SSLMode: "prefer"
	//   - MaxOpenConns: 10
	//   - MaxIdleConns: 2
	//   - ConnMaxLifetime: "30m"
	// +optional
	DatabaseConfig *MCPRegistryDatabaseConfig `json:"databaseConfig,omitempty"`
}

MCPRegistrySpec defines the desired state of MCPRegistry

func (*MCPRegistrySpec) DeepCopy added in v0.2.17

func (in *MCPRegistrySpec) DeepCopy() *MCPRegistrySpec

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

func (*MCPRegistrySpec) DeepCopyInto added in v0.2.17

func (in *MCPRegistrySpec) DeepCopyInto(out *MCPRegistrySpec)

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

type MCPRegistryStatus added in v0.2.17

type MCPRegistryStatus struct {
	// Phase represents the current overall phase of the MCPRegistry
	// Derived from sync and API status
	// +optional
	Phase MCPRegistryPhase `json:"phase,omitempty"`

	// Message provides additional information about the current phase
	// +optional
	Message string `json:"message,omitempty"`

	// SyncStatus provides detailed information about data synchronization
	// +optional
	SyncStatus *SyncStatus `json:"syncStatus,omitempty"`

	// APIStatus provides detailed information about the API service
	// +optional
	APIStatus *APIStatus `json:"apiStatus,omitempty"`

	// LastAppliedFilterHash is the hash of the last applied filter
	// +optional
	LastAppliedFilterHash string `json:"lastAppliedFilterHash,omitempty"`

	// StorageRef is a reference to the internal storage location
	// +optional
	StorageRef *StorageReference `json:"storageRef,omitempty"`

	// LastManualSyncTrigger tracks the last processed manual sync annotation value
	// Used to detect new manual sync requests via toolhive.stacklok.dev/sync-trigger annotation
	// +optional
	LastManualSyncTrigger string `json:"lastManualSyncTrigger,omitempty"`

	// Conditions represent the latest available observations of the MCPRegistry's state
	// +optional
	// +listType=map
	// +listMapKey=type
	Conditions []metav1.Condition `json:"conditions,omitempty"`
}

MCPRegistryStatus defines the observed state of MCPRegistry

func (*MCPRegistryStatus) DeepCopy added in v0.2.17

func (in *MCPRegistryStatus) DeepCopy() *MCPRegistryStatus

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

func (*MCPRegistryStatus) DeepCopyInto added in v0.2.17

func (in *MCPRegistryStatus) DeepCopyInto(out *MCPRegistryStatus)

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

type MCPRemoteProxy added in v0.3.10

type MCPRemoteProxy struct {
	metav1.TypeMeta   `json:",inline"` // nolint:revive
	metav1.ObjectMeta `json:"metadata,omitempty"`

	Spec   MCPRemoteProxySpec   `json:"spec,omitempty"`
	Status MCPRemoteProxyStatus `json:"status,omitempty"`
}

MCPRemoteProxy is the Schema for the mcpremoteproxies API It enables proxying remote MCP servers with authentication, authorization, audit logging, and tool filtering

func (*MCPRemoteProxy) DeepCopy added in v0.3.10

func (in *MCPRemoteProxy) DeepCopy() *MCPRemoteProxy

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

func (*MCPRemoteProxy) DeepCopyInto added in v0.3.10

func (in *MCPRemoteProxy) DeepCopyInto(out *MCPRemoteProxy)

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

func (*MCPRemoteProxy) DeepCopyObject added in v0.3.10

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

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

func (*MCPRemoteProxy) GetName added in v0.3.10

func (m *MCPRemoteProxy) GetName() string

GetName returns the name of the MCPRemoteProxy

func (*MCPRemoteProxy) GetNamespace added in v0.3.10

func (m *MCPRemoteProxy) GetNamespace() string

GetNamespace returns the namespace of the MCPRemoteProxy

func (*MCPRemoteProxy) GetOIDCConfig added in v0.3.10

func (m *MCPRemoteProxy) GetOIDCConfig() *OIDCConfigRef

GetOIDCConfig returns the OIDC configuration reference

func (*MCPRemoteProxy) GetProxyPort added in v0.5.1

func (m *MCPRemoteProxy) GetProxyPort() int32

GetProxyPort returns the proxy port of the MCPRemoteProxy

type MCPRemoteProxyList added in v0.3.10

type MCPRemoteProxyList struct {
	metav1.TypeMeta `json:",inline"` // nolint:revive
	metav1.ListMeta `json:"metadata,omitempty"`
	Items           []MCPRemoteProxy `json:"items"`
}

MCPRemoteProxyList contains a list of MCPRemoteProxy

func (*MCPRemoteProxyList) DeepCopy added in v0.3.10

func (in *MCPRemoteProxyList) DeepCopy() *MCPRemoteProxyList

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

func (*MCPRemoteProxyList) DeepCopyInto added in v0.3.10

func (in *MCPRemoteProxyList) DeepCopyInto(out *MCPRemoteProxyList)

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

func (*MCPRemoteProxyList) DeepCopyObject added in v0.3.10

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

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

type MCPRemoteProxyPhase added in v0.3.10

type MCPRemoteProxyPhase string

MCPRemoteProxyPhase is a label for the condition of a MCPRemoteProxy at the current time +kubebuilder:validation:Enum=Pending;Ready;Failed;Terminating

const (
	// MCPRemoteProxyPhasePending means the proxy is being created
	MCPRemoteProxyPhasePending MCPRemoteProxyPhase = "Pending"

	// MCPRemoteProxyPhaseReady means the proxy is ready and operational
	MCPRemoteProxyPhaseReady MCPRemoteProxyPhase = "Ready"

	// MCPRemoteProxyPhaseFailed means the proxy failed to start or encountered an error
	MCPRemoteProxyPhaseFailed MCPRemoteProxyPhase = "Failed"

	// MCPRemoteProxyPhaseTerminating means the proxy is being deleted
	MCPRemoteProxyPhaseTerminating MCPRemoteProxyPhase = "Terminating"
)

type MCPRemoteProxySpec added in v0.3.10

type MCPRemoteProxySpec struct {
	// RemoteURL is the URL of the remote MCP server to proxy
	// +kubebuilder:validation:Required
	// +kubebuilder:validation:Pattern=`^https?://`
	RemoteURL string `json:"remoteURL"`

	// Port is the port to expose the MCP proxy on
	// +kubebuilder:validation:Minimum=1
	// +kubebuilder:validation:Maximum=65535
	// +kubebuilder:default=8080
	Port int32 `json:"port,omitempty"`

	// Transport is the transport method for the remote proxy (sse or streamable-http)
	// +kubebuilder:validation:Enum=sse;streamable-http
	// +kubebuilder:default=streamable-http
	Transport string `json:"transport,omitempty"`

	// OIDCConfig defines OIDC authentication configuration for the proxy
	// This validates incoming tokens from clients. Required for proxy mode.
	// +kubebuilder:validation:Required
	OIDCConfig OIDCConfigRef `json:"oidcConfig"`

	// ExternalAuthConfigRef references a MCPExternalAuthConfig resource for token exchange.
	// When specified, the proxy will exchange validated incoming tokens for remote service tokens.
	// The referenced MCPExternalAuthConfig must exist in the same namespace as this MCPRemoteProxy.
	// +optional
	ExternalAuthConfigRef *ExternalAuthConfigRef `json:"externalAuthConfigRef,omitempty"`

	// AuthzConfig defines authorization policy configuration for the proxy
	// +optional
	AuthzConfig *AuthzConfigRef `json:"authzConfig,omitempty"`

	// Audit defines audit logging configuration for the proxy
	// +optional
	Audit *AuditConfig `json:"audit,omitempty"`

	// ToolConfigRef references a MCPToolConfig resource for tool filtering and renaming.
	// The referenced MCPToolConfig must exist in the same namespace as this MCPRemoteProxy.
	// Cross-namespace references are not supported for security and isolation reasons.
	// If specified, this allows filtering and overriding tools from the remote MCP server.
	// +optional
	ToolConfigRef *ToolConfigRef `json:"toolConfigRef,omitempty"`

	// Telemetry defines observability configuration for the proxy
	// +optional
	Telemetry *TelemetryConfig `json:"telemetry,omitempty"`

	// Resources defines the resource requirements for the proxy container
	// +optional
	Resources ResourceRequirements `json:"resources,omitempty"`

	// TrustProxyHeaders indicates whether to trust X-Forwarded-* headers from reverse proxies
	// When enabled, the proxy will use X-Forwarded-Proto, X-Forwarded-Host, X-Forwarded-Port,
	// and X-Forwarded-Prefix headers to construct endpoint URLs
	// +kubebuilder:default=false
	// +optional
	TrustProxyHeaders bool `json:"trustProxyHeaders,omitempty"`

	// ResourceOverrides allows overriding annotations and labels for resources created by the operator
	// +optional
	ResourceOverrides *ResourceOverrides `json:"resourceOverrides,omitempty"`

	// GroupRef is the name of the MCPGroup this proxy belongs to
	// Must reference an existing MCPGroup in the same namespace
	// +optional
	GroupRef string `json:"groupRef,omitempty"`
}

MCPRemoteProxySpec defines the desired state of MCPRemoteProxy

func (*MCPRemoteProxySpec) DeepCopy added in v0.3.10

func (in *MCPRemoteProxySpec) DeepCopy() *MCPRemoteProxySpec

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

func (*MCPRemoteProxySpec) DeepCopyInto added in v0.3.10

func (in *MCPRemoteProxySpec) DeepCopyInto(out *MCPRemoteProxySpec)

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

type MCPRemoteProxyStatus added in v0.3.10

type MCPRemoteProxyStatus struct {
	// Phase is the current phase of the MCPRemoteProxy
	// +optional
	Phase MCPRemoteProxyPhase `json:"phase,omitempty"`

	// URL is the internal cluster URL where the proxy can be accessed
	// +optional
	URL string `json:"url,omitempty"`

	// ExternalURL is the external URL where the proxy can be accessed (if exposed externally)
	// +optional
	ExternalURL string `json:"externalURL,omitempty"`

	// ObservedGeneration reflects the generation of the most recently observed MCPRemoteProxy
	// +optional
	ObservedGeneration int64 `json:"observedGeneration,omitempty"`

	// Conditions represent the latest available observations of the MCPRemoteProxy's state
	// +optional
	Conditions []metav1.Condition `json:"conditions,omitempty"`

	// ToolConfigHash stores the hash of the referenced ToolConfig for change detection
	// +optional
	ToolConfigHash string `json:"toolConfigHash,omitempty"`

	// ExternalAuthConfigHash is the hash of the referenced MCPExternalAuthConfig spec
	// +optional
	ExternalAuthConfigHash string `json:"externalAuthConfigHash,omitempty"`

	// Message provides additional information about the current phase
	// +optional
	Message string `json:"message,omitempty"`
}

MCPRemoteProxyStatus defines the observed state of MCPRemoteProxy

func (*MCPRemoteProxyStatus) DeepCopy added in v0.3.10

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 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 {
	// LogLevel sets the logging level for the Virtual MCP server.
	// Set to "debug" to enable debug logging. When not set, defaults to info level.
	// +kubebuilder:validation:Enum=debug
	// +optional
	LogLevel string `json:"logLevel,omitempty"`

	// Timeouts configures timeout settings
	// +optional
	Timeouts *TimeoutConfig `json:"timeouts,omitempty"`

	// FailureHandling configures failure handling behavior
	// +optional
	FailureHandling *FailureHandlingConfig `json:"failureHandling,omitempty"`
}

OperationalConfig defines operational settings

func (*OperationalConfig) DeepCopy added in v0.5.2

func (in *OperationalConfig) DeepCopy() *OperationalConfig

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

func (*OperationalConfig) DeepCopyInto added in v0.5.2

func (in *OperationalConfig) DeepCopyInto(out *OperationalConfig)

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

type OutboundNetworkPermissions

type OutboundNetworkPermissions struct {
	// InsecureAllowAll allows all outbound network connections (not recommended)
	// +kubebuilder:default=false
	// +optional
	InsecureAllowAll bool `json:"insecureAllowAll,omitempty"`

	// AllowHost is a list of hosts to allow connections to
	// +optional
	AllowHost []string `json:"allowHost,omitempty"`

	// AllowPort is a list of ports to allow connections to
	// +optional
	AllowPort []int32 `json:"allowPort,omitempty"`
}

OutboundNetworkPermissions defines the outbound network permissions

func (*OutboundNetworkPermissions) DeepCopy

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
	// +kubebuilder:validation:Enum=discovered;inline
	// +kubebuilder:default=discovered
	// +optional
	Source string `json:"source,omitempty"`

	// Default defines default behavior for backends without explicit auth config
	// +optional
	Default *BackendAuthConfig `json:"default,omitempty"`

	// Backends defines per-backend authentication overrides
	// Works in all modes (discovered, inline)
	// +optional
	Backends map[string]BackendAuthConfig `json:"backends,omitempty"`
}

OutgoingAuthConfig configures authentication from Virtual MCP to backend MCPServers

func (*OutgoingAuthConfig) DeepCopy added in v0.5.2

func (in *OutgoingAuthConfig) DeepCopy() *OutgoingAuthConfig

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

func (*OutgoingAuthConfig) DeepCopyInto added in v0.5.2

func (in *OutgoingAuthConfig) DeepCopyInto(out *OutgoingAuthConfig)

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

type OutputPropertySpec added in v0.6.10

type OutputPropertySpec struct {
	// Type is the JSON Schema type: "string", "integer", "number", "boolean", "object", "array"
	// +kubebuilder:validation:Required
	// +kubebuilder:validation:Enum=string;integer;number;boolean;object;array
	Type string `json:"type"`

	// Description is a human-readable description exposed to clients and models
	// +optional
	Description string `json:"description,omitempty"`

	// Value is a template string for constructing the runtime value
	// Supports template syntax: {{.steps.step_id.output.field}}, {{.params.param_name}}
	// For object types, this can be a JSON string that will be deserialized
	// +optional
	Value string `json:"value,omitempty"`

	// Properties defines nested properties for object types
	// +optional
	// +kubebuilder:pruning:PreserveUnknownFields
	// +kubebuilder:validation:Schemaless
	Properties map[string]OutputPropertySpec `json:"properties,omitempty"`

	// Default is the fallback value if template expansion fails
	// +optional
	// +kubebuilder:pruning:PreserveUnknownFields
	// +kubebuilder:validation:Schemaless
	Default *runtime.RawExtension `json:"default,omitempty"`
}

OutputPropertySpec defines a single output property

func (*OutputPropertySpec) DeepCopy added in v0.6.10

func (in *OutputPropertySpec) DeepCopy() *OutputPropertySpec

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

func (*OutputPropertySpec) DeepCopyInto added in v0.6.10

func (in *OutputPropertySpec) DeepCopyInto(out *OutputPropertySpec)

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

type OutputSpec added in v0.6.10

type OutputSpec struct {
	// Properties defines the output properties
	// Map key is the property name, value is the property definition
	// +optional
	Properties map[string]OutputPropertySpec `json:"properties,omitempty"`

	// Required lists property names that must be present in the output
	// +optional
	Required []string `json:"required,omitempty"`
}

OutputSpec defines the structured output schema for a composite tool workflow

func (*OutputSpec) DeepCopy added in v0.6.10

func (in *OutputSpec) DeepCopy() *OutputSpec

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

func (*OutputSpec) DeepCopyInto added in v0.6.10

func (in *OutputSpec) DeepCopyInto(out *OutputSpec)

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

type PVCSource added in v0.6.10

type PVCSource struct {
	// ClaimName is the name of the PersistentVolumeClaim
	// +kubebuilder:validation:Required
	// +kubebuilder:validation:MinLength=1
	ClaimName string `json:"claimName"`

	// Path is the relative path to the registry file within the PVC.
	// The PVC is mounted at /config/registry/{registryName}/.
	// The full file path becomes: /config/registry/{registryName}/{path}
	//
	// This design:
	// - Each registry gets its own mount point (consistent with ConfigMap sources)
	// - Multiple registries can share the same PVC by mounting it at different paths
	// - Users control PVC organization freely via the path field
	//
	// Examples:
	//   Registry "production" using PVC "shared-data" with path "prod/registry.json":
	//     PVC contains /prod/registry.json → accessed at /config/registry/production/prod/registry.json
	//
	//   Registry "development" using SAME PVC "shared-data" with path "dev/registry.json":
	//     PVC contains /dev/registry.json → accessed at /config/registry/development/dev/registry.json
	//     (Same PVC, different mount path)
	//
	//   Registry "staging" using DIFFERENT PVC "other-pvc" with path "registry.json":
	//     PVC contains /registry.json → accessed at /config/registry/staging/registry.json
	//     (Different PVC, independent mount)
	//
	//   Registry "team-a" with path "v1/servers.json":
	//     PVC contains /v1/servers.json → accessed at /config/registry/team-a/v1/servers.json
	//     (Subdirectories allowed in path)
	// +kubebuilder:validation:Pattern=^.*\.json$
	// +kubebuilder:default=registry.json
	// +optional
	Path string `json:"path,omitempty"`
}

PVCSource defines PersistentVolumeClaim source configuration

func (*PVCSource) DeepCopy added in v0.6.10

func (in *PVCSource) DeepCopy() *PVCSource

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

func (*PVCSource) DeepCopyInto added in v0.6.10

func (in *PVCSource) DeepCopyInto(out *PVCSource)

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 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 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 in JSON Schema format.
	// Should be a JSON Schema object with "type": "object" and "properties".
	// Per MCP specification, this should follow standard JSON Schema for tool inputSchema.
	// Example:
	//   {
	//     "type": "object",
	//     "properties": {
	//       "param1": {"type": "string", "default": "value"},
	//       "param2": {"type": "integer"}
	//     },
	//     "required": ["param2"]
	//   }
	// +optional
	// +kubebuilder:pruning:PreserveUnknownFields
	// +kubebuilder:validation:Type=object
	Parameters *runtime.RawExtension `json:"parameters,omitempty"`

	// Steps defines the workflow step definitions
	// Steps are executed sequentially in Phase 1
	// Phase 2 will support DAG execution via dependsOn
	// +kubebuilder:validation:Required
	// +kubebuilder:validation:MinItems=1
	Steps []WorkflowStep `json:"steps"`

	// Timeout is the overall workflow timeout
	// Defaults to 30m if not specified
	// +kubebuilder:default="30m"
	// +kubebuilder:validation:Pattern=`^([0-9]+(\.[0-9]+)?(ms|s|m|h))+$`
	// +optional
	Timeout string `json:"timeout,omitempty"`

	// FailureMode defines the failure handling strategy
	// - abort: Stop execution on first failure (default)
	// - continue: Continue executing remaining steps
	// +kubebuilder:validation:Enum=abort;continue
	// +kubebuilder:default=abort
	// +optional
	FailureMode string `json:"failureMode,omitempty"`

	// Output defines the structured output schema for the composite tool.
	// Specifies how to construct the final output from workflow step results.
	// If not specified, the workflow returns the last step's output (backward compatible).
	// +optional
	Output *OutputSpec `json:"output,omitempty"`
}

VirtualMCPCompositeToolDefinitionSpec defines the desired state of VirtualMCPCompositeToolDefinition

func (*VirtualMCPCompositeToolDefinitionSpec) DeepCopy added in v0.5.2

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) GetOIDCConfig added in v0.6.11

func (v *VirtualMCPServer) GetOIDCConfig() *OIDCConfigRef

GetOIDCConfig returns the OIDC configuration reference for incoming auth. This implements the OIDCConfigurable interface to allow the OIDC resolver to resolve Kubernetes and ConfigMap OIDC configurations.

func (*VirtualMCPServer) GetProxyPort added in v0.6.11

func (*VirtualMCPServer) GetProxyPort() int32

GetProxyPort returns the proxy port for the VirtualMCPServer. This implements the OIDCConfigurable interface. vMCP uses port 4483 by default.

func (*VirtualMCPServer) SetupWebhookWithManager added in v0.5.2

func (r *VirtualMCPServer) SetupWebhookWithManager(mgr ctrl.Manager) error

SetupWebhookWithManager registers the webhook with the manager

func (*VirtualMCPServer) Validate added in v0.5.2

func (r *VirtualMCPServer) Validate() error

Validate performs validation for VirtualMCPServer This method can be called by the controller during reconciliation or by the webhook

func (*VirtualMCPServer) ValidateCreate added in v0.5.2

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
	// Must be explicitly set - use "anonymous" type when no authentication is required
	// +kubebuilder:validation:Required
	IncomingAuth *IncomingAuthConfig `json:"incomingAuth"`

	// OutgoingAuth configures authentication from Virtual MCP to backend MCPServers
	// +optional
	OutgoingAuth *OutgoingAuthConfig `json:"outgoingAuth,omitempty"`

	// Aggregation defines tool aggregation and conflict resolution strategies
	// +optional
	Aggregation *AggregationConfig `json:"aggregation,omitempty"`

	// CompositeTools defines inline composite tool definitions
	// For complex workflows, reference VirtualMCPCompositeToolDefinition resources instead
	// +optional
	CompositeTools []CompositeToolSpec `json:"compositeTools,omitempty"`

	// CompositeToolRefs references VirtualMCPCompositeToolDefinition resources
	// for complex, reusable workflows
	// +optional
	CompositeToolRefs []CompositeToolDefinitionRef `json:"compositeToolRefs,omitempty"`

	// Operational defines operational settings like timeouts and health checks
	// +optional
	Operational *OperationalConfig `json:"operational,omitempty"`

	// ServiceType specifies the Kubernetes service type for the Virtual MCP server
	// +kubebuilder:validation:Enum=ClusterIP;NodePort;LoadBalancer
	// +kubebuilder:default=ClusterIP
	// +optional
	ServiceType string `json:"serviceType,omitempty"`

	// PodTemplateSpec defines the pod template to use for the Virtual MCP server
	// This allows for customizing the pod configuration beyond what is provided by the other fields.
	// Note that to modify the specific container the Virtual MCP server runs in, you must specify
	// the 'vmcp' container name in the PodTemplateSpec.
	// This field accepts a PodTemplateSpec object as JSON/YAML.
	// +optional
	// +kubebuilder:pruning:PreserveUnknownFields
	// +kubebuilder:validation:Type=object
	PodTemplateSpec *runtime.RawExtension `json:"podTemplateSpec,omitempty"`

	// Telemetry configures OpenTelemetry-based observability for the Virtual MCP server
	// including distributed tracing, OTLP metrics export, and Prometheus metrics endpoint
	// +optional
	Telemetry *TelemetryConfig `json:"telemetry,omitempty"`
}

VirtualMCPServerSpec defines the desired state of VirtualMCPServer

func (*VirtualMCPServerSpec) DeepCopy added in v0.5.2

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 values with template expansion support.
	// Supports Go template syntax with .params and .steps for string values.
	// Non-string values (integers, booleans, arrays, objects) are passed as-is.
	// Note: the templating is only supported on the first level of the key-value pairs.
	// +optional
	// +kubebuilder:pruning:PreserveUnknownFields
	// +kubebuilder:validation:Type=object
	Arguments *runtime.RawExtension `json:"arguments,omitempty"`

	// Message is the elicitation message
	// Only used when Type is "elicitation"
	// +optional
	Message string `json:"message,omitempty"`

	// Schema defines the expected response schema for elicitation
	// +optional
	// +kubebuilder:pruning:PreserveUnknownFields
	// +kubebuilder:validation:Type=object
	Schema *runtime.RawExtension `json:"schema,omitempty"`

	// OnDecline defines the action to take when the user explicitly declines the elicitation
	// Only used when Type is "elicitation"
	// +optional
	OnDecline *ElicitationResponseHandler `json:"onDecline,omitempty"`

	// OnCancel defines the action to take when the user cancels/dismisses the elicitation
	// Only used when Type is "elicitation"
	// +optional
	OnCancel *ElicitationResponseHandler `json:"onCancel,omitempty"`

	// DependsOn lists step IDs that must complete before this step
	// +optional
	DependsOn []string `json:"dependsOn,omitempty"`

	// Condition is a template expression that determines if the step should execute
	// +optional
	Condition string `json:"condition,omitempty"`

	// OnError defines error handling behavior
	// +optional
	OnError *ErrorHandling `json:"onError,omitempty"`

	// Timeout is the maximum execution time for this step
	// +optional
	Timeout string `json:"timeout,omitempty"`

	// DefaultResults provides fallback output values when this step is skipped
	// (due to condition evaluating to false) or fails (when onError.action is "continue").
	// Each key corresponds to an output field name referenced by downstream steps.
	// Required if the step may be skipped AND downstream steps reference this step's output.
	// +optional
	// +kubebuilder:pruning:PreserveUnknownFields
	// +kubebuilder:validation:Schemaless
	DefaultResults map[string]runtime.RawExtension `json:"defaultResults,omitempty"`
}

WorkflowStep defines a step in a composite tool workflow

func (*WorkflowStep) DeepCopy added in v0.5.2

func (in *WorkflowStep) DeepCopy() *WorkflowStep

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

func (*WorkflowStep) DeepCopyInto added in v0.5.2

func (in *WorkflowStep) DeepCopyInto(out *WorkflowStep)

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

type WorkloadToolConfig added in v0.5.2

type WorkloadToolConfig struct {
	// Workload is the name of the backend MCPServer workload
	// +kubebuilder:validation:Required
	Workload string `json:"workload"`

	// ToolConfigRef references a MCPToolConfig resource for tool filtering and renaming
	// If specified, Filter and Overrides are ignored
	// +optional
	ToolConfigRef *ToolConfigRef `json:"toolConfigRef,omitempty"`

	// Filter is an inline list of tool names to allow (allow list)
	// Only used if ToolConfigRef is not specified
	// +optional
	Filter []string `json:"filter,omitempty"`

	// Overrides is an inline map of tool overrides
	// Only used if ToolConfigRef is not specified
	// +optional
	Overrides map[string]ToolOverride `json:"overrides,omitempty"`
}

WorkloadToolConfig defines tool filtering and overrides for a specific workload

func (*WorkloadToolConfig) DeepCopy added in v0.5.2

func (in *WorkloadToolConfig) DeepCopy() *WorkloadToolConfig

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

func (*WorkloadToolConfig) DeepCopyInto added in v0.5.2

func (in *WorkloadToolConfig) DeepCopyInto(out *WorkloadToolConfig)

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

Jump to

Keyboard shortcuts

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