diff --git a/chart/templates/metrics-server/gitrepository.yaml b/chart/templates/metrics-server/gitrepository.yaml
index cb77b99ada9845be716e4f7c470d835c5915a637..1313972afbaed1d6abc927cf0b3f1f66b0dc6b5b 100644
--- a/chart/templates/metrics-server/gitrepository.yaml
+++ b/chart/templates/metrics-server/gitrepository.yaml
@@ -1,4 +1,7 @@
-{{- if .Values.addons.metricsServer.enabled  }}
+{{- $enableFlag := .Values.addons.metricsServer.enabled | toString }}
+{{- $existingMetricsApi := (.Capabilities.APIVersions.Has "metrics.k8s.io/v1beta1") }}
+{{- $existingMetricsHelmRelease := (lookup "helm.toolkit.fluxcd.io/v2beta1" "HelmRelease" "bigbang" "metrics-server") }}
+{{- if or ( eq $enableFlag "true") (and (eq $enableFlag "auto") (or (not $existingMetricsApi) $existingMetricsHelmRelease)) }}
 apiVersion: source.toolkit.fluxcd.io/v1beta1
 kind: GitRepository
 metadata:
diff --git a/chart/templates/metrics-server/helmrelease.yaml b/chart/templates/metrics-server/helmrelease.yaml
index ece4d69e63282629e0e385af8dd08d688cafb53a..81e2d0e046830e70df7a5aa0d56c64ce1e026310 100644
--- a/chart/templates/metrics-server/helmrelease.yaml
+++ b/chart/templates/metrics-server/helmrelease.yaml
@@ -1,5 +1,8 @@
 {{- $fluxSettingsMetrics := merge .Values.addons.metricsServer.flux .Values.flux -}}
-{{- if .Values.addons.metricsServer.enabled }}
+{{- $enableFlag := .Values.addons.metricsServer.enabled | toString }}
+{{- $existingMetricsApi := (.Capabilities.APIVersions.Has "metrics.k8s.io/v1beta1") }}
+{{- $existingMetricsHelmRelease := (lookup "helm.toolkit.fluxcd.io/v2beta1" "HelmRelease" "bigbang" "metrics-server") }}
+{{- if or ( eq $enableFlag "true") (and (eq $enableFlag "auto") (or (not $existingMetricsApi) $existingMetricsHelmRelease)) }}
 apiVersion: helm.toolkit.fluxcd.io/v2beta1
 kind: HelmRelease
 metadata:
diff --git a/chart/templates/metrics-server/imagepullsecret.yaml b/chart/templates/metrics-server/imagepullsecret.yaml
index b71460456fef3682e8e1fc8b8d0b6c427d009d00..9316ece73ddf3ad6e99d8a32600567f7d6e02b08 100644
--- a/chart/templates/metrics-server/imagepullsecret.yaml
+++ b/chart/templates/metrics-server/imagepullsecret.yaml
@@ -1,4 +1,7 @@
-{{- if .Values.addons.metricsServer.enabled }}
+{{- $enableFlag := .Values.addons.metricsServer.enabled | toString }}
+{{- $existingMetricsApi := (.Capabilities.APIVersions.Has "metrics.k8s.io/v1beta1") }}
+{{- $existingMetricsHelmRelease := (lookup "helm.toolkit.fluxcd.io/v2beta1" "HelmRelease" "bigbang" "metrics-server") }}
+{{- if or ( eq $enableFlag "true") (and (eq $enableFlag "auto") (or (not $existingMetricsApi) $existingMetricsHelmRelease)) }}
 {{- if ( include "imagePullSecret" . ) }}
 apiVersion: v1
 kind: Secret
diff --git a/chart/templates/metrics-server/namespace.yaml b/chart/templates/metrics-server/namespace.yaml
index 67d4e2d1bd04a4c0ff03b66bc9f98d2bf8866c28..36a72360cef9e64695c1bf9c22b94ec0716c6ba8 100644
--- a/chart/templates/metrics-server/namespace.yaml
+++ b/chart/templates/metrics-server/namespace.yaml
@@ -1,4 +1,7 @@
-{{- if .Values.addons.metricsServer.enabled }}
+{{- $enableFlag := .Values.addons.metricsServer.enabled | toString }}
+{{- $existingMetricsApi := (.Capabilities.APIVersions.Has "metrics.k8s.io/v1beta1") }}
+{{- $existingMetricsHelmRelease := (lookup "helm.toolkit.fluxcd.io/v2beta1" "HelmRelease" "bigbang" "metrics-server") }}
+{{- if or ( eq $enableFlag "true") (and (eq $enableFlag "auto") (or (not $existingMetricsApi) $existingMetricsHelmRelease)) }}
 apiVersion: v1
 kind: Namespace
 metadata:
diff --git a/chart/templates/metrics-server/values.yaml b/chart/templates/metrics-server/values.yaml
index 1a99cd7b0c5c38aa222d3edf3f26a43d03ba428a..fa297275758243e73cce756b6768435706fd8a83 100644
--- a/chart/templates/metrics-server/values.yaml
+++ b/chart/templates/metrics-server/values.yaml
@@ -1,8 +1,11 @@
-{{- if .Values.addons.metricsServer.enabled }}
-{{- include "values-secret" (dict "root" $ "package" .Values.addons.metricsServer "name" "metrics" "defaults" (include "bigbang.defaults.metrics" .)) }}
+{{- $enableFlag := .Values.addons.metricsServer.enabled | toString }}
+{{- $existingMetricsApi := (.Capabilities.APIVersions.Has "metrics.k8s.io/v1beta1") }}
+{{- $existingMetricsHelmRelease := (lookup "helm.toolkit.fluxcd.io/v2beta1" "HelmRelease" "bigbang" "metrics-server") }}
+{{- if or ( eq $enableFlag "true") (and (eq $enableFlag "auto") (or (not $existingMetricsApi) $existingMetricsHelmRelease)) }}
+{{- include "values-secret" (dict "root" $ "package" .Values.addons.metricsServer "name" "metrics" "defaults" (include "bigbang.defaults.metrics-server" .)) }}
 {{- end }}
 
-{{- define "bigbang.defaults.metrics" -}}
+{{- define "bigbang.defaults.metrics-server" -}}
 # hostname is deprecated and replaced with domain. But if hostname exists then use it.
 {{- $domainName := default .Values.domain .Values.hostname }}
 domain: {{ $domainName }}
@@ -26,4 +29,4 @@ networkPolicies:
   enabled: {{ .Values.networkPolicies.enabled }}
   controlPlaneCidr: {{ .Values.networkPolicies.controlPlaneCidr }}
 
-{{- end }}
+{{- end }}
\ No newline at end of file
diff --git a/chart/values.yaml b/chart/values.yaml
index f6633fc40295c2b3134cfdf5e7a8a6ca96ff4754..2375e8d9136a8025589404bdd02e8b568c8b6582 100644
--- a/chart/values.yaml
+++ b/chart/values.yaml
@@ -1366,8 +1366,10 @@ addons:
   # Metrics Server
   #
   metricsServer:
-    # -- Toggle deployment of metrics server.
-    enabled: false
+    # -- Toggle deployment of metrics server
+    # Acceptable options are enabled: true, enabled: false, enabled: auto
+    # true = enabled / false = disabled / auto = automatic (Installs only if metrics API endpoint is not present)
+    enabled: auto
     git:
       repo: https://repo1.dso.mil/platform-one/big-bang/apps/sandbox/metrics-server.git
       path: "./chart"