GreptimeDB
ทางการมอบวิธีการที่ปลอดภัยและมีโครงสร้างให้กับผู้ช่วย AI ในการสำรวจและวิเคราะห์ข้อมูลใน GreptimeDB
คุณทำอะไรได้บ้างด้วย GreptimeDB MCP?
- รันคิวรี SQL — ขอเมตริก ล็อก หรือเทรซผ่าน
execute_sqlพร้อมเอาต์พุต CSV, JSON หรือ Markdown และขีดจำกัดจำนวนแถว - วิเคราะห์ข้อมูลอนุกรมเวลา — ใช้
execute_tqlสำหรับคิวรีที่เข้ากันได้กับ PromQL หรือquery_rangeสำหรับการรวมกลุ่มตามช่วงเวลา - สำรวจโครงสร้างตาราง — รับประเภทคอลัมน์ แถวตัวอย่าง และคำแนะนำการคิวรีผ่าน
describe_table - ปรับประสิทธิภาพคิวรีให้เหมาะสม — ขอแผนการดำเนินการด้วย
explain_queryและสามารถเพิ่มสถิติรันไทม์หรือเมตริกการสแกนต่อพาร์ติชันได้ - จัดการไปป์ไลน์ — สร้าง ทดสอบ ดูรายการ หรือลบไปป์ไลน์ประมวลผลข้อมูลโดยใช้การกำหนดค่า YAML
- จัดการแดชบอร์ด — ดูรายการ สร้าง อัปเดต หรือลบคำจำกัดความแดชบอร์ด Perses
เอกสาร
greptimedb-mcp-server
เซิร์ฟเวอร์ Model Context Protocol (MCP) สำหรับ GreptimeDB — ฐานข้อมูลเชิงสังเกตการณ์แบบโอเพนซอร์สที่จัดการเมตริก ล็อก และเทรซในเอนจินเดียว
ช่วยให้ผู้ช่วย AI สามารถสอบถามและวิเคราะห์ GreptimeDB โดยใช้ SQL, TQL (เข้ากันได้กับ PromQL) และคิวรี RANGE พร้อมด้วยฟีเจอร์ความปลอดภัยในตัว เช่น การบังคับอ่านอย่างเดียวและการปกปิดข้อมูล
เริ่มต้นอย่างรวดเร็ว
# Install
pip install greptimedb-mcp-server
# Run (connects to localhost:4002 by default)
greptimedb-mcp-server --host localhost --database public
สำหรับ Claude Desktop เพิ่มสิ่งนี้ลงในคอนฟิกของคุณ (~/Library/Application Support/Claude/claude_desktop_config.json บน macOS):
{
"mcpServers": {
"greptimedb": {
"command": "greptimedb-mcp-server",
"args": ["--host", "localhost", "--database", "public"]
}
}
}
ฟีเจอร์
เครื่องมือ
| เครื่องมือ | คำอธิบาย |
|---|---|
execute_sql | ดำเนินการคิวรี SQL พร้อมตัวเลือกรูปแบบ (csv/json/markdown) และขีดจำกัด |
execute_tql | ดำเนินการคิวรี TQL (เข้ากันได้กับ PromQL) สำหรับการวิเคราะห์อนุกรมเวลา |
query_range | ดำเนินการคิวรีการรวมกลุ่มตามกรอบเวลาด้วยไวยากรณ์ RANGE/ALIGN |
search_table_semantics | ค้นหาตารางตามแนวคิดเชิงสังเกตการณ์ จัดอันดับตามคำที่ตรงกัน ค้นหาชื่อตาราง ตัวเลือกเชิงความหมาย และการประกาศเอนทิตี |
query_semantic_graph | สอบถามกราฟเชิงความหมาย: summary (สิ่งที่บรรจุอยู่), entities (โหนด), relationships (ขอบ) ผ่านกรอบเวลาที่กำหนด |
describe_table | ตรวจสอบโปรไฟล์ตาราง: สคีมา เมตาดาต้าเชิงความหมาย แถวตัวอย่างล่าสุด และคำแนะนำการสอบถาม |
explain_query | วิเคราะห์แผนการดำเนินการคิวรี SQL หรือ TQL (analyze=true สำหรับสถิติรันไทม์ เพิ่ม verbose=true ควบคู่กับ analyze=true สำหรับเมตริกการสแกนต่อพาร์ติชันและตัวนับการตัดดัชนี) |
health_check | ตรวจสอบสถานะการเชื่อมต่อฐานข้อมูลและเวอร์ชันเซิร์ฟเวอร์ |
search_table_semantics และเมตาดาต้าเชิงความหมายใน describe_table อ่าน information_schema.table_semantics ตารางจะปรากฏที่นั่นเมื่อมีตัวเลือก greptime.semantic.* หรืออนุสัญญาในตัวได้มาจากการประกาศเอนทิตีสำหรับตารางนั้น ตารางอื่นจะไม่ปรากฏ เซิร์ฟเวอร์อ่านรายการคอลัมน์ของวิวหนึ่งครั้งต่อกระบวนการและเลือกเฉพาะคอลัมน์ที่เปิดเผย entity_declarations ต้องใช้ GreptimeDB 1.3 ในเวอร์ชันก่อนหน้านั้นจะรายงานเป็นคอลัมน์ที่หายไปแทนที่จะเป็นชุดการประกาศที่ว่างเปล่า
query_semantic_graph อ่าน greptime_private.semantic_entities และ greptime_private.semantic_relationships ซึ่งต้องใช้ GreptimeDB 1.3 เมื่อเริ่มต้น เซิร์ฟเวอร์จะตรวจสอบว่าวิวทั้งสองมีอยู่ มีคอลัมน์ที่อ่าน และสามารถอ่านได้โดยบัญชีที่เชื่อมต่อ เมื่อไม่เป็นเช่นนั้น เครื่องมือจะไม่ถูกเสนอและบันทึกเหตุผล กรอบเวลาของมันจำเป็นและเป็นแบบครึ่งเปิด [start_time, end_time) เหนือ observed_at และแถวจะถูกรวมกลุ่มข้ามบัคเก็ตการสังเกต 60 วินาทีในกรอบเวลานั้น
การจัดการไปป์ไลน์
| เครื่องมือ | คำอธิบาย |
|---|---|
list_pipelines | แสดงรายการไปป์ไลน์ทั้งหมดหรือรับรายละเอียดของไปป์ไลน์เฉพาะ |
create_pipeline | สร้างไปป์ไลน์ใหม่ด้วยคอนฟิก YAML |
dryrun_pipeline | ทดสอบไปป์ไลน์ด้วยข้อมูลตัวอย่างโดยไม่เขียนลงฐานข้อมูล |
delete_pipeline | ลบเวอร์ชันเฉพาะของไปป์ไลน์ |
การจัดการแดชบอร์ด
| เครื่องมือ | คำอธิบาย |
|---|---|
list_dashboards | แสดงรายการคำนิยามแดชบอร์ด Perses ทั้งหมด |
create_dashboard | สร้างหรืออัปเดตคำนิยามแดชบอร์ด Perses |
delete_dashboard | ลบคำนิยามแดชบอร์ด |
ทรัพยากรและพรอมต์
- ทรัพยากร: เรียกดูตารางผ่าน URI
greptime://<table>/data - พรอมต์: เทมเพลต 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 ที่มีอยู่ สำหรับการปรับใช้ คอนฟิกเซิร์ฟเวอร์ โปรโตคอลการเขียน ไวยากรณ์ไปป์ไลน์ การออกแบบสคีมา และการวินิจฉัยประสิทธิภาพ ชี้ผู้ช่วยไปที่ดัชนีทักษะ GreptimeDB ที่ https://docs.greptime.com/SKILL.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:
# 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 Rebinding
โดยค่าเริ่มต้น การป้องกัน DNS rebinding จะ ปิดใช้งาน เพื่อความเข้ากันได้กับพร็อกซี เกตเวย์ และบริการ Kubernetes หากต้องการเปิดใช้งาน ใช้ --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 โดยใช้ static user provider:
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
โหมดเขียน (ปิดใช้งานโดยค่าเริ่มต้น)
เซิร์ฟเวอร์ อ่านอย่างเดียวโดยค่าเริ่มต้น สำหรับการพัฒนาท้องถิ่นหรือการทดสอบ คุณสามารถ
อนุญาต SQL แบบเขียน/ทำลาย (DDL/DML เช่น CREATE, DROP, ALTER, INSERT,
UPDATE, DELETE) ผ่านเครื่องมือ execute_sql โดยเปิดใช้งานโหมดเขียน:
# 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
การรับทราบ
ได้รับแรงบันดาลใจจาก: