diff --git a/mcpgrafana.go b/mcpgrafana.go index 58f31cf..7dc102d 100644 --- a/mcpgrafana.go +++ b/mcpgrafana.go @@ -32,8 +32,9 @@ const ( grafanaUsernameEnvVar = "GRAFANA_USERNAME" grafanaPasswordEnvVar = "GRAFANA_PASSWORD" - grafanaURLHeader = "X-Grafana-URL" - grafanaAPIKeyHeader = "X-Grafana-API-Key" + grafanaURLHeader = "X-Grafana-URL" + grafanaServiceAccountTokenHeader = "X-Grafana-Service-Account-Token" + grafanaAPIKeyHeader = "X-Grafana-API-Key" // Deprecated: use X-Grafana-Service-Account-Token instead ) func urlAndAPIKeyFromEnv() (string, string) { @@ -68,7 +69,15 @@ func userAndPassFromEnv() *url.Userinfo { func urlAndAPIKeyFromHeaders(req *http.Request) (string, string) { u := strings.TrimRight(req.Header.Get(grafanaURLHeader), "/") - apiKey := req.Header.Get(grafanaAPIKeyHeader) + + // Check for the new service account token header first + apiKey := req.Header.Get(grafanaServiceAccountTokenHeader) + if apiKey != "" { + return u, apiKey + } + + // Fall back to the deprecated API key header + apiKey = req.Header.Get(grafanaAPIKeyHeader) return u, apiKey }