GreptimeDB MCP Server

आधिकारिक

AI सहायकों को GreptimeDB में डेटा का अन्वेषण और विश्लेषण करने का एक सुरक्षित और संरचित तरीका प्रदान करता है।

दस्तावेज़

greptimedb-mcp-server

PyPI - Version build workflow MCP Registry MIT License

GreptimeDB के लिए एक मॉडल संदर्भ प्रोटोकॉल (MCP) सर्वर — एक ओपन-सोर्स ऑब्ज़र्वेबिलिटी डेटाबेस जो मेट्रिक्स, लॉग और ट्रेसेज़ को एक ही इंजन में संभालता है।

AI सहायकों को SQL, TQL (PromQL-संगत), और RANGE क्वेरीज़ का उपयोग करके GreptimeDB से क्वेरी और विश्लेषण करने में सक्षम बनाता है, जिसमें रीड-ओनली प्रवर्तन और डेटा मास्किंग जैसी अंतर्निहित सुरक्षा सुविधाएँ शामिल हैं।

त्वरित शुरुआत

# Install
pip install greptimedb-mcp-server

# Run (connects to localhost:4002 by default)
greptimedb-mcp-server --host localhost --database public

Claude Desktop के लिए, इसे अपने कॉन्फ़िग में जोड़ें (macOS पर ~/Library/Application Support/Claude/claude_desktop_config.json):

{
  "mcpServers": {
    "greptimedb": {
      "command": "greptimedb-mcp-server",
      "args": ["--host", "localhost", "--database", "public"]
    }
  }
}

विशेषताएँ

उपकरण

उपकरणविवरण
execute_sqlफ़ॉर्मेट (csv/json/markdown) और सीमा विकल्पों के साथ SQL क्वेरीज़ निष्पादित करें
execute_tqlसमय-श्रृंखला विश्लेषण के लिए TQL (PromQL-संगत) क्वेरीज़ निष्पादित करें
query_rangeRANGE/ALIGN सिंटैक्स के साथ समय-विंडो एग्रीगेशन क्वेरीज़ निष्पादित करें
describe_tableतालिका प्रोफ़ाइल का निरीक्षण करें: स्कीमा, सिमैंटिक मेटाडेटा, नवीनतम नमूना पंक्तियाँ, और क्वेरी मार्गदर्शन
explain_querySQL या TQL क्वेरी निष्पादन योजनाओं का विश्लेषण करें (रनटाइम आँकड़ों के लिए analyze=true; प्रति-विभाजन स्कैन मेट्रिक्स और इंडेक्स-प्रूनिंग काउंटर के लिए analyze=true के साथ verbose=true जोड़ें)
health_checkडेटाबेस कनेक्शन स्थिति और सर्वर संस्करण की जाँच करें

पाइपलाइन प्रबंधन

उपकरणविवरण
list_pipelinesसभी पाइपलाइनों की सूची बनाएँ या किसी विशिष्ट पाइपलाइन का विवरण प्राप्त करें
create_pipelineYAML कॉन्फ़िगरेशन के साथ एक नई पाइपलाइन बनाएँ
dryrun_pipelineडेटाबेस में लिखे बिना नमूना डेटा के साथ पाइपलाइन का परीक्षण करें
delete_pipelineपाइपलाइन का एक विशिष्ट संस्करण हटाएँ

डैशबोर्ड प्रबंधन

उपकरणविवरण
list_dashboardsसभी Perses डैशबोर्ड परिभाषाओं की सूची बनाएँ
create_dashboardPerses डैशबोर्ड परिभाषा बनाएँ या अपडेट करें
delete_dashboardडैशबोर्ड परिभाषा हटाएँ

संसाधन और प्रॉम्प्ट

  • संसाधन: greptime://<table>/data URI के माध्यम से तालिकाएँ ब्राउज़ करें
  • प्रॉम्प्ट: सामान्य कार्यों के लिए अंतर्निहित Jinja टेम्पलेट — pipeline_creator, log_pipeline, metrics_analysis, promql_analysis, trace_analysis, table_operation, schema_design_advisor, observability_correlation, ingestion_troubleshooting, query_performance_tuning

LLM एकीकरण और प्रॉम्प्ट उपयोग के लिए, docs/llm-instructions.md देखें।

कॉन्फ़िगरेशन

पर्यावरण चर

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 तर्क

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 सर्वर मोड

कंटेनरीकृत या Kubernetes परिनियोजन के लिए। mcp>=1.8.0 की आवश्यकता है:

# 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 रीबाइंडिंग सुरक्षा

डिफ़ॉल्ट रूप से, प्रॉक्सी, गेटवे और Kubernetes सेवाओं के साथ संगतता के लिए DNS रीबाइंडिंग सुरक्षा अक्षम है। इसे सक्षम करने के लिए, --allowed-hosts का उपयोग करें:

# 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 त्रुटियाँ मिलती हैं, तो या तो सुरक्षा अक्षम करें (डिफ़ॉल्ट) या अपने होस्ट को अनुमत सूची में जोड़ें।

सुरक्षा

रीड-ओनली डेटाबेस उपयोगकर्ता (अनुशंसित)

स्थैतिक उपयोगकर्ता प्रदाता का उपयोग करके GreptimeDB में एक रीड-ओनली उपयोगकर्ता बनाएँ:

mcp_readonly:readonly=your_secure_password

अनुप्रयोग-स्तरीय सुरक्षा द्वार

सभी क्वेरीज़ एक सुरक्षा द्वार से गुज़रती हैं जो:

  • अवरोधित करता है: DROP, DELETE, TRUNCATE, UPDATE, INSERT, ALTER, CREATE, GRANT, REVOKE, EXEC, LOAD, COPY
  • अवरोधित करता है: एन्कोडेड बाईपास प्रयास (hex, UNHEX, CHAR)
  • अनुमति देता है: SELECT, SHOW, DESCRIBE, TQL, EXPLAIN, UNION

राइट मोड (डिफ़ॉल्ट रूप से अक्षम)

सर्वर डिफ़ॉल्ट रूप से रीड-ओनली है। स्थानीय विकास या परीक्षण के लिए, आप execute_sql उपकरण के माध्यम से राइट/विनाशकारी SQL (DDL/DML जैसे CREATE, DROP, ALTER, INSERT, UPDATE, DELETE) की अनुमति दे सकते हैं, राइट मोड सक्षम करके:

# Environment variable
GREPTIMEDB_ALLOW_WRITE=true greptimedb-mcp-server

# Or CLI argument
greptimedb-mcp-server --allow-write true

सक्षम होने पर, execute_sql के लिए सुरक्षा द्वार बाईपास हो जाता है, और सर्वर स्टार्टअप पर एक चेतावनी लॉग करता है।

⚠️ खतरा: यह AI सहायक को आपके डेटाबेस के विरुद्ध विनाशकारी स्टेटमेंट चलाने देता है। इसे उत्पादन डेटा के विरुद्ध कभी सक्षम न करें। यदि आपको केवल पढ़ने की पहुँच चाहिए तो रीड-ओनली डेटाबेस उपयोगकर्ता के साथ संयोजित करें।

डेटा मास्किंग

कॉलम नाम पैटर्न के आधार पर संवेदनशील कॉलम स्वचालित रूप से मास्क किए जाते हैं (******):

  • प्रमाणीकरण: password, secret, token, api_key, credential
  • वित्तीय: credit_card, cvv, bank_account
  • व्यक्तिगत: ssn, id_card, passport

कस्टम पैटर्न जोड़ने के लिए --mask-patterns phone,email के साथ कॉन्फ़िगर करें।

ऑडिट लॉगिंग

सभी उपकरण आह्वान लॉग किए जाते हैं:

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 के साथ अक्षम करें।

विकास

# 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

लाइसेंस

MIT लाइसेंस - LICENSE.md देखें।

आभार

इनसे प्रेरित: