v1alpha1

package
v0.4.2 Latest Latest
Warning

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

Go to latest
Published: Oct 23, 2025 License: Apache-2.0 Imports: 6 Imported by: 2

Documentation

Overview

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

Index

Constants

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

MCPGroupConditionReason represents the reason for a condition's last transition

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

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

	// RegistrySourceTypeAPI is the type for registry data fetched from API endpoints
	RegistrySourceTypeAPI = "api"
)
View Source
const (
	// RegistryFormatToolHive is the native ToolHive registry format
	RegistryFormatToolHive = "toolhive"

	// RegistryFormatUpstream is the upstream MCP registry format
	RegistryFormatUpstream = "upstream"
)

Registry formats

View Source
const (
	// ConditionSourceAvailable indicates whether the source is available and accessible
	ConditionSourceAvailable = "SourceAvailable"

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

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

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

Condition types for MCPRegistry

View Source
const (
	// ConditionTypeReady indicates overall readiness of the proxy
	ConditionTypeReady = "Ready"

	// ConditionTypeRemoteAvailable indicates whether the remote MCP server is reachable
	ConditionTypeRemoteAvailable = "RemoteAvailable"

	// ConditionTypeAuthConfigured indicates whether authentication is properly configured
	ConditionTypeAuthConfigured = "AuthConfigured"
)

Condition types for MCPRemoteProxy

View Source
const (
	// ConditionReasonDeploymentReady indicates the deployment is ready
	ConditionReasonDeploymentReady = "DeploymentReady"

	// ConditionReasonDeploymentNotReady indicates the deployment is not ready
	ConditionReasonDeploymentNotReady = "DeploymentNotReady"

	// ConditionReasonRemoteURLReachable indicates the remote URL is reachable
	ConditionReasonRemoteURLReachable = "RemoteURLReachable"

	// ConditionReasonRemoteURLUnreachable indicates the remote URL is unreachable
	ConditionReasonRemoteURLUnreachable = "RemoteURLUnreachable"

	// ConditionReasonAuthValid indicates authentication configuration is valid
	ConditionReasonAuthValid = "AuthValid"

	// ConditionReasonAuthInvalid indicates authentication configuration is invalid
	ConditionReasonAuthInvalid = "AuthInvalid"

	// ConditionReasonMissingOIDCConfig indicates OIDCConfig is not specified
	ConditionReasonMissingOIDCConfig = "MissingOIDCConfig"
)

Condition reasons for MCPRemoteProxy

View Source
const (
	// ConditionImageValidated indicates whether this image is fine to be used
	ConditionImageValidated = "ImageValidated"

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

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

Condition types for MCPServer

View Source
const (
	// ConditionReasonImageValidationFailed indicates image validation failed
	ConditionReasonImageValidationFailed = "ImageValidationFailed"
	// ConditionReasonImageValidationSuccess indicates image validation succeeded
	ConditionReasonImageValidationSuccess = "ImageValidationSuccess"
	// ConditionReasonImageValidationError indicates an error occurred during validation
	ConditionReasonImageValidationError = "ImageValidationError"
	// ConditionReasonImageValidationSkipped indicates image validation was skipped
	ConditionReasonImageValidationSkipped = "ImageValidationSkipped"
)
View Source
const (
	// ConditionReasonGroupRefValidated indicates the GroupRef is valid
	ConditionReasonGroupRefValidated = "GroupRefIsValid"

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

	// ConditionReasonGroupRefNotReady indicates the referenced MCPGroup is not in the Ready state
	ConditionReasonGroupRefNotReady = "GroupRefNotReady"
)
View Source
const (
	// ConditionReasonPodTemplateValid indicates PodTemplateSpec validation succeeded
	ConditionReasonPodTemplateValid = "ValidPodTemplateSpec"

	// ConditionReasonPodTemplateInvalid indicates PodTemplateSpec validation failed
	ConditionReasonPodTemplateInvalid = "InvalidPodTemplateSpec"
)
View Source
const (
	// PermissionProfileTypeBuiltin is the type for built-in permission profiles
	PermissionProfileTypeBuiltin = "builtin"

	// PermissionProfileTypeConfigMap is the type for permission profiles stored in ConfigMaps
	PermissionProfileTypeConfigMap = "configmap"
)

Permission profile types

View Source
const (
	// OIDCConfigTypeKubernetes is the type for Kubernetes service account token validation
	OIDCConfigTypeKubernetes = "kubernetes"

	// OIDCConfigTypeConfigMap is the type for OIDC configuration stored in ConfigMaps
	OIDCConfigTypeConfigMap = "configMap"

	// OIDCConfigTypeInline is the type for inline OIDC configuration
	OIDCConfigTypeInline = "inline"
)

OIDC configuration types

View Source
const (
	// AuthzConfigTypeConfigMap is the type for authorization configuration stored in ConfigMaps
	AuthzConfigTypeConfigMap = "configMap"

	// AuthzConfigTypeInline is the type for inline authorization configuration
	AuthzConfigTypeInline = "inline"
)

Authorization configuration types

View Source
const (
	ConditionTypeMCPServersChecked = "MCPServersChecked"
)

Condition types for MCPGroup

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

External auth configuration types

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 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 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 ConfigMapSource added in v0.2.17

type ConfigMapSource struct {
	// Name is the name of the ConfigMap
	// +kubebuilder:validation:Required
	// +kubebuilder:validation:MinLength=1
	Name string `json:"name"`

	// Key is the key in the ConfigMap that contains the registry data
	// +kubebuilder:default=registry.json
	// +kubebuilder:validation:MinLength=1
	// +optional
	Key string `json:"key,omitempty"`
}

ConfigMapSource defines ConfigMap source configuration

func (*ConfigMapSource) DeepCopy added in v0.2.17

func (in *ConfigMapSource) DeepCopy() *ConfigMapSource

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

func (*ConfigMapSource) DeepCopyInto added in v0.2.17

func (in *ConfigMapSource) DeepCopyInto(out *ConfigMapSource)

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 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 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 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)
	// +optional
	ClientSecret string `json:"clientSecret,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"`

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

InlineOIDCConfig contains direct OIDC configuration

func (*InlineOIDCConfig) DeepCopy added in v0.0.40

func (in *InlineOIDCConfig) DeepCopy() *InlineOIDCConfig

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

func (*InlineOIDCConfig) DeepCopyInto added in v0.0.40

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

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

type KubernetesOIDCConfig added in v0.0.40

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

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

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

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

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

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

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

KubernetesOIDCConfig configures OIDC for Kubernetes service account token validation

func (*KubernetesOIDCConfig) DeepCopy added in v0.0.40

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

func (*KubernetesOIDCConfig) DeepCopyInto added in v0.0.40

func (in *KubernetesOIDCConfig) DeepCopyInto(out *KubernetesOIDCConfig)

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

type MCPExternalAuthConfig added in v0.3.9

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

	Spec   MCPExternalAuthConfigSpec   `json:"spec,omitempty"`
	Status MCPExternalAuthConfigStatus `json:"status,omitempty"`
}

MCPExternalAuthConfig is the Schema for the mcpexternalauthconfigs API. MCPExternalAuthConfig resources are namespace-scoped and can only be referenced by MCPServer resources within the same namespace. Cross-namespace references are not supported for security and isolation reasons.

func (*MCPExternalAuthConfig) DeepCopy added in v0.3.9

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

func (*MCPExternalAuthConfig) DeepCopyInto added in v0.3.9

func (in *MCPExternalAuthConfig) DeepCopyInto(out *MCPExternalAuthConfig)

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

func (*MCPExternalAuthConfig) DeepCopyObject added in v0.3.9

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

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

type MCPExternalAuthConfigList added in v0.3.9

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

MCPExternalAuthConfigList contains a list of MCPExternalAuthConfig

func (*MCPExternalAuthConfigList) DeepCopy added in v0.3.9

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

func (*MCPExternalAuthConfigList) DeepCopyInto added in v0.3.9

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

func (*MCPExternalAuthConfigList) DeepCopyObject added in v0.3.9

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

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

type MCPExternalAuthConfigSpec added in v0.3.9

type MCPExternalAuthConfigSpec struct {
	// Type is the type of external authentication to configure
	// +kubebuilder:validation:Enum=tokenExchange
	// +kubebuilder:validation:Required
	Type string `json:"type"`

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

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

func (*MCPExternalAuthConfigSpec) DeepCopy added in v0.3.9

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

func (*MCPExternalAuthConfigSpec) DeepCopyInto added in v0.3.9

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

type MCPExternalAuthConfigStatus added in v0.3.9

type MCPExternalAuthConfigStatus struct {
	// ObservedGeneration is the most recent generation observed for this MCPExternalAuthConfig.
	// It corresponds to the MCPExternalAuthConfig's generation, which is updated on mutation by the API Server.
	// +optional
	ObservedGeneration int64 `json:"observedGeneration,omitempty"`

	// ConfigHash is a hash of the current configuration for change detection
	// +optional
	ConfigHash string `json:"configHash,omitempty"`

	// ReferencingServers is a list of MCPServer resources that reference this MCPExternalAuthConfig
	// This helps track which servers need to be reconciled when this config changes
	// +optional
	ReferencingServers []string `json:"referencingServers,omitempty"`
}

MCPExternalAuthConfigStatus defines the observed state of MCPExternalAuthConfig

func (*MCPExternalAuthConfigStatus) DeepCopy added in v0.3.9

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

func (*MCPExternalAuthConfigStatus) DeepCopyInto added in v0.3.9

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

type MCPGroup added in v0.4.0

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

	Spec   MCPGroupSpec   `json:"spec,omitempty"`
	Status MCPGroupStatus `json:"status,omitempty"`
}

MCPGroup is the Schema for the mcpgroups API

func (*MCPGroup) DeepCopy added in v0.4.0

func (in *MCPGroup) DeepCopy() *MCPGroup

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

func (*MCPGroup) DeepCopyInto added in v0.4.0

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

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

func (*MCPGroup) DeepCopyObject added in v0.4.0

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

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

type MCPGroupList added in v0.4.0

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

MCPGroupList contains a list of MCPGroup

func (*MCPGroupList) DeepCopy added in v0.4.0

func (in *MCPGroupList) DeepCopy() *MCPGroupList

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

func (*MCPGroupList) DeepCopyInto added in v0.4.0

func (in *MCPGroupList) DeepCopyInto(out *MCPGroupList)

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

func (*MCPGroupList) DeepCopyObject added in v0.4.0

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

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

type MCPGroupPhase added in v0.4.0

type MCPGroupPhase string

MCPGroupPhase represents the lifecycle phase of an MCPGroup +kubebuilder:validation:Enum=Ready;Pending;Failed

const (
	// MCPGroupPhaseReady indicates the MCPGroup is ready
	MCPGroupPhaseReady MCPGroupPhase = "Ready"

	// MCPGroupPhasePending indicates the MCPGroup is pending
	MCPGroupPhasePending MCPGroupPhase = "Pending"

	// MCPGroupPhaseFailed indicates the MCPGroup has failed
	MCPGroupPhaseFailed MCPGroupPhase = "Failed"
)

type MCPGroupSpec added in v0.4.0

type MCPGroupSpec struct {
	// Description provides human-readable context
	// +optional
	Description string `json:"description,omitempty"`
}

MCPGroupSpec defines the desired state of MCPGroup

func (*MCPGroupSpec) DeepCopy added in v0.4.0

func (in *MCPGroupSpec) DeepCopy() *MCPGroupSpec

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

func (*MCPGroupSpec) DeepCopyInto added in v0.4.0

func (in *MCPGroupSpec) DeepCopyInto(out *MCPGroupSpec)

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

type MCPGroupStatus added in v0.4.0

type MCPGroupStatus struct {
	// Phase indicates current state
	// +optional
	// +kubebuilder:default=Pending
	Phase MCPGroupPhase `json:"phase,omitempty"`

	// Servers lists server names in this group
	// +optional
	Servers []string `json:"servers"`

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

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

MCPGroupStatus defines observed state

func (*MCPGroupStatus) DeepCopy added in v0.4.0

func (in *MCPGroupStatus) DeepCopy() *MCPGroupStatus

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

func (*MCPGroupStatus) DeepCopyInto added in v0.4.0

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

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

type MCPRegistry added in v0.2.17

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

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

MCPRegistry is the Schema for the mcpregistries API

func (*MCPRegistry) DeepCopy added in v0.2.17

func (in *MCPRegistry) DeepCopy() *MCPRegistry

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

func (*MCPRegistry) DeepCopyInto added in v0.2.17

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

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

func (*MCPRegistry) DeepCopyObject added in v0.2.17

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

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

func (*MCPRegistry) DeriveOverallPhase added in v0.3.6

func (r *MCPRegistry) DeriveOverallPhase() MCPRegistryPhase

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

func (*MCPRegistry) GetAPIResourceName added in v0.3.6

func (r *MCPRegistry) GetAPIResourceName() string

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

func (*MCPRegistry) GetStorageName added in v0.3.6

func (r *MCPRegistry) GetStorageName() string

GetStorageName returns the name used for registry storage resources

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 MCPRegistrySource added in v0.2.17

type MCPRegistrySource struct {
	// Type is the type of source (configmap, git, api)
	// +kubebuilder:validation:Enum=configmap;git;api
	// +kubebuilder:default=configmap
	Type string `json:"type"`

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

	// ConfigMap defines the ConfigMap source configuration
	// Only used when Type is "configmap"
	// +optional
	ConfigMap *ConfigMapSource `json:"configmap,omitempty"`

	// Git defines the Git repository source configuration
	// Only used when Type is "git"
	// +optional
	Git *GitSource `json:"git,omitempty"`

	// API defines the API source configuration
	// Only used when Type is "api"
	// +optional
	API *APISource `json:"api,omitempty"`
}

MCPRegistrySource defines the source configuration for registry data

func (*MCPRegistrySource) DeepCopy added in v0.2.17

func (in *MCPRegistrySource) DeepCopy() *MCPRegistrySource

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

func (*MCPRegistrySource) DeepCopyInto added in v0.2.17

func (in *MCPRegistrySource) DeepCopyInto(out *MCPRegistrySource)

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

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

	// Source defines the configuration for the registry data source
	// +kubebuilder:validation:Required
	Source MCPRegistrySource `json:"source"`

	// SyncPolicy defines the automatic synchronization behavior for the 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"`

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

MCPRegistrySpec defines the desired state of MCPRegistry

func (*MCPRegistrySpec) DeepCopy added in v0.2.17

func (in *MCPRegistrySpec) DeepCopy() *MCPRegistrySpec

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

func (*MCPRegistrySpec) DeepCopyInto added in v0.2.17

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

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

type MCPRegistryStatus added in v0.2.17

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

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

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

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

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

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

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

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

MCPRegistryStatus defines the observed state of MCPRegistry

func (*MCPRegistryStatus) DeepCopy added in v0.2.17

func (in *MCPRegistryStatus) DeepCopy() *MCPRegistryStatus

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

func (*MCPRegistryStatus) DeepCopyInto added in v0.2.17

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

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

type MCPRemoteProxy added in v0.3.10

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

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

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

func (*MCPRemoteProxy) DeepCopy added in v0.3.10

func (in *MCPRemoteProxy) DeepCopy() *MCPRemoteProxy

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

func (*MCPRemoteProxy) DeepCopyInto added in v0.3.10

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

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

func (*MCPRemoteProxy) DeepCopyObject added in v0.3.10

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

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

func (*MCPRemoteProxy) GetName added in v0.3.10

func (m *MCPRemoteProxy) GetName() string

GetName returns the name of the MCPRemoteProxy

func (*MCPRemoteProxy) GetNamespace added in v0.3.10

func (m *MCPRemoteProxy) GetNamespace() string

GetNamespace returns the namespace of the MCPRemoteProxy

func (*MCPRemoteProxy) GetOIDCConfig added in v0.3.10

func (m *MCPRemoteProxy) GetOIDCConfig() *OIDCConfigRef

GetOIDCConfig returns the OIDC configuration reference

func (*MCPRemoteProxy) GetPort added in v0.3.10

func (m *MCPRemoteProxy) GetPort() int32

GetPort returns the port for the MCPRemoteProxy

type MCPRemoteProxyList added in v0.3.10

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

MCPRemoteProxyList contains a list of MCPRemoteProxy

func (*MCPRemoteProxyList) DeepCopy added in v0.3.10

func (in *MCPRemoteProxyList) DeepCopy() *MCPRemoteProxyList

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

func (*MCPRemoteProxyList) DeepCopyInto added in v0.3.10

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

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

func (*MCPRemoteProxyList) DeepCopyObject added in v0.3.10

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

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

type MCPRemoteProxyPhase added in v0.3.10

type MCPRemoteProxyPhase string

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

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

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

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

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

type MCPRemoteProxySpec added in v0.3.10

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

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

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

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

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

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

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

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

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

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

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

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

MCPRemoteProxySpec defines the desired state of MCPRemoteProxy

func (*MCPRemoteProxySpec) DeepCopy added in v0.3.10

func (in *MCPRemoteProxySpec) DeepCopy() *MCPRemoteProxySpec

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

func (*MCPRemoteProxySpec) DeepCopyInto added in v0.3.10

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

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

type MCPRemoteProxyStatus added in v0.3.10

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

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

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

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

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

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

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

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

MCPRemoteProxyStatus defines the observed state of MCPRemoteProxy

func (*MCPRemoteProxyStatus) DeepCopy added in v0.3.10

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

func (*MCPRemoteProxyStatus) DeepCopyInto added in v0.3.10

func (in *MCPRemoteProxyStatus) DeepCopyInto(out *MCPRemoteProxyStatus)

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

type MCPServer

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

	Spec   MCPServerSpec   `json:"spec,omitempty"`
	Status MCPServerStatus `json:"status,omitempty"`
}

MCPServer is the Schema for the mcpservers API

func (*MCPServer) DeepCopy

func (in *MCPServer) DeepCopy() *MCPServer

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

func (*MCPServer) DeepCopyInto

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

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

func (*MCPServer) DeepCopyObject

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

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

func (*MCPServer) 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) GetPort added in v0.3.10

func (m *MCPServer) GetPort() int32

GetPort returns the 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=sse
	// +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
	Port int32 `json:"port,omitempty"`

	// TargetPort is the port that MCP server listens to
	// +kubebuilder:validation:Minimum=1
	// +kubebuilder:validation:Maximum=65535
	// +optional
	TargetPort int32 `json:"targetPort,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 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 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
	// +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 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 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
	// +kubebuilder:validation:Required
	ClientID string `json:"clientId"`

	// ClientSecretRef is a reference to a secret containing the OAuth 2.0 client secret
	// +kubebuilder:validation:Required
	ClientSecretRef SecretKeyRef `json:"clientSecretRef"`

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

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

Jump to

Keyboard shortcuts

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