diff --git a/charts/mcp-servers/.helmignore b/charts/mcp-servers/.helmignore new file mode 100644 index 0000000000..7561cd6035 --- /dev/null +++ b/charts/mcp-servers/.helmignore @@ -0,0 +1,10 @@ +.DS_Store +.idea/ +.vscode/ +*.swp +*.tmp +*.bak +charts/ +tmp/ +dist/ +node_modules/ diff --git a/charts/mcp-servers/Chart.yaml b/charts/mcp-servers/Chart.yaml new file mode 100644 index 0000000000..9fccb22444 --- /dev/null +++ b/charts/mcp-servers/Chart.yaml @@ -0,0 +1,6 @@ +apiVersion: v2 +name: mcp-servers +description: Deploy one or more Model Context Protocol (MCP) servers. +type: application +version: 0.1.0 +appVersion: "0.1.0" diff --git a/charts/mcp-servers/templates/NOTES.txt b/charts/mcp-servers/templates/NOTES.txt new file mode 100644 index 0000000000..4fbd9b4a2b --- /dev/null +++ b/charts/mcp-servers/templates/NOTES.txt @@ -0,0 +1,14 @@ +{{- if not .Values.mcpServers }} +mcp-servers chart installed. + +No MCP servers were configured. Set `mcpServers` in values to deploy workloads. +{{- else }} +mcp-servers chart installed. + +Deployed MCP servers: +{{- range $i, $s := .Values.mcpServers }} +{{- if (default true $s.enabled) }} +- {{ $s.name }} +{{- end }} +{{- end }} +{{- end }} diff --git a/charts/mcp-servers/templates/_helpers.tpl b/charts/mcp-servers/templates/_helpers.tpl new file mode 100644 index 0000000000..8155b81fca --- /dev/null +++ b/charts/mcp-servers/templates/_helpers.tpl @@ -0,0 +1,114 @@ +{{/* +Common template helpers. +*/}} + +{{- define "mcp-servers.chart" -}} +{{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" -}} +{{- end -}} + +{{- define "mcp-servers.labels" -}} +helm.sh/chart: {{ include "mcp-servers.chart" . }} +app.kubernetes.io/managed-by: {{ .Release.Service }} +app.kubernetes.io/instance: {{ .Release.Name }} +{{- end -}} + +{{- define "mcp-servers.serverName" -}} +{{- $server := .server -}} +{{- default $server.name $server.fullnameOverride | trunc 63 | trimSuffix "-" -}} +{{- end -}} + +{{- define "mcp-servers.serverFullname" -}} +{{- $root := .root -}} +{{- $server := .server -}} +{{- $name := include "mcp-servers.serverName" (dict "server" $server) -}} +{{- if $server.fullnameOverride -}} +{{- $server.fullnameOverride | trunc 63 | trimSuffix "-" -}} +{{- else if $server.nameOverride -}} +{{- printf "%s-%s" $root.Release.Name $server.nameOverride | trunc 63 | trimSuffix "-" -}} +{{- else -}} +{{- printf "%s-%s" $root.Release.Name $name | trunc 63 | trimSuffix "-" -}} +{{- end -}} +{{- end -}} + +{{- define "mcp-servers.selectorLabels" -}} +{{- $root := .root -}} +{{- $server := .server -}} +app.kubernetes.io/name: {{ include "mcp-servers.serverName" (dict "server" $server) }} +app.kubernetes.io/instance: {{ $root.Release.Name }} +{{- end -}} + +{{- define "mcp-servers.commonLabels" -}} +{{- $root := .root -}} +{{- $server := .server -}} +{{ include "mcp-servers.labels" $root }} +{{ include "mcp-servers.selectorLabels" (dict "root" $root "server" $server) }} +{{- with $root.Values.global.labels }} +{{ toYaml . }} +{{- end }} +{{- with $server.labels }} +{{ toYaml . }} +{{- end }} +{{- end -}} + +{{- define "mcp-servers.commonAnnotations" -}} +{{- $root := .root -}} +{{- $server := .server -}} +{{- with $root.Values.global.annotations }} +{{ toYaml . }} +{{- end }} +{{- with $server.annotations }} +{{ toYaml . }} +{{- end }} +{{- end -}} + +{{- define "mcp-servers.serviceAccountName" -}} +{{- $root := .root -}} +{{- $server := .server -}} +{{- $sa := default (dict) $server.serviceAccount -}} +{{- $saCreate := default $root.Values.global.serviceAccount.create $sa.create -}} +{{- $saName := default $root.Values.global.serviceAccount.name $sa.name -}} +{{- if $saCreate -}} +{{- if $saName -}} +{{- $saName -}} +{{- else -}} +{{ include "mcp-servers.serverFullname" (dict "root" $root "server" $server) }} +{{- end -}} +{{- else -}} +{{- default "default" $saName -}} +{{- end -}} +{{- end -}} + +{{- define "mcp-servers.imagePullSecrets" -}} +{{- $root := .root -}} +{{- $server := .server -}} +{{- $globalIps := default $root.Values.imagePullSecrets $root.Values.global.imagePullSecrets -}} +{{- $ips := default $globalIps $server.imagePullSecrets -}} +{{- if $ips }} +imagePullSecrets: +{{- toYaml $ips | nindent 2 }} +{{- end }} +{{- end -}} + +{{- define "mcp-servers.containerPorts" -}} +{{- $server := .server -}} +{{- $ports := default (list (dict "name" "http" "containerPort" 8080)) $server.ports -}} +ports: +{{- range $p := $ports }} + - name: {{ required "mcpServers[].ports[].name is required" $p.name }} + containerPort: {{ required "mcpServers[].ports[].containerPort is required" $p.containerPort }} + protocol: {{ default "TCP" $p.protocol }} +{{- end }} +{{- end -}} + +{{- define "mcp-servers.servicePorts" -}} +{{- $server := .server -}} +{{- $svc := default (dict) $server.service -}} +{{- $ports := default (list (dict "name" "http" "port" 80 "targetPort" "http")) $svc.ports -}} +ports: +{{- range $p := $ports }} + - name: {{ required "mcpServers[].service.ports[].name is required" $p.name }} + port: {{ required "mcpServers[].service.ports[].port is required" $p.port }} + targetPort: {{ default $p.name $p.targetPort }} + protocol: {{ default "TCP" $p.protocol }} +{{- end }} +{{- end -}} diff --git a/charts/mcp-servers/templates/deployment.yaml b/charts/mcp-servers/templates/deployment.yaml new file mode 100644 index 0000000000..a6cc55e79b --- /dev/null +++ b/charts/mcp-servers/templates/deployment.yaml @@ -0,0 +1,121 @@ +{{- $root := . -}} +{{- range $i, $server := $root.Values.mcpServers }} +{{- if (default true $server.enabled) }} +{{- $fullname := include "mcp-servers.serverFullname" (dict "root" $root "server" $server) -}} +apiVersion: apps/v1 +kind: Deployment +metadata: + name: {{ $fullname }} + labels: +{{ include "mcp-servers.commonLabels" (dict "root" $root "server" $server) | nindent 4 }} + {{- $ann := include "mcp-servers.commonAnnotations" (dict "root" $root "server" $server) }} + {{- if $ann }} + annotations: +{{ $ann | nindent 4 }} + {{- end }} +spec: + replicas: {{ default 1 $server.replicas }} + selector: + matchLabels: +{{ include "mcp-servers.selectorLabels" (dict "root" $root "server" $server) | nindent 6 }} + template: + metadata: + labels: +{{ include "mcp-servers.selectorLabels" (dict "root" $root "server" $server) | nindent 8 }} +{{- with $root.Values.global.podLabels }} +{{ toYaml . | nindent 8 }} +{{- end }} +{{- with $server.podLabels }} +{{ toYaml . | nindent 8 }} +{{- end }} + {{- if or $root.Values.global.podAnnotations $server.podAnnotations }} + annotations: +{{- with $root.Values.global.podAnnotations }} +{{ toYaml . | nindent 8 }} +{{- end }} +{{- with $server.podAnnotations }} +{{ toYaml . | nindent 8 }} +{{- end }} + {{- end }} + spec: + serviceAccountName: {{ include "mcp-servers.serviceAccountName" (dict "root" $root "server" $server) }} +{{ include "mcp-servers.imagePullSecrets" (dict "root" $root "server" $server) | nindent 6 }} +{{- with $root.Values.global.podSecurityContext }} + securityContext: +{{ toYaml . | nindent 8 }} +{{- end }} + containers: + - name: {{ include "mcp-servers.serverName" (dict "server" $server) }} + image: "{{ required "mcpServers[].image.repository is required" $server.image.repository }}:{{ default "latest" $server.image.tag }}" + imagePullPolicy: {{ default "IfNotPresent" $server.image.pullPolicy }} +{{- if $server.command }} + command: +{{ toYaml $server.command | nindent 12 }} +{{- end }} +{{- if $server.args }} + args: +{{ toYaml $server.args | nindent 12 }} +{{- end }} +{{ include "mcp-servers.containerPorts" (dict "server" $server) | nindent 10 }} +{{- with (default $root.Values.global.securityContext $server.securityContext) }} + securityContext: +{{ toYaml . | nindent 12 }} +{{- end }} +{{- with $server.env }} + env: +{{ toYaml . | nindent 12 }} +{{- end }} +{{- with $server.envFrom }} + envFrom: +{{ toYaml . | nindent 12 }} +{{- end }} +{{- $resources := default $root.Values.global.resources $server.resources -}} +{{- with $resources }} + resources: +{{ toYaml . | nindent 12 }} +{{- end }} +{{- $persistence := merge (default (dict) $server.persistence) $root.Values.global.persistence -}} +{{- if and $persistence.enabled $persistence.mountPath }} + volumeMounts: + - name: data + mountPath: {{ $persistence.mountPath }} +{{- with $server.volumeMounts }} +{{ toYaml . | nindent 12 }} +{{- end }} +{{- else if $server.volumeMounts }} + volumeMounts: +{{ toYaml $server.volumeMounts | nindent 12 }} +{{- end }} +{{- if or $server.volumes (and $persistence.enabled $persistence.mountPath) }} + volumes: +{{- if and $persistence.enabled $persistence.mountPath }} + - name: data + persistentVolumeClaim: + claimName: {{ default (printf "%s-data" $fullname) $persistence.existingClaim }} +{{- end }} +{{- with $server.volumes }} +{{ toYaml . | nindent 8 }} +{{- end }} +{{- end }} +{{- $nodeSelector := default $root.Values.global.nodeSelector $server.nodeSelector -}} +{{- with $nodeSelector }} + nodeSelector: +{{ toYaml . | nindent 8 }} +{{- end }} +{{- $tolerations := default $root.Values.global.tolerations $server.tolerations -}} +{{- with $tolerations }} + tolerations: +{{ toYaml . | nindent 8 }} +{{- end }} +{{- $affinity := default $root.Values.global.affinity $server.affinity -}} +{{- with $affinity }} + affinity: +{{ toYaml . | nindent 8 }} +{{- end }} +{{- with $server.topologySpreadConstraints }} + topologySpreadConstraints: +{{ toYaml . | nindent 8 }} +{{- end }} +--- +{{- end }} +{{- end }} diff --git a/charts/mcp-servers/templates/hpa.yaml b/charts/mcp-servers/templates/hpa.yaml new file mode 100644 index 0000000000..4bbe10c702 --- /dev/null +++ b/charts/mcp-servers/templates/hpa.yaml @@ -0,0 +1,27 @@ +{{- $root := . -}} +{{- range $i, $server := $root.Values.mcpServers }} +{{- if (default true $server.enabled) }} +{{- $hpa := merge (default (dict) $server.hpa) $root.Values.global.hpa -}} +{{- if $hpa.enabled }} +{{- $fullname := include "mcp-servers.serverFullname" (dict "root" $root "server" $server) -}} +apiVersion: autoscaling/v2 +kind: HorizontalPodAutoscaler +metadata: + name: {{ $fullname }} + labels: +{{ include "mcp-servers.commonLabels" (dict "root" $root "server" $server) | nindent 4 }} +spec: + scaleTargetRef: + apiVersion: apps/v1 + kind: Deployment + name: {{ $fullname }} + minReplicas: {{ default 1 $hpa.minReplicas }} + maxReplicas: {{ default 3 $hpa.maxReplicas }} +{{- with $hpa.metrics }} + metrics: +{{ toYaml . | nindent 4 }} +{{- end }} +--- +{{- end }} +{{- end }} +{{- end }} diff --git a/charts/mcp-servers/templates/httproute.yaml b/charts/mcp-servers/templates/httproute.yaml new file mode 100644 index 0000000000..09de3dd532 --- /dev/null +++ b/charts/mcp-servers/templates/httproute.yaml @@ -0,0 +1,44 @@ +{{- $root := . -}} +{{- range $i, $server := $root.Values.mcpServers }} +{{- if (default true $server.enabled) }} +{{- $serverHttpRoute := default (dict) $server.httpRoute -}} +{{- $hrEnabled := default $root.Values.global.httpRoute.enabled $serverHttpRoute.enabled -}} +{{- if $hrEnabled }} +{{- $fullname := include "mcp-servers.serverFullname" (dict "root" $root "server" $server) -}} +apiVersion: gateway.networking.k8s.io/v1 +kind: HTTPRoute +metadata: + name: {{ $fullname }} + labels: +{{ include "mcp-servers.commonLabels" (dict "root" $root "server" $server) | nindent 4 }} +{{- $hrAnnotations := default $root.Values.global.httpRoute.annotations $serverHttpRoute.annotations -}} +{{- with $hrAnnotations }} + annotations: +{{ toYaml . | nindent 4 }} +{{- end }} +spec: +{{- $hrParentRefs := default $root.Values.global.httpRoute.parentRefs $serverHttpRoute.parentRefs -}} +{{- with $hrParentRefs }} + parentRefs: +{{ toYaml . | nindent 4 }} +{{- end }} +{{- $hrHostnames := default $root.Values.global.httpRoute.hostnames $serverHttpRoute.hostnames -}} +{{- with $hrHostnames }} + hostnames: +{{ toYaml . | nindent 4 }} +{{- end }} +{{- $hrRules := default $root.Values.global.httpRoute.rules $serverHttpRoute.rules -}} +{{- if $hrRules }} + rules: +{{ toYaml $hrRules | nindent 4 }} +{{- else }} +{{- $hrPort := default $root.Values.global.httpRoute.port $serverHttpRoute.port -}} + rules: + - backendRefs: + - name: {{ $fullname }} + port: {{ default 80 $hrPort }} +{{- end }} +--- +{{- end }} +{{- end }} +{{- end }} diff --git a/charts/mcp-servers/templates/ingress.yaml b/charts/mcp-servers/templates/ingress.yaml new file mode 100644 index 0000000000..e94e14b92a --- /dev/null +++ b/charts/mcp-servers/templates/ingress.yaml @@ -0,0 +1,48 @@ +{{- $root := . -}} +{{- range $i, $server := $root.Values.mcpServers }} +{{- if (default true $server.enabled) }} +{{- $serverIngress := default (dict) $server.ingress -}} +{{- $ingEnabled := default $root.Values.global.ingress.enabled $serverIngress.enabled -}} +{{- if $ingEnabled }} +{{- $fullname := include "mcp-servers.serverFullname" (dict "root" $root "server" $server) -}} +apiVersion: networking.k8s.io/v1 +kind: Ingress +metadata: + name: {{ $fullname }} + labels: +{{ include "mcp-servers.commonLabels" (dict "root" $root "server" $server) | nindent 4 }} +{{- $ingAnnotations := default $root.Values.global.ingress.annotations $serverIngress.annotations -}} +{{- with $ingAnnotations }} + annotations: +{{ toYaml . | nindent 4 }} +{{- end }} +spec: +{{- $ingClassName := default $root.Values.global.ingress.className $serverIngress.className -}} +{{- if $ingClassName }} + ingressClassName: {{ $ingClassName }} +{{- end }} +{{- $ingTLS := default $root.Values.global.ingress.tls $serverIngress.tls -}} +{{- if $ingTLS }} + tls: +{{ toYaml $ingTLS | nindent 4 }} +{{- end }} + rules: +{{- $ingHosts := default $root.Values.global.ingress.hosts $serverIngress.hosts -}} +{{- range $host := $ingHosts }} + - host: {{ required "ingress.hosts[].host is required" $host.host }} + http: + paths: +{{- range $p := $host.paths }} + - path: {{ default "/" $p.path }} + pathType: {{ default "Prefix" $p.pathType }} + backend: + service: + name: {{ $fullname }} + port: + name: {{ default "http" $p.servicePortName }} +{{- end }} +{{- end }} +--- +{{- end }} +{{- end }} +{{- end }} diff --git a/charts/mcp-servers/templates/networkpolicy.yaml b/charts/mcp-servers/templates/networkpolicy.yaml new file mode 100644 index 0000000000..9e6629c0a6 --- /dev/null +++ b/charts/mcp-servers/templates/networkpolicy.yaml @@ -0,0 +1,36 @@ +{{- $root := . -}} +{{- range $i, $server := $root.Values.mcpServers }} +{{- if (default true $server.enabled) }} +{{- $np := merge (default (dict) $server.networkPolicy) $root.Values.global.networkPolicy -}} +{{- if $np.enabled }} +{{- $fullname := include "mcp-servers.serverFullname" (dict "root" $root "server" $server) -}} +apiVersion: networking.k8s.io/v1 +kind: NetworkPolicy +metadata: + name: {{ $fullname }} + labels: +{{ include "mcp-servers.commonLabels" (dict "root" $root "server" $server) | nindent 4 }} +{{- with $np.annotations }} + annotations: +{{ toYaml . | nindent 4 }} +{{- end }} +spec: + podSelector: + matchLabels: +{{ include "mcp-servers.selectorLabels" (dict "root" $root "server" $server) | nindent 6 }} +{{- with $np.policyTypes }} + policyTypes: +{{ toYaml . | nindent 4 }} +{{- end }} +{{- with $np.ingress }} + ingress: +{{ toYaml . | nindent 4 }} +{{- end }} +{{- with $np.egress }} + egress: +{{ toYaml . | nindent 4 }} +{{- end }} +--- +{{- end }} +{{- end }} +{{- end }} diff --git a/charts/mcp-servers/templates/pdb.yaml b/charts/mcp-servers/templates/pdb.yaml new file mode 100644 index 0000000000..8c80f5a419 --- /dev/null +++ b/charts/mcp-servers/templates/pdb.yaml @@ -0,0 +1,25 @@ +{{- $root := . -}} +{{- range $i, $server := $root.Values.mcpServers }} +{{- if (default true $server.enabled) }} +{{- $pdb := merge (default (dict) $server.pdb) $root.Values.global.pdb -}} +{{- if $pdb.enabled }} +{{- $fullname := include "mcp-servers.serverFullname" (dict "root" $root "server" $server) -}} +apiVersion: policy/v1 +kind: PodDisruptionBudget +metadata: + name: {{ $fullname }} + labels: +{{ include "mcp-servers.commonLabels" (dict "root" $root "server" $server) | nindent 4 }} +spec: + selector: + matchLabels: +{{ include "mcp-servers.selectorLabels" (dict "root" $root "server" $server) | nindent 6 }} +{{- if hasKey $pdb "maxUnavailable" }} + maxUnavailable: {{ $pdb.maxUnavailable }} +{{- else }} + minAvailable: {{ default 1 $pdb.minAvailable }} +{{- end }} +--- +{{- end }} +{{- end }} +{{- end }} diff --git a/charts/mcp-servers/templates/pvc.yaml b/charts/mcp-servers/templates/pvc.yaml new file mode 100644 index 0000000000..bdd528ccc7 --- /dev/null +++ b/charts/mcp-servers/templates/pvc.yaml @@ -0,0 +1,29 @@ +{{- $root := . -}} +{{- range $i, $server := $root.Values.mcpServers }} +{{- if (default true $server.enabled) }} +{{- $persistence := merge (default (dict) $server.persistence) $root.Values.global.persistence -}} +{{- if and $persistence.enabled (not $persistence.existingClaim) $persistence.mountPath }} +{{- $fullname := include "mcp-servers.serverFullname" (dict "root" $root "server" $server) -}} +apiVersion: v1 +kind: PersistentVolumeClaim +metadata: + name: {{ $fullname }}-data + labels: +{{ include "mcp-servers.commonLabels" (dict "root" $root "server" $server) | nindent 4 }} +{{- with $persistence.annotations }} + annotations: +{{ toYaml . | nindent 4 }} +{{- end }} +spec: + accessModes: +{{ toYaml (default (list "ReadWriteOnce") $persistence.accessModes) | nindent 4 }} + resources: + requests: + storage: {{ default "1Gi" $persistence.size }} +{{- if $persistence.storageClassName }} + storageClassName: {{ $persistence.storageClassName }} +{{- end }} +--- +{{- end }} +{{- end }} +{{- end }} diff --git a/charts/mcp-servers/templates/rbac.yaml b/charts/mcp-servers/templates/rbac.yaml new file mode 100644 index 0000000000..5b2d6e3492 --- /dev/null +++ b/charts/mcp-servers/templates/rbac.yaml @@ -0,0 +1,41 @@ +{{- $root := . -}} +{{- range $i, $server := $root.Values.mcpServers }} +{{- if (default true $server.enabled) }} +{{- $rbac := default (dict) $server.rbac -}} +{{- $rbacCreate := default $root.Values.global.rbac.create $rbac.create -}} +{{- $defaultRules := $root.Values.global.rbac.defaultRules -}} +{{- if $rbacCreate }} +{{- $fullname := include "mcp-servers.serverFullname" (dict "root" $root "server" $server) -}} +apiVersion: rbac.authorization.k8s.io/v1 +kind: Role +metadata: + name: {{ $fullname }} + labels: +{{ include "mcp-servers.commonLabels" (dict "root" $root "server" $server) | nindent 4 }} +rules: +{{- if $rbac.rules }} +{{ toYaml $rbac.rules | nindent 2 }} +{{- else if $defaultRules }} +{{ toYaml $defaultRules | nindent 2 }} +{{- else }} + [] +{{- end }} +--- +apiVersion: rbac.authorization.k8s.io/v1 +kind: RoleBinding +metadata: + name: {{ $fullname }} + labels: +{{ include "mcp-servers.commonLabels" (dict "root" $root "server" $server) | nindent 4 }} +roleRef: + apiGroup: rbac.authorization.k8s.io + kind: Role + name: {{ $fullname }} +subjects: + - kind: ServiceAccount + name: {{ include "mcp-servers.serviceAccountName" (dict "root" $root "server" $server) }} + namespace: {{ $root.Release.Namespace }} +--- +{{- end }} +{{- end }} +{{- end }} diff --git a/charts/mcp-servers/templates/service.yaml b/charts/mcp-servers/templates/service.yaml new file mode 100644 index 0000000000..f1cf05c744 --- /dev/null +++ b/charts/mcp-servers/templates/service.yaml @@ -0,0 +1,22 @@ +{{- $root := . -}} +{{- range $i, $server := $root.Values.mcpServers }} +{{- if (default true $server.enabled) }} +{{- $svc := default (dict) $server.service -}} +{{- $svcEnabled := default true $svc.enabled -}} +{{- if $svcEnabled }} +{{- $fullname := include "mcp-servers.serverFullname" (dict "root" $root "server" $server) -}} +apiVersion: v1 +kind: Service +metadata: + name: {{ $fullname }} + labels: +{{ include "mcp-servers.commonLabels" (dict "root" $root "server" $server) | nindent 4 }} +spec: + type: {{ default $root.Values.global.service.type $svc.type }} + selector: +{{ include "mcp-servers.selectorLabels" (dict "root" $root "server" $server) | nindent 4 }} +{{ include "mcp-servers.servicePorts" (dict "server" $server) | nindent 2 }} +--- +{{- end }} +{{- end }} +{{- end }} diff --git a/charts/mcp-servers/templates/serviceaccount.yaml b/charts/mcp-servers/templates/serviceaccount.yaml new file mode 100644 index 0000000000..9645af72bd --- /dev/null +++ b/charts/mcp-servers/templates/serviceaccount.yaml @@ -0,0 +1,21 @@ +{{- $root := . -}} +{{- range $i, $server := $root.Values.mcpServers }} +{{- if (default true $server.enabled) }} +{{- $sa := default (dict) $server.serviceAccount -}} +{{- $saCreate := default $root.Values.global.serviceAccount.create $sa.create -}} +{{- $saAnn := default $root.Values.global.serviceAccount.annotations $sa.annotations -}} +{{- if $saCreate }} +apiVersion: v1 +kind: ServiceAccount +metadata: + name: {{ include "mcp-servers.serviceAccountName" (dict "root" $root "server" $server) }} + labels: +{{ include "mcp-servers.commonLabels" (dict "root" $root "server" $server) | nindent 4 }} +{{- with $saAnn }} + annotations: +{{ toYaml . | nindent 4 }} +{{- end }} +--- +{{- end }} +{{- end }} +{{- end }} diff --git a/charts/mcp-servers/values.yaml b/charts/mcp-servers/values.yaml new file mode 100644 index 0000000000..7c81ed9ba1 --- /dev/null +++ b/charts/mcp-servers/values.yaml @@ -0,0 +1,140 @@ +mcpServers: [] + +imagePullSecrets: [] + +global: + labels: {} + annotations: {} + imagePullSecrets: [] + + podLabels: {} + podAnnotations: {} + + podSecurityContext: {} + securityContext: {} + + nodeSelector: {} + tolerations: [] + affinity: {} + resources: {} + + serviceAccount: + create: true + annotations: {} + + rbac: + create: false + # If you enable RBAC, you can specify rules per-server, or defaults here. + # defaultRules: + # - apiGroups: [""] + # resources: ["configmaps"] + # verbs: ["get","list","watch"] + + service: + type: ClusterIP + + ingress: + enabled: false + className: "" + annotations: {} + hosts: [] + tls: [] + + httpRoute: + enabled: false + annotations: {} + parentRefs: [] + hostnames: [] + port: 80 + rules: [] + + networkPolicy: + enabled: false + annotations: {} + policyTypes: ["Ingress", "Egress"] + ingress: [] + egress: [] + + hpa: + enabled: false + minReplicas: 1 + maxReplicas: 3 + metrics: [] + + pdb: + enabled: false + minAvailable: 1 + # maxUnavailable: 1 + + persistence: + enabled: false + annotations: {} + storageClassName: "" + accessModes: ["ReadWriteOnce"] + size: 1Gi + +# Example (servers in this repo under `servers/src/`). +# Note: the per-server READMEs show **local** Docker tags like `mcp/` (e.g. `mcp/git`). +# If you want to use a remote registry, replace `image.repository` accordingly (e.g. `ghcr.io//`). +# mcpServers: +# - name: filesystem +# enabled: true +# image: +# repository: mcp/filesystem +# tag: "latest" +# # These can be set globally (under `global.*`) or per-server. +# nodeSelector: +# nodepool: tools +# tolerations: +# - key: "dedicated" +# operator: "Equal" +# value: "tools" +# effect: "NoSchedule" +# affinity: {} +# resources: +# requests: +# cpu: 100m +# memory: 128Mi +# limits: +# cpu: 500m +# memory: 512Mi +# +# - name: fetch +# enabled: true +# image: +# repository: mcp/fetch +# tag: "latest" +# +# - name: git +# enabled: true +# image: +# repository: mcp/git +# tag: "latest" +# hpa: +# enabled: true +# minReplicas: 2 +# maxReplicas: 5 +# +# - name: memory +# enabled: true +# image: +# repository: mcp/memory +# tag: "latest" +# +# - name: sequentialthinking +# enabled: true +# image: +# repository: mcp/sequentialthinking +# tag: "latest" +# +# - name: time +# enabled: true +# image: +# repository: mcp/time +# tag: "latest" +# +# - name: everything +# enabled: false +# image: +# repository: mcp/everything +# tag: "latest"