|
| 1 | +# grafana-mcp |
| 2 | + |
| 3 | +   |
| 4 | + |
| 5 | +MCP server for Grafana. |
| 6 | + |
| 7 | +## Source Code |
| 8 | + |
| 9 | +* <https://github.com/grafana/mcp-grafana> |
| 10 | +* <https://github.com/grafana/helm-charts> |
| 11 | + |
| 12 | +## Requirements |
| 13 | + |
| 14 | +Kubernetes: `^1.8.0-0` |
| 15 | + |
| 16 | +## Chart Repo |
| 17 | + |
| 18 | +Add the following repo to use the chart: |
| 19 | + |
| 20 | +```console |
| 21 | +helm repo add grafana https://grafana.github.io/helm-charts |
| 22 | +``` |
| 23 | + |
| 24 | +## Installing the Chart |
| 25 | + |
| 26 | +To install the chart with the release name `my-release`: |
| 27 | + |
| 28 | +```console |
| 29 | +helm install my-release grafana/grafana-mcp |
| 30 | +``` |
| 31 | + |
| 32 | +## Uninstalling the Chart |
| 33 | + |
| 34 | +To uninstall/delete the my-release deployment: |
| 35 | + |
| 36 | +```console |
| 37 | +helm delete my-release |
| 38 | +``` |
| 39 | + |
| 40 | +The command removes all the Kubernetes components associated with the chart and deletes the release. |
| 41 | + |
| 42 | +## Values |
| 43 | + |
| 44 | +| Key | Type | Default | Description | |
| 45 | +|-----|------|---------|-------------| |
| 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 | |
0 commit comments