Version ArtifactHub License Slack X Reddit

A Helm chart for VictoriaTraces MCP server

Prerequisites #

Before installing this chart, ensure your environment meets the following requirements:

  • Kubernetes cluster - A running Kubernetes cluster with sufficient resources
  • Helm - Helm package manager installed and configured

Additional requirements depend on your configuration:

  • Persistent storage - Required if you enable persistent volumes for data retention (enabled by default)
  • kubectl - Needed for cluster management and troubleshooting

For installation instructions, refer to the official documentation:

Chart Details #

This chart will do the following:

  • Rollout VictoriaTraces MCP server.

How to install #

Access a Kubernetes cluster.

Setup chart repository (can be omitted for OCI repositories) #

Add a chart helm repository with follow commands:

      helm repo add vm https://victoriametrics.github.io/helm-charts/

helm repo update

    

List versions of vm/victoria-traces-mcp chart available to installation:

      helm search repo vm/victoria-traces-mcp -l

    

Install victoria-traces-mcp chart #

Export default values of victoria-traces-mcp chart to file values.yaml:

  • For HTTPS repository

          helm show values vm/victoria-traces-mcp > values.yaml
    
        
  • For OCI repository

          helm show values oci://ghcr.io/victoriametrics/helm-charts/victoria-traces-mcp > values.yaml
    
        

Change the values according to the need of the environment in values.yaml file.

Consider setting .Values.nameOverride to a small value like vtm to avoid hitting resource name limits of 63 characters

Test the installation with command:

  • For HTTPS repository

          helm install vtm vm/victoria-traces-mcp -f values.yaml -n NAMESPACE --debug --dry-run
    
        
  • For OCI repository

          helm install vtm oci://ghcr.io/victoriametrics/helm-charts/victoria-traces-mcp -f values.yaml -n NAMESPACE --debug --dry-run
    
        

Install chart with command:

  • For HTTPS repository

          helm install vtm vm/victoria-traces-mcp -f values.yaml -n NAMESPACE
    
        
  • For OCI repository

          helm install vtm oci://ghcr.io/victoriametrics/helm-charts/victoria-traces-mcp -f values.yaml -n NAMESPACE
    
        

Get the pods lists by running this commands:

      kubectl get pods -A | grep 'vtm'

    

Get the application by running this command:

      helm list -f vtm -n NAMESPACE

    

See the history of versions of vtm application with command.

      helm history vtm -n NAMESPACE

    

How to uninstall #

Remove application with command.

      helm uninstall vtm -n NAMESPACE

    

Parameters #

The following tables lists the configurable parameters of the chart and their default values.

Change the values according to the need of the environment in victoria-traces-mcp/values.yaml file.

KeyDescription
affinity: {}
(object)
dnsConfig: {}
(object)
env: []
(list)
envFrom: []
(list)

Specify alternative source for env variables

extraContainers: []
(list)

Extra containers to run in the MCP server pod

extraObjects: []
(list)

Add extra specs dynamically to this chart

fullnameOverride: ""
(string)
horizontalPodAutoscaler:
    behavior: {}
    enabled: false
    labels: {}
    maxReplicas: 10
    metrics: []
    minReplicas: 2
(object)

Horizontal Pod Autoscaler. Details are here

horizontalPodAutoscaler.behavior: {}
(object)

Behavior settings for scaling by the HPA

horizontalPodAutoscaler.enabled: false
(bool)

Use HPA for the MCP server deployment. Disables replicaCount

horizontalPodAutoscaler.labels: {}
(object)

Extra labels for HorizontalPodAutoscaler

horizontalPodAutoscaler.maxReplicas: 10
(int)

Maximum replicas for HPA to use to scale the deployment

horizontalPodAutoscaler.metrics: []
(list)

Metrics for HPA to use to scale the deployment. When empty the field is omitted and Kubernetes applies its default of 80% average CPU utilization (requires CPU requests to be set)

horizontalPodAutoscaler.minReplicas: 2
(int)

Minimum replicas for HPA to use to scale the deployment

image.pullPolicy: IfNotPresent
(string)
image.registry: ghcr.io
(string)
image.repository: victoriametrics-community/mcp-victoriatraces
(string)
image.tag: ""
(string)
imagePullSecrets: []
(list)
ingress.annotations: {}
(object)
ingress.className: ""
(string)
ingress.enabled: false
(bool)
ingress.hosts[0].host: chart-example.local
(string)
ingress.hosts[0].paths[0].path: /
(string)
ingress.hosts[0].paths[0].pathType: ImplementationSpecific
(string)
ingress.tls: []
(list)
initContainers: []
(list)

Init containers for the MCP server pod

lifecycle: {}
(object)

Container lifecycle hooks

livenessProbe.httpGet.path: /health/liveness
(string)
livenessProbe.httpGet.port: http
(string)
livenessProbe.httpGet.scheme: HTTP
(string)
livenessProbe.initialDelaySeconds: 10
(int)
livenessProbe.periodSeconds: 10
(int)
livenessProbe.timeoutSeconds: 1
(int)
mcp.disable.tools: []
(list)
mcp.heartbeatInterval: 30s
(string)
mcp.mode: http
(string)
nameOverride: ""
(string)
networkPolicy:
    annotations: {}
    egress: []
    enabled: false
    ingress: []
    labels: {}
(object)

See kubectl explain networkpolicy.spec for more. Details are here

networkPolicy.annotations: {}
(object)

Extra annotations for NetworkPolicy

networkPolicy.egress: []
(list)

Egress rules

networkPolicy.ingress: []
(list)

Ingress rules

networkPolicy.labels: {}
(object)

Extra labels for NetworkPolicy

nodeSelector: {}
(object)
podAnnotations: {}
(object)
podDisruptionBudget:
    enabled: false
    labels: {}
    maxUnavailable: null
    minAvailable: null
    unhealthyPodEvictionPolicy: null
(object)

Pod disruption budget. Details are here. Exactly one of minAvailable or maxUnavailable must be set when enabled; 0 is a valid value

podDisruptionBudget.labels: {}
(object)

Extra labels for PodDisruptionBudget

podDisruptionBudget.maxUnavailable: null
(string)

max number or percentage of pods that can be unavailable

podDisruptionBudget.minAvailable: null
(string)

min number or percentage of pods that must be available

podDisruptionBudget.unhealthyPodEvictionPolicy: null
(string)

Defines criteria when unhealthy pods should be considered for eviction

podLabels: {}
(object)
podSecurityContext: {}
(object)
priorityClassName: ""
(string)

Name of Priority Class

readinessProbe.httpGet.path: /health/readiness
(string)
readinessProbe.httpGet.port: http
(string)
readinessProbe.httpGet.scheme: HTTP
(string)
readinessProbe.initialDelaySeconds: 10
(int)
readinessProbe.periodSeconds: 10
(int)
readinessProbe.timeoutSeconds: 1
(int)
replicaCount: 1
(int)

Number of replicas. Ignored when horizontalPodAutoscaler.enabled is true

resources: {}
(object)
route:
    annotations: {}
    enabled: false
    hostnames: []
    parentRefs:
        - name: gateway
          sectionName: http
    rules:
        - matches:
            - path:
                type: PathPrefix
                value: /
(object)

Expose the service via gateway-api HTTPRoute Requires Gateway API resources and suitable controller installed within the cluster (see: https://gateway-api.sigs.k8s.io/guides/)

scrape:
    annotations: {}
    basicAuth: {}
    enabled: false
    extraLabels: {}
    interval: ""
    metricRelabelConfigs: []
    namespace: ""
    path: ""
    relabelConfigs: []
    scheme: ""
    scrapeTimeout: ""
    tlsConfig: {}
(object)

VMServiceScrape for the MCP server. Requires the VictoriaMetrics operator

scrape.annotations: {}
(object)

Extra annotations for the VMServiceScrape

scrape.basicAuth: {}
(object)

Basic auth params for scraping (supports helm templates)

scrape.extraLabels: {}
(object)

Extra labels for the VMServiceScrape

scrape.interval: ""
(string)

Scrape interval

scrape.metricRelabelConfigs: []
(list)

Relabel configs applied to scraped metrics

scrape.namespace: ""
(string)

Namespace to create the VMServiceScrape in. Defaults to the release namespace

scrape.path: ""
(string)

Metrics path. Defaults to /metrics

scrape.relabelConfigs: []
(list)

Relabel configs applied to scrape targets

scrape.scheme: ""
(string)

HTTP scheme to use for scraping

scrape.scrapeTimeout: ""
(string)

Scrape timeout

scrape.tlsConfig: {}
(object)

TLS configuration to use when scraping the endpoint

securityContext: {}
(object)
service.annotations: {}
(object)

Service annotations

service.clusterIP: ""
(string)

Service ClusterIP

service.externalIPs: []
(list)

Service external IPs. Check here for details

service.externalTrafficPolicy: ""
(string)

Service external traffic policy. Check here for details

service.extraLabels: {}
(object)

Service labels

service.healthCheckNodePort: ""
(string)

Health check node port for a service. Check here for details

service.ipFamilies: []
(list)

List of service IP families. Check here for details

service.ipFamilyPolicy: ""
(string)

Service IP family policy. Check here for details

service.loadBalancerIP: ""
(string)

Service load balancer IP

service.loadBalancerSourceRanges: []
(list)

Load balancer source range

service.nodePort: ""
(string)

Service node port

service.port: 8080
(int)
service.trafficDistribution: ""
(string)

Service traffic distribution. Requires Kubernetes 1.31 or newer; rendering fails on older clusters. Details are here

service.type: ClusterIP
(string)
serviceAccount.annotations: {}
(object)
serviceAccount.automount: true
(bool)
serviceAccount.create: true
(bool)
serviceAccount.extraLabels: {}
(object)

Extra labels for the service account

serviceAccount.name: ""
(string)
startupProbe: {}
(object)

Startup probe. Disabled by default

strategy: {}
(object)

Deployment update strategy. Details are here

terminationGracePeriodSeconds: null
(string)

Duration in seconds the pod needs to terminate gracefully. Raise it if you serve long-lived sse or streamable-http connections

tolerations: []
(list)
topologySpreadConstraints: []
(list)

Pod topologySpreadConstraints. Details are here. labelSelector defaults to the chart’s selector labels when not set

volumeMounts: []
(list)
volumes: []
(list)
vt.bearerToken: ""
(string)
vt.entrypoint: ""
(string)
vt.headers: []
(list)