Skip to content

Observability

Each MCPServer exposes a status.conditions array that reflects the outcome of the last reconciliation. Use conditions as the first step when diagnosing issues.

Terminal window
kubectl describe mcpserver <name> -n <namespace>
ConditionStatus True means…Status False means…What to check
ToolsDiscoveredAt least one MCPTool, MCPPrompt, or MCPResource matched toolSelectorNo resources matchedVerify labels on MCPTool/Prompt/Resource match the MCPServer’s toolSelector
ConfigReadyConfigMap written successfully with all tool/prompt/resource config(not set — reconciliation raises before writing False; check for a missing condition)Check operator logs if this condition is absent or stale
ReadyDeployment has at least one ready replicaNo replicas readyCheck pod events and image pull errors

Example output showing a healthy server:

Status:
Ready Replicas: 1
Tool Count: 2
Prompt Count: 2
Resource Count: 2
Conditions:
Type: ToolsDiscovered
Status: True
Reason: ResourcesFound
Message: Found 2 tool(s), 2 prompt(s), 2 resource(s) matching selector ...
Type: ConfigReady
Status: True
Reason: ConfigMapCreated
Message: ConfigMap created with 2 tool(s), 2 prompt(s), 2 resource(s)
Type: Ready
Status: True
Reason: DeploymentReady
Message: Deployment has 1 ready replica(s)

MCPTool, MCPPrompt, and MCPResource each carry their own status.conditions. When any child resource changes, the operator re-reconciles all MCPServers in the same namespace (not just those whose toolSelector matches).

ReasonStatusMeaning
ServiceResolvedTrueService found; status.resolvedEndpoint contains the full URL
ServiceNotFoundFalseNamed Service does not exist in the namespace
ReasonStatusMeaning
TemplateValidTrueAll {{variable}} placeholders are declared in spec.variables
UndeclaredVariablesFalseTemplate uses variables not listed in spec.variables
UnusedVariablesFalsespec.variables declares names not referenced in the template
ReasonStatusMeaning
ContentValidTrueInline spec.content validated successfully
OperationsValidTrueAll spec.operations validated and service endpoints resolved
InvalidSpecFalseNeither spec.operations nor spec.content is defined
EmptyContentFalsespec.content has neither text nor blob
ServiceNotFoundFalseA Service referenced in spec.operations does not exist

Expose Prometheus-compatible metrics for operator and server workloads.

Terminal window
kubectl port-forward -n mcp-system deploy/mcp-operator 9090:9090
curl http://localhost:9090/metrics

Use structured JSON logs and centralize with your platform logging stack.

Terminal window
kubectl logs -n mcp-system deploy/mcp-operator -f

Ensure readiness and liveness probes are enabled in your deployment specs.

Terminal window
kubectl describe mcpserver main -n mcp-system