GreptimeDB

chính thức

Cung cấp cho trợ lý AI một cách an toàn và có cấu trúc để khám phá và phân tích dữ liệu trong GreptimeDB.

GitHub
29
Dùng thử MCP nàyĐược tài trợ

Bạn có thể làm gì với GreptimeDB MCP?

  • Chạy truy vấn SQL — Yêu cầu số liệu, nhật ký hoặc trace thông qua execute_sql với đầu ra CSV, JSON hoặc Markdown và giới hạn số hàng.
  • Phân tích dữ liệu chuỗi thời gian — Sử dụng execute_tql cho các truy vấn tương thích PromQL hoặc query_range cho các phép tổng hợp theo cửa sổ thời gian.
  • Khám phá lược đồ bảng — Lấy loại cột, hàng mẫu và hướng dẫn truy vấn thông qua describe_table.
  • Tối ưu hiệu suất truy vấn — Yêu cầu kế hoạch thực thi bằng explain_query, tùy chọn thêm số liệu thời gian chạy hoặc số liệu quét theo phân vùng.
  • Quản lý pipeline — Tạo, kiểm thử, liệt kê hoặc xóa các pipeline xử lý dữ liệu bằng cấu hình YAML.
  • Xử lý bảng điều khiển — Liệt kê, tạo, cập nhật hoặc xóa các định nghĩa bảng điều khiển Perses.

Tài liệu

greptimedb-mcp-server

PyPI - Version build workflow MCP Registry MIT License

Một máy chủ Model Context Protocol (MCP) cho GreptimeDB — một cơ sở dữ liệu quan sát mã nguồn mở xử lý số liệu, nhật ký và dấu vết trong một công cụ duy nhất.

Cho phép các trợ lý AI truy vấn và phân tích GreptimeDB bằng SQL, TQL (tương thích PromQL) và truy vấn RANGE, với các tính năng bảo mật tích hợp như thực thi chỉ đọc và che giấu dữ liệu.

Bắt đầu nhanh

# Install
pip install greptimedb-mcp-server

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

Đối với Claude Desktop, hãy thêm phần này vào cấu hình của bạn (~/Library/Application Support/Claude/claude_desktop_config.json trên macOS):

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

Tính năng

Công cụ

Công cụMô tả
execute_sqlThực thi truy vấn SQL với định dạng (csv/json/markdown) và tùy chọn giới hạn
execute_tqlThực thi truy vấn TQL (tương thích PromQL) để phân tích chuỗi thời gian
query_rangeThực thi truy vấn tổng hợp cửa sổ thời gian với cú pháp RANGE/ALIGN
search_table_semanticsTìm bảng theo khái niệm quan sát, được xếp hạng theo các thuật ngữ khớp; tìm kiếm tên bảng, tùy chọn ngữ nghĩa và khai báo thực thể
query_semantic_graphTruy vấn đồ thị ngữ nghĩa: summary (nội dung chứa), entities (các nút), relationships (các cạnh) trong một cửa sổ thời gian bắt buộc
describe_tableKiểm tra hồ sơ bảng: lược đồ, siêu dữ liệu ngữ nghĩa, các hàng mẫu mới nhất và hướng dẫn truy vấn
explain_queryPhân tích kế hoạch thực thi truy vấn SQL hoặc TQL (analyze=true cho số liệu thời gian chạy; thêm verbose=true cùng với analyze=true cho số liệu quét theo phân vùng và bộ đếm cắt tỉa chỉ mục)
health_checkKiểm tra trạng thái kết nối cơ sở dữ liệu và phiên bản máy chủ

search_table_semantics và siêu dữ liệu ngữ nghĩa trong describe_table đọc information_schema.table_semantics. Một bảng xuất hiện ở đó khi nó mang tùy chọn greptime.semantic.* hoặc một quy ước tích hợp suy ra khai báo thực thể cho nó; các bảng khác không có mặt. Máy chủ đọc danh sách cột của view một lần cho mỗi tiến trình và chỉ chọn các cột mà nó hiển thị. entity_declarations yêu cầu GreptimeDB 1.3; trên các phiên bản trước đó, nó được báo cáo là một cột bị thiếu thay vì là một tập khai báo trống.

query_semantic_graph đọc greptime_private.semantic_entities và greptime_private.semantic_relationships, yêu cầu GreptimeDB 1.3. Khi khởi động, máy chủ kiểm tra rằng cả hai view tồn tại, mang các cột mà nó đọc và có thể đọc được bởi tài khoản được kết nối; khi không đáp ứng, công cụ không được cung cấp và lý do được ghi nhật ký. Cửa sổ thời gian của nó là bắt buộc và nửa mở, [start_time, end_time) trên observed_at, và các hàng được tổng hợp qua các nhóm quan sát 60 giây trong cửa sổ đó.

Quản lý Pipeline

Công cụMô tả
list_pipelinesLiệt kê tất cả pipeline hoặc lấy chi tiết của một pipeline cụ thể
create_pipelineTạo pipeline mới với cấu hình YAML
dryrun_pipelineKiểm tra pipeline với dữ liệu mẫu mà không ghi vào cơ sở dữ liệu
delete_pipelineXóa một phiên bản cụ thể của pipeline

Quản lý Dashboard

Công cụMô tả
list_dashboardsLiệt kê tất cả định nghĩa dashboard Perses
create_dashboardTạo hoặc cập nhật định nghĩa dashboard Perses
delete_dashboardXóa định nghĩa dashboard

Tài nguyên & Lời nhắc

  • Tài nguyên: Duyệt các bảng qua URI greptime://<table>/data
  • Lời nhắc: Các mẫu Jinja tích hợp cho các tác vụ phổ biến — pipeline_creator, log_pipeline, metrics_analysis, promql_analysis, trace_analysis, table_operation, schema_design_advisor, observability_correlation, ingestion_troubleshooting, query_performance_tuning

Để tích hợp LLM và cách sử dụng lời nhắc, xem docs/llm-instructions.md.

Các công cụ này bao gồm việc truy vấn và quản lý dữ liệu trong một GreptimeDB hiện có. Để triển khai, cấu hình máy chủ, giao thức ghi, cú pháp pipeline, thiết kế lược đồ và chẩn đoán hiệu suất, hãy trỏ trợ lý đến chỉ mục kỹ năng GreptimeDB tại https://docs.greptime.com/SKILL.md.

Cấu hình

Biến môi trường

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)

Đối số 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

Chế độ máy chủ HTTP

Đối với triển khai containerized hoặc 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

Bảo vệ DNS Rebinding

Theo mặc định, bảo vệ DNS rebinding bị tắt để tương thích với proxy, cổng và dịch vụ Kubernetes. Để bật, sử dụng --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

Nếu bạn gặp lỗi 421 Invalid Host Header, hãy tắt bảo vệ (mặc định) hoặc thêm máy chủ của bạn vào danh sách được phép.

Bảo mật

Người dùng cơ sở dữ liệu chỉ đọc (Khuyến nghị)

Tạo người dùng chỉ đọc trong GreptimeDB bằng static user provider:

mcp_readonly:readonly=your_secure_password

Cổng bảo mật cấp ứng dụng

Tất cả truy vấn đi qua một cổng bảo mật:

  • Chặn: DROP, DELETE, TRUNCATE, UPDATE, INSERT, ALTER, CREATE, GRANT, REVOKE, EXEC, LOAD, COPY
  • Chặn: Các nỗ lực vượt qua mã hóa (hex, UNHEX, CHAR)
  • Cho phép: SELECT, SHOW, DESCRIBE, TQL, EXPLAIN, UNION

Chế độ ghi (Tắt theo mặc định)

Máy chủ chỉ đọc theo mặc định. Đối với phát triển cục bộ hoặc kiểm thử, bạn có thể cho phép SQL ghi/hủy diệt (DDL/DML như CREATE, DROP, ALTER, INSERT, UPDATE, DELETE) thông qua công cụ execute_sql bằng cách bật chế độ ghi:

# Environment variable
GREPTIMEDB_ALLOW_WRITE=true greptimedb-mcp-server

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

Khi được bật, cổng bảo mật bị bỏ qua cho execute_sql, và máy chủ ghi nhật ký cảnh báo khi khởi động.

⚠️ Nguy hiểm: Điều này cho phép trợ lý AI chạy các câu lệnh hủy diệt chống lại cơ sở dữ liệu của bạn. Không bao giờ bật nó với dữ liệu sản xuất. Kết hợp với người dùng cơ sở dữ liệu chỉ đọc nếu bạn chỉ cần quyền truy cập đọc.

Che giấu dữ liệu

Các cột nhạy cảm tự động được che giấu (******) dựa trên các mẫu tên cột:

  • Xác thực: password, secret, token, api_key, credential
  • Tài chính: credit_card, cvv, bank_account
  • Cá nhân: ssn, id_card, passport

Cấu hình với --mask-patterns phone,email để thêm các mẫu tùy chỉnh.

Ghi nhật ký kiểm toán

Tất cả các lệnh gọi công cụ được ghi nhật ký:

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

Tắt với --audit-enabled false.

Phát triển

# 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

Giấy phép

Giấy phép MIT - xem LICENSE.md.

Ghi nhận

Lấy cảm hứng từ: