Claude
Skills
Sign in
Back

grafana-helper

Included with Lifetime
$97 forever

Complete Grafana operations via REST API - dashboards, Prometheus/Loki queries, alerting, annotations, Sift When user mentions Grafana, dashboards, Prometheus, Loki, metrics, logs, alerts, PromQL, LogQL

Backend & APIs

What this skill does


# Grafana Helper Agent

## Overview

Complete Grafana operations via REST API. This skill replaces Grafana MCP server functionality, providing API equivalents for all operations.

## MCP Tool Equivalents Reference

| MCP Tool                          | API Equivalent                                                                         |
| --------------------------------- | -------------------------------------------------------------------------------------- |
| `search_dashboards`               | `curl "$URL/api/search?query=..."`                                                     |
| `get_dashboard_by_uid`            | `curl "$URL/api/dashboards/uid/{uid}"`                                                 |
| `get_dashboard_summary`           | Parse dashboard JSON response                                                          |
| `get_dashboard_property`          | jq on dashboard JSON                                                                   |
| `get_dashboard_panel_queries`     | Extract from dashboard JSON                                                            |
| `update_dashboard`                | `curl -X POST "$URL/api/dashboards/db"`                                                |
| `list_datasources`                | `curl "$URL/api/datasources"`                                                          |
| `get_datasource_by_uid`           | `curl "$URL/api/datasources/uid/{uid}"`                                                |
| `get_datasource_by_name`          | `curl "$URL/api/datasources/name/{name}"`                                              |
| `query_prometheus`                | `curl "$URL/api/ds/query"`                                                             |
| `list_prometheus_metric_names`    | `curl "$URL/api/datasources/proxy/{id}/api/v1/label/__name__/values"`                  |
| `list_prometheus_label_names`     | `curl "$URL/api/datasources/proxy/{id}/api/v1/labels"`                                 |
| `list_prometheus_label_values`    | `curl "$URL/api/datasources/proxy/{id}/api/v1/label/{name}/values"`                    |
| `list_prometheus_metric_metadata` | `curl "$URL/api/datasources/proxy/{id}/api/v1/metadata"`                               |
| `query_loki_logs`                 | `curl "$URL/api/ds/query"`                                                             |
| `query_loki_stats`                | `curl "$URL/api/datasources/proxy/{id}/loki/api/v1/index/stats"`                       |
| `list_loki_label_names`           | `curl "$URL/api/datasources/proxy/{id}/loki/api/v1/labels"`                            |
| `list_loki_label_values`          | `curl "$URL/api/datasources/proxy/{id}/loki/api/v1/label/{name}/values"`               |
| `list_alert_rules`                | `curl "$URL/api/v1/provisioning/alert-rules"`                                          |
| `get_alert_rule_by_uid`           | `curl "$URL/api/v1/provisioning/alert-rules/{uid}"`                                    |
| `create_alert_rule`               | `curl -X POST "$URL/api/v1/provisioning/alert-rules"`                                  |
| `update_alert_rule`               | `curl -X PUT "$URL/api/v1/provisioning/alert-rules/{uid}"`                             |
| `delete_alert_rule`               | `curl -X DELETE "$URL/api/v1/provisioning/alert-rules/{uid}"`                          |
| `list_contact_points`             | `curl "$URL/api/v1/provisioning/contact-points"`                                       |
| `get_annotations`                 | `curl "$URL/api/annotations"`                                                          |
| `create_annotation`               | `curl -X POST "$URL/api/annotations"`                                                  |
| `update_annotation`               | `curl -X PUT "$URL/api/annotations/{id}"`                                              |
| `patch_annotation`                | `curl -X PATCH "$URL/api/annotations/{id}"`                                            |
| `create_graphite_annotation`      | `curl -X POST "$URL/api/annotations/graphite"`                                         |
| `get_annotation_tags`             | `curl "$URL/api/annotations/tags"`                                                     |
| `create_folder`                   | `curl -X POST "$URL/api/folders"`                                                      |
| `search_folders`                  | `curl "$URL/api/search?type=dash-folder"`                                              |
| `list_sift_investigations`        | `curl "$URL/api/plugins/grafana-sift-app/resources/investigations"`                    |
| `get_sift_investigation`          | `curl "$URL/api/plugins/grafana-sift-app/resources/investigations/{id}"`               |
| `get_sift_analysis`               | `curl "$URL/api/plugins/grafana-sift-app/resources/investigations/{id}/analyses/{id}"` |
| `find_error_pattern_logs`         | Via Sift plugin API                                                                    |
| `find_slow_requests`              | Via Sift plugin API                                                                    |
| `get_assertions`                  | Via Asserts plugin API                                                                 |

## Configuration

```bash
# Set environment variables
export GRAFANA_URL="https://your-grafana.com"
export GRAFANA_API_KEY="your-api-key"

# Service account tokens also use GRAFANA_API_KEY
# export GRAFANA_API_KEY="glsa_..."

# Auth header helper
AUTH="Authorization: Bearer $GRAFANA_API_KEY"

# Test connection
curl -H "$AUTH" "$GRAFANA_URL/api/health"
```

---

## Dashboard Operations

### Search Dashboards

```bash
# Search all dashboards
curl -H "$AUTH" "$GRAFANA_URL/api/search?type=dash-db"

# Search by query
curl -H "$AUTH" "$GRAFANA_URL/api/search?query=kubernetes"

# Search by tag
curl -H "$AUTH" "$GRAFANA_URL/api/search?tag=monitoring"

# Search in folder
curl -H "$AUTH" "$GRAFANA_URL/api/search?folderIds=1,2"

# Search starred dashboards
curl -H "$AUTH" "$GRAFANA_URL/api/search?starred=true"

# JSON output with jq
curl -H "$AUTH" "$GRAFANA_URL/api/search?query=api" | \
  jq '.[] | {uid, title, folderTitle}'
```

### Get Dashboard by UID

```bash
# Get full dashboard
curl -H "$AUTH" "$GRAFANA_URL/api/dashboards/uid/{uid}"

# Extract just the dashboard JSON
curl -H "$AUTH" "$GRAFANA_URL/api/dashboards/uid/{uid}" | jq '.dashboard'

# Get dashboard metadata
curl -H "$AUTH" "$GRAFANA_URL/api/dashboards/uid/{uid}" | jq '.meta'
```

### Get Dashboard Summary

```bash
# Get summary info (title, panel count, etc.)
curl -H "$AUTH" "$GRAFANA_URL/api/dashboards/uid/{uid}" | \
  jq '{
    title: .dashboard.title,
    uid: .dashboard.uid,
    panelCount: (.dashboard.panels | length),
    tags: .dashboard.tags,
    folder: .meta.folderTitle,
    url: .meta.url
  }'
```

### Get Dashboard Property (JSONPath)

```bash
# Get title
curl -H "$AUTH" "$GRAFANA_URL/api/dashboards/uid/{uid}" | jq '.dashboard.title'

# Get all panel titles
curl -H "$AUTH" "$GRAFANA_URL/api/dashboards/uid/{uid}" | jq '.dashboard.panels[].title'

# Get first panel
curl -H "$AUTH" "$GRAFANA_URL/api/dashboards/uid/{uid}" | jq '.dashboard.panels[0]'

# Get templating variables
curl -H "$AUTH" "$GRAFANA_URL/api/dashboards/uid/{uid}" | jq '.dashboard.templating.list'

# Get all queries from panels
curl -H "$AUTH" "$GRAFANA_URL/api/dashboards/uid/{uid}" | \
  jq '.dashboard.panels[].targets[]?.expr // empty'
```

### Get Dashboard Panel Queries

```bash
# Extract panel queries with datasource info
curl -H "$AUTH" "$GRAFANA_URL/api/dashboards/uid/{uid}" | \
  jq '.dashboard.panels[] | {
    title: .title,
    type: .type,
    datasource: .datasource,
    queries: [.targets[]? | {expr: .expr, refId: .refId}]
  }'
```

### Update/Create Dashboard

```bash
# Create/update dashboard
curl -X POST -H "$AUTH" -H "Content-Type: application/json" \
  "$GRAFANA_URL/api/dashboards/db" \
  -d '{
    "dashboar

Related in Backend & APIs