GreptimeDB MCP Server
resmiAI asistanlarına GreptimeDB'deki verileri güvenli ve yapılandırılmış bir şekilde keşfetme ve analiz etme imkanı sağlar.
Dokümantasyon
greptimedb-mcp-server
GreptimeDB için bir Model Bağlam Protokolü (MCP) sunucusu — metrikleri, logları ve izleri tek bir motorda işleyen açık kaynaklı bir gözlemlenebilirlik veritabanı.
Yapay zeka asistanlarının SQL, TQL (PromQL uyumlu) ve RANGE sorguları kullanarak GreptimeDB'yi sorgulamasını ve analiz etmesini sağlar; salt okunur zorunluluğu ve veri maskeleme gibi yerleşik güvenlik özellikleriyle birlikte.
Hızlı Başlangıç
# Install
pip install greptimedb-mcp-server
# Run (connects to localhost:4002 by default)
greptimedb-mcp-server --host localhost --database public
Claude Desktop için, bunu yapılandırmanıza ekleyin (macOS'ta ~/Library/Application Support/Claude/claude_desktop_config.json):
{
"mcpServers": {
"greptimedb": {
"command": "greptimedb-mcp-server",
"args": ["--host", "localhost", "--database", "public"]
}
}
}
Özellikler
Araçlar
| Araç | Açıklama |
|---|---|
execute_sql | Biçim (csv/json/markdown) ve limit seçenekleriyle SQL sorguları yürütür |
execute_tql | Zaman serisi analizi için TQL (PromQL uyumlu) sorguları yürütür |
query_range | RANGE/ALIGN sözdizimi ile zaman penceresi toplama sorguları yürütür |
describe_table | Bir tablo profilini inceler: şema, anlamsal meta veriler, en son örnek satırlar ve sorgu rehberliği |
explain_query | SQL veya TQL sorgu yürütme planlarını analiz eder (çalışma zamanı istatistikleri için analyze=true; bölüm başına tarama metrikleri ve dizin budama sayaçları için analyze=true ile birlikte verbose=true ekleyin) |
health_check | Veritabanı bağlantı durumunu ve sunucu sürümünü kontrol eder |
Pipeline Yönetimi
| Araç | Açıklama |
|---|---|
list_pipelines | Tüm pipeline'ları listeler veya belirli bir pipeline'ın ayrıntılarını getirir |
create_pipeline | YAML yapılandırmasıyla yeni bir pipeline oluşturur |
dryrun_pipeline | Veritabanına yazmadan örnek verilerle bir pipeline'ı test eder |
delete_pipeline | Bir pipeline'ın belirli bir sürümünü siler |
Dashboard Yönetimi
| Araç | Açıklama |
|---|---|
list_dashboards | Tüm Perses dashboard tanımlarını listeler |
create_dashboard | Bir Perses dashboard tanımı oluşturur veya günceller |
delete_dashboard | Bir dashboard tanımını siler |
Kaynaklar ve İstemler
- Kaynaklar:
greptime://<table>/dataURI'leri aracılığıyla tablolara göz atın - İstemler: Yaygın görevler için yerleşik Jinja şablonları —
pipeline_creator,log_pipeline,metrics_analysis,promql_analysis,trace_analysis,table_operation,schema_design_advisor,observability_correlation,ingestion_troubleshooting,query_performance_tuning
LLM entegrasyonu ve istem kullanımı için docs/llm-instructions.md dosyasına bakın.
Yapılandırma
Ortam Değişkenleri
GREPTIMEDB_HOST=localhost # Database host
GREPTIMEDB_PORT=4002 # MySQL protocol port (default: 4002)
GREPTIMEDB_USER=root # Database user
GREPTIMEDB_PASSWORD= # Database password
GREPTIMEDB_DATABASE=public # Database name
GREPTIMEDB_TIMEZONE=UTC # Session timezone
# Optional
GREPTIMEDB_HTTP_PORT=4000 # HTTP API port for pipeline/dashboard management
GREPTIMEDB_HTTP_PROTOCOL=http # HTTP protocol (http/https)
GREPTIMEDB_POOL_SIZE=5 # Connection pool size
GREPTIMEDB_MASK_ENABLED=true # Enable sensitive data masking
GREPTIMEDB_MASK_PATTERNS= # Additional patterns (comma-separated)
GREPTIMEDB_AUDIT_ENABLED=true # Enable audit logging
GREPTIMEDB_ALLOW_WRITE=false # Allow write/DDL via execute_sql (DANGEROUS, local/test only)
# Transport (for HTTP server mode)
GREPTIMEDB_TRANSPORT=stdio # stdio, sse, or streamable-http
GREPTIMEDB_LISTEN_HOST=0.0.0.0 # HTTP server bind host
GREPTIMEDB_LISTEN_PORT=8080 # HTTP server bind port
GREPTIMEDB_ALLOWED_HOSTS= # DNS rebinding protection (comma-separated)
GREPTIMEDB_ALLOWED_ORIGINS= # CORS allowed origins (comma-separated)
CLI Argümanları
greptimedb-mcp-server \
--host localhost \
--port 4002 \
--database public \
--user root \
--password "" \
--timezone UTC \
--pool-size 5 \
--mask-enabled true \
--allow-write false \
--transport stdio
HTTP Sunucu Modu
Konteynerli veya Kubernetes dağıtımları için. mcp>=1.8.0 gerektirir:
# Streamable HTTP (recommended for production)
greptimedb-mcp-server --transport streamable-http --listen-port 8080
# SSE mode (legacy)
greptimedb-mcp-server --transport sse --listen-port 3000
DNS Yeniden Bağlama Koruması
Varsayılan olarak, DNS yeniden bağlama koruması, proxy'ler, ağ geçitleri ve Kubernetes hizmetleriyle uyumluluk için devre dışıdır. Etkinleştirmek için --allowed-hosts kullanın:
# Enable DNS rebinding protection with allowed hosts
greptimedb-mcp-server --transport streamable-http \
--allowed-hosts "localhost:*,127.0.0.1:*,my-service.namespace:*"
# With custom allowed origins for CORS
greptimedb-mcp-server --transport streamable-http \
--allowed-hosts "my-service.namespace:*" \
--allowed-origins "http://localhost:*,https://my-app.example.com"
# Or via environment variables
GREPTIMEDB_ALLOWED_HOSTS="localhost:*,my-service.namespace:*" \
GREPTIMEDB_ALLOWED_ORIGINS="http://localhost:*" \
greptimedb-mcp-server --transport streamable-http
421 Invalid Host Header hatalarıyla karşılaşırsanız, korumayı devre dışı bırakın (varsayılan) veya ana bilgisayarınızı izin verilenler listesine ekleyin.
Güvenlik
Salt Okunur Veritabanı Kullanıcısı (Önerilir)
Statik kullanıcı sağlayıcı kullanarak GreptimeDB'de salt okunur bir kullanıcı oluşturun:
mcp_readonly:readonly=your_secure_password
Uygulama Düzeyinde Güvenlik Kapısı
Tüm sorgular şunları yapan bir güvenlik kapısından geçer:
- Engeller: DROP, DELETE, TRUNCATE, UPDATE, INSERT, ALTER, CREATE, GRANT, REVOKE, EXEC, LOAD, COPY
- Engeller: Kodlanmış atlatma girişimleri (hex, UNHEX, CHAR)
- İzin verir: SELECT, SHOW, DESCRIBE, TQL, EXPLAIN, UNION
Yazma Modu (Varsayılan Olarak Devre Dışı)
Sunucu varsayılan olarak salt okunurdur. Yerel geliştirme veya test için,
yazma modunu etkinleştirerek execute_sql aracı üzerinden yazma/yıkıcı SQL'e (CREATE, DROP, ALTER, INSERT,
UPDATE, DELETE gibi DDL/DML) izin verebilirsiniz:
# Environment variable
GREPTIMEDB_ALLOW_WRITE=true greptimedb-mcp-server
# Or CLI argument
greptimedb-mcp-server --allow-write true
Etkinleştirildiğinde, güvenlik kapısı execute_sql için atlanır ve sunucu
başlangıçta bir uyarı günlüğe kaydeder.
⚠️ Tehlike: Bu, bir yapay zeka asistanının veritabanınıza karşı yıkıcı ifadeler çalıştırmasına izin verir. Üretim verilerine karşı asla etkinleştirmeyin. Yalnızca okuma erişimine ihtiyacınız varsa salt okunur bir veritabanı kullanıcısıyla birleştirin.
Veri Maskeleme
Hassas sütunlar, sütun adı desenlerine göre otomatik olarak maskelenir (******):
- Kimlik doğrulama:
password,secret,token,api_key,credential - Finansal:
credit_card,cvv,bank_account - Kişisel:
ssn,id_card,passport
Özel desenler eklemek için --mask-patterns phone,email ile yapılandırın.
Denetim Günlüğü
Tüm araç çağrıları günlüğe kaydedilir:
2025-12-10 10:30:45 - greptimedb_mcp_server.audit - INFO - [AUDIT] execute_sql | query="SELECT * FROM cpu LIMIT 10" | success=True | duration_ms=45.2
--audit-enabled false ile devre dışı bırakın.
Geliştirme
# Clone and setup
git clone https://github.com/GreptimeTeam/greptimedb-mcp-server.git
cd greptimedb-mcp-server
uv venv && source .venv/bin/activate
uv sync
# Run tests
pytest
# Format & lint
uv run black .
uv run flake8 src
# Debug with MCP Inspector
npx @modelcontextprotocol/inspector uv --directory . run -m greptimedb_mcp_server.server
Lisans
MIT Lisansı - LICENSE.md dosyasına bakın.
Teşekkür
Şunlardan ilham alınmıştır: