Skip to main content
Glama
ninanung
by ninanung

grafana-mcp

npm version license node

Предоставляет часть API Grafana в качестве MCP-сервера (Model Context Protocol), ориентированного на запросы к логам на естественном языке. Основная цель: сказать «покажи мне логи ошибок от сервиса api за последние 30 минут» и получить реальные строки логов — без необходимости вручную работать с LogQL, метками или UID источников данных.

Источники данных логов, метки Loki и сопоставление имени сервиса с его хостинговым источником данных/меткой кэшируются на диске, поэтому повторные вызовы пропускают избыточное сканирование меток.

한국어 문서 / Korean README

Установка и настройка

npx (установка не требуется)

Добавьте следующее в ~/.mcp.json.

{
  "mcpServers": {
    "grafana": {
      "command": "npx",
      "args": ["@seungje.jun/grafana-mcp"],
      "env": {
        "GRAFANA_URL": "https://grafana.example.com",
        "GRAFANA_SERVICE_ACCOUNT_TOKEN": "glsa_xxx"
      }
    }
  }
}

Сборка из исходного кода

git clone https://github.com/ninanung/grafana-mcp.git
cd grafana-mcp
npm install
npm run build
{
  "mcpServers": {
    "grafana": {
      "command": "node",
      "args": ["/path/to/grafana-mcp/dist/cli.js"],
      "env": {
        "GRAFANA_URL": "https://grafana.example.com",
        "GRAFANA_SERVICE_ACCOUNT_TOKEN": "glsa_xxx"
      }
    }
  }
}

Перезапустите Claude Code, чтобы активировать инструменты MCP.

Аутентификация

Требуется один из следующих вариантов. Они проверяются в указанном ниже порядке — побеждает первый найденный.

Переменная

Когда использовать

GRAFANA_SERVICE_ACCOUNT_TOKEN

Grafana 9.1+ (рекомендуется)

GRAFANA_CLOUD_ACCESS_POLICY_TOKEN

Grafana Cloud

GRAFANA_API_KEY

Устаревшие API-ключи (устарели в 10.x)

GRAFANA_USERNAME + GRAFANA_PASSWORD

Резервный вариант Basic Auth

Все токены типа bearer отправляются как Authorization: Bearer <token>. Серверу не важно, какой это тип токена — он просто выбирает тот, который установлен.

Переменные окружения

Переменная

Описание

GRAFANA_URL

URL сервера Grafana (режим одного экземпляра, требуется, если GRAFANA_INSTANCES не задан)

GRAFANA_INSTANCES

(опционально) JSON-массив для режима нескольких экземпляров. Пример: [{"name":"prod","url":"...","service_account_token":"..."},{"name":"dev","url":"...","api_key":"..."}]. Если задано, передавайте instance: "prod" при любом вызове инструмента для выбора цели. Если пропущено, используется первая запись.

GRAFANA_ORG_ID

(опционально) Отправляется как заголовок X-Grafana-Org-Id. Для настроек с несколькими организациями.

GRAFANA_TLS_SKIP_VERIFY

(опционально) true / 1 для пропуска проверки TLS (самоподписанная Grafana).

GRAFANA_MCP_LOG

(опционально) Уровень логирования: debug, info (по умолчанию), warn, error, silent. Логи направляются в stderr, чтобы не засорять канал stdio MCP.

GRAFANA_MCP_AUDIT_LOG

(опционально) Путь к файлу аудита. По умолчанию ~/.grafana-mcp/audit.log. Установите off для отключения. Каждая строка — это JSON-запись с именем инструмента, аргументами, длительностью и статусом.

GRAFANA_MCP_CACHE

(опционально) Установите off для отключения кэша логов на диске.

GRAFANA_MCP_CACHE_PATH

(опционально) Путь к файлу кэша логов. По умолчанию ~/.grafana-mcp/log-cache.json.

GRAFANA_MCP_CACHE_TTL_DATASOURCES_MS

(опционально) TTL для кэша списка источников данных логов. По умолчанию 86400000 (24ч).

GRAFANA_MCP_CACHE_TTL_LABELS_MS

(опционально) TTL для кэша ключей меток Loki. По умолчанию 86400000 (24ч).

GRAFANA_MCP_CACHE_TTL_LABEL_VALUES_MS

(опционально) TTL для кэша значений меток Loki. По умолчанию 3600000 (1ч).

GRAFANA_MCP_CACHE_TTL_SERVICE_MS

(опционально) TTL для кэша разрешения {service → (ds_uid, label)}. По умолчанию 3600000 (1ч).

Related MCP server: Log Analyzer MCP Server

Инструменты

Инструмент

Описание

self_test

Диагностическая проверка — подключение, версия, аутентификация и проверка возможностей (list_datasources, proxy_uid, ds_query) с рекомендациями по необходимым аргументам

list_datasources

Список всех настроенных источников данных

search_dashboards

Поиск дашбордов по запросу/тегу/типу

get_dashboard

Получение полного JSON дашборда по uid

extract_dashboard_queries

Извлечение запросов панели (LogQL/PromQL) из дашборда с datasource_uid. Используйте для поиска аргументов для query_logs.raw_logql из URL дашборда

list_log_datasources

Список только источников данных типа логов (Loki, Elasticsearch, CloudWatch, OpenSearch, Splunk). Кэшируется

list_services

Список имен сервисов, обнаруживаемых по меткам Loki — полезно перед вызовом query_logs

query_logs

Запрос логов для сервиса/временного диапазона/уровня. Автоматически определяет источник данных логов и метку сервиса. Поддерживает raw_logql для расширенных селекторов. Возвращается к /api/ds/query, когда uid-proxy недоступен (Grafana <9.0). Режим вывода: raw / summarize / json

get_log_cache

Просмотр текущего кэша (источники данных логов, метки, разрешенные сервисы)

refresh_log_cache

Аннулирование разрешения одного сервиса или очистка всех записей для экземпляра Grafana

export_log_cache

Экспорт кэша логов в JSON-файл

import_log_cache

Импорт кэша логов из JSON-файла (объединение/замена)

Пример использования

Типичный сценарий на естественном языке, управляемый клиентом MCP:

  1. Пользователь: «Покажи мне логи ошибок от сервиса api за последние 30 минут.»

  2. query_logs с service: "api", level: "error", time_from: "now-30m" → сервер автоматически определяет, какой источник данных Loki владеет меткой service="api", и выполняет LogQL.

  3. (Первый вызов) сопоставление сервис → источник данных/метка сохраняется в кэш; последующие вызовы пропускают этап обнаружения.

  4. Пользователь: «Обобщи эти ошибки по шаблону.» → тот же вызов с output: "summarize" возвращает количество, сгруппированное по шаблонам.

  5. Пользователь: «Какие еще сервисы у нас есть?» → list_services возвращает полный список сервисов.

Если в имени сервиса есть опечатка, query_logs предложит похожие варианты (например, Did you mean: checkout, checkout-api?).

Как работает автообнаружение

query_logs самостоятельно выбирает целевой источник данных и метку:

  1. Фильтрует все источники данных, оставляя только типы логов (Loki/ES/CloudWatch/OpenSearch/Splunk).

  2. Для каждого источника данных Loki получает /loki/api/v1/labels и сначала проходит по общим кандидатам на метку сервиса (service, service_name, app, app_name, application, container, job), а затем по всем остальным меткам.

  3. Для каждой метки-кандидата получает ее значения и проверяет, есть ли запрошенное имя service в этом списке.

  4. Если совпадает ровно одна пара (datasource, label), использует ее. Если совпадает несколько, требует datasource_uid для уточнения. Если совпадений нет, возвращает предложения с похожими именами.

  5. Разрешенная пара (service → ds_uid, label) кэшируется; refresh: true или refresh_log_cache принудительно запускают повторное обнаружение.

Автообнаружение в настоящее время поддерживает только Loki. Для источников данных Elasticsearch / CloudWatch / Splunk передавайте datasource_uid и service_label явно (и не ожидайте применения специфичных для LogQL фильтров).

Режимы вывода

query_logs принимает параметр output:

  • raw (по умолчанию): <ISO timestamp> <log line> — удобно для прямого чтения в терминале.

  • summarize: группирует строки по нормализованному шаблону (числа → N, UUID → UUID) с количеством и примером для каждого шаблона. Используйте, когда строки зашумлены или их слишком много.

  • json: структурированные объекты { ts, line, labels } — для последующей обработки инструментами.

Кэш

  • Кэш логов: сохраняется в ~/.grafana-mcp/log-cache.json. Ключом является базовый URL Grafana, чтобы экземпляры не конфликтовали.

  • Каждая категория имеет свой TTL (источники данных / метки / значения меток / разрешение сервисов) — см. таблицу переменных окружения выше.

  • Разрешение сервиса, которое позже перестало работать (например, метка была переименована), автоматически аннулируется, чтобы следующий вызов выполнил повторное обнаружение.

  • Используйте get_log_cache для просмотра, refresh_log_cache для очистки, и export_log_cache / import_log_cache для обмена с коллегами.

Расположение и сброс кэша

Кэш

Расположение

Сброс

Кэш логов

~/.grafana-mcp/log-cache.json

вызовите refresh_log_cache all=true или удалите файл

Файл кэша — это обычный JSON-документ, его безопасно просматривать, редактировать или создавать резервные копии вручную.

Безопасность и ограничения

  • Только чтение: сервер не предоставляет никаких эндпоинтов, изменяющих состояние Grafana. Никакого CRUD дашбордов/источников данных, никаких изменений алертов.

  • Логи Stdio: все логи направляются в stderr, сохраняя канал stdio MCP чистым.

  • Пропуск TLS: GRAFANA_TLS_SKIP_VERIFY=true устанавливает NODE_TLS_REJECT_UNAUTHORIZED=0 для всего процесса. Используйте только для самоподписанной Grafana в доверенных сетях.

  • Никакого логирования секретов: токены аутентификации никогда не записываются в логи аудита.

Лицензия

MIT

Related MCP Connectors

  • An MCP server giving access to Grafana dashboards, data and more.

  • The Grafbase MCP server sits in front of a GraphQL API and exposes an MCP protocol-compliant interface that allows AI agents and LLMs to explore and query GraphQL APIs using natural language. It provides tools to search schemas, introspect types and fields, and execute GraphQL queries while minimizing context bloat by returning only relevant schema subsets, with built-in support for authentication, authorization, and configurable access control.

  • The Cortex MCP server provides read-only access to real-time engineering context from the Cortex developer portal, allowing AI coding assistants to answer natural language questions about your organization's catalog (microservices, libraries, domains, teams, infrastructure), scorecards (engineering standards and best practices), initiatives (goals and deadlines), and Engineering Intelligence metrics. It includes tools for querying documentation, tracking personal entities, and accessing AI-assisted insights across the entire Cortex ecosystem.

  • The BigQuery remote MCP server is a fully managed service that uses the Model Context Protocol to connect AI applications and LLMs to BigQuery data sources. It provides secure, standardized tools for AI agents to list datasets and tables, retrieve schemas, generate and execute SQL queries through natural language, and analyze data—enabling direct access to enterprise analytics data without requiring manual SQL coding.

Related MCP Servers

  • A
    license
    A
    quality
    D
    maintenance
    A server that enables AI assistants to access and query Grafana dashboards, metrics, logs, and configurations through an MCP protocol interface.
    10
    6
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    An MCP server for intelligent log analysis providing semantic search, error pattern clustering, and smart error detection. It enables users to process, vectorize, and query local logs to efficiently identify issues and generate AI-powered summaries.
    MIT
  • A
    license
    Not graded
    quality
    C
    maintenance
    An MCP server that enables querying logs and metrics from Graylog, Prometheus, and InfluxDB 2.x. It provides tools for executing Lucene log searches, PromQL queries, and Flux queries directly within MCP-compatible clients.
    MIT