Databuddy MCP server
OFFICIAL SERVERQuery Databuddy web and product analytics and manage goals, funnels, flags and short links from a chat client
Search and edit Grafana dashboards, query metrics and logs, and handle alerts
Official · Grafana Labs Go Remote (hosted) · Streamable HTTPLocal · stdio DevOps and monitoringData and analytics
103 popularity score ★ 3.6k ↓ 740k/mo
Opens the app, which asks before it adds the server. Then replace each <NAME> in its settings with your value.
{
"mcpServers": {
"grafana": {
"url": "https://mcp.grafana.com/mcp",
"headers": {
"X-Grafana-URL": "https://<YOUR_STACK>.grafana.net"
}
}
}
}{
"mcpServers": {
"grafana": {
"type": "http",
"url": "https://mcp.grafana.com/mcp",
"headers": {
"X-Grafana-URL": "https://<YOUR_STACK>.grafana.net"
}
}
}
}claude mcp add grafana https://mcp.grafana.com/mcp \
--transport http \
--header "X-Grafana-URL: https://<YOUR_STACK>.grafana.net"{
"mcpServers": {
"grafana": {
"url": "https://mcp.grafana.com/mcp",
"headers": {
"X-Grafana-URL": "https://<YOUR_STACK>.grafana.net"
}
}
}
}{
"servers": {
"grafana": {
"type": "http",
"url": "https://mcp.grafana.com/mcp",
"headers": {
"X-Grafana-URL": "https://<YOUR_STACK>.grafana.net"
}
}
}
}Opens the app, which asks before it adds the server. Then replace each <NAME> in its settings with your value.
It needs GRAFANA_URL, GRAFANA_SERVICE_ACCOUNT_TOKEN. Replace each <NAME> with your value.
claude mcp add grafana -e GRAFANA_URL=<GRAFANA_URL> -e GRAFANA_SERVICE_ACCOUNT_TOKEN=<GRAFANA_SERVICE_ACCOUNT_TOKEN> -- uvx mcp-grafana{
"mcpServers": {
"grafana": {
"command": "uvx",
"args": [
"mcp-grafana"
],
"env": {
"GRAFANA_URL": "<GRAFANA_URL>",
"GRAFANA_SERVICE_ACCOUNT_TOKEN": "<GRAFANA_SERVICE_ACCOUNT_TOKEN>"
}
}
}
}{
"mcpServers": {
"grafana": {
"command": "uvx",
"args": [
"mcp-grafana"
],
"env": {
"GRAFANA_URL": "<GRAFANA_URL>",
"GRAFANA_SERVICE_ACCOUNT_TOKEN": "<GRAFANA_SERVICE_ACCOUNT_TOKEN>"
}
}
}
}{
"servers": {
"grafana": {
"type": "stdio",
"command": "uvx",
"args": [
"mcp-grafana"
],
"env": {
"GRAFANA_URL": "<GRAFANA_URL>",
"GRAFANA_SERVICE_ACCOUNT_TOKEN": "<GRAFANA_SERVICE_ACCOUNT_TOKEN>"
}
}
}
}[mcp_servers.grafana]
command = "uvx"
args = ["mcp-grafana"]
[mcp_servers.grafana.env]
GRAFANA_URL = "<GRAFANA_URL>"
GRAFANA_SERVICE_ACCOUNT_TOKEN = "<GRAFANA_SERVICE_ACCOUNT_TOKEN>"gemini mcp add --scope user -e GRAFANA_URL=<GRAFANA_URL> -e GRAFANA_SERVICE_ACCOUNT_TOKEN=<GRAFANA_SERVICE_ACCOUNT_TOKEN> grafana uvx -- mcp-grafanaOpens the app, which asks before it adds the server. Then replace each <NAME> in its settings with your value.
It needs GRAFANA_URL, GRAFANA_SERVICE_ACCOUNT_TOKEN. Replace each <NAME> with your value.
claude mcp add grafana -e GRAFANA_URL=<GRAFANA_URL> -e GRAFANA_SERVICE_ACCOUNT_TOKEN=<GRAFANA_SERVICE_ACCOUNT_TOKEN> -- docker run --rm -i -e GRAFANA_URL -e GRAFANA_SERVICE_ACCOUNT_TOKEN grafana/mcp-grafana -t stdio{
"mcpServers": {
"grafana": {
"command": "docker",
"args": [
"run",
"--rm",
"-i",
"-e",
"GRAFANA_URL",
"-e",
"GRAFANA_SERVICE_ACCOUNT_TOKEN",
"grafana/mcp-grafana",
"-t",
"stdio"
],
"env": {
"GRAFANA_URL": "<GRAFANA_URL>",
"GRAFANA_SERVICE_ACCOUNT_TOKEN": "<GRAFANA_SERVICE_ACCOUNT_TOKEN>"
}
}
}
}{
"mcpServers": {
"grafana": {
"command": "docker",
"args": [
"run",
"--rm",
"-i",
"-e",
"GRAFANA_URL",
"-e",
"GRAFANA_SERVICE_ACCOUNT_TOKEN",
"grafana/mcp-grafana",
"-t",
"stdio"
],
"env": {
"GRAFANA_URL": "<GRAFANA_URL>",
"GRAFANA_SERVICE_ACCOUNT_TOKEN": "<GRAFANA_SERVICE_ACCOUNT_TOKEN>"
}
}
}
}{
"servers": {
"grafana": {
"type": "stdio",
"command": "docker",
"args": [
"run",
"--rm",
"-i",
"-e",
"GRAFANA_URL",
"-e",
"GRAFANA_SERVICE_ACCOUNT_TOKEN",
"grafana/mcp-grafana",
"-t",
"stdio"
],
"env": {
"GRAFANA_URL": "<GRAFANA_URL>",
"GRAFANA_SERVICE_ACCOUNT_TOKEN": "<GRAFANA_SERVICE_ACCOUNT_TOKEN>"
}
}
}
}[mcp_servers.grafana]
command = "docker"
args = ["run", "--rm", "-i", "-e", "GRAFANA_URL", "-e", "GRAFANA_SERVICE_ACCOUNT_TOKEN", "grafana/mcp-grafana", "-t", "stdio"]
[mcp_servers.grafana.env]
GRAFANA_URL = "<GRAFANA_URL>"
GRAFANA_SERVICE_ACCOUNT_TOKEN = "<GRAFANA_SERVICE_ACCOUNT_TOKEN>"gemini mcp add --scope user -e GRAFANA_URL=<GRAFANA_URL> -e GRAFANA_SERVICE_ACCOUNT_TOKEN=<GRAFANA_SERVICE_ACCOUNT_TOKEN> grafana docker -- run --rm -i -e GRAFANA_URL -e GRAFANA_SERVICE_ACCOUNT_TOKEN grafana/mcp-grafana -t stdioGRAFANA_URL |
Required: Address of your Grafana instance or Grafana Cloud stack. |
|---|---|
GRAFANA_SERVICE_ACCOUNT_TOKEN secret |
Required: Service account token. GRAFANA_SERVICE_ACCOUNT_TOKEN_FILE or GRAFANA_USERNAME with GRAFANA_PASSWORD can be used instead. |
GRAFANA_SERVICE_ACCOUNT_TOKEN_FILE |
Optional: Path to a file holding the token, read again on each request so it can be rotated. |
GRAFANA_ORG_ID |
Optional: Numeric organization ID on multi-org instances. |
GRAFANA_EXTRA_HEADERS |
Optional: Extra HTTP headers sent with every request to Grafana, as JSON. |
GRAFANA_USAGE_STATS |
Optional: Set to disabled to stop usage reports, or log to print them instead. DO_NOT_TRACK=1 also turns them off. |
MCP_GRAFANA_SERVER_TOKEN secret |
Optional: Bearer token clients must send when the server runs over HTTP. |
| Set together: prometheus guardrail | |
GRAFANA_PROMETHEUS_GUARDRAIL_MODE |
Optional: off, shadow (log what would be blocked) or enforce (reject queries over the caps below). |
GRAFANA_PROMETHEUS_GUARDRAIL_MAX_RANGE |
Optional: Longest time range one PromQL query may read, counting range vectors and subqueries. 0 turns the check off. |
GRAFANA_PROMETHEUS_GUARDRAIL_MAX_POINTS |
Optional: Most points per series a range query may ask for. 0 turns the check off. |
| Set together: loki guardrail | |
GRAFANA_LOKI_GUARDRAIL_MODE |
Optional: off, shadow or enforce. GRAFANA_LOKI_GUARDRAIL_MAX_RANGE (24h by default) and GRAFANA_LOKI_GUARDRAIL_MAX_BYTES set its caps. |
GRAFANA_LOKI_GUARDRAIL_ON_ESTIMATE_FAILURE |
Optional: Set to block to reject, in enforce mode, queries the Loki guardrail cannot size up. |
In a container, a setting goes in with -e NAME=value after docker run.
Grafana Labs publishes this open-source server so an assistant can work inside a Grafana instance. It finds and edits dashboards, and it queries Prometheus, Loki, Tempo or Pyroscope through the datasources you already have. Alert rules and silences are in there too. So are Grafana Incident and OnCall, which matters if your on-call rota and incident timeline already live in Grafana and you want the assistant to update them while it digs through the data.
You run it yourself with uvx or the Docker image and point it at Grafana with GRAFANA_URL and a service account token. In the code GRAFANA_URL falls back to http://localhost:3000 when unset. What the tools can touch comes down to that token's RBAC permissions, and --disable-write turns writes off.
A good share of the tools stay off until you ask for them. The default --enabled-tools list leaves out seven datasource groups, SQL and CloudWatch among them. Admin tools and run_panel_query are opt-in as well. Since 2.2.0 the SQL tools also take BigQuery datasources, and CloudWatch has three Logs Insights tools next to the metrics ones. Listing log groups stops at 50, so on a big AWS account you pass a name prefix. A Logs Insights query gets 30 seconds to finish.
PromQL and LogQL queries can be held back by guardrails, which are off unless you set a mode. Put the Prometheus one in enforce mode and it turns away a query spanning more than 192 hours or asking for more than 11000 points per series, unless you change those caps. The Loki one has a 24 hour range cap by default. Shadow mode only logs what would have been blocked.
If your stack is on Grafana Cloud you can skip the install. Grafana runs a hosted copy at mcp.grafana.com that you sign in to with OAuth in the browser.
| To run it yourself | PythonDocker |
|---|---|
| Runs on | macOS, Windows, Linux |
| Grafana | Your own instanceSelf-managed Grafana 9.0 or later, or a Grafana Cloud stack, with a service account token |
| Also |
|
Create a service account in Grafana and give it the roles the tools need. The README lists them per tool, and the Editor role is the simpler but wider choice. Then make a token for it. The hosted endpoint needs a Grafana Cloud stack where the Grafana Assistant terms have been accepted. Your user also needs the Cloud MCP access permission, which Editors and above have by default.
Teams already on Grafana who want an assistant to read dashboards and traces during an incident. Run it locally for a self-managed instance, where the token and --disable-write keep its reach small. On Grafana Cloud the hosted endpoint saves the install and acts as the signed-in user. If you only need raw Prometheus or Loki access without Grafana in between, a server for that backend may be simpler.
47 only read, 11 change things, 2 can delete or overwrite.
search_dashboardsget_dashboard_by_uidlist_dashboard_versionsget_dashboard_summaryget_dashboard_propertyget_dashboard_panel_queriesupdate_dashboard changesrun_panel_querycreate_folder changeslist_datasourcesget_datasourcecheck_datasources_healthcreate_datasource changesupdate_datasource changesquery_prometheuslist_prometheus_metric_nameslist_prometheus_label_nameslist_prometheus_label_valuesquery_prometheus_histogramquery_loki_logslist_loki_label_nameslist_loki_label_valuesquery_loki_statsquery_loki_patternsanalyze_loki_labelsquery_influxdb changeslist_sql_databaseslist_sql_tablesdescribe_sql_tablequery_sql changeslist_cloudwatch_namespaceslist_cloudwatch_metricslist_cloudwatch_dimensionsquery_cloudwatchlist_cloudwatch_log_groupslist_cloudwatch_log_group_fieldsquery_cloudwatch_logsquery_cloud_loggingquery_elasticsearchquery_graphitequery_pyroscopesearch_tempo_tracesget_tempo_tracequery_tempo_metricslist_incidentsget_incidentcreate_incident changesupdate_incident changesalerting_rules_readalerting_rules_write deletesalerting_silences_readalerting_silences_write changeslist_oncall_schedulesget_current_oncall_userslist_alert_groupsupdate_alert_group changesinstall_plugin changesrender_grafana_appuser_infografana_api_request deletes