GreptimeDB MCP Server
आधिकारिकAI सहायकों को GreptimeDB में डेटा का अन्वेषण और विश्लेषण करने का एक सुरक्षित और संरचित तरीका प्रदान करता है।
दस्तावेज़
greptimedb-mcp-server
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_range | RANGE/ALIGN सिंटैक्स के साथ समय-विंडो एग्रीगेशन क्वेरीज़ निष्पादित करें |
describe_table | तालिका प्रोफ़ाइल का निरीक्षण करें: स्कीमा, सिमैंटिक मेटाडेटा, नवीनतम नमूना पंक्तियाँ, और क्वेरी मार्गदर्शन |
explain_query | SQL या TQL क्वेरी निष्पादन योजनाओं का विश्लेषण करें (रनटाइम आँकड़ों के लिए analyze=true; प्रति-विभाजन स्कैन मेट्रिक्स और इंडेक्स-प्रूनिंग काउंटर के लिए analyze=true के साथ verbose=true जोड़ें) |
health_check | डेटाबेस कनेक्शन स्थिति और सर्वर संस्करण की जाँच करें |
पाइपलाइन प्रबंधन
| उपकरण | विवरण |
|---|---|
list_pipelines | सभी पाइपलाइनों की सूची बनाएँ या किसी विशिष्ट पाइपलाइन का विवरण प्राप्त करें |
create_pipeline | YAML कॉन्फ़िगरेशन के साथ एक नई पाइपलाइन बनाएँ |
dryrun_pipeline | डेटाबेस में लिखे बिना नमूना डेटा के साथ पाइपलाइन का परीक्षण करें |
delete_pipeline | पाइपलाइन का एक विशिष्ट संस्करण हटाएँ |
डैशबोर्ड प्रबंधन
| उपकरण | विवरण |
|---|---|
list_dashboards | सभी Perses डैशबोर्ड परिभाषाओं की सूची बनाएँ |
create_dashboard | Perses डैशबोर्ड परिभाषा बनाएँ या अपडेट करें |
delete_dashboard | डैशबोर्ड परिभाषा हटाएँ |
संसाधन और प्रॉम्प्ट
- संसाधन:
greptime://<table>/dataURI के माध्यम से तालिकाएँ ब्राउज़ करें - प्रॉम्प्ट: सामान्य कार्यों के लिए अंतर्निहित 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 देखें।
आभार
इनसे प्रेरित: