Greptimedb Mcp Server

io.github.GreptimeTeamPublished by GitHub account GreptimeTeamv0.6.0Updated Oct 24, 2026

Query GreptimeDB metrics, logs and traces with SQL, TQL and RANGE. Manage pipelines and dashboards.

Overview

AI-generated overview

A local MCP server that lets an AI assistant query and analyze GreptimeDB metrics, logs and traces, and manage pipelines and dashboards.

What you can do
Run SQL, TQL (PromQL-compatible) and RANGE time-window queries, with csv/json/markdown output and row limits, and inspect execution plans or connection health. Discover tables by observability concept, inspect table profiles and query the semantic graph of entities and relationships. Read table data through greptime:// resource URIs. List, create, dry-run and delete ingestion pipelines. List, create or update and delete Perses dashboards. Use built-in prompt templates for pipeline creation, metrics, PromQL and trace analysis, schema design and query tuning.
When to use it
Useful when you already run GreptimeDB and want an assistant to explore its metrics, logs and traces, write and explain queries, or manage pipelines and dashboards from a chat session. It is aimed at read-oriented analysis by default, with writes opt-in.
Requirements
Runs locally as a Python package installed with pip (greptimedb-mcp-server). Needs a reachable GreptimeDB instance and connection settings: GREPTIMEDB_HOST, GREPTIMEDB_PORT (MySQL protocol, default 4002), GREPTIMEDB_USER, GREPTIMEDB_PASSWORD, GREPTIMEDB_DATABASE, plus GREPTIMEDB_HTTP_PORT for pipeline and dashboard management. Some semantic tools require GreptimeDB 1.3. Network access to the database is required.
Before you install
The server holds database credentials in GREPTIMEDB_PASSWORD and GREPTIMEDB_USER; a read-only database user is recommended. Setting GREPTIMEDB_ALLOW_WRITE=true bypasses the security gate for execute_sql and enables pipeline and dashboard creation and deletion, which can change or destroy data; the README warns never to use it against production. Data masking and audit logging are on by default but can be turned off. Query results are capped by GREPTIMEDB_MAX_RESULT_BYTES.

Installation

In SourceWeft

  1. Open Greptimedb Mcp Server in the dashboard and add it to a workspace.
  2. Enable the server for the chats that should use its tools.

Desktop only via STDIO. STDIO servers start a local process, so they need the SourceWeft desktop host.

Other MCP clients

Follow the launch instructions in the repository.

README

greptimedb-mcp-server

[PyPI - Version] [build workflow] [MCP Registry] [MIT License]

A Model Context Protocol (MCP) server for GreptimeDB — an open-source observability database that handles metrics, logs, and traces in one engine.

Enables AI assistants to query and analyze GreptimeDB using SQL, TQL (PromQL-compatible), and RANGE queries, with built-in security features like read-only enforcement and data masking.

Quick Start

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

For Claude Desktop, add this to your config (~/Library/Application Support/Claude/claude_desktop_config.json on macOS):

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

Features

Tools

ToolDescription
execute_sqlExecute SQL queries with format (csv/json/markdown) and limit options
execute_tqlExecute TQL (PromQL-compatible) queries for time-series analysis
query_rangeExecute time-window aggregation queries with RANGE/ALIGN syntax
search_table_semanticsFind tables by observability concept, ranked by matched terms; searches table names, semantic options, and entity declarations. schema selects the database to search
query_semantic_graphQuery the semantic graph: summary (what it contains), entities (nodes), relationships (edges) over a required time window
describe_tableInspect a table profile: schema, semantic metadata, latest sample rows, and query guidance
explain_queryAnalyze SQL or TQL query execution plans (analyze=true for runtime stats; add verbose=true alongside analyze=true for per-partition scan metrics and index-pruning counters)
health_checkCheck database connection status and server version

search_table_semantics and the semantic metadata in describe_table read information_schema.table_semantics. A table appears there when it carries a greptime.semantic.* option or a built-in convention derives an entity declaration for it; other tables are absent. The server reads the view's column list once per process and selects only the columns it exposes. entity_declarations requires GreptimeDB 1.3; on earlier versions it is reported as a missing column rather than as an empty declaration set.

Tool results are bounded by GREPTIMEDB_MAX_RESULT_BYTES (default 1048576, or 1 MiB). A query result over the budget returns fewer rows and reports it in truncated and truncation_reason; a result with no rows to shed is cut with a notice at the end. The budget is a backstop against a result too large to be consumed, so lower it if your MCP client rejects results before it is reached.

Cross-database queries

The server connects to one database, but reads are not restricted to it:

ToolHow to reach another database
execute_sql, query_range, describe_tableQualify the table as schema.table
execute_tqlmetric{__schema__="other_db"}, which accepts = only
search_table_semanticsPass schema
query_semantic_graphCatalog-wide already; no scoping needed

The connected account needs read permission on the target database. Use SHOW DATABASES to list them.

query_semantic_graph reads greptime_private.semantic_entities and greptime_private.semantic_relationships, which require GreptimeDB 1.3. At startup the server checks that both views exist, carry the columns it reads, and are readable by the connected account; when they are not, the tool is not offered and the reason is logged. Its time window is required and half-open, [start_time, end_time) over observed_at, and rows are aggregated across the 60-second observation buckets in that window.

Pipeline Management

ToolDescription
list_pipelinesList all pipelines or get details of a specific pipeline
create_pipelineCreate a new pipeline with YAML configuration
dryrun_pipelineTest a pipeline with sample data without writing to database
delete_pipelineDelete a specific version of a pipeline

Dashboard Management

ToolDescription
list_dashboardsList all Perses dashboard definitions
create_dashboardCreate or update a Perses dashboard definition
delete_dashboardDelete a dashboard definition

Resources & Prompts

  • Resources: Browse tables via greptime://<table>/data URIs
  • Prompts: Built-in Jinja templates for common tasks — pipeline_creator, log_pipeline, metrics_analysis, promql_analysis, trace_analysis, table_operation, schema_design_advisor, observability_correlation, ingestion_troubleshooting, query_performance_tuning

For LLM integration and prompt usage, see docs/llm-instructions.md.

These tools cover querying and managing data in an existing GreptimeDB. For deployment, server configuration, write protocols, pipeline syntax, schema design, and performance diagnosis, point the assistant at the GreptimeDB skills index at https://docs.greptime.com/SKILL.md.

Configuration

Environment Variables

bash
GREPTIMEDB_HOST=localhost      # Database hostGREPTIMEDB_PORT=4002           # MySQL protocol port (default: 4002)GREPTIMEDB_USER=root           # Database userGREPTIMEDB_PASSWORD=           # Database passwordGREPTIMEDB_DATABASE=public     # Database nameGREPTIMEDB_TIMEZONE=UTC        # Session timezone
# OptionalGREPTIMEDB_HTTP_PORT=4000      # HTTP API port for pipeline/dashboard managementGREPTIMEDB_HTTP_PROTOCOL=http  # HTTP protocol (http/https)GREPTIMEDB_POOL_SIZE=5         # Connection pool sizeGREPTIMEDB_MASK_ENABLED=true   # Enable sensitive data maskingGREPTIMEDB_MASK_PATTERNS=      # Additional patterns (comma-separated)GREPTIMEDB_AUDIT_ENABLED=true  # Enable audit loggingGREPTIMEDB_ALLOW_WRITE=false   # Allow writes: DDL/DML plus pipeline and dashboard changes (DANGEROUS, local/test only)GREPTIMEDB_MAX_RESULT_BYTES=1048576 # Byte budget for a single tool result (1 MiB)
# Transport (for HTTP server mode)GREPTIMEDB_TRANSPORT=stdio     # stdio, sse, or streamable-httpGREPTIMEDB_LISTEN_HOST=0.0.0.0 # HTTP server bind hostGREPTIMEDB_LISTEN_PORT=8080    # HTTP server bind portGREPTIMEDB_ALLOWED_HOSTS=      # DNS rebinding protection (comma-separated)GREPTIMEDB_ALLOWED_ORIGINS=    # CORS allowed origins (comma-separated)

CLI Arguments

bash
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 Server Mode

For containerized or Kubernetes deployments:

bash
# 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 Protection

By default, DNS rebinding protection is disabled for compatibility with proxies, gateways, and Kubernetes services. To enable it, use --allowed-hosts:

bash
# Enable DNS rebinding protection with allowed hostsgreptimedb-mcp-server --transport streamable-http \  --allowed-hosts "localhost:*,127.0.0.1:*,my-service.namespace:*"
# With custom allowed origins for CORSgreptimedb-mcp-server --transport streamable-http \  --allowed-hosts "my-service.namespace:*" \  --allowed-origins "http://localhost:*,https://my-app.example.com"
# Or via environment variablesGREPTIMEDB_ALLOWED_HOSTS="localhost:*,my-service.namespace:*" \GREPTIMEDB_ALLOWED_ORIGINS="http://localhost:*" \  greptimedb-mcp-server --transport streamable-http

If you encounter 421 Invalid Host Header errors, either disable protection (default) or add your host to the allowed list.

Security

Read-Only Database User (Recommended)

Create a read-only user in GreptimeDB using static user provider:

mcp_readonly:readonly=your_secure_password

Application-Level Security Gate

All queries go through a security gate that:

  • Blocks: DROP, DELETE, TRUNCATE, UPDATE, INSERT, ALTER, CREATE, GRANT, REVOKE, EXEC, LOAD, COPY
  • Blocks: Encoded bypass attempts (hex, UNHEX, CHAR)
  • Allows: SELECT, SHOW, DESCRIBE, TQL, EXPLAIN, UNION

Write Mode (Disabled by Default)

The server is read-only by default. Write mode enables every operation that changes stored state:

  • destructive SQL (DDL/DML such as CREATE, DROP, ALTER, INSERT, UPDATE, DELETE) through execute_sql
  • create_pipeline, delete_pipeline, create_dashboard, delete_dashboard
bash
# Environment variableGREPTIMEDB_ALLOW_WRITE=true greptimedb-mcp-server
# Or CLI argumentgreptimedb-mcp-server --allow-write true

When enabled, the security gate is bypassed for execute_sql, and the server logs a warning on startup. With write mode off, those four tools return an error without contacting the server; list_pipelines, list_dashboards and dryrun_pipeline are read-only and stay available.

⚠️ Danger: This lets an AI assistant run destructive statements against your database. Never enable it against production data. Combine with a read-only database user if you only need read access.

Data Masking

Sensitive columns are automatically masked (******) based on column name patterns:

  • Authentication: password, secret, token, api_key, credential
  • Financial: credit_card, cvv, bank_account
  • Personal: ssn, id_card, passport

Configure with --mask-patterns phone,email to add custom patterns.

Audit Logging

All tool invocations are logged:

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

Disable with --audit-enabled false.

Development

bash
# Clone and setupgit clone https://github.com/GreptimeTeam/greptimedb-mcp-server.gitcd greptimedb-mcp-serveruv venv && source .venv/bin/activateuv sync
# Run testspytest
# Format & lintuv run black .uv run flake8 src
# Debug with MCP Inspectornpx @modelcontextprotocol/inspector uv --directory . run -m greptimedb_mcp_server.server

License

MIT License - see LICENSE.md.

Acknowledgement

Inspired by:

Source: README.md at commit 5347e7e

Tools

0
SourceWeft has not started this package in its sandbox yet, so its tools are not known.

Version history

1
  1. v0.6.0LatestSep 16, 2026

Score

50% of the applicable checks met

How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.

  • Reached in the last 30 days25 pts

    Keep the endpoint answering the MCP handshake; SourceWeft probes it every 30 days.

  • Auth declared10 pts

    Declare the credential headers in the registry entry, or keep the endpoint answering the probe so its auth can be classified.

  • Tools listed15 pts

    Answer tools/list without a credential, or ship a package that starts in a sandbox without one.

  • DescriptionRequired15 pts
  • Logo10 pts
  • Documentation15 pts
  • License10 pts