Atlas / MCP servers / greptimeteam / GreptimeDB

GreptimeDBBLOCK

mcp/greptimeteam/greptimedb

A Model Context Protocol (MCP) server for GreptimeDB

Verdict
BLOCK
Grade
D
Trust score
65 /100
Exposed tools
1 1r · 0w · 0d
Transport
stdio · streamable-http
License
MIT
Stars
29
01

Overview

From the repository's own README, as read at the audited commit. Badges and raw HTML are left out.

[](https://pypi.org/project/greptimedb-mcp-server/) [](https://registry.modelcontextprotocol.io/?q=io.github.GreptimeTeam%2Fgreptimedb-mcp-server) [](LICENSE.md)

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

# Install
pip 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):

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

Features

Tools

Read from source at commit b4b480dfce53OBSERVED · 2026-10-08
Advertisement
02

Connect

Built from this server's own package name, version and transport as found in its source — not copied from anyone's documentation, so it cannot drift against a page we do not control. Replace the environment placeholders with a token scoped to the least it needs.

claude-code (pypi)
claude mcp add greptimedb-mcp-server --env GREPTIMEDB_PASSWORD=${GREPTIMEDB_PASSWORD} -- None greptimedb-mcp-server==0.6.0
03

Exposed tools (1)

1 read · 0 write · 0 destructive.

ToolRiskDescription
renamed_toolreadreturn
04

Trust audit

BLOCKgrade D · trust 65/100 Do not install this without reading the findings. The audit found something that could harm you or your machine.

LayerWhat it checksResult
L0Provenance & inventoryPASS
L1Static analysis of the codeFAIL
L2Instruction surface (what it tells the agent)PASS
L3Class-specific surfacePASS
L4Behavioural (sandbox)SKIPPED

What the source does

Filesystem
none-observed
Network
declared (5 observation(s))
Shell
declared (4 observation(s))
Dependencies
pinned
Secrets in source
none-found

Findings (12)

HIGHCode injection · code.eval_exec · CWE-78, CWE-94, CWE-95
src/greptimedb_mcp_server/server.py:984
tql = f"TQL EVAL ({start_param}, {end_param}, '{step}', '{lookback}') {query}"
Why it matters. evaluates text as code
Fix. remove; use a parser or a dispatch table
HIGHCode injection · code.eval_exec · CWE-78, CWE-94, CWE-95
src/greptimedb_mcp_server/server.py:986
tql = f"TQL EVAL ({start_param}, {end_param}, '{step}') {query}"
Why it matters. evaluates text as code
Fix. remove; use a parser or a dispatch table
HIGHCode injection · code.eval_exec · CWE-78, CWE-94, CWE-95
src/greptimedb_mcp_server/server.py:1146
r"^\s*TQL\s+(EVAL(UATE)?)",
Why it matters. evaluates text as code
Fix. remove; use a parser or a dispatch table
HIGHCode injection · code.eval_exec · CWE-78, CWE-94, CWE-95
src/greptimedb_mcp_server/server.py:1604
exec(func_code, namespace)
Why it matters. evaluates text as code
Fix. remove; use a parser or a dispatch table
LOWInventory / provenance · inv.hidden_file · CWE-1104
.flake8
.flake8
Why it matters. hidden member outside the usual dotfiles
Fix. review its purpose
LOWCode injection · code.eval_exec · CWE-78, CWE-94, CWE-95
tests/test_server.py:749
await explain_query(query="TQL EVAL (0, 100, '30s') up", analyze=True, verbose=True)
Why it matters. evaluates text as code
Fix. remove; use a parser or a dispatch table
LOWNetwork egress · net.raw_ip · CWE-200, CWE-319
.github/workflows/python-app.yml:99
if curl -sf http://127.0.0.1:4000/status \
LOWNetwork egress · net.raw_ip · CWE-200, CWE-319
.github/workflows/python-app.yml:101
curl -s http://127.0.0.1:4000/status
LOWNetwork egress · net.raw_ip · CWE-200, CWE-319
.github/workflows/python-app.yml:107
curl -s http://127.0.0.1:4000/status || true
LOWNetwork egress · net.raw_ip · CWE-200, CWE-319
tests/integration/conftest.py:248
async with streamable_http_client(f"http://127.0.0.1:{port}/mcp") as (
LOWNetwork egress · net.raw_ip · CWE-200, CWE-319
tests/test_http_transport.py:74
f"http://127.0.0.1:{free_port}/mcp",
LOWPrompt injection · prompt.fetch_and_trust · CWE-94, CWE-1427
docs/llm-instructions.md:18
For GreptimeDB knowledge these tools do not carry — deployment, server configuration, choosing a write protocol, pipeline syntax, schema and index design, performance diagnosis — fetch https://docs.gr
Why it matters. remote text is to be obeyed as instructions

Gates applied: no_behavioural_pass.

Audited 2026-10-08 · audit v0.4.1 · source sha b4b480dfce53full audit observations/trust-audit/mcp-server/greptimeteam__greptimedb.json · Report an issue / request a re-scan
05

Audit history

Every audit this server has had. A grade with a past is a grade somebody is still checking.

DateSourceVerdictGradeScoreChange
2026-10-08b4b480dfce53BLOCKD65first audit
06

Questions

What is the GreptimeDB MCP server?

A Model Context Protocol (MCP) server for GreptimeDB

What tools does GreptimeDB expose?

1 in total: 1 read-only, 0 that write, and 0 that can delete or overwrite. Every one is listed on this page with its risk.

Is GreptimeDB safe to connect to an agent?

No — not without reading the findings first. The audit graded it D (65/100) and found 4 critical or high issues in the source. Each one is listed on this page with the file and line it is on.

What credentials does GreptimeDB need?

It reads GREPTIMEDB_PASSWORD from the environment. Give it a token scoped to the least it needs — an agent that can be talked into calling a tool can be talked into calling it with your credentials.

How does GreptimeDB run?

It speaks stdio and streamable-http, so it runs as a local process your client starts. It is published on PyPI as greptimedb-mcp-server.

How current is this page?

The grade is for one exact copy of the source (b4b480dfce53), read on 2026-10-08. The repository is watched and re-audited when it changes.

Advertisement