1
1
# grafana-mcp
2
2
3
- ![ Version: 1.0.0] ( https://img.shields.io/badge/Version-1.0.0-informational?style=flat-square ) ![ Type: application] ( https://img.shields.io/badge/Type-application-informational?style=flat-square ) ![ AppVersion: 1.0.0] ( https://img.shields.io/badge/AppVersion-1.0.0-informational?style=flat-square )
4
-
5
3
MCP server for Grafana.
6
4
7
5
## Source Code
@@ -26,7 +24,7 @@ helm repo add grafana https://grafana.github.io/helm-charts
26
24
To install the chart with the release name ` my-release ` :
27
25
28
26
``` console
29
- helm install my-release grafana/grafana-mcp
27
+ helm install --set grafana.apiKey=<Grafana_ApiKey> my-release grafana/grafana-mcp
30
28
```
31
29
32
30
## Uninstalling the Chart
@@ -43,70 +41,78 @@ The command removes all the Kubernetes components associated with the chart and
43
41
44
42
| Key | Type | Default | Description |
45
43
| -----| ------| ---------| -------------|
46
- | mcpServer | object | `{"affinity":{},"annotations":{},"automountServiceAccountToken":true,"containerSecurityContext":{"allowPrivilegeEscalation":false,"capabilities":{"drop":["ALL"]},"readOnlyRootFilesystem":true,"runAsGroup":1000,"runAsNonRoot":true,"runAsUser":1000},"debug":false,"deploymentStrategy":{"rollingUpdate":{"maxSurge":"25%","maxUnavailable":"25%"},"type":"RollingUpdate"},"disabledCategories":[],"dnsConfig":{},"dnsPolicy":"","enabled":false,"env":{},"envFrom":[],"envValueFrom":{},"extraArgs":[],"extraContainers":[],"extraInitContainers":[],"grafana":{"apiKeySecret":{"key":"api-key","name":"grafana-mcp-api-key"},"url":"http://grafana:3000"},"hostAliases":[],"image":{"pullPolicy":"IfNotPresent","registry":"docker.io","repository":"mcp/grafana","tag":"latest"},"imagePullSecrets":[],"ingress":{"annotations":{},"className":"","enabled":false,"hosts":[{"host":"mcp-grafana.local","paths":[{"path":"/","pathType":"Prefix"}]}],"labels":{},"tls":[]},"initContainers":[],"labels":{},"lifecycle":{},"nodeSelector":{},"podAnnotations":{},"podLabels":{},"priorityClassName":"","replicas":1,"resources":{},"runtimeClassName":"","schedulerName":"","securityContext":{"fsGroup":1000,"runAsGroup":1000,"runAsNonRoot":true,"runAsUser":1000},"service":{"annotations":{},"clusterIP":"","enabled":true,"externalIPs":[],"externalName":"","extraPorts":[],"labels":{},"loadBalancerIP":"","loadBalancerSourceRanges":[],"nodePort":"","port":8000,"sessionAffinity":"","sessionAffinityConfig":{},"type":"ClusterIP"},"tolerations":[],"topologySpreadConstraints":[],"volumeMounts":[],"volumes":[]}` | Enable the Grafana MCP server deployment |
47
- | mcpServer.affinity | object | ` {} ` | Affinity |
48
- | mcpServer.annotations | object | ` {} ` | Deployment annotations |
49
- | mcpServer.automountServiceAccountToken | bool | ` true ` | Automount service account token |
50
- | mcpServer.containerSecurityContext | object | ` {"allowPrivilegeEscalation":false,"capabilities":{"drop":["ALL"]},"readOnlyRootFilesystem":true,"runAsGroup":1000,"runAsNonRoot":true,"runAsUser":1000} ` | Container security context |
51
- | mcpServer.debug | bool | ` false ` | Enable debug mode |
52
- | mcpServer.deploymentStrategy | object | ` {"rollingUpdate":{"maxSurge":"25%","maxUnavailable":"25%"},"type":"RollingUpdate"} ` | Deployment strategy |
53
- | mcpServer.disabledCategories | list | ` [] ` | Categories to disable (e.g., oncall, incident, sift) |
54
- | mcpServer.dnsConfig | object | ` {} ` | DNS config |
55
- | mcpServer.dnsPolicy | string | ` "" ` | DNS policy |
56
- | mcpServer.enabled | bool | ` false ` | Enable the MCP server |
57
- | mcpServer.env | object | ` {} ` | Environment variables |
58
- | mcpServer.envFrom | list | ` [] ` | Environment variables from ConfigMaps or Secrets |
59
- | mcpServer.envValueFrom | object | ` {} ` | Environment variables from other sources |
60
- | mcpServer.extraArgs | list | ` [] ` | Additional command line arguments |
61
- | mcpServer.extraContainers | list | ` [] ` | Extra containers |
62
- | mcpServer.extraInitContainers | list | ` [] ` | Extra init containers |
63
- | mcpServer.grafana | object | ` {"apiKeySecret":{"key":"api-key","name":"grafana-mcp-api-key"},"url":"http://grafana:3000"} ` | Grafana connection configuration |
64
- | mcpServer.grafana.apiKeySecret | object | ` {"key":"api-key","name":"grafana-mcp-api-key"} ` | Secret containing the Grafana API key |
65
- | mcpServer.grafana.apiKeySecret.key | string | ` "api-key" ` | Key within the secret that contains the API key |
66
- | mcpServer.grafana.apiKeySecret.name | string | ` "grafana-mcp-api-key" ` | Name of the secret containing the API key |
67
- | mcpServer.grafana.url | string | ` "http://grafana:3000" ` | Grafana URL (should point to the main Grafana service) |
68
- | mcpServer.hostAliases | list | ` [] ` | Host aliases |
69
- | mcpServer.image | object | ` {"pullPolicy":"IfNotPresent","registry":"docker.io","repository":"mcp/grafana","tag":"latest"} ` | Image configuration |
70
- | mcpServer.image.pullPolicy | string | ` "IfNotPresent" ` | Image pull policy |
71
- | mcpServer.image.registry | string | ` "docker.io" ` | The Docker registry |
72
- | mcpServer.image.repository | string | ` "mcp/grafana" ` | The Docker repository |
73
- | mcpServer.image.tag | string | ` "latest" ` | Image tag |
74
- | mcpServer.imagePullSecrets | list | ` [] ` | Image pull secrets |
75
- | mcpServer.ingress | object | ` {"annotations":{},"className":"","enabled":false,"hosts":[{"host":"mcp-grafana.local","paths":[{"path":"/","pathType":"Prefix"}]}],"labels":{},"tls":[]} ` | Ingress configuration |
76
- | mcpServer.ingress.annotations | object | ` {} ` | Ingress annotations |
77
- | mcpServer.ingress.className | string | ` "" ` | Ingress class name |
78
- | mcpServer.ingress.enabled | bool | ` false ` | Enable ingress |
79
- | mcpServer.ingress.hosts | list | ` [{"host":"mcp-grafana.local","paths":[{"path":"/","pathType":"Prefix"}]}] ` | Ingress hosts |
80
- | mcpServer.ingress.labels | object | ` {} ` | Ingress labels |
81
- | mcpServer.ingress.tls | list | ` [] ` | Ingress TLS configuration |
82
- | mcpServer.initContainers | list | ` [] ` | Init containers |
83
- | mcpServer.labels | object | ` {} ` | Deployment labels |
84
- | mcpServer.lifecycle | object | ` {} ` | Lifecycle hooks |
85
- | mcpServer.nodeSelector | object | ` {} ` | Node selector |
86
- | mcpServer.podAnnotations | object | ` {} ` | Pod annotations |
87
- | mcpServer.podLabels | object | ` {} ` | Pod labels |
88
- | mcpServer.priorityClassName | string | ` "" ` | Priority class name |
89
- | mcpServer.replicas | int | ` 1 ` | Number of replicas for the MCP server |
90
- | mcpServer.resources | object | ` {} ` | Resource requests and limits |
91
- | mcpServer.runtimeClassName | string | ` "" ` | Runtime class name |
92
- | mcpServer.schedulerName | string | ` "" ` | Scheduler name |
93
- | mcpServer.securityContext | object | ` {"fsGroup":1000,"runAsGroup":1000,"runAsNonRoot":true,"runAsUser":1000} ` | Pod security context |
94
- | mcpServer.service | object | ` {"annotations":{},"clusterIP":"","enabled":true,"externalIPs":[],"externalName":"","extraPorts":[],"labels":{},"loadBalancerIP":"","loadBalancerSourceRanges":[],"nodePort":"","port":8000,"sessionAffinity":"","sessionAffinityConfig":{},"type":"ClusterIP"} ` | Service configuration |
95
- | mcpServer.service.annotations | object | ` {} ` | Service annotations |
96
- | mcpServer.service.clusterIP | string | ` "" ` | Cluster IP (if type is ClusterIP) |
97
- | mcpServer.service.enabled | bool | ` true ` | Enable service |
98
- | mcpServer.service.externalIPs | list | ` [] ` | External IPs |
99
- | mcpServer.service.externalName | string | ` "" ` | External name (if type is ExternalName) |
100
- | mcpServer.service.extraPorts | list | ` [] ` | Extra ports |
101
- | mcpServer.service.labels | object | ` {} ` | Service labels |
102
- | mcpServer.service.loadBalancerIP | string | ` "" ` | Load balancer IP |
103
- | mcpServer.service.loadBalancerSourceRanges | list | ` [] ` | Load balancer source ranges |
104
- | mcpServer.service.nodePort | string | ` "" ` | Node port (if type is NodePort or LoadBalancer) |
105
- | mcpServer.service.port | int | ` 8000 ` | Service port |
106
- | mcpServer.service.sessionAffinity | string | ` "" ` | Session affinity |
107
- | mcpServer.service.sessionAffinityConfig | object | ` {} ` | Session affinity config |
108
- | mcpServer.service.type | string | ` "ClusterIP" ` | Service type |
109
- | mcpServer.tolerations | list | ` [] ` | Tolerations |
110
- | mcpServer.topologySpreadConstraints | list | ` [] ` | Topology spread constraints |
111
- | mcpServer.volumeMounts | list | ` [] ` | Volume mounts |
112
- | mcpServer.volumes | list | ` [] ` | Volumes |
44
+ | affinity | object | ` {} ` | Affinity |
45
+ | annotations | object | ` {} ` | Deployment annotations |
46
+ | automountServiceAccountToken | bool | ` true ` | Automount service account token |
47
+ | containerSecurityContext | object | ` {"allowPrivilegeEscalation":false,"capabilities":{"drop":["ALL"]},"readOnlyRootFilesystem":true,"runAsGroup":1000,"runAsNonRoot":true,"runAsUser":1000} ` | Container security context |
48
+ | debug | bool | ` false ` | Enable debug mode |
49
+ | deploymentStrategy | object | ` {"rollingUpdate":{"maxSurge":"25%","maxUnavailable":"25%"},"type":"RollingUpdate"} ` | Deployment strategy |
50
+ | disabledCategories | list | ` [] ` | Categories to disable (e.g., oncall, incident, sift) |
51
+ | dnsConfig | object | ` {} ` | DNS config |
52
+ | dnsPolicy | string | ` "" ` | DNS policy |
53
+ | env | object | ` {} ` | Environment variables |
54
+ | envFrom | list | ` [] ` | Environment variables from ConfigMaps or Secrets |
55
+ | envValueFrom | object | ` {} ` | Environment variables from other sources |
56
+ | extraArgs | list | ` [] ` | Additional command line arguments |
57
+ | extraContainers | list | ` [] ` | Extra containers |
58
+ | extraInitContainers | list | ` [] ` | Extra init containers |
59
+ | grafana | object | ` {"apiKey":"","apiKeySecret":{"key":"","name":""},"url":"http://grafana:3000"} ` | Grafana connection configuration |
60
+ | grafana.apiKey | string | ` "" ` | Grafana ApiKey (if not using a secret) |
61
+ | grafana.apiKeySecret | object | ` {"key":"","name":""} ` | Secret containing the Grafana API key |
62
+ | grafana.apiKeySecret.key | string | ` "" ` | Key within the secret that contains the API key |
63
+ | grafana.apiKeySecret.name | string | ` "" ` | Name of the secret containing the API key |
64
+ | grafana.url | string | ` "http://grafana:3000" ` | Grafana URL (should point to the main Grafana service) |
65
+ | hostAliases | list | ` [] ` | Host aliases |
66
+ | image | object | ` {"pullPolicy":"IfNotPresent","registry":"docker.io","repository":"mcp/grafana","tag":"latest"} ` | Image configuration |
67
+ | image.pullPolicy | string | ` "IfNotPresent" ` | Image pull policy |
68
+ | image.registry | string | ` "docker.io" ` | The Docker registry |
69
+ | image.repository | string | ` "mcp/grafana" ` | The Docker repository |
70
+ | image.tag | string | ` "latest" ` | Image tag |
71
+ | imagePullSecrets | list | ` [] ` | Image pull secrets |
72
+ | ingress | object | ` {"annotations":{},"className":"","enabled":false,"hosts":[{"host":"mcp-grafana.local","paths":[{"path":"/","pathType":"Prefix"}]}],"labels":{},"tls":[]} ` | Ingress configuration |
73
+ | ingress.annotations | object | ` {} ` | Ingress annotations |
74
+ | ingress.className | string | ` "" ` | Ingress class name |
75
+ | ingress.enabled | bool | ` false ` | Enable ingress |
76
+ | ingress.hosts | list | ` [{"host":"mcp-grafana.local","paths":[{"path":"/","pathType":"Prefix"}]}] ` | Ingress hosts |
77
+ | ingress.labels | object | ` {} ` | Ingress labels |
78
+ | ingress.tls | list | ` [] ` | Ingress TLS configuration |
79
+ | initContainers | list | ` [] ` | Init containers |
80
+ | labels | object | ` {} ` | Deployment labels |
81
+ | lifecycle | object | ` {} ` | Lifecycle hooks |
82
+ | livenessProbe | object | ` {} ` | MCP server Liveness probe configuration |
83
+ | nodeSelector | object | ` {} ` | Node selector |
84
+ | podAnnotations | object | ` {} ` | Pod annotations |
85
+ | podLabels | object | ` {} ` | Pod labels |
86
+ | priorityClassName | string | ` "" ` | Priority class name |
87
+ | readinessProbe | object | ` {} ` | MCP server Readiness probe configuration |
88
+ | replicas | int | ` 1 ` | Number of replicas for the MCP server |
89
+ | resources | object | ` {} ` | Resource requests and limits |
90
+ | runtimeClassName | string | ` "" ` | Runtime class name |
91
+ | schedulerName | string | ` "" ` | Scheduler name |
92
+ | securityContext | object | ` {"fsGroup":1000,"runAsGroup":1000,"runAsNonRoot":true,"runAsUser":1000} ` | Pod security context |
93
+ | service | object | ` {"annotations":{},"clusterIP":"","enabled":true,"externalIPs":[],"externalName":"","extraPorts":[],"labels":{},"loadBalancerIP":"","loadBalancerSourceRanges":[],"nodePort":"","port":8000,"sessionAffinity":"","sessionAffinityConfig":{},"type":"ClusterIP"} ` | Service configuration |
94
+ | service.annotations | object | ` {} ` | Service annotations |
95
+ | service.clusterIP | string | ` "" ` | Cluster IP (if type is ClusterIP) |
96
+ | service.enabled | bool | ` true ` | Enable service |
97
+ | service.externalIPs | list | ` [] ` | External IPs |
98
+ | service.externalName | string | ` "" ` | External name (if type is ExternalName) |
99
+ | service.extraPorts | list | ` [] ` | Extra ports |
100
+ | service.labels | object | ` {} ` | Service labels |
101
+ | service.loadBalancerIP | string | ` "" ` | Load balancer IP |
102
+ | service.loadBalancerSourceRanges | list | ` [] ` | Load balancer source ranges |
103
+ | service.nodePort | string | ` "" ` | Node port (if type is NodePort or LoadBalancer) |
104
+ | service.port | int | ` 8000 ` | Service port |
105
+ | service.sessionAffinity | string | ` "" ` | Session affinity |
106
+ | service.sessionAffinityConfig | object | ` {} ` | Session affinity config |
107
+ | service.type | string | ` "ClusterIP" ` | Service type |
108
+ | serviceAccount | object | ` {"annotations":{},"automountServiceAccountToken":false,"enabled":true,"labels":{},"name":""} ` | Service account Configuration |
109
+ | serviceAccount.annotations | object | ` {} ` | Annotations for the service account |
110
+ | serviceAccount.automountServiceAccountToken | bool | ` false ` | Automount service account token |
111
+ | serviceAccount.enabled | bool | ` true ` | Enable service account |
112
+ | serviceAccount.labels | object | ` {} ` | Labels for the service account |
113
+ | serviceAccount.name | string | ` "" ` | Name of the service account |
114
+ | startupProbe | object | ` {} ` | MCP server Startup probe configuration |
115
+ | tolerations | list | ` [] ` | Tolerations |
116
+ | topologySpreadConstraints | list | ` [] ` | Topology spread constraints |
117
+ | volumeMounts | list | ` [] ` | Volume mounts |
118
+ | volumes | list | ` [] ` | Volumes |
0 commit comments