@@ -42,6 +42,12 @@ type VirtualMCPServerSpec struct {
4242 // +optional
4343 Operational * OperationalConfig `json:"operational,omitempty"`
4444
45+ // ServiceType specifies the Kubernetes service type for the Virtual MCP server
46+ // +kubebuilder:validation:Enum=ClusterIP;NodePort;LoadBalancer
47+ // +kubebuilder:default=ClusterIP
48+ // +optional
49+ ServiceType string `json:"serviceType,omitempty"`
50+
4551 // PodTemplateSpec defines the pod template to use for the Virtual MCP server
4652 // This allows for customizing the pod configuration beyond what is provided by the other fields.
4753 // Note that to modify the specific container the Virtual MCP server runs in, you must specify
@@ -62,6 +68,11 @@ type GroupRef struct {
6268
6369// IncomingAuthConfig configures authentication for clients connecting to the Virtual MCP server
6470type IncomingAuthConfig struct {
71+ // Type defines the authentication type: anonymous, local, or oidc
72+ // +kubebuilder:validation:Enum=anonymous;local;oidc
73+ // +optional
74+ Type string `json:"type,omitempty"`
75+
6576 // OIDCConfig defines OIDC authentication configuration
6677 // Reuses MCPServer OIDC patterns
6778 // +optional
@@ -426,14 +437,6 @@ type VirtualMCPServerStatus struct {
426437 // +optional
427438 Conditions []metav1.Condition `json:"conditions,omitempty"`
428439
429- // DiscoveredBackends lists discovered backend configurations when source=discovered
430- // +optional
431- DiscoveredBackends []DiscoveredBackend `json:"discoveredBackends,omitempty"`
432-
433- // Capabilities summarizes aggregated capabilities from all backends
434- // +optional
435- Capabilities * CapabilitiesSummary `json:"capabilities,omitempty"`
436-
437440 // ObservedGeneration is the most recent generation observed for this VirtualMCPServer
438441 // +optional
439442 ObservedGeneration int64 `json:"observedGeneration,omitempty"`
@@ -452,54 +455,6 @@ type VirtualMCPServerStatus struct {
452455 URL string `json:"url,omitempty"`
453456}
454457
455- // DiscoveredBackend represents a discovered backend MCPServer
456- type DiscoveredBackend struct {
457- // Name is the name of the backend MCPServer
458- // +kubebuilder:validation:Required
459- Name string `json:"name"`
460-
461- // AuthConfigRef is the name of the discovered MCPExternalAuthConfig
462- // Empty if backend has no external auth config
463- // +optional
464- AuthConfigRef string `json:"authConfigRef,omitempty"`
465-
466- // AuthType is the type of authentication configured
467- // +optional
468- AuthType string `json:"authType,omitempty"`
469-
470- // Status is the current status of the backend
471- // +kubebuilder:validation:Enum=ready;degraded;unavailable
472- // +optional
473- Status string `json:"status,omitempty"`
474-
475- // LastHealthCheck is the timestamp of the last health check
476- // +optional
477- LastHealthCheck * metav1.Time `json:"lastHealthCheck,omitempty"`
478-
479- // URL is the URL of the backend MCPServer
480- // +optional
481- URL string `json:"url,omitempty"`
482- }
483-
484- // CapabilitiesSummary summarizes aggregated capabilities
485- type CapabilitiesSummary struct {
486- // ToolCount is the total number of tools exposed
487- // +optional
488- ToolCount int `json:"toolCount,omitempty"`
489-
490- // ResourceCount is the total number of resources exposed
491- // +optional
492- ResourceCount int `json:"resourceCount,omitempty"`
493-
494- // PromptCount is the total number of prompts exposed
495- // +optional
496- PromptCount int `json:"promptCount,omitempty"`
497-
498- // CompositeToolCount is the number of composite tools defined
499- // +optional
500- CompositeToolCount int `json:"compositeToolCount,omitempty"`
501- }
502-
503458// VirtualMCPServerPhase represents the lifecycle phase of a VirtualMCPServer
504459// +kubebuilder:validation:Enum=Pending;Ready;Degraded;Failed
505460type VirtualMCPServerPhase string
@@ -524,36 +479,18 @@ const (
524479 // ConditionTypeVirtualMCPServerReady indicates whether the VirtualMCPServer is ready
525480 ConditionTypeVirtualMCPServerReady = "Ready"
526481
527- // ConditionTypeBackendsDiscovered indicates whether backends have been discovered
528- ConditionTypeBackendsDiscovered = "BackendsDiscovered"
529-
530482 // ConditionTypeVirtualMCPServerGroupRefValidated indicates whether the GroupRef is valid
531483 ConditionTypeVirtualMCPServerGroupRefValidated = "GroupRefValidated"
532484)
533485
534486// Condition reasons for VirtualMCPServer
535487const (
536- // ConditionReasonAllBackendsReady indicates all backends are ready
537- ConditionReasonAllBackendsReady = "AllBackendsReady"
538-
539- // ConditionReasonSomeBackendsUnavailable indicates some backends are unavailable
540- ConditionReasonSomeBackendsUnavailable = "SomeBackendsUnavailable"
541-
542- // ConditionReasonNoBackends indicates no backends were discovered
543- ConditionReasonNoBackends = "NoBackends"
544-
545488 // ConditionReasonIncomingAuthValid indicates incoming auth is valid
546489 ConditionReasonIncomingAuthValid = "IncomingAuthValid"
547490
548491 // ConditionReasonIncomingAuthInvalid indicates incoming auth is invalid
549492 ConditionReasonIncomingAuthInvalid = "IncomingAuthInvalid"
550493
551- // ConditionReasonDiscoveryComplete indicates backend discovery is complete
552- ConditionReasonDiscoveryComplete = "DiscoveryComplete"
553-
554- // ConditionReasonDiscoveryFailed indicates backend discovery failed
555- ConditionReasonDiscoveryFailed = "DiscoveryFailed"
556-
557494 // ConditionReasonGroupRefValid indicates the GroupRef is valid
558495 ConditionReasonVirtualMCPServerGroupRefValid = "GroupRefValid"
559496
@@ -604,8 +541,6 @@ const (
604541//+kubebuilder:subresource:status
605542//+kubebuilder:resource:shortName=vmcp;virtualmcp
606543//+kubebuilder:printcolumn:name="Phase",type="string",JSONPath=".status.phase",description="The phase of the VirtualMCPServer"
607- //+kubebuilder:printcolumn:name="Tools",type="integer",JSONPath=".status.capabilities.toolCount",description="Total tools"
608- //+kubebuilder:printcolumn:name="Backends",type="integer",JSONPath=".status.discoveredBackends[*]",description="Backends"
609544//+kubebuilder:printcolumn:name="URL",type="string",JSONPath=".status.url",description="Virtual MCP server URL"
610545//+kubebuilder:printcolumn:name="Age",type="date",JSONPath=".metadata.creationTimestamp",description="Age"
611546//+kubebuilder:printcolumn:name="Ready",type="string",JSONPath=".status.conditions[?(@.type=='Ready')].status"
0 commit comments