Grafana
resmiGrafana örneğinizde panoları arayın, olayları inceleyin ve veri kaynaklarını sorgulayın.
Grafana MCP ile neler yapabilirsiniz?
- Panoları arayın ve inceleyin —
search_dashboardsveget_dashboard_summarykullanarak panoları bulun ve tam JSON olmadan kompakt özetler alın. - Prometheus ve Loki sorgulayın — Veri kaynaklarınızda PromQL ve LogQL sorguları çalıştırın; meta veriler ve histogram yüzdelikleri dahil.
- Uyarıları yönetin — Uyarı kurallarını listeleyin, oluşturun, güncelleyin ve silin; ayrıca bildirim politikalarını ve iletişim noktalarını görüntüleyin.
- Derin bağlantılar oluşturun — Gezinme araçlarıyla zaman aralıkları içeren panolara, panellere ve Explore'a doğru URL'ler oluşturun.
- Panel sorgularını çalıştırın —
run_panel_querykullanarak bir pano panelinin sorgusunu özel zaman aralıkları ve değişkenlerle yürütün.
Dokümantasyon
Grafana MCP sunucusu
Grafana için bir Model Context Protocol (MCP) sunucusu.
Bu, Grafana örneğinize ve çevresindeki ekosisteme erişim sağlar.
Hızlı Başlangıç
uv gerektirir. Aşağıdakini MCP istemci yapılandırmanıza (örn. Claude Desktop, Cursor) ekleyin:
{
"mcpServers": {
"grafana": {
"command": "uvx",
"args": ["mcp-grafana"],
"env": {
"GRAFANA_URL": "http://localhost:3000",
"GRAFANA_SERVICE_ACCOUNT_TOKEN": "<your service account token>"
}
}
}
}
Grafana Cloud için, GRAFANA_URL değerini örnek URL'nizle değiştirin (örn. https://myinstance.grafana.net). Docker, ikili dosya ve Helm dahil daha fazla kurulum seçeneği için Kullanım bölümüne bakın.
Gereksinimler
- Tam işlevsellik için Grafana sürüm 9.0 veya üzeri gereklidir. Özellikle veri kaynağıyla ilgili işlemler olmak üzere bazı özellikler, eksik API uç noktaları nedeniyle daha eski sürümlerde düzgün çalışmayabilir.
Özellikler
Aşağıdaki özellikler şu anda MCP sunucusunda mevcuttur. Bu liste yalnızca bilgilendirme amaçlıdır ve bir yol haritası veya gelecekteki özellikler için taahhüt anlamına gelmez.
Panolar
- Pano arama: Panoları başlığa veya diğer meta verilere göre bulun
- UID ile pano alma: Benzersiz tanımlayıcısını kullanarak pano ayrıntılarının tamamını alın. Uyarı: Büyük panolar önemli miktarda bağlam penceresi alanı tüketebilir.
- Pano özeti alma: Tam JSON olmadan başlık, panel sayısı, panel türleri, değişkenler ve meta veriler dahil bir panonun kompakt bir özetini alın; böylece bağlam penceresi kullanımı en aza indirilir
- Pano özelliği alma: Yalnızca ihtiyaç duyulan verileri almak ve bağlam penceresi tüketimini azaltmak için JSONPath ifadelerini (örn.
$.title,$.panels[*].title) kullanarak bir panonun belirli bölümlerini çıkarın - Pano güncelleme veya oluşturma: Mevcut panoları değiştirin veya yenilerini oluşturun. Uyarı: Büyük miktarda bağlam penceresi alanı tüketebilen tam pano JSON'u gerektirir.
- Panoyu yama uygulama: Tam JSON gerektirmeden bir panoda belirli değişiklikler yapın; hedefli değişiklikler için bağlam penceresi kullanımını önemli ölçüde azaltır
- Panel sorgularını ve veri kaynağı bilgilerini alma: Bir panodaki her panelden başlığı, sorgu dizesini ve veri kaynağı bilgilerini (varsa UID ve tür dahil) alın
Panel Sorgusu Çalıştırma
Not: Panel sorgusu çalıştırma araçları varsayılan olarak devre dışıdır. Bunları etkinleştirmek için
runpanelquerydeğerini--enabled-toolsbayrağınıza ekleyin.
- Panel sorgusu çalıştırma: Özel zaman aralıkları ve değişken geçersiz kılmalarıyla bir pano panelinin sorgusunu yürütün.
Bağlam Penceresi Yönetimi
Pano araçları artık bağlam penceresi kullanımını etkili bir şekilde yönetmek için çeşitli stratejiler içerir (issue #101):
- Pano genel bakışı ve değişiklik planlaması için
get_dashboard_summarykullanın - Yalnızca belirli pano bölümlerine ihtiyacınız olduğunda
get_dashboard_propertyöğesini JSONPath ile kullanın - Tam pano JSON'una özel olarak ihtiyaç duymadıkça
get_dashboard_by_uidkullanmaktan kaçının
Veri Kaynakları
- Veri kaynağı bilgilerini listeleme ve alma: Yapılandırılmış tüm veri kaynaklarını görüntüleyin ve her biri hakkında ayrıntılı bilgi alın.
- Desteklenen veri kaynağı türleri: Prometheus, Loki, ClickHouse, CloudWatch, Elasticsearch, OpenSearch, Snowflake, Athena.
Sorgu Örnekleri
Not: Sorgu örnekleri araçları varsayılan olarak devre dışıdır. Bunları etkinleştirmek için
examplesdeğerini--enabled-toolsbayrağınıza ekleyin.
- Sorgu örnekleri alma: Sorgu sözdizimini öğrenmek için farklı veri kaynağı türleri için örnek sorgular alın.
Prometheus Sorgulama
- Prometheus sorgulama: Prometheus veri kaynaklarına karşı PromQL sorguları yürütün (hem anlık hem de aralık metrik sorgularını destekler).
- Prometheus meta verilerini sorgulama: Prometheus veri kaynaklarından metrik meta verilerini, metrik adlarını, etiket adlarını ve etiket değerlerini alın.
- Histogram yüzdeliklerini sorgulama: histogram_quantile kullanarak histogram yüzdelik değerlerini (p50, p90, p95, p99) hesaplayın.
Loki Sorgulama
- Loki günlüklerini ve metriklerini sorgulama: Loki veri kaynaklarına karşı LogQL kullanarak hem günlük sorgularını hem de metrik sorgularını çalıştırın.
- Loki meta verilerini sorgulama: Loki veri kaynaklarından etiket adlarını, etiket değerlerini ve akış istatistiklerini alın.
- Loki desenlerini sorgulama: Yaygın günlük yapılarını ve anormallikleri belirlemek için Loki tarafından algılanan günlük desenlerini alın.
InfluxDB Sorgulama
Not: InfluxDB araçları varsayılan olarak devre dışıdır. Bunları etkinleştirmek için
influxdbdeğerini--enabled-toolsbayrağınıza ekleyin.
- InfluxDB sorgulama: InfluxDB veri kaynaklarına karşı InfluxQL (v1.x) veya Flux (v2.x) kullanarak sorgular yürütün. Lehçe, veri kaynağı yapılandırmasından çıkarılır veya
dialectparametresi aracılığıyla açıkça ayarlanabilir.
ClickHouse Sorgulama
Not: ClickHouse araçları varsayılan olarak devre dışıdır. Bunları etkinleştirmek için
clickhousedeğerini--enabled-toolsbayrağınıza ekleyin.
- ClickHouse tablolarını listeleme: Bir ClickHouse veritabanındaki tüm tabloları satır sayıları ve boyutlarıyla birlikte listeleyin.
- Tablo şemasını tanımlama: Bir ClickHouse tablosu için sütun adlarını, türlerini ve meta verilerini alın.
- ClickHouse sorgulama: Grafana makro ve değişken ikame desteğiyle SQL sorguları yürütün.
CloudWatch Sorgulama
Not: CloudWatch araçları varsayılan olarak devre dışıdır. Bunları etkinleştirmek için
cloudwatchdeğerini--enabled-toolsbayrağınıza ekleyin.
- CloudWatch ad alanlarını listeleme: Kullanılabilir AWS CloudWatch ad alanlarını keşfedin.
- CloudWatch metriklerini listeleme: Belirli bir ad alanında bulunan metrikleri listeleyin.
- CloudWatch boyutlarını listeleme: Metrik sorgularını filtrelemek için boyutları alın.
- CloudWatch sorgulama: Zaman aralığı desteğiyle CloudWatch metrik sorguları yürütün.
Graphite Sorgulama
Not: Graphite araçları varsayılan olarak devre dışıdır. Bunları etkinleştirmek için
graphitedeğerini--enabled-toolsbayrağınıza ekleyin.
- Graphite sorgulama: Bir Graphite veri kaynağına karşı Graphite render API sorguları yürütün.
- Graphite metriklerini listeleme: Graphite metrik yollarına göz atın ve keşfedin.
- Graphite etiketlerini listeleme: Kullanılabilir Graphite etiketlerini ve etiket değerlerini listeleyin.
- Graphite yoğunluğunu sorgulama: Belirli bir desen için Graphite metrik yoğunluğunu sorgulayın.
Athena Sorgulama
Not: Athena araçları varsayılan olarak devre dışıdır. Bunları etkinleştirmek için
athenadeğerini--enabled-toolsbayrağınıza ekleyin.
- Athena kataloglarını listeleme: Kullanılabilir veri kataloglarını keşfedin (örn. AwsDataCatalog, Iceberg bağlayıcıları).
- Athena veritabanlarını listeleme: Bir Athena kataloğundaki veritabanlarını listeleyin.
- Athena tablolarını listeleme: Bir Athena veritabanındaki tabloları listeleyin.
- Athena tablosunu tanımlama: Bir Athena tablosu için sütun adlarını alın.
- Athena sorgulama: Makro ikamesi, limit zorlaması ve şablon değişkeni desteğiyle Grafana üzerinden Amazon Athena'ya karşı SQL sorguları yürütün.
Snowflake Sorgulama
Not: Snowflake araçları varsayılan olarak devre dışıdır. Bunları etkinleştirmek için
snowflakedeğerini--enabled-toolsbayrağınıza ekleyin.
Sorgular Grafana'nın Snowflake veri kaynağından (Grafana Enterprise eklentisi grafana-snowflake-datasource) geçer, bu nedenle kimlik doğrulama Grafana'daki veri kaynağı yapılandırması tarafından yönetilir — kimlik bilgileri MCP sunucusu tarafından asla görülmez. Bu, ClickHouse araçları için kullanılan modelle aynıdır.
- Snowflake tablolarını listeleme:
INFORMATION_SCHEMA.TABLESaracılığıyla tabloları (veritabanı, şema, tür, satır sayısı ve boyutla birlikte) keşfedin. İsteğe bağlı veritabanı/şema filtreleri. - Tablo şemasını tanımlama: Bir Snowflake tablosu için sütun adlarını, veri türlerini, boş değer kabul edilebilirliğini, varsayılanları ve yorumları alın.
- Snowflake sorgulama: Makro ve değişken ikame desteğiyle SQL sorguları yürütün. Günlükler ve izlemeler için Snowflake'in olay tablolarını (örn.
SNOWFLAKE.TELEMETRY.EVENTS) veya herhangi bir kullanıcı tablosunu sorgulamak için kullanışlıdır.- Desteklenen makrolar:
$__timeFilter(column),$__timeFrom,$__timeTo,$__from,$__to(Unix ms),$__interval(saniye),$__interval_msve şablon değişkeni ikamesi için${varname}.
- Desteklenen makrolar:
Elasticsearch/OpenSearch Sorgulama
Not: Elasticsearch/OpenSearch araçları varsayılan olarak devre dışıdır. Bunları etkinleştirmek için
elasticsearchdeğerini--enabled-toolsbayrağınıza ekleyin.
- Elasticsearch/OpenSearch sorgulama: Lucene sorgu sözdizimini veya Elasticsearch Query DSL'ini kullanarak Elasticsearch veya OpenSearch veri kaynaklarına karşı arama sorguları yürütün. Zaman aralığına göre filtrelemeyi ve günlükleri, metrikleri veya dizine eklenmiş herhangi bir veriyi almayı destekler. Dizinleri, kimlikleri, kaynak alanları ve isteğe bağlı alaka puanıyla birlikte belgeleri döndürür.
Quickwit Sorgulama
Not: Quickwit araçları varsayılan olarak devre dışıdır. Bunları etkinleştirmek için
quickwitdeğerini--enabled-toolsbayrağınıza ekleyin.
- Quickwit sorgulama: Lucene sorgu sözdizimini veya kısmi Elasticsearch uyumlu Query DSL'ini kullanarak Quickwit veri kaynaklarına karşı arama sorguları yürütün. Zaman aralığına göre filtrelemeyi ve günlükleri veya diğer dizine eklenmiş belgeleri almayı destekler. Dizinleri, kimlikleri, kaynak alanları ve isteğe bağlı alaka puanıyla birlikte belgeleri döndürür.
Ajan Gözlemlenebilirliği
Not: Ajan Gözlemlenebilirliği araçları varsayılan olarak devre dışıdır ve yalnızca Grafana Cloud'da çalışır. Bunları etkinleştirmek için
agento11ydeğerini--enabled-toolsbayrağınıza ekleyin.
- Konuşmaları listeleme ve arama: Son LLM konuşmalarını listeleyin veya bir zaman aralığı boyunca bir filtre ifadesiyle (model, sağlayıcı, ajan, durum, hata türü, değerlendirme sonuçları ve daha fazlası) arayın. Arama sonuçları hata sayılarını, derecelendirme özetlerini, değerlendirme özetlerini ve izleme kimliklerini içerir.
- Konuşma ayrıntısı alma: Tek bir konuşmayı, istemler ve çıktılar dahil tüm üretimleriyle birlikte getirin.
- Üretim ayrıntısı ve puanları alma: Kimliğe göre tek bir üretimi ve değerlendirme puanlarını (değerlendirici, puan anahtarı, değer, geçti, açıklama) getirin.
- Ajan kataloğunu okuma: Telemetri gönderen ajanları listeleyin, bir ajan sürümünü tam olarak getirin (tam sistem istemi, JSON şemasıyla birlikte her araç ve üzerinde çalıştığı modeller), bir ajanın sürüm geçmişinde ilerleyin ve sürüm başına değerlendirme puanı toplamlarını karşılaştırın. Etkili sürümler, bir araç değişikliğinin asla etkilemediği
sha256:karmalarıdır; kendi sürümünü bildirmeyen bir ajan için sistem istemini karmalarlar, bu nedenle bir istem düzenlemesi yeni bir sürüm oluşturur. Katalog ve sürüm satırları, tam bir istem getirmeden önce kontrol etmeye değer birtoken_estimatetaşır. - Değerlendiricileri ve şablonları inceleme: Bir puanın geldiği değerlendiricileri, bunların türetildiği şablonları ve LLM yargıcı değerlendiricileri için kullanılabilir yargıç sağlayıcılarını ve modellerini okuyun. Yazma araçları etkinken ayrıca değerlendiriciler oluşturun, çatallayın, test edin ve silin.
- Değerlendirme kurallarını ve korumaları inceleme: Değerlendiricileri üretim trafiğine bağlayan eşzamansız değerlendirme kurallarını ve satır içi çalışan ve uyarabilen veya reddedebilen korumaları (kanca kuralları) okuyun. Yazma araçları etkinken ayrıca bunları oluşturun, güncelleyin, önizleyin ve silin. Yazma işlemleri ve kalıcı olmayan
preview_rulevetest_evaluatorişlemleri, Agento11y Yönetici rolü tarafından verilengrafana-agento11y-app.eval:writeiznini gerektirir. - Kaydedilmiş konuşmaları ve koleksiyonları düzenleme: Kaydedilmiş konuşmaları (bir konuşmaya sabit bir kimlik, ad ve etiket veren yer imleri) ve bunları gruplayan koleksiyonları, her koleksiyonun üye sayısı ve her kaydedilmiş konuşma satırına gömülü koleksiyonlar dahil okuyun. Yazma araçları etkinken ayrıca bir konuşmayı yer imlerine ekleyin, koleksiyonlar oluşturun ve düzenleyin ve üye ekleyin veya kaldırın. Bu yazma işlemleri aynı
grafana-agento11y-app.eval:writeiznini gerektirir. - Test paketlerini okuma ve düzenleme: Çevrimdışı deneylerin karşı çalıştığı sürümlenmiş test paketlerini listeleyin, birini tam sürüm geçmişiyle okuyun ve bir sürümün test durumlarında sayfalama yapın. Yazma araçları etkinken ayrıca bir paket oluşturun, yeniden adlandırın veya yeniden etiketleyin, bir taslak sürüm açın, yayınlayın ve test durumlarını yazın veya silin. Yayınlanmış bir sürüm dondurulmuştur, bu nedenle bir düzenleme yeni bir taslak açmak anlamına gelir. Bu yazma işlemleri
grafana-agento11y-app.eval:writegerektirir. - Çevrimdışı deneyleri okuma: Bir test paketi üzerindeki değerlendirme çalıştırmalarını listeleyin ve birini başlık geçme oranı, maliyet ve belirteç toplamlarıyla okuyun. Test durumu başına bir rapordan denemelere, her yargıcın açıklamasıyla birlikte puanlarına ve yapıt meta verilerine inin. Yazma araçları etkinken ayrıca bir deneyi yeniden adlandırın veya yeniden etiketleyin ve çalışan bir deneyi iptal edin; bunlar
grafana-agento11y-app.eval:writegerektirir. Deneyler SDK çalıştırıcıları tarafından oluşturulur, bu araç tarafından değil.
Grafana Assistant
Not: Asistan araçları varsayılan olarak devre dışıdır ve hedef Grafana örneğine Grafana Assistant eklentisinin (
grafana-assistant-app) kurulmasını gerektirir. Ayrıca yazma araçlarıdır (asistan yığın durumunu değiştirebilir), bu nedenle--disable-writeayarlandığında atlanırlar. Bunları etkinleştirmek içinassistantdeğerini--enabled-toolsbayrağınıza ekleyin.
- Asistana sorun: Grafana Assistant'a doğal dilde bir istem gönderin ve tam metin yanıtını bekleyin. Asistan, tek bir izole veri kaynağı sorgusu çalıştırmaktan daha geniş olan araçları, metrikleri, günlükleri ve diğer yığın bağlamını kullanabilir. Aynı konuşmayı sürdürmek için döndürülen
contextIddeğerini takip eden bir çağrıda geri iletin. Karmaşık görevler birkaç dakika sürebilir; çağrı, yanıt tamamlanana veya istek zaman aşımına uğrayana (5 dakika) kadar bloke olur.
Incident'ler
- Incident'leri arayın, oluşturun ve güncelleyin: Grafana Incident'te olayları yönetin; arama, oluşturma ve olaylara aktivite ekleme dahil.
Sift Araştırmaları
- Sift araştırmalarını listeleyin: Bir limit parametresi desteğiyle Sift araştırmalarının listesini alın.
- Sift araştırması alın: UUID'sine göre belirli bir Sift araştırmasının ayrıntılarını alın.
- Sift analizlerini alın: Bir Sift araştırmasından belirli bir analizi alın.
- Günlüklerde hata desenlerini bulun: Sift kullanarak Loki günlüklerinde yüksek hata desenlerini tespit edin.
- Yavaş istekleri bulun: Sift (Tempo) kullanarak yavaş istekleri tespit edin.
Alerting
- Uyarı kuralı bilgilerini listeleyin ve getirin: Grafana'da uyarı kurallarını ve durumlarını (tetikleniyor/normal/hata/vb.) görüntüleyin. Hem Grafana tarafından yönetilen kuralları hem de Prometheus veya Loki veri kaynaklarından veri kaynağı tarafından yönetilen kuralları destekler.
- Uyarı kuralları oluşturun ve güncelleyin: Yeni uyarı kuralları oluşturun veya mevcut olanları değiştirin.
- Uyarı kurallarını silin: UID ile uyarı kurallarını kaldırın.
- Uyarı yönlendirmesini yönetin: Bildirim politikalarını, iletişim noktalarını ve zaman aralıklarını görüntüleyin. Hem Grafana tarafından yönetilen iletişim noktalarını hem de harici Alertmanager veri kaynaklarından (Prometheus Alertmanager, Mimir, Cortex) alıcıları destekler.
Grafana OnCall
- Programları listeleyin ve yönetin: Grafana OnCall'da nöbet programlarını görüntüleyin ve yönetin.
- Vardiya ayrıntılarını alın: Belirli nöbet vardiyaları hakkında ayrıntılı bilgi alın.
- Güncel nöbetçi kullanıcıları alın: Bir program için şu anda nöbette olan kullanıcıları görün.
- Ekipleri ve kullanıcıları listeleyin: Tüm OnCall ekiplerini ve kullanıcılarını görüntüleyin.
- Uyarı gruplarını listeleyin: Grafana OnCall'dan uyarı gruplarını durum, entegrasyon, etiketler ve zaman aralığı dahil çeşitli ölçütlere göre görüntüleyin ve filtreleyin.
- Uyarı grubu ayrıntılarını alın: Kimliğine göre belirli bir uyarı grubu hakkında ayrıntılı bilgi alın.
Admin
Not: Admin araçları varsayılan olarak devre dışıdır. Bunları etkinleştirmek için
admindeğerini--enabled-toolsbayrağınıza ekleyin.
- Ekipleri listeleyin: Grafana'da yapılandırılmış tüm ekipleri görüntüleyin.
- Kullanıcıları listeleyin: Grafana'da bir kuruluştaki tüm kullanıcıları görüntüleyin.
- Tüm rolleri listeleyin: Tüm Grafana rollerini listeleyin; devredilebilir roller için isteğe bağlı bir filtre ile.
- Rol ayrıntılarını alın: UID ile belirli bir Grafana rolünün ayrıntılarını alın.
- Bir rol için atamaları listeleyin: Bir role atanmış tüm kullanıcıları, ekipleri ve hizmet hesaplarını listeleyin.
- Kullanıcılar için rolleri listeleyin: Bir veya daha fazla kullanıcıya atanmış tüm rolleri listeleyin.
- Ekipler için rolleri listeleyin: Bir veya daha fazla ekibe atanmış tüm rolleri listeleyin.
- Bir kaynak için izinleri listeleyin: Belirli bir kaynak (dashboard, veri kaynağı, klasör vb.) için tanımlanmış tüm izinleri listeleyin.
- Bir Grafana kaynağını tanımlayın: Bir kaynak türü için kullanılabilir izinleri ve atama yeteneklerini listeleyin.
Navigasyon
- Derin bağlantılar oluşturun: LLM URL tahminine güvenmek yerine Grafana kaynakları için doğru derin bağlantı URL'leri oluşturun.
- Dashboard bağlantıları: UID'lerini kullanarak dashboard'lara doğrudan bağlantılar oluşturun (örn.
http://localhost:3000/d/dashboard-uid) - Panel bağlantıları: viewPanel parametresiyle dashboard'lar içindeki belirli panellere bağlantılar oluşturun (örn.
http://localhost:3000/d/dashboard-uid?viewPanel=5) - Explore bağlantıları: Önceden yapılandırılmış veri kaynaklarıyla Grafana Explore'a bağlantılar oluşturun (örn.
http://localhost:3000/explore?left={"datasource":"prometheus-uid"}) - Zaman aralığı desteği: Bağlantılara zaman aralığı parametreleri ekleyin (
from=now-1h&to=now) - Özel parametreler: Dashboard değişkenleri veya yenileme aralıkları gibi ek sorgu parametreleri ekleyin
- Dashboard bağlantıları: UID'lerini kullanarak dashboard'lara doğrudan bağlantılar oluşturun (örn.
Açıklamalar (Annotations)
- Açıklamaları alın: Filtrelerle açıklamaları sorgulayın. Zaman aralığını, dashboard UID'sini, etiketleri ve eşleştirme modunu destekler.
- Açıklama oluşturun: Bir dashboard veya panel üzerinde yeni bir açıklama oluşturun.
- Graphite açıklaması oluşturun: Graphite formatını kullanarak açıklamalar oluşturun (
what,when,tags,data). - Açıklamayı güncelleyin: Mevcut bir açıklamanın tüm alanlarını değiştirin (tam güncelleme).
- Açıklamayı yama yapın: Bir açıklamanın yalnızca belirli alanlarını güncelleyin (kısmi güncelleme).
- Açıklama etiketlerini alın: İsteğe bağlı filtrelemeyle kullanılabilir açıklama etiketlerini listeleyin.
Anlık Görüntüler (Snapshots)
- Anlık görüntüleri listeleyin: İsteğe bağlı sorgu ve limit filtreleriyle dashboard anlık görüntülerini listeleyin.
- Anlık görüntü alın: Anlık görüntü anahtarıyla anlık görüntü meta verilerini ve dashboard yükünü alın.
- Anlık görüntü oluşturun: İsteğe bağlı süre sonu ve harici anlık görüntü seçenekleriyle tam bir dashboard yükünden bir dashboard anlık görüntüsü oluşturun.
- Anlık görüntüyü silin: Anlık görüntü anahtarıyla bir anlık görüntüyü silin.
İşleme (Rendering)
- Panel veya dashboard görüntüsü alın: Bir Grafana dashboard panelini veya tam dashboard'ı PNG görüntüsü olarak işleyin. Görüntüyü raporlarda, uyarılarda veya sunumlarda kullanılmak üzere base64 kodlu veri olarak döndürür. Boyutları, zaman aralığını, temayı, ölçeği ve dashboard değişkenlerini özelleştirmeyi destekler. Ayrıca isteğe bağlı
provisioningPreviewparametresi aracılığıyla bir sağlama deposu dalından (örn. bir git-sync PR önizlemesi) henüz uygulanmamış dashboard'ları işlemeyi destekler.- Not: Grafana Image Renderer hizmetinin kurulu ve yapılandırılmış olmasını gerektirir.
Provisioning
- Provisioning depolarını listeleyin: Bu Grafana örneği için yapılandırılmış provisioning depolarını (örn. git-sync kaynakları) listeleyin; her deponun slug'ını kaynak URL'si, dalı, yolu, senkronizasyon durumu ve sağlığıyla birlikte döndürür.
- Provisioning dosyasını doğrulayın: Belirli bir dal veya commit'teki bir provisioning deposundan bir dosyayı kuru çalıştırma (dry-run) olarak uygulayın. Kabul edilip edilmeyeceğini, kaynak eylemini (oluştur/güncelle), hedef kaynak türünü ve yapılandırılmış doğrulama hatalarını döndürür — Grafana'nın PR yorumlayıcısının kullandığı kabul yüzeyinin aynısı.
Araç listesi yapılandırılabilir, böylece MCP istemcisine hangi araçları sunmak istediğinizi seçebilirsiniz.
Bu, belirli işlevleri kullanmıyorsanız veya bağlam penceresinin çok fazlasını kaplamak istemiyorsanız kullanışlıdır.
Bir araç kategorisini devre dışı bırakmak için sunucuyu başlatırken --disable-<category> bayrağını kullanın. Örneğin, OnCall araçlarını devre dışı bırakmak için --disable-oncall kullanın veya navigasyon derin bağlantı oluşturmayı devre dışı bırakmak için --disable-navigation kullanın.
RBAC İzinleri
Her araç düzgün çalışmak için belirli RBAC izinleri gerektirir. MCP sunucusu için bir hizmet hesabı oluştururken, hangi araçları kullanmayı planladığınıza bağlı olarak gerekli izinlere sahip olduğundan emin olun. Listelenen izinler gereken minimum eylemlerdir - kullanım durumunuza bağlı olarak uygun kapsamlara da ihtiyacınız olabilir (örn. datasources:*, dashboards:*, folders:*).
İpucu: Grafana RBAC'ye aşina değilseniz veya birçok ayrıntılı kapsam yapılandırmak yerine daha hızlı ve daha basit bir kurulum istiyorsanız, hizmet hesabına Editor gibi yerleşik bir rol atayabilirsiniz. Editor rolü, çoğu MCP sunucu işlemine izin verecek geniş okuma/yazma erişimi sağlar; manuel olarak uygulanan kapsamlardan daha az ayrıntılıdır (ve dolayısıyla daha az kısıtlayıcıdır), bu nedenle yalnızca kolaylık, sıkı en az ayrıcalık erişiminden daha önemli olduğunda kullanın.
Not: Grafana Incident ve Sift araçları, ince taneli RBAC izinleri yerine temel Grafana rollerini kullanır:
- Görüntüleyici rolü: Salt okunur işlemler için gereklidir (olayları listeleme, araştırmaları alma)
- Düzenleyici rolü: Yazma işlemleri için gereklidir (olay oluşturma, araştırmaları değiştirme)
Grafana RBAC hakkında daha fazla bilgi için resmi belgelere bakın.
RBAC Kapsamları
Kapsamlar, izinlerin uygulandığı belirli kaynakları tanımlar. Her eylem, hem uygun izin hem de kapsam kombinasyonunu gerektirir.
Yaygın Kapsam Desenleri:
-
Geniş erişim: Kuruluş genelinde erişim için
*joker karakterlerini kullanındatasources:*- Tüm veri kaynaklarına erişimdashboards:*- Tüm dashboard'lara erişimfolders:*- Tüm klasörlere erişimteams:*- Tüm ekiplere erişim
-
Sınırlı erişim: Bireysel kaynakları kısıtlamak için belirli UID'ler veya kimlikler kullanın
datasources:uid:prometheus-uid- Yalnızca belirli bir Prometheus veri kaynağına erişimdashboards:uid:abc123- Yalnızca UID'siabc123olan dashboard'a erişimfolders:uid:xyz789- Yalnızca UID'sixyz789olan klasöre erişimteams:id:5- Yalnızca kimliği5olan ekibe erişimglobal.users:id:123- Yalnızca kimliği123olan kullanıcıya erişim
Örnekler:
-
Tam MCP sunucu erişimi: Tüm araçlar için geniş izinler verin
datasources:* (datasources:read, datasources:query) dashboards:* (dashboards:read, dashboards:create, dashboards:write) folders:* (for dashboard creation and alert rules) teams:* (teams:read) global.users:* (users:read) -
Sınırlı veri kaynağı erişimi: Yalnızca belirli Prometheus ve Loki örneklerini sorgulayın
datasources:uid:prometheus-prod (datasources:query) datasources:uid:loki-prod (datasources:query) -
Dashboard'a özel erişim: Yalnızca belirli dashboard'ları okuyun
dashboards:uid:monitoring-dashboard (dashboards:read) dashboards:uid:alerts-dashboard (dashboards:read)
Araçlar
| Araç | Kategori | Açıklama | Gerekli RBAC İzinleri | Gerekli Kapsamlar |
|---|---|---|---|---|
list_teams | Yönetici | Tüm ekipleri listele | teams:read | teams:* veya teams:id:1 |
list_users_by_org | Yönetici | Bir organizasyondaki tüm kullanıcıları listele | users:read | global.users:* veya global.users:id:123 |
list_all_roles | Yönetici | Tüm Grafana rollerini listele | roles:read | roles:* |
get_role_details | Yönetici | Bir Grafana rolünün ayrıntılarını al | roles:read | roles:uid:editor |
get_role_assignments | Yönetici | Bir rol için atamaları listele | roles:read | roles:uid:editor |
list_user_roles | Yönetici | Kullanıcılar için rolleri listele | roles:read | global.users:id:123 |
list_team_roles | Yönetici | Ekipler için rolleri listele | roles:read | teams:id:7 |
get_resource_permissions | Yönetici | Bir kaynak için izinleri listele | permissions:read | dashboards:uid:abcd1234 |
get_resource_description | Yönetici | Bir Grafana kaynak türünü açıkla | permissions:read | dashboards:* |
search_dashboards | Arama | Panolar için arama yap | dashboards:read | dashboards:* veya dashboards:uid:abc123 |
get_dashboard_by_uid | Pano | UID ile bir pano al | dashboards:read | dashboards:uid:abc123 |
update_dashboard | Pano | Yeni bir pano güncelle veya oluştur | dashboards:create, dashboards:write | dashboards:*, folders:* veya folders:uid:xyz789 |
get_dashboard_panel_queries | Pano | Bir panodan panel başlığını, sorguları, veri kaynağı UID'sini ve türünü al | dashboards:read | dashboards:uid:abc123 |
run_panel_query | PanelSorgusuÇalıştır* | Bir veya daha fazla pano panel sorgusu çalıştır | dashboards:read, datasources:query | dashboards:uid:*, datasources:uid:* |
get_dashboard_property | Pano | JSONPath ifadelerini kullanarak bir panonun belirli bölümlerini çıkar | dashboards:read | dashboards:uid:abc123 |
get_dashboard_summary | Pano | Tam JSON olmadan bir panonun kompakt özetini al | dashboards:read | dashboards:uid:abc123 |
list_datasources | Veri Kaynakları | Veri kaynaklarını listele | datasources:read | datasources:* |
get_datasource | Veri Kaynakları | UID veya ada göre bir veri kaynağı al | datasources:read | datasources:uid:prometheus-uid |
get_query_examples | Örnekler* | Bir veri kaynağı türü için örnek sorgular al | datasources:read | datasources:* |
query_prometheus | Prometheus | Bir Prometheus veri kaynağına karşı sorgu çalıştır | datasources:query | datasources:uid:prometheus-uid |
list_prometheus_metric_metadata | Prometheus | Metrik meta verilerini listele | datasources:query | datasources:uid:prometheus-uid |
list_prometheus_metric_names | Prometheus | Kullanılabilir metrik adlarını listele | datasources:query | datasources:uid:prometheus-uid |
list_prometheus_label_names | Prometheus | Bir seçiciyle eşleşen etiket adlarını listele | datasources:query | datasources:uid:prometheus-uid |
list_prometheus_label_values | Prometheus | Belirli bir etiket için değerleri listele | datasources:query | datasources:uid:prometheus-uid |
query_prometheus_histogram | Prometheus | Histogram yüzdelik değerlerini hesapla | datasources:query | datasources:uid:prometheus-uid |
list_incidents | Incident | Grafana Incident'daki olayları listele | Görüntüleyici rolü | N/A |
create_incident | Incident | Grafana Incident'da bir olay oluştur | Editör rolü | N/A |
add_activity_to_incident | Incident | Grafana Incident'da bir olaya etkinlik öğesi ekle | Editör rolü | N/A |
get_incident | Incident | Kimliğe göre tek bir olay al | Görüntüleyici rolü | N/A |
query_loki_logs | Loki | LogQL kullanarak günlükleri sorgula ve al (günlük veya metrik sorguları) | datasources:query | datasources:uid:loki-uid |
list_loki_label_names | Loki | Günlüklerdeki tüm kullanılabilir etiket adlarını listele | datasources:query | datasources:uid:loki-uid |
list_loki_label_values | Loki | Belirli bir günlük etiketi için değerleri listele | datasources:query | datasources:uid:loki-uid |
query_loki_stats | Loki | Günlük akışları hakkında istatistik al | datasources:query | datasources:uid:loki-uid |
query_loki_patterns | Loki | Ortak yapıları tanımlamak için algılanan günlük desenlerini sorgula | datasources:query | datasources:uid:loki-uid |
analyze_loki_labels | Loki | Bir Loki etiket stratejisini denetle (canlı veya statik) ve isteğe bağlı olarak sorgu performansını teşhis et | datasources:query | datasources:uid:loki-uid |
suggest_loki_alloy_label_config | Yapılandırma | Onaylanan etiketleri zorunlu kılan bir Alloy loki.process snippet'i oluştur | N/A | N/A |
query_influxdb | InfluxDB | InfluxQL (v1) veya Flux (v2) kullanarak InfluxDB'yi sorgula | datasources:query | datasources:uid:influxdb-uid |
list_clickhouse_tables | ClickHouse* | Bir ClickHouse veritabanındaki tabloları listele | datasources:query | datasources:uid:* |
describe_clickhouse_table | ClickHouse* | Sütun türleriyle tablo şemasını al | datasources:query | datasources:uid:* |
query_clickhouse | ClickHouse* | Makro değiştirmeyle SQL sorguları çalıştır | datasources:query | datasources:uid:* |
list_cloudwatch_namespaces | CloudWatch* | Kullanılabilir AWS CloudWatch ad alanlarını listele | datasources:query | datasources:uid:* |
list_cloudwatch_metrics | CloudWatch* | Bir ad alanındaki metrikleri listele | datasources:query | datasources:uid:* |
list_cloudwatch_dimensions | CloudWatch* | Bir metrik için boyutları listele | datasources:query | datasources:uid:* |
query_cloudwatch | CloudWatch* | CloudWatch metrik sorgularını çalıştır | datasources:query | datasources:uid:* |
list_athena_catalogs | Athena* | Kullanılabilir Athena veri kataloglarını listele | datasources:query | datasources:uid:* |
list_athena_databases | Athena* | Bir Athena kataloğundaki veritabanlarını listele | datasources:query | datasources:uid:* |
list_athena_tables | Athena* | Bir Athena veritabanındaki tabloları listele | datasources:query | datasources:uid:* |
describe_athena_table | Athena* | Bir Athena tablosu için sütun adlarını al | datasources:query | datasources:uid:* |
query_athena | Athena* | Makro değişimi ile SQL sorgularını çalıştır | datasources:query | datasources:uid:* |
query_elasticsearch | Elasticsearch/OpenSearch* | Lucene sözdizimi veya Query DSL kullanarak Elasticsearch veya OpenSearch sorgula | datasources:query | datasources:uid:datasource-uid |
query_quickwit | Quickwit* | Lucene sözdizimi veya Query DSL kullanarak Quickwit sorgula | datasources:query | datasources:uid:quickwit-uid |
list_snowflake_tables | Snowflake* | INFORMATION_SCHEMA aracılığıyla bir Snowflake veritabanı/şemasındaki tabloları listele | datasources:query | datasources:uid:* |
describe_snowflake_table | Snowflake* | Tablo şemasını al (sütun türleri, nullability, varsayılanlar, yorumlar) | datasources:query | datasources:uid:* |
query_snowflake | Snowflake* | Makro/değişken değişimi ile SQL sorgularını çalıştır | datasources:query | datasources:uid:* |
alerting_manage_rules | Alerting | Uyarı kurallarını yönet (listele, al, sürümler, oluştur, güncelle, sil) | alert.rules:read + alert.rules:write değişiklikler için | folders:* veya folders:uid:alerts-folder |
alerting_manage_routing | Alerting | Bildirim politikalarını, iletişim noktalarını ve zaman aralıklarını yönet | alert.notifications:read | Global kapsam |
list_oncall_schedules | OnCall | Grafana OnCall'dan zaman çizelgelerini listele | grafana-oncall-app.schedules:read | Eklentiye özel kapsamlar |
get_oncall_shift | OnCall | Belirli bir OnCall vardiyası için ayrıntıları al | grafana-oncall-app.schedules:read | Eklentiye özel kapsamlar |
get_current_oncall_users | OnCall | Belirli bir zaman çizelgesi için şu anda nöbette olan kullanıcıları al | grafana-oncall-app.schedules:read | Eklentiye özel kapsamlar |
list_oncall_teams | OnCall | Grafana OnCall'dan ekipleri listele | grafana-oncall-app.user-settings:read | Eklentiye özel kapsamlar |
list_oncall_users | OnCall | Grafana OnCall'dan kullanıcıları listele | grafana-oncall-app.user-settings:read | Eklentiye özel kapsamlar |
list_alert_groups | OnCall | Filtreleme seçenekleriyle Grafana OnCall'dan uyarı gruplarını listele | grafana-oncall-app.alert-groups:read | Eklentiye özel kapsamlar |
get_alert_group | OnCall | Kimliğine göre Grafana OnCall'dan belirli bir uyarı grubunu al | grafana-oncall-app.alert-groups:read | Eklentiye özel kapsamlar |
get_sift_investigation | Sift | UUID'sine göre mevcut bir Sift incelemesini al | Viewer rolü | N/A |
get_sift_analysis | Sift | Bir Sift incelemesinden belirli bir analizi al | Viewer rolü | N/A |
list_sift_investigations | Sift | İsteğe bağlı bir sınırla Sift incelemeleri listesini al | Viewer rolü | N/A |
find_error_pattern_logs | Sift | Loki günlüklerinde yüksek hata desenlerini bulur. | Editor rolü | N/A |
find_slow_requests | Sift | İlgili tempo veri kaynaklarından yavaş istekleri bulur. | Editor rolü | N/A |
list_pyroscope_label_names | Pyroscope | Bir seçiciyle eşleşen etiket adlarını listele | datasources:query | datasources:uid:pyroscope-uid |
list_pyroscope_label_values | Pyroscope | Bir etiket adı için bir seçiciyle eşleşen etiket değerlerini listele | datasources:query | datasources:uid:pyroscope-uid |
list_pyroscope_profile_types | Pyroscope | Kullanılabilir profil türlerini listele | datasources:query | datasources:uid:pyroscope-uid |
query_pyroscope | Pyroscope | Pyroscope'tan profilleri, metrikleri veya her ikisini sorgula | datasources:query | datasources:uid:pyroscope-uid |
get_assertions | Asserts | Belirli bir varlık için assertion özetini al | Eklentiye özel izinler | Eklentiye özel kapsamlar |
agento11y_manage_conversations | Agent Observability* | Grafana Agent Observability'dan LLM konuşmalarını listele, ara ve getir | grafana-agento11y-app.conversations:read | N/A |
agento11y_manage_generations | Agent Observability* | Grafana Agent Observability'dan LLM üretim ayrıntılarını ve değerlendirme puanlarını getir | grafana-agento11y-app.data:read | N/A |
agento11y_manage_agents | Agent Observability* | Ajan kataloğunu oku: ajanları listele, bir ajan sürümünü tam olarak al, sürüm geçmişini listele ve sürüm başına puan özetlerini al | grafana-agento11y-app.data:read | N/A |
agento11y_manage_evaluators | Agent Observability* | Değerlendiricileri, değerlendirici şablonlarını ve jüri kataloğunu yönet (listele, al, upsert, fork, test et, sil) | grafana-agento11y-app.data:read + grafana-agento11y-app.eval:write değişiklikler ve testler için | N/A |
agento11y_manage_eval_rules | Agent Observability* | Değerlendirme kurallarını ve korumaları yönet (listele, al, oluştur, güncelle, önizle, sil) | grafana-agento11y-app.data:read + grafana-agento11y-app.eval:write değişiklikler ve önizlemeler için | N/A |
agento11y_manage_eval_collections | Agent Observability* | Kaydedilmiş konuşmaları ve bunları gruplayan koleksiyonları yönet (listele, al, kaydet, oluştur, güncelle, sil, üye ekle ve kaldır) | grafana-agento11y-app.data:read + grafana-agento11y-app.eval:write değişiklikler için | N/A |
agento11y_manage_experiments | Agent Observability* | Çevrimdışı deneyleri, bunların denemelerini, puanlarını, yapıt meta verilerini ve filtre yönlerini oku; bir deneyi güncelle ve iptal et | grafana-agento11y-app.data:read + grafana-agento11y-app.eval:write değişiklikler için | N/A |
agento11y_manage_test_suites | Agent Observability* | Çevrimdışı deneylerin çalıştığı test paketlerini, sürümlerini ve test durumlarını yönet (listele, al, oluştur, güncelle, taslak, yayınla, upsert, sil) | grafana-agento11y-app.data:read + grafana-agento11y-app.eval:write değişiklikler için | N/A |
ask_assistant | Assistant* | Grafana Assistant'a bir istem gönder ve tam metin yanıtını döndür (contextId ile çok turlu) | Eklentiye özel izinler | Eklentiye özel kapsamlar |
generate_deeplink | Navigation | Grafana kaynakları için doğru derin bağlantı URL'leri oluştur | Yok (salt okunur URL oluşturma) | N/A |
get_annotations | Annotations | Filtrelerle açıklamaları getir | annotations:read | annotations:* veya annotations:id:123 |
create_annotation | Anotasyonlar | Yeni bir anotasyon oluştur (standart veya Graphite formatı) | annotations:write | annotations:* |
update_annotation | Anotasyonlar | Bir anotasyonun belirli alanlarını güncelle (kısmi güncelleme) | annotations:write | annotations:* |
get_annotation_tags | Anotasyonlar | İsteğe bağlı filtreleme ile anotasyon etiketlerini listele | annotations:read | annotations:* |
list_snapshots | Anlık Görüntü | İsteğe bağlı sorgu ve limit filtreleriyle dashboard anlık görüntülerini listele | dashboards:read | dashboards:* veya dashboards:uid:abc123 |
get_snapshot | Anlık Görüntü | Anlık görüntü anahtarına göre anlık görüntü meta verilerini ve dashboard veri yükünü al | dashboards:read | dashboards:* veya dashboards:uid:abc123 |
create_snapshot | Anlık Görüntü | Tam bir dashboard veri yükünden dashboard anlık görüntüsü oluştur | dashboards:write | dashboards:* veya dashboards:uid:abc123 |
delete_snapshot | Anlık Görüntü | Anlık görüntü anahtarına göre bir dashboard anlık görüntüsünü sil | dashboards:write | dashboards:* veya dashboards:uid:abc123 |
get_panel_image | İşleme | Depolanmış bir dashboard veya paneli — ya da bir depo dalından sağlama önizlemesini — PNG görüntüsü olarak işle | dashboards:read | dashboards:uid:abc123 |
list_provisioning_repositories | Sağlama | Kaynak URL'si, dal, senkronizasyon durumu ve sağlık bilgileriyle sağlama depolarını listele (örn. git-sync kaynakları) | provisioning.repositories:read | N/A |
validate_provisioning_file | Sağlama | Sağlama deposundan bir dosyayı kuru çalıştırma ile uygula ve kabul doğrulama hatalarını raporla | provisioning.repositories:read | N/A |
* Varsayılan olarak devre dışı. Etkinleştirmek için --enabled-tools kategorisine ekleyin. |
CLI Bayrak Referansı
mcp-grafana ikili dosyası, yapılandırma için çeşitli komut satırı bayraklarını destekler:
Taşıma (Transport) Seçenekleri:
-t, --transport: Taşıma türü (stdio,sseveyastreamable-http) - varsayılan:stdio--address: SSE/streamable-http sunucusu için ana bilgisayar ve bağlantı noktası - varsayılan:localhost:8000--base-path: SSE/streamable-http sunucusu için temel yol--endpoint-path: streamable-http sunucusu için uç nokta yolu - varsayılan:/mcp--server-name: MCP el sıkışmasında ve OTelservice.nameiçinde kullanılan sunucu adı - varsayılan:mcp-grafana.GRAFANA_MCP_SERVER_NAMEortam değişkenini geçersiz kılar
HTTP Taşıma Güvenliği (yalnızca SSE / streamable-http):
Host/Origin doğrulaması, dinleyicideki her rotada zorunlu tutulur — /sse, /mcp, /healthz ve /metrics — böylece DNS-rebinding yapan bir tarayıcı bunların hiçbirine ulaşamaz. Stdio taşıması etkilenmez.
--allowed-hosts:Hostbaşlık değerlerinin virgülle ayrılmış beyaz listesi. Varsayılan olarak--addressdeğerinin loopback varyantlarıdır (örn.localhost:8000,127.0.0.1:8000,[::1]:8000). Boş olarak ayrıştırılan bir değer (ayarlanmamış,,,,vb.) de varsayılanlara geri döner; böylece bir yazım hatası kontrolü sessizce devre dışı bırakamaz. Beyaz listenin dışında birHostbaşlığı taşıyan istekler403ile reddedilir. Kontrolü devre dışı bırakmak için*değerini geçirin — bu yalnızcaHostdeğerini yeniden yazan güvenilir bir ters proxy arkasında veya izole bir ağda çalışırken güvenlidir. K8shttpGetprobları ve harici/metricsscrape işlemleri bu listede açık bir ana bilgisayar adına,*değerine veya birtcpSocketprobuna / ayrı bir metrik bağlantı noktasına (--metrics-address) ihtiyaç duyacaktır.--allowed-origins:Originbaşlık değerlerinin virgülle ayrılmış beyaz listesi. Varsayılan olarak boştur —Originbaşlığı taşıyan herhangi bir istek reddedilir (tarayıcılar çapraz kaynaklı istekler için her zaman bir tane gönderir ve hiçbir tarayıcı bu sunucuyu doğrudan çağırmamalıdır). Tarayıcı tabanlı istemcilere izin vermek için açık bir listeye ayarlayın veya kontrolü devre dışı bırakmak için*değerini kullanın.
Çağıran Kimlik Doğrulaması (yalnızca SSE / streamable-http):
İsteğe bağlı olarak MCP istemcilerinin sunucuya kimlik doğrulaması yapmasını gerektirir. Bu, sunucunun Grafana'ya ulaşmak için kullandığı kimlik bilgilerinden ayrıdır. Stdio etkilenmez.
--server-auth-token: ÇağıranlarınAuthorization: Bearer <token>olarak göndermesi gereken Bearer belirteci.MCP_GRAFANA_SERVER_TOKENortam değişkenine geri döner. Ayarlanmışsa, geçerli bir belirteç olmayan istekler herhangi bir araç çalışmadan önce401ile reddedilir. Sırrın işlem argümanlarında görünmemesi için ortam değişkenini tercih edin.
Çağıran kimlik doğrulaması yalnızca --server-auth-token ayarlandığında zorunlu tutulur. Ayarlandığında ve sunucu loopback olmayan bir adrese bağlandığında, sunucu başlar ancak bir güvenlik hatası günlüğe kaydeder — bu hata, --log-level tarafından gizlenmemesi için error günlük düzeyinde yayınlanır (loopback ve stdio etkilenmez); gelecekteki bir ana sürüm bunu bir başlangıç hatası haline getirecektir. Çağıran kimlik doğrulaması loopback olmayan bir adreste etkinleştirildiğinde TLS (veya TLS sonlandırma) kullanın. Çağıran kimlik doğrulaması etkinleştirildiğinde, doğrulanmış Authorization başlığı istekler Grafana'ya ulaşmadan önce kaldırılır; --server-auth-token ile GRAFANA_FORWARD_HEADERS=Authorization birleştirmek başlangıçta reddedilir.
Hata Ayıklama ve Günlükleme:
--debug: Ayrıntılı HTTP istek/yanıt günlüklemesi için hata ayıklama modunu etkinleştir--log-level: Günlük düzeyi (debug,info,warn,error) - varsayılan:info
Grafana İstemci Seçenekleri:
--grafana-timeout: Grafana istemcisi tarafından yapılan istekler için zaman sınırı. Go süre dizelerini kabul eder (örn.10s,500ms) - varsayılan:10s--include-args-in-spans: OpenTelemetry span'lerine araç çağrısı argümanlarını dahil et. Yalnızca üretim dışı ortamlarda veya argümanların PII içermediği bilindiğinde etkinleştirin - varsayılan:false
Gözlemlenebilirlik:
--metrics: Prometheus metrik uç noktasını/metricsadresinde etkinleştir--metrics-address: Metrik sunucusu için ayrı adres (örn.:9090). Boşsa, metrikler ana sunucuda sunulur--slow-request-threshold: Herhangi bir MCP isteği (araç çağrısı, listeleme, kaynak okuma vb.) bu süreden uzun sürerse bir olay günlüğe kaydet. Go süre dizelerini kabul eder (örn.500ms,5s). Varsayılan0yavaş istek günlüğünü devre dışı bırakır. Yavaş istek günlüğü bölümüne bakın.--slow-request-log-level: Yavaş istek olayları için günlük düzeyi (infoveyawarn) - varsayılan:warn.
Oturum Yönetimi:
--session-idle-timeout-minutes: Oturum boşta kalma zaman aşımı (dakika cinsinden). Bu süre boyunca etkinlik olmayan oturumlar otomatik olarak temizlenir - varsayılan:30. Oturum temizlemeyi devre dışı bırakmak için0olarak ayarlayın. Yalnızca SSE ve streamable-http taşımaları için geçerlidir.
Araç Yapılandırması:
--enabled-tools: Virgülle ayrılmış etkin kategori listesi - varsayılan:admin,agento11y,assistant,athena,clickhouse,cloudwatch,elasticsearch,examples,graphite,quickwit,runpanelqueryvesnowflakedışındaki tüm kategoriler. Devre dışı kategorileri etkinleştirmek için bunları listeye ekleyin (örn."search,datasource,...,snowflake")--max-loki-log-limit:query_loki_logsçağrısı başına döndürülen maksimum günlük satırı sayısı - varsayılan:100. Not: Bunu, kesilme algılamasına izin vermek için Loki'nin sunucu tarafımax_entries_limit_per_querydeğerinin en az 1 altına ayarlayın (araç, daha fazla veri olup olmadığını algılamak için dahili olaraklimit+1ister).--disable-search: Arama araçlarını devre dışı bırak--disable-datasource: Veri kaynağı araçlarını devre dışı bırak--disable-incident: Incident araçlarını devre dışı bırak--disable-prometheus: Prometheus araçlarını devre dışı bırak--disable-write: Yazma araçlarını devre dışı bırak (oluşturma/güncelleme işlemleri)--disable-loki: Loki araçlarını devre dışı bırak--disable-elasticsearch: Elasticsearch ve OpenSearch araçlarını devre dışı bırak--disable-quickwit: Quickwit araçlarını devre dışı bırak--disable-influxdb: InfluxDB araçlarını devre dışı bırak--disable-alerting: Alerting araçlarını devre dışı bırak--disable-dashboard: Dashboard araçlarını devre dışı bırak--disable-oncall: OnCall araçlarını devre dışı bırak--disable-asserts: Asserts araçlarını devre dışı bırak--disable-sift: Sift araçlarını devre dışı bırak--disable-admin: Yönetim araçlarını devre dışı bırak--disable-pyroscope: Pyroscope araçlarını devre dışı bırak--disable-navigation: Gezinme araçlarını devre dışı bırak--disable-rendering: İşleme araçlarını devre dışı bırak (panel/dashboard görüntü dışa aktarma)--disable-snapshot: Snapshot araçlarını devre dışı bırak--disable-cloudwatch: CloudWatch araçlarını devre dışı bırak--disable-examples: Sorgu örnekleri araçlarını devre dışı bırak--disable-clickhouse: ClickHouse araçlarını devre dışı bırak--disable-snowflake: Snowflake araçlarını devre dışı bırak--disable-runpanelquery: Panel sorgusu çalıştırma araçlarını devre dışı bırak--disable-graphite: Graphite araçlarını devre dışı bırak--disable-athena: Athena araçlarını devre dışı bırak--disable-provisioning: Provisioning araçlarını devre dışı bırak--disable-agento11y: Agent Observability araçlarını devre dışı bırak--disable-assistant: Grafana Assistant araçlarını devre dışı bırak
Salt Okunur Mod
--disable-write bayrağı, MCP sunucusunu salt okunur modda çalıştırmanın bir yolunu sağlar ve Grafana örneğinize yapılan tüm yazma işlemlerini önler. Bu, aşağıdaki gibi güvenli, salt okunur erişim sağlamak istediğiniz senaryolar için kullanışlıdır:
- Sınırlı salt okunur izinlere sahip hizmet hesapları kullanma
- Yapay zeka asistanlarına değişiklik yapma yeteneği olmadan gözlemlenebilirlik verileri sağlama
- Yazma erişiminin kısıtlanması gereken üretim ortamlarında çalıştırma
- Yanlışlıkla değişiklikleri önlemek istediğiniz test ve geliştirme senaryoları
--disable-write etkinleştirildiğinde, aşağıdaki yazma işlemleri devre dışı bırakılır:
Dashboard Araçları:
update_dashboard
Klasör Araçları:
create_folder
Incident Araçları:
create_incidentadd_activity_to_incident
Alerting Araçları:
alerting_manage_rules(oluşturma, güncelleme, silme işlemleri)
Not (Annotation) Araçları:
create_annotationupdate_annotation
Sift Araçları:
find_error_pattern_logs(araştırma oluşturur)find_slow_requests(araştırma oluşturur)
Snapshot Araçları:
create_snapshotdelete_snapshot
Agent Observability Araçları:
agento11y_manage_evaluators(upsert, delete, fork, test değerlendirici işlemleri)agento11y_manage_eval_rules(kural ve guard oluşturma, güncelleme, silme, önizleme işlemleri)agento11y_manage_eval_collections(kayıtlı konuşmaları kaydetme ve silme; koleksiyon oluşturma, güncelleme, silme; koleksiyon üyesi ekleme ve kaldırma)agento11y_manage_experiments(deney güncelleme ve iptal işlemleri)agento11y_manage_test_suites(test paketleri oluşturma ve güncelleme; sürüm oluşturma ve yayımlama; test senaryoları upsert ve silme)
Tüm okuma işlemleri kullanılabilir durumda kalır; böylece panoları sorgulayabilir, PromQL/LogQL sorguları çalıştırabilir, kaynakları listeleyebilir ve veri alabilirsiniz.
İstemci TLS Yapılandırması (Grafana bağlantıları için):
--tls-cert-file: İstemci kimlik doğrulaması için TLS sertifika dosyasının yolu--tls-key-file: İstemci kimlik doğrulaması için TLS özel anahtar dosyasının yolu--tls-ca-file: Sunucu doğrulaması için TLS CA sertifika dosyasının yolu--tls-skip-verify: TLS sertifika doğrulamasını atla (güvenli değil)
Sunucu TLS Yapılandırması (yalnızca streamable-http taşıması):
--server.tls-cert-file: Sunucu HTTPS için TLS sertifika dosyasının yolu--server.tls-key-file: Sunucu HTTPS için TLS özel anahtar dosyasının yolu
Kullanım
Bu MCP sunucusu hem yerel Grafana örnekleriyle hem de Grafana Cloud ile çalışır. Grafana Cloud için, aşağıdaki yapılandırma örneklerinde http://localhost:3000 yerine örnek URL'nizi (örn. https://myinstance.grafana.net) kullanın.
-
Hizmet hesabı belirteci kimlik doğrulaması kullanıyorsanız, Grafana'da kullanmak istediğiniz araçları kullanmak için yeterli izinlere sahip bir hizmet hesabı oluşturun, bir hizmet hesabı belirteci oluşturun ve yapılandırma dosyasında kullanmak üzere panoya kopyalayın. Hizmet hesabı belirteçleri oluşturma hakkında ayrıntılı bilgi için Grafana hizmet hesabı belgelerine bakın. İpucu: İnce taneli RBAC kapsamları yapılandırma konusunda rahat değilseniz, daha basit (ancak daha az kısıtlayıcı) bir seçenek, hizmet hesabına yerleşik
Editorrolünü atamaktır. Bu, çoğu MCP sunucusu işlemini kapsayan geniş okuma/yazma erişimi sağlar — kolaylık, kesin en az ayrıcalık gereksinimlerinden daha ağır bastığında kullanın.Not:
GRAFANA_API_KEYortam değişkeni kullanımdan kaldırılmıştır ve gelecekteki bir sürümde kaldırılacaktır. Lütfen bunun yerineGRAFANA_SERVICE_ACCOUNT_TOKENkullanmaya geçiş yapın. Eski değişken adı geriye dönük uyumluluk için çalışmaya devam edecek ancak kullanımdan kaldırma uyarıları gösterecektir.
Hizmet hesabı belirtecini bir dosyadan okuma
Belirteci GRAFANA_SERVICE_ACCOUNT_TOKEN ile satır içi olarak iletmek yerine, GRAFANA_SERVICE_ACCOUNT_TOKEN_FILE değerini belirteci içeren bir dosya yoluna yönlendirebilirsiniz. Dosya her istekte yeniden okunur; böylece döndürülen belirteçler, sunucuyu yeniden başlatmadan otomatik olarak alınır.
Bu özellikle Kubernetes'te kullanışlıdır; burada bir Secret birime bağlanmışsa, temel Secret değiştiğinde yerinde güncellenir (genellikle ~1 dakika içinde). Belirteç değerine göre anahtarlanan istek başına istemci önbelleğiyle birleştirildiğinde, döndürülen bir belirteç, pod yeniden başlatması ve kesinti olmadan şeffaf bir şekilde yeni bir istemci üretir:
env:
- name: GRAFANA_SERVICE_ACCOUNT_TOKEN_FILE
value: /var/run/secrets/grafana/token
volumeMounts:
- name: grafana-token
mountPath: /var/run/secrets/grafana
readOnly: true
volumes:
- name: grafana-token
secret:
secretName: grafana-mcp-token
Dosya içeriğinden çevreleyen boşluk (sondaki yeni satır dahil) kırpılır. Hem GRAFANA_SERVICE_ACCOUNT_TOKEN hem de GRAFANA_SERVICE_ACCOUNT_TOKEN_FILE ayarlanmışsa, satır içi belirteç önceliklidir.
Çoklu Organizasyon Desteği
Aşağıdakilerden birini kullanarak hangi organizasyonla etkileşim kuracağınızı belirtebilirsiniz:
- Ortam değişkeni: Sayısal organizasyon kimliği için
GRAFANA_ORG_IDdeğerini ayarlayın - HTTP başlığı: SSE veya streamable HTTP taşımaları kullanırken
X-Grafana-Org-Iddeğerini ayarlayın (başlık, ortam değişkenine göre önceliklidir - yani bir varsayılan organizasyon da ayarlayabilirsiniz).
Bir organizasyon kimliği sağlandığında, MCP sunucusu Grafana'ya yapılan tüm isteklerde X-Grafana-Org-Id başlığını ayarlar ve işlemlerin belirtilen organizasyon bağlamında gerçekleştirilmesini sağlar.
Organizasyon kimliği ile örnek:
{
"mcpServers": {
"grafana": {
"command": "mcp-grafana",
"args": [],
"env": {
"GRAFANA_URL": "http://localhost:3000",
"GRAFANA_USERNAME": "<your username>",
"GRAFANA_PASSWORD": "<your password>",
"GRAFANA_ORG_ID": "2"
}
}
}
}
Özel HTTP Başlıkları
Tüm Grafana API isteklerine GRAFANA_EXTRA_HEADERS ortam değişkenini kullanarak isteğe bağlı HTTP başlıkları ekleyebilirsiniz. Değer, başlık adlarını değerlere eşleyen bir JSON nesnesi olmalıdır.
Özel başlıklarla örnek:
{
"mcpServers": {
"grafana": {
"command": "mcp-grafana",
"args": [],
"env": {
"GRAFANA_URL": "http://localhost:3000",
"GRAFANA_SERVICE_ACCOUNT_TOKEN": "<your token>",
"GRAFANA_EXTRA_HEADERS": "{\"X-Custom-Header\": \"custom-value\", \"X-Tenant-ID\": \"tenant-123\"}"
}
}
}
}
İstemciden Başlık İletme (Yalnızca SSE/Streamable-HTTP)
MCP sunucusu SSO'yu yöneten bir ağ geçidi veya ters proxy arkasında çalıştığında (ör. OIDC ile bir AWS ALB), her kullanıcının oturum çerezinin Grafana'ya ulaşması gerekir, böylece isteği kimliği doğrulanmış kullanıcıyla ilişkilendirebilir. GRAFANA_FORWARD_HEADERS ortam değişkeni, gelen HTTP isteğinden her giden Grafana API isteğine kopyalanacak başlık adlarının virgülle ayrılmış bir beyaz listesini belirterek bunu sağlar.
Bu yalnızca SSE (-t sse) veya streamable-http (-t streamable-http) taşımaları kullanılırken geçerlidir. stdio modunda hiçbir etkisi yoktur.
Örnek: oturum çerezi iletme
{
"env": {
"GRAFANA_URL": "https://grafana.internal",
"GRAFANA_SERVICE_ACCOUNT_TOKEN": "<your token>",
"GRAFANA_FORWARD_HEADERS": "Cookie"
}
}
Birden fazla başlığı virgülle ayırarak iletebilirsiniz:
GRAFANA_FORWARD_HEADERS=Cookie,X-Session-Id
İletilen başlıklar, GRAFANA_EXTRA_HEADERS içinde tanımlanan başlıklarla birleştirilir. Bir başlık adı her ikisinde de görünürse, o istek için gelen istekteki değer önceliklidir.
-
mcp-grafanakurmak için birkaç seçeneğiniz vardır:-
uvx (önerilen): uv kuruluysa, ek kurulum gerekmez —
uvxsunucuyu otomatik olarak indirip çalıştırır:uvx mcp-grafana -
Docker imajı: Docker Hub'dan önceden oluşturulmuş Docker imajını kullanın.
Önemli: Docker imajının giriş noktası, MCP sunucusunu varsayılan olarak SSE modunda çalıştıracak şekilde yapılandırılmıştır, ancak çoğu kullanıcı Claude Desktop gibi AI asistanlarıyla doğrudan entegrasyon için STDIO modunu kullanmak isteyecektir:
- STDIO Modu: stdio modu için varsayılanı
-t stdioile açıkça geçersiz kılmalı ve stdin'i açık tutmak için-ibayrağını eklemelisiniz:
docker pull grafana/mcp-grafana # For local Grafana: docker run --rm -i -e GRAFANA_URL=http://localhost:3000 -e GRAFANA_SERVICE_ACCOUNT_TOKEN=<your service account token> grafana/mcp-grafana -t stdio # For Grafana Cloud: docker run --rm -i -e GRAFANA_URL=https://myinstance.grafana.net -e GRAFANA_SERVICE_ACCOUNT_TOKEN=<your service account token> grafana/mcp-grafana -t stdioNot — ağ modlarını güvenli hale getirin: SSE ve streamable-http modlarında kapsayıcı, döngü dışı bir adrese (
0.0.0.0:8000) bağlanır. Arayan belirteci olmadan sunucu başlar ancak bir güvenlik hatası günlüğe kaydeder (errorgünlük düzeyinde, bu nedenle--log-leveltarafından gizlenmez; ve gelecekteki bir ana sürümde başlamayı reddedecektir). İstemcilerden birAuthorization: Bearer <token>gerektirmek içinMCP_GRAFANA_SERVER_TOKENayarlayın (önerilir). STDIO modu etkilenmez. Bkz. Arayan Kimlik Doğrulaması.- SSE Modu: Bu modda sunucu, istemcilerin bağlandığı bir HTTP sunucusu olarak çalışır.
-pbayrağını kullanarak 8000 numaralı bağlantı noktasını açmalısınız:
docker pull grafana/mcp-grafana docker run --rm -p 8000:8000 -e GRAFANA_URL=http://localhost:3000 -e GRAFANA_SERVICE_ACCOUNT_TOKEN=<your service account token> -e MCP_GRAFANA_SERVER_TOKEN=<caller auth token> grafana/mcp-grafana- Streamable HTTP Modu: Bu modda sunucu, birden çok istemci bağlantısını işleyebilen bağımsız bir süreç olarak çalışır.
-pbayrağını kullanarak 8000 numaralı bağlantı noktasını açmalısınız: Bu mod için varsayılanı-t streamable-httpile açıkça geçersiz kılmalısınız
docker pull grafana/mcp-grafana docker run --rm -p 8000:8000 -e GRAFANA_URL=http://localhost:3000 -e GRAFANA_SERVICE_ACCOUNT_TOKEN=<your service account token> -e MCP_GRAFANA_SERVER_TOKEN=<caller auth token> grafana/mcp-grafana -t streamable-httpSunucu TLS sertifikalarıyla HTTPS streamable HTTP modu için:
docker pull grafana/mcp-grafana docker run --rm -p 8443:8443 \ -v /path/to/certs:/certs:ro \ -e GRAFANA_URL=http://localhost:3000 \ -e GRAFANA_SERVICE_ACCOUNT_TOKEN=<your service account token> \ -e MCP_GRAFANA_SERVER_TOKEN=<caller auth token> \ grafana/mcp-grafana \ -t streamable-http \ -addr :8443 \ --server.tls-cert-file /certs/server.crt \ --server.tls-key-file /certs/server.key - STDIO Modu: stdio modu için varsayılanı
-
İkili dosyayı indirin:
mcp-grafanasürümünün en son sürümünü sürümler sayfasından indirin ve$PATHiçine yerleştirin. -
Kaynaktan derleyin: Go araç zinciri kuruluysa, ikili dosyanın kurulacağı dizini belirtmek için
GOBINortam değişkenini kullanarak kaynaktan da derleyip kurabilirsiniz. Bu da$PATHiçinde olmalıdır.GOBIN="$HOME/go/bin" go install github.com/grafana/mcp-grafana/cmd/mcp-grafana@latest -
Helm kullanarak Kubernetes'e dağıtın: Grafana helm-charts deposundaki Helm grafiğini kullanın
helm repo add grafana https://grafana.github.io/helm-charts helm install --set grafana.apiKey=<Grafana_ApiKey> --set grafana.url=<GrafanaUrl> my-release grafana/grafana-mcp
-
-
Sunucu yapılandırmasını istemci yapılandırma dosyanıza ekleyin. Örneğin, Claude Desktop için:
uvx kullanılıyorsa:
{ "mcpServers": { "grafana": { "command": "uvx", "args": ["mcp-grafana"], "env": { "GRAFANA_URL": "http://localhost:3000", "GRAFANA_SERVICE_ACCOUNT_TOKEN": "<your service account token>" } } } }İkili dosya kullanılıyorsa:
{ "mcpServers": { "grafana": { "command": "mcp-grafana", "args": [], "env": { "GRAFANA_URL": "http://localhost:3000", // Or "https://myinstance.grafana.net" for Grafana Cloud "GRAFANA_SERVICE_ACCOUNT_TOKEN": "<your service account token>", // If using username/password authentication "GRAFANA_USERNAME": "<your username>", "GRAFANA_PASSWORD": "<your password>", // Optional: specify organization ID for multi-org support "GRAFANA_ORG_ID": "1" } } } }
Not: Claude Desktop'ta
Error: spawn mcp-grafana ENOENTgörürseniz,mcp-grafanatam yolunu belirtmeniz gerekir.
Docker kullanılıyorsa:
{
"mcpServers": {
"grafana": {
"command": "docker",
"args": [
"run",
"--rm",
"-i",
"-e",
"GRAFANA_URL",
"-e",
"GRAFANA_SERVICE_ACCOUNT_TOKEN",
"grafana/mcp-grafana",
"-t",
"stdio"
],
"env": {
"GRAFANA_URL": "http://localhost:3000", // Or "https://myinstance.grafana.net" for Grafana Cloud
"GRAFANA_SERVICE_ACCOUNT_TOKEN": "<your service account token>",
// If using username/password authentication
"GRAFANA_USERNAME": "<your username>",
"GRAFANA_PASSWORD": "<your password>",
// Optional: specify organization ID for multi-org support
"GRAFANA_ORG_ID": "1"
}
}
}
}
Not:
-t stdiobağımsız değişkeni burada önemlidir çünkü Docker imajındaki varsayılan SSE modunu geçersiz kılar.
Uzak MCP sunucusuyla VSCode kullanma
VSCode kullanıyorsanız ve MCP sunucusunu SSE modunda çalıştırıyorsanız (taşımayı geçersiz kılmadan Docker imajını kullanırken varsayılan budur), .vscode/settings.json aşağıdakileri içerdiğinden emin olun:
"mcp": {
"servers": {
"grafana": {
"type": "sse",
"url": "http://localhost:8000/sse"
}
}
}
Sunucu TLS sertifikalarıyla HTTPS streamable HTTP modu için:
"mcp": {
"servers": {
"grafana": {
"type": "sse",
"url": "https://localhost:8443/sse"
}
}
}
Hata Ayıklama Modu
Komuta -debug bayrağını ekleyerek Grafana taşıması için hata ayıklama modunu etkinleştirebilirsiniz. Bu, MCP sunucusu ile Grafana API arasındaki HTTP isteklerinin ve yanıtlarının ayrıntılı günlüğünü sağlar ve sorun gidermede yardımcı olabilir.
Claude Desktop yapılandırmasıyla hata ayıklama modunu kullanmak için yapılandırmanızı şu şekilde güncelleyin:
İkili dosya kullanılıyorsa:
{
"mcpServers": {
"grafana": {
"command": "mcp-grafana",
"args": ["-debug"],
"env": {
"GRAFANA_URL": "http://localhost:3000", // Or "https://myinstance.grafana.net" for Grafana Cloud
"GRAFANA_SERVICE_ACCOUNT_TOKEN": "<your service account token>"
}
}
}
}
Docker kullanılıyorsa:
{
"mcpServers": {
"grafana": {
"command": "docker",
"args": [
"run",
"--rm",
"-i",
"-e",
"GRAFANA_URL",
"-e",
"GRAFANA_SERVICE_ACCOUNT_TOKEN",
"grafana/mcp-grafana",
"-t",
"stdio",
"-debug"
],
"env": {
"GRAFANA_URL": "http://localhost:3000", // Or "https://myinstance.grafana.net" for Grafana Cloud
"GRAFANA_SERVICE_ACCOUNT_TOKEN": "<your service account token>"
}
}
}
}
Not: Standart yapılandırmada olduğu gibi, Docker imajındaki varsayılan SSE modunu geçersiz kılmak için
-t stdiobağımsız değişkeni gereklidir.
TLS Yapılandırması
Grafana örneğiniz mTLS arkasındaysa veya özel TLS sertifikaları gerektiriyorsa, MCP sunucusunu özel sertifikalar kullanacak şekilde yapılandırabilirsiniz. Sunucu aşağıdaki TLS yapılandırma seçeneklerini destekler:
--tls-cert-file: İstemci kimlik doğrulaması için TLS sertifika dosyasının yolu--tls-key-file: İstemci kimlik doğrulaması için TLS özel anahtar dosyasının yolu--tls-ca-file: Sunucu doğrulaması için TLS CA sertifika dosyasının yolu--tls-skip-verify: TLS sertifika doğrulamasını atla (güvenli değil, yalnızca test için kullanın)
İstemci sertifikası kimlik doğrulamasıyla örnek:
{
"mcpServers": {
"grafana": {
"command": "mcp-grafana",
"args": [
"--tls-cert-file",
"/path/to/client.crt",
"--tls-key-file",
"/path/to/client.key",
"--tls-ca-file",
"/path/to/ca.crt"
],
"env": {
"GRAFANA_URL": "https://secure-grafana.example.com",
"GRAFANA_SERVICE_ACCOUNT_TOKEN": "<your service account token>"
}
}
}
}
Docker ile örnek:
{
"mcpServers": {
"grafana": {
"command": "docker",
"args": [
"run",
"--rm",
"-i",
"-v",
"/path/to/certs:/certs:ro",
"-e",
"GRAFANA_URL",
"-e",
"GRAFANA_SERVICE_ACCOUNT_TOKEN",
"grafana/mcp-grafana",
"-t",
"stdio",
"--tls-cert-file",
"/certs/client.crt",
"--tls-key-file",
"/certs/client.key",
"--tls-ca-file",
"/certs/ca.crt"
],
"env": {
"GRAFANA_URL": "https://secure-grafana.example.com",
"GRAFANA_SERVICE_ACCOUNT_TOKEN": "<your service account token>"
}
}
}
}
TLS yapılandırması, MCP sunucusu tarafından kullanılan tüm HTTP istemcilerine uygulanır, bunlar şunları içerir:
- Ana Grafana OpenAPI istemcisi
- Prometheus veri kaynağı istemcileri
- Loki veri kaynağı istemcileri
- Olay yönetimi istemcileri
- Sift araştırma istemcileri
- Uyarı istemcileri
- Asserts istemcileri
Doğrudan CLI Kullanım Örnekleri:
Kendinden imzalı sertifikalarla test etmek için:
./mcp-grafana --tls-skip-verify -debug
İstemci sertifikası kimlik doğrulamasıyla:
./mcp-grafana \
--tls-cert-file /path/to/client.crt \
--tls-key-file /path/to/client.key \
--tls-ca-file /path/to/ca.crt \
-debug
Yalnızca özel CA sertifikasıyla:
./mcp-grafana --tls-ca-file /path/to/ca.crt
Programatik Kullanım:
Bu kitaplığı programatik olarak kullanıyorsanız, TLS etkin bağlam işlevleri de oluşturabilirsiniz:
// Using struct literals
tlsConfig := &mcpgrafana.TLSConfig{
CertFile: "/path/to/client.crt",
KeyFile: "/path/to/client.key",
CAFile: "/path/to/ca.crt",
}
grafanaConfig := mcpgrafana.GrafanaConfig{
Debug: true,
TLSConfig: tlsConfig,
}
contextFunc := mcpgrafana.ComposedStdioContextFunc(grafanaConfig)
// Or inline
grafanaConfig := mcpgrafana.GrafanaConfig{
Debug: true,
TLSConfig: &mcpgrafana.TLSConfig{
CertFile: "/path/to/client.crt",
KeyFile: "/path/to/client.key",
CAFile: "/path/to/ca.crt",
},
}
contextFunc := mcpgrafana.ComposedStdioContextFunc(grafanaConfig)
URL doğrulama:
NewGrafanaClient doğrudan çağrılırken (stdio veya programatik yapılandırma), ulaşılabilir bir panikten kaçınmak için URL'leri önceden doğrulayın:
if err := mcpgrafana.ValidateGrafanaURL(urlFromHeader); err != nil {
http.Error(w, err.Error(), http.StatusBadRequest)
return
}
client := mcpgrafana.NewGrafanaClient(ctx, urlFromHeader, apiKey, nil)
Sunucu TLS Yapılandırması (Yalnızca Streamable HTTP Taşıması)
Streamable HTTP taşımasını (-t streamable-http) kullanırken, MCP sunucusunu HTTP yerine HTTPS sunacak şekilde yapılandırabilirsiniz. Bu, MCP istemciniz ile sunucunun kendisi arasındaki bağlantıyı güvence altına almanız gerektiğinde kullanışlıdır.
Sunucu, streamable HTTP taşıması için aşağıdaki TLS yapılandırma seçeneklerini destekler:
--server.tls-cert-file: Sunucu HTTPS için TLS sertifika dosyasının yolu (TLS için gereklidir)--server.tls-key-file: Sunucu HTTPS için TLS özel anahtar dosyasının yolu (TLS için gereklidir)
Not: Bu bayraklar, yukarıda belgelenen istemci TLS bayraklarından tamamen ayrıdır. İstemci TLS bayrakları, MCP sunucusunun Grafana'ya nasıl bağlandığını yapılandırırken, bu sunucu TLS bayrakları, streamable HTTP taşıması kullanılırken istemcilerin MCP sunucusuna nasıl bağlandığını yapılandırır.
HTTPS streamable HTTP sunucusuyla örnek:
./mcp-grafana \
-t streamable-http \
--server.tls-cert-file /path/to/server.crt \
--server.tls-key-file /path/to/server.key \
-addr :8443
Bu, MCP sunucusunu HTTPS 8443 bağlantı noktasında başlatır. İstemciler daha sonra http://localhost:8000/ yerine https://localhost:8443/ bağlanır.
Sunucu TLS ile Docker örneği:
docker run --rm -p 8443:8443 \
-v /path/to/certs:/certs:ro \
-e GRAFANA_URL=http://localhost:3000 \
-e GRAFANA_SERVICE_ACCOUNT_TOKEN=<your service account token> \
grafana/mcp-grafana \
-t streamable-http \
-addr :8443 \
--server.tls-cert-file /certs/server.crt \
--server.tls-key-file /certs/server.key
Sağlık Kontrolü Uç Noktası
SSE (-t sse) veya streamable HTTP (-t streamable-http) taşımalarını kullanırken, MCP sunucusu /healthz adresinde bir sağlık kontrolü uç noktası sunar. Bu uç nokta, yük dengeleyiciler, izleme sistemleri veya orkestrasyon platformları tarafından sunucunun çalıştığını ve bağlantıları kabul ettiğini doğrulamak için kullanılabilir.
Uç Nokta: GET /healthz
Yanıt:
- Durum Kodu:
200 OK - Gövde:
ok
Örnek kullanım:
# For streamable HTTP or SSE transport on default port
curl http://localhost:8000/healthz
# With custom address
curl http://localhost:9090/healthz
Not: Sağlık kontrolü uç noktası yalnızca SSE veya streamable HTTP taşımaları kullanılırken kullanılabilir. stdio taşıması (-t stdio) kullanılırken kullanılamaz, çünkü stdio bir HTTP sunucusu açığa çıkarmaz.
Gözlemlenebilirlik
MCP sunucusu, OTel MCP anlamsal kurallarını izleyerek Prometheus metriklerini, OpenTelemetry dağıtılmış izlemeyi ve OpenTelemetry günlük dışa aktarımını destekler. İzleme ve günlük dışa aktarımı, standart OTEL_* ortam değişkenleri aracılığıyla yapılandırılır ve herhangi bir taşımayla çalışır.
Not: mcp-grafana şu anda hem izlemeler hem de günlükler için yalnızca OTLP/gRPC taşımasını destekler. OTEL_EXPORTER_OTLP_PROTOCOL (ve _TRACES_PROTOCOL / _LOGS_PROTOCOL varyantları) dikkate alınmaz — gRPC her durumda kullanılır.
Metrikler
SSE veya streamable HTTP taşımalarını kullanırken, --metrics bayrağıyla Prometheus metriklerini etkinleştirin:
# Metrics served on the main server at /metrics
./mcp-grafana -t streamable-http --metrics
# Metrics served on a separate address
./mcp-grafana -t streamable-http --metrics --metrics-address :9090
Kullanılabilir Metrikler:
| Metrik | Tür | Açıklama |
|---|---|---|
mcp_server_operation_duration_seconds | Histogram | MCP işlemlerinin süresi (etiketler: mcp_method_name, gen_ai_tool_name, error_type, network_transport, mcp_protocol_version) |
mcp_server_session_duration_seconds | Histogram | MCP istemci oturumlarının süresi (etiketler: network_transport, mcp_protocol_version) |
http_server_request_duration_seconds | Histogram | HTTP sunucu isteklerinin süresi (otelhttp'tan) |
Not: Metrikler yalnızca SSE veya streamable HTTP taşımaları kullanılırken kullanılabilir. stdio taşımasıyla kullanılamazlar.
Yavaş istek günlüğü
--slow-request-threshold bayrağı, bir MCP isteği (araç çağrısı, liste, kaynak okuma vb.) belirtilen süreyi aştığında yapılandırılmış bir günlük olayı yayar. Tam hata ayıklama günlüğünde boğulmadan yavaş sorguları ve araç çağrılarını teşhis etmek için kullanışlıdır.
# Warn on any request slower than 500ms (works on all transports)
./mcp-grafana -t streamable-http --slow-request-threshold 500ms
# Same thing on stdio (the feature is transport-agnostic, unlike --metrics)
./mcp-grafana -t stdio --slow-request-threshold 500ms
# Log at INFO level instead of WARN (useful during investigation)
./mcp-grafana -t streamable-http --slow-request-threshold 500ms --slow-request-log-level info
Günlük olayı şu yapılandırılmış öznitelikleri taşır:
| Öznitelik | Açıklama |
|---|---|
mcp.method | MCP yöntemi (ör. tools/call, tools/list, resources/read) |
duration | Gözlemlenen istek süresi |
threshold | Yapılandırılmış eşik |
tool | Araç adı (yalnızca tools/call yöntemleri için mevcuttur) |
error | İstek başarısız olduğunda hata değeri (en iyi çaba bağlamı; içerik üst akış hata sarmalayıcı tarafından kontrol edilir) |
error.type | Sınırlı kardinalite hata sınıflandırması (türsüz hatalar için _OTHER) |
Yavaş istek günlüğü tüm taşımalarda (stdio dahil) çalışır ve --metrics gerektirmez. 0 varsayılan eşiği onu tamamen devre dışı bırakır. Proxy'li araçlar tools/call üzerinden akar ve otomatik olarak kapsanır.
İzleme
Dağıtılmış izleme, standart OTEL_* ortam değişkenleri aracılığıyla yapılandırılır ve --metrics bayrağından bağımsız çalışır. OTEL_EXPORTER_OTLP_ENDPOINT (veya sinyale özgü OTEL_EXPORTER_OTLP_TRACES_ENDPOINT) ayarlandığında, sunucu izlemeleri OTLP/gRPC üzerinden dışa aktarır:
# Send traces to a local Tempo instance
OTEL_EXPORTER_OTLP_ENDPOINT=http://localhost:4317 \
OTEL_EXPORTER_OTLP_INSECURE=true \
./mcp-grafana -t streamable-http
# Send traces to Grafana Cloud with authentication
OTEL_EXPORTER_OTLP_ENDPOINT=https://tempo-us-central1.grafana.net:443 \
OTEL_EXPORTER_OTLP_HEADERS="Authorization=Basic ..." \
./mcp-grafana -t streamable-http
Araç çağrısı yayılmaları semconv adlandırmasını (tools/call <tool_name>) izler ve gen_ai.tool.name, mcp.method.name ve mcp.session.id gibi öznitelikler içerir. Sunucu ayrıca araç çağrısı isteklerinin _meta alanından W3C izleme bağlamı yayılımını destekler.
Günlükler
OTEL_EXPORTER_OTLP_ENDPOINT (veya sinyale özgü OTEL_EXPORTER_OTLP_LOGS_ENDPOINT) ayarlandığında, sunucu mevcut düz metin stderr çıktısına ek olarak yapılandırılmış günlükleri de OTLP/gRPC üzerinden dışa aktarır. otelslog köprüsü, etkin yayılımdan trace_id ve span_id otomatik olarak ekler, böylece günlük kayıtları sunucunun zaten yaydığı izlemelerle ilişkilendirilir.
İzlemeler ve günlükler uç noktalarını bağımsız olarak çözer, böylece iki sinyal ayrı ayrı etkinleştirilebilir: yalnızca OTEL_EXPORTER_OTLP_TRACES_ENDPOINT ayarlamak günlük dışa aktarımı olmadan izlemeyi etkinleştirir, yalnızca OTEL_EXPORTER_OTLP_LOGS_ENDPOINT ayarlamak izleme olmadan günlük dışa aktarımını etkinleştirir ve genel OTEL_EXPORTER_OTLP_ENDPOINT her ikisini de etkinleştirir.
Genel OTEL_EXPORTER_OTLP_ENDPOINT kullanıyorsanız ancak günlük dışa aktarımını devre dışı bırakmak istiyorsanız (ör. arka uç LogsService desteklemiyorsa), şunu ayarlayın:
OTEL_LOGS_EXPORTER=none
Bu, sunucunun uç nokta yapılandırmasından bağımsız olarak bir OTLP günlük dışa aktarıcısı oluşturmasını engeller ve unknown service opentelemetry.proto.collector.logs.v1.LogsService gibi hataların önüne geçer.
OTLP günlüğü etkinleştirildiğinde stderr günlüğü değişmez; isterseniz konteyner günlüklerine güvenmeye devam edebilir veya stderr'i /dev/null'e yönlendirebilirsiniz.
# Send both logs and traces to a local OTel collector
OTEL_EXPORTER_OTLP_ENDPOINT=http://localhost:4317 \
OTEL_EXPORTER_OTLP_INSECURE=true \
./mcp-grafana -t streamable-http
Taşıma protokolü OTLP/gRPC'dir (varsayılan port 4317). Günlükler, OTEL_EXPORTER_OTLP_LOGS_ENDPOINT (veya genel OTEL_EXPORTER_OTLP_ENDPOINT) uzak gRPC uç noktasına yönlendirilerek ve OTEL_EXPORTER_OTLP_LOGS_HEADERS (veya OTEL_EXPORTER_OTLP_HEADERS) aracılığıyla kimlik doğrulaması sağlanarak, OTLP/gRPC kabul eden herhangi bir yönetilen arka uca — örneğin Grafana Cloud — doğrudan gönderilebilir; bu, yukarıdaki izleme örneğini yansıtır. Yerel bir OTel toplayıcı isteğe bağlıdır — fan-out, toplu işleme veya çoklu arka uç yönlendirme için yararlıdır, ancak zorunlu değildir.
Sinyale özgü varyantlar OTEL_EXPORTER_OTLP_LOGS_ENDPOINT, OTEL_EXPORTER_OTLP_LOGS_HEADERS, OTEL_EXPORTER_OTLP_LOGS_INSECURE, OTEL_EXPORTER_OTLP_LOGS_CERTIFICATE, OTEL_EXPORTER_OTLP_LOGS_TIMEOUT ve OTEL_EXPORTER_OTLP_LOGS_COMPRESSION dikkate alınır ve genel OTEL_EXPORTER_OTLP_* karşılıklarını geçersiz kılar — tam liste ve öncelik kuralları için OTel dışa aktarıcı spesifikasyonuna bakın.
Yapılandırılan toplayıcıya ulaşılamazsa, günlük kayıtları bellekte arabelleğe alınır (varsayılan kuyruk: 2048) ve kuyruk dolduğunda en eski kayıtlar atılır. Süreç, hizmeti engellemeden devam eder. Kesintiler sırasında kayıpsız arabelleğe alma gerekiyorsa yerel bir OTel toplayıcı yapılandırın.
Günlükler ayrıca stdio taşıma protokolü altında dışa aktarılır; bu, IDE istemcileri tarafından çağrılan yerel mcp-grafana örneklerinden günlükleri merkezileştirmeyi kolaylaştırır.
Metrikler, izleme ve günlükler içeren Docker örneği:
docker run --rm -p 8000:8000 \
-e GRAFANA_URL=http://localhost:3000 \
-e GRAFANA_SERVICE_ACCOUNT_TOKEN=<your token> \
-e OTEL_EXPORTER_OTLP_ENDPOINT=http://tempo:4317 \
-e OTEL_EXPORTER_OTLP_INSECURE=true \
grafana/mcp-grafana \
-t streamable-http --metrics
Sorun Giderme
Grafana Sürüm Uyumluluğu
Veri kaynağıyla ilgili araçları kullanırken aşağıdaki hatayla karşılaşırsanız:
get datasource by uid : [GET /datasources/uid/{uid}][400] getDataSourceByUidBadRequest {"message":"id is invalid"}
Bu genellikle Grafana'nın 9.0'dan önceki bir sürümünü kullandığınızı gösterir. /datasources/uid/{uid} API uç noktası Grafana 9.0'da tanıtılmıştır ve veri kaynağı işlemleri daha eski sürümlerde başarısız olur.
Çözüm: Bu sorunu çözmek için Grafana örneğinizi 9.0 veya sonraki bir sürüme yükseltin.
Geliştirme
Katkılar memnuniyetle karşılanır! Önerileriniz veya iyileştirmeleriniz varsa lütfen bir sorun (issue) açın veya bir çekme isteği (pull request) gönderin.
Bu proje Go dilinde yazılmıştır. Platformunuz için talimatları izleyerek Go'yu kurun.
Sunucuyu yerel olarak STDIO modunda (yerel geliştirme için varsayılan) çalıştırmak için şunu kullanın:
make run
Sunucuyu yerel olarak SSE modunda çalıştırmak için şunu kullanın:
go run ./cmd/mcp-grafana --transport sse
Sunucuyu özel olarak oluşturulmuş bir Docker imajı içinde SSE taşıma protokolünü kullanarak da çalıştırabilirsiniz. Yayınlanan Docker imajı gibi, bu özel imajın giriş noktası da varsayılan olarak SSE modundadır. İmajı oluşturmak için şunu kullanın:
make build-image
Ve imajı SSE modunda (varsayılan) çalıştırmak için şunu kullanın:
docker run -it --rm -p 8000:8000 mcp-grafana:latest
Bunun yerine STDIO modunda çalıştırmanız gerekiyorsa, taşıma protokolü ayarını geçersiz kılın:
docker run -it --rm mcp-grafana:latest -t stdio
Test Etme
Üç tür test mevcuttur:
- Birim Testleri (harici bağımlılık gerektirmez):
make test-unit
Birim testlerini şununla da çalıştırabilirsiniz:
make test
- Entegrasyon Testleri (docker konteynerlerinin çalışır durumda olmasını gerektirir):
make test-integration
- Bulut Testleri (bulut Grafana örneği ve kimlik bilgileri gerektirir):
make test-cloud
Not: Bulut testleri CI'da otomatik olarak yapılandırılır. Yerel geliştirme için kendi Grafana Cloud örneğinizi ve kimlik bilgilerinizi ayarlamanız gerekir.
Daha kapsamlı entegrasyon testleri, Grafana örneğinin yerel olarak 3000 portunda çalışmasını gerektirir; Docker Compose ile bir tane başlatabilirsiniz:
docker-compose up -d
Entegrasyon testleri şununla çalıştırılabilir:
make test-all
Daha fazla araç ekliyorsanız, lütfen onlar için entegrasyon testleri ekleyin. Mevcut testler iyi bir başlangıç noktası olmalıdır.
Lint (Kod Denetimi)
Kodu lint etmek için şunu çalıştırın:
make lint
Bu, jsonschema yapı etiketlerinde kaçış karakteri olmayan virgülleri kontrol eden özel bir linter içerir. description alanlarındaki virgüller, sessiz kesilmeyi önlemek için \\, ile kaçış karakteriyle yazılmalıdır. Yalnızca bu linter'i şununla çalıştırabilirsiniz:
make lint-jsonschema
Daha fazla ayrıntı için JSONSchema Linter belgelerine bakın.
Lisans
Bu proje Apache Lisansı, Sürüm 2.0 altında lisanslanmıştır.