Skip to main content
Glama
ae3e

kairosdb-mcp-server

by ae3e

kairosdb-mcp-server

MCP server for querying KairosDB (REST API v1) from Claude Desktop.

Available tools

Tool

Description

kairosdb_query_range

Raw or aggregated data over a relative range (e.g. last 24h)

kairosdb_query_absolute

Data over an absolute range (ISO 8601 dates)

kairosdb_last_value

Latest known value of a metric

kairosdb_aggregate

Several aggregations (min/max/avg) in a single request

kairosdb_list_metrics

Lists all available metrics

kairosdb_list_tag_values

Available values for a given tag

kairosdb_health

Checks the server status

Related MCP server: LGTM MCP Server

Installation

cd kairosdb-mcp-server
npm install
npm run build

Verify the build is OK:

node dist/index.js
# Should print: [kairosdb-mcp] Starting. KairosDB URL: http://localhost:8080
# Then: [kairosdb-mcp] Ready.
# Then wait for MCP messages (stdio)

Claude Desktop configuration

Edit ~/Library/Application Support/Claude/claude_desktop_config.json (macOS) or %APPDATA%\Claude\claude_desktop_config.json (Windows):

{
  "mcpServers": {
    "directus": {
      // ... your existing Directus config
    },
    "kairosdb": {
      "command": "node",
      "args": ["/absolute/path/to/kairosdb-mcp-server/dist/index.js"],
      "env": {
        "KAIROSDB_URL": "http://your-kairosdb-server:8080",
        "KAIROSDB_USER": "",
        "KAIROSDB_PASSWORD": ""
      }
    }
  }
}

Replace /absolute/path/to/ with the actual path on your machine. Leave KAIROSDB_USER and KAIROSDB_PASSWORD empty if authentication isn't used.

Environment variables

Variable

Default

Description

KAIROSDB_URL

http://localhost:8080

KairosDB server URL

KAIROSDB_USER

(empty)

HTTP Basic username (optional)

KAIROSDB_PASSWORD

(empty)

HTTP Basic password (optional)

Example questions in Claude Desktop

Exploration

  • "List all KairosDB metrics"

  • "What values exist for the tag 'host'?"

  • "Is KairosDB available?"

Real-time data

  • "What is the latest value of the metric server.cpu_usage for tag host=web-01?"

Time series

  • "Give me the data for network.latency over the last 48 hours"

  • "Show me the memory usage between 2024-01-01 and 2024-01-31"

Aggregations

  • "Compute the min/max/avg of http.request_duration hourly over the last 7 days for server web-01"

Combined with Directus

  • "Show me all hosts in the 'Payment Service' group, then give me their latest CPU value in KairosDB"

Architecture

src/
├── index.ts              # Entry point, stdio transport
├── constants.ts          # URL, limits
├── types.ts              # KairosDB API interfaces
├── schemas/
│   └── index.ts          # Zod schemas for all tools
├── services/
│   ├── kairosdb-client.ts  # KairosDB HTTP client
│   └── formatters.ts       # Markdown/JSON formatting
└── tools/
    ├── query-tools.ts      # query_range, query_absolute, last_value
    └── aggregate-tools.ts  # aggregate, list_metrics, list_tag_values, health

Available Tools

7 tools
kairosdb_aggregateMultiple aggregations over a relative rangeA
Read-onlyIdempotent

Computes several aggregations (min, max, avg, etc.) in a single request over a relative time range.

Use cases:

  • "Give me the min/max/avg CPU usage on server web-01 over the last 7 days, hourly"

  • "Daily request latency statistics over the last 30 days"

Args:

  • metric_name: Exact metric name

  • tags: Tag filters

  • range_value / range_unit: Time range (default: 24 hours)

  • aggregators: List of functions (default: [avg, min, max])

  • sampling_value / sampling_unit: Computation window (default: 1 hour)

  • response_format: "markdown" or "json"

Returns: One series per aggregator with statistics.

ParametersJSON Schema
NameRequiredDescriptionDefault
tagsNoKairosDB tag filters. Ex: {"host": ["web-01"], "environment": ["production"]}. Each tag value is an array of strings (logical OR).
range_unitNoTime unit: milliseconds | seconds | minutes | hours | days | weeks | months | yearshours
aggregatorsNoList of aggregation functions to compute in a single request (e.g. [avg, min, max])
metric_nameYesExact KairosDB metric name (e.g. server.cpu_usage, network.latency)
range_valueNoNumeric value of the relative time range (e.g. 7 for 7 days)
sampling_unitNoAggregation window unithours
sampling_valueNoAggregation window size (e.g. 1 for 1 hour)
response_formatNomarkdown

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already establish readOnly, idempotent, and non-destructive behavior. The description adds useful behavioral detail beyond that: the computation happens in a single request, defaults are supplied for range and sampling, and the return shape is one series per aggregator. No contradiction with the annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description opens with a crisp summary, then gives two concrete use cases, an Args summary, and a Returns line. It is front-loaded and readable; the Args bullet list is somewhat redundant with the schema, but it serves as a quick reference without bloating the description.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For an 8-parameter tool with a nested tags object and no output schema, the description is sufficiently complete: it explains the purpose, provides realistic examples, summarizes defaults, and states the return shape ('One series per aggregator with statistics'). The schema covers the remaining parameter-level details.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is high (88%), so the schema carries most parameter meaning. The description's Args section mostly restates names, defaults, and simple labels ('Tag filters', 'Time range', 'Computation window') without adding deeper semantics beyond what the schema already provides.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The first sentence names a specific verb (Computes), a specific resource (KairosDB metric aggregations), and the key scope (multiple aggregations in a single request over a relative time range). This clearly differentiates it from siblings like kairosdb_query_absolute, kairosdb_query_range, and kairosdb_last_value without needing to open their schemas.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The two use cases ('Give me the min/max/avg CPU usage... over the last 7 days' and 'Daily request latency statistics over the last 30 days') give an agent concrete, recognizable situations for using this tool. It does not explicitly state when not to use it or name alternatives, but the relative-range and multiple-aggregation context is clear enough to route a query.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

kairosdb_healthKairosDB server statusA
Read-only

Checks that the KairosDB server is reachable and operational.

Use cases:

  • "Is KairosDB available?"

  • Diagnosing a connection error

Returns: "ok" or "error" status with details.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and destructiveHint=false, covering the safety profile. The description adds behavioral detail by stating the return format ('ok' or 'error' status with details), which is meaningful beyond the annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is compact and well-structured: a clear one-line action, bulleted use cases, and a brief return-value note. Every sentence adds information without redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a parameterless health-check tool with strong annotations and a described return format, nothing essential is missing. The description is fully adequate for an agent to select and invoke the tool correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has zero parameters, so the baseline is 4. The description does not need to explain any parameter semantics, and none are missing.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('Checks') with a clear resource ('KairosDB server') and explicitly defines the scope as reachability and operational status. This clearly distinguishes it from the query-focused siblings like kairosdb_query_range and kairosdb_list_metrics.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Concrete use cases are listed: checking availability and diagnosing connection errors. There are no explicit exclusions or alternative tool references, but the health-check purpose is self-evident and unlikely to be confused with the query tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

kairosdb_last_valueLatest value of a metricA
Read-only

Retrieves the most recent value of a metric (equivalent to a real-time reading).

Use cases:

  • "What is the current CPU usage on server web-01?"

  • "Latest reading from the request latency metric"

Args:

  • metric_name: Exact metric name

  • tags: Tag filters to target a specific host

  • response_format: "markdown" or "json"

Returns: Latest known value with its timestamp.

ParametersJSON Schema
NameRequiredDescriptionDefault
tagsNoKairosDB tag filters. Ex: {"host": ["web-01"], "environment": ["production"]}. Each tag value is an array of strings (logical OR).
metric_nameYesExact KairosDB metric name (e.g. server.cpu_usage, network.latency)
response_formatNomarkdown

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already provide readOnlyHint=true and destructiveHint=false, and the description adds useful behavioral context by calling the operation 'equivalent to a real-time reading' and specifying the result as 'Latest known value with its timestamp.' This goes beyond the schema and annotations without contradicting them.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is compact, front-loaded with the core purpose, and uses short use-case bullets plus a one-line Returns statement. There is no filler; the Args quick-reference is slightly redundant with the schema but not bloated.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a single-value read tool with no output schema, the description covers what it returns ('Latest known value with its timestamp'), when to use it via concrete examples, and all three arguments. This is sufficient for an agent to select and invoke it correctly alongside the sibling query, aggregate, and list tools.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The Args section restates parameter intent ('Tag filters to target a specific host') and the response format options, adding a small amount of usage context. However, schema_description_coverage is 67%, and the description does not meaningfully extend the schema's richer details such as array-valued tags with logical OR semantics.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with 'Retrieves the most recent value of a metric (equivalent to a real-time reading)', a specific verb+object that clearly identifies the operation. The use-case examples 'current CPU usage' and 'Latest reading from the request latency metric' further distinguish it from range, aggregate, and list siblings.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicit use-case sentences such as 'What is the current CPU usage on server web-01?' tell an agent exactly when this tool is appropriate. It does not explicitly state when not to use it or point to alternatives like kairosdb_query_range or kairosdb_aggregate, so it stops short of full when-not guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

kairosdb_list_metricsList available metricsA
Read-onlyIdempotent

Returns all metrics (host/service series names) stored in KairosDB.

Use cases:

  • "Which metrics are available for the servers?"

  • "List all metrics starting with 'server.'"

Args:

  • prefix: Optional prefix filter (e.g. "server." to filter client-side)

  • response_format: "markdown" or "json"

Returns: List of metric names.

ParametersJSON Schema
NameRequiredDescriptionDefault
prefixNoOptional prefix filter (e.g. "server." returns all server metrics)
response_formatNomarkdown

TDQS

A3.9/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover readOnly, idempotent, and non-destructive behavior. The description adds a useful detail that the prefix filter is client-side, implying all metrics may be fetched before filtering, but it does not mention limits, pagination, or potential large-result behavior. No contradiction with annotations exists.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well organized with a one-line summary followed by brief Use cases, Args, and Returns sections. It is concise and scannable, though 'Returns: List of metric names' partially duplicates the opening sentence.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a low-complexity, read-only tool with no required parameters, the description covers purpose, example triggers, parameters, and return shape. Minor gaps such as result-size limits or large-list performance are not critical given the simplicity of the tool and the annotations.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema already documents prefix with an example, so the description mostly restates it, though it adds the meaningful 'client-side' nuance. For response_format, the schema provides an enum but no description, and the description clarifies the allowed values as 'markdown' or 'json.' With 50% schema coverage, this is adequate but not substantial.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific action and resource: 'Returns all metrics (host/service series names) stored in KairosDB.' This clearly distinguishes it from siblings like kairosdb_list_tag_values and the query tools, which focus on tag values or time series data rather than metric names.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Concrete use-case examples such as 'Which metrics are available for the servers?' and 'List all metrics starting with "server."' communicate when to use this tool. It does not explicitly name alternatives or exclusion criteria, but the usage context is clear enough.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

kairosdb_list_tag_valuesAvailable values for a tagA
Read-onlyIdempotent

Returns all known values for a given tag name.

Use cases:

  • "What hosts are available?" → tag_name = "host"

  • "What environments exist?" → tag_name = "environment"

Args:

  • tag_name: Tag name (e.g. "host", "environment", "region")

  • response_format: "markdown" or "json"

Returns: List of values for this tag.

ParametersJSON Schema
NameRequiredDescriptionDefault
tag_nameYesTag name (e.g. "host", "environment", "region")
response_formatNomarkdown

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false, so safety is covered. The description adds useful scope ('all known values' for a tag) and return behavior ('List of values'), but does not disclose details like ordering or formatting effects; with strong annotations this is adequate but not exceptional.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-structured and front-loaded with the core behavior, followed by use cases, args, and return value. The Args section repeats schema information somewhat, but the overall length is justified and there is no filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple two-parameter read-only tool, the description covers what it does, when to use it, the input semantics with examples, and the return shape ('List of values'). With no output schema, a bit more detail about the markdown vs JSON output forms could help, but nothing critical is missing for correct invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 50%: tag_name is documented in the schema and repeated in the description, while response_format is described only as 'markdown' or 'json', which the schema's enum already provides. The use-case examples add semantic color to tag_name but do not meaningfully enrich the parameter meaning beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a clear verb+resource: 'Returns all known values for a given tag name.' It is unambiguous that this tool enumerates tag values, but it does not explicitly differentiate itself from sibling kairosdb_list_metrics or the query tools, so it stops short of the top score.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Use cases such as 'What hosts are available?' → tag_name = 'host' give concrete guidance on when to call the tool. There is no explicit when-not-to-use or alternative-tool routing, but the context is sufficiently clear for an agent.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

kairosdb_query_absoluteQuery over an absolute time rangeA
Read-onlyIdempotent

Queries KairosDB over a time range defined by precise ISO 8601 dates.

Use cases:

  • "Server metrics between 2024-01-01 and 2024-01-31"

  • "Analysis of a precise incident over a timestamped window"

Args:

  • metric_name: Exact metric name

  • tags: Tag filters

  • start: Start (ISO 8601, e.g. 2024-01-15T00:00:00Z)

  • end: End (ISO 8601, default: now)

  • aggregator / sampling_value / sampling_unit: Optional aggregation

  • limit: Max points (default 1000)

  • response_format: "markdown" or "json"

Returns: Timestamped points with statistics.

ParametersJSON Schema
NameRequiredDescriptionDefault
endNoEnd of the range (ISO 8601). Defaults to the current time if omitted.
tagsNoKairosDB tag filters. Ex: {"host": ["web-01"], "environment": ["production"]}. Each tag value is an array of strings (logical OR).
limitNo
startYesStart of the range (ISO 8601, e.g. 2024-01-15T00:00:00Z)
aggregatorNoAggregation function: avg | sum | min | max | count | first | last | gapsavg
metric_nameYesExact KairosDB metric name (e.g. server.cpu_usage, network.latency)
sampling_unitNoAggregation window unithours
sampling_valueNoAggregation window size (e.g. 1 for 1 hour)
response_formatNomarkdown

TDQS

A3.9/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already disclose read-only, idempotent, non-destructive behavior. The description adds useful behavior beyond annotations: it returns timestamped points with statistics, end defaults to now, limit defaults to 1000, and response_format selects markdown or json. No contradiction with annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-structured and front-loaded: core purpose first, then use cases, a compact args summary, and return information. The args list partially duplicates the schema, but it serves as a quick-reference checklist and contains no filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a read-only query tool with 9 parameters and no output schema, the description covers required inputs, optional aggregation, limits, response formats, and the general return shape. Exact output structure could be more detailed, but the description is adequate for selecting and invoking the tool correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 78%, so most parameter meaning is already provided by the schema. The description groups aggregator/sampling_value/sampling_unit as optional aggregation and restates defaults, but it does not add meaningful semantics beyond what the schema already documents.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific operation: querying KairosDB over an absolute time range defined by precise ISO 8601 dates. It also provides concrete use cases. It does not explicitly contrast with the sibling kairosdb_query_range, though the 'absolute' framing and examples make the distinction reasonably inferable.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The use cases clearly communicate when to use this tool: fixed-date server metric ranges and precise incident windows. There are no explicit 'when not to use' statements or direct mentions of alternatives, but the context is strong enough that an agent should select this tool for absolute-date queries.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

kairosdb_query_rangeQuery over a relative time rangeA
Read-onlyIdempotent

Queries KairosDB for a metric's data over a relative time range (e.g. the last 24 hours).

Typical use cases:

  • "Give me the CPU usage data for server web-01 over the last 7 days"

  • "Show me the memory usage from last week"

Args:

  • metric_name: Exact KairosDB metric name

  • tags: Tag filters (e.g. {"host": ["web-01"]})

  • range_value: Duration to look back (default: 24)

  • range_unit: Unit (hours/days/weeks/..., default: hours)

  • aggregator: Optional aggregation function (avg/min/max/sum/count)

  • sampling_value / sampling_unit: Window size if aggregation is enabled

  • limit: Max number of points (default: 1000, max: 10,000)

  • response_format: "markdown" (default) or "json"

Returns: Timestamped data points with statistics (min/max/avg).

ParametersJSON Schema
NameRequiredDescriptionDefault
tagsNoKairosDB tag filters. Ex: {"host": ["web-01"], "environment": ["production"]}. Each tag value is an array of strings (logical OR).
limitNoMaximum number of data points to return (max 10,000)
aggregatorNoIf provided, aggregates the data with this function. Leave empty for raw data.avg
range_unitNoTime unit: milliseconds | seconds | minutes | hours | days | weeks | months | yearshours
metric_nameYesExact KairosDB metric name (e.g. server.cpu_usage, network.latency)
range_valueNoDuration of the time range (e.g. 24 for the last 24 hours)
sampling_unitNoWindow unit (required if aggregator is set)hours
sampling_valueNoAggregation window size (required if aggregator is set)
response_formatNomarkdown

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint, covering the safety profile. The description adds meaningful behavioral context: it returns timestamped data points with min/max/avg statistics, has a default limit of 1000, and supports markdown or JSON response formats. This adds value beyond the structured annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-organized with a purpose statement, typical use cases, an Args list, and a Returns section. Information is front-loaded with the relative-time concept and examples. It is slightly longer than necessary because the Args list overlaps heavily with the schema, but each section has a clear role.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 9-parameter tool with one required parameter, the description covers the main decision points: relative range, tag filtering, aggregation, limits, and response format. Since there is no output schema, the Returns line helps close that gap. It does not describe exact JSON shape or pagination behavior, but this is acceptable given the schema richness and annotations.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 89%, so the schema already documents most parameters well. The description reinforces key semantics with examples like 'e.g. {"host": ["web-01"]}' and clarifies that sampling windows apply when aggregation is enabled. This is useful but largely duplicates the schema, keeping it at the baseline of 3.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool queries KairosDB for a metric's data over a relative time range, with concrete examples like 'last 7 days'. This directly distinguishes it from the sibling kairosdb_query_absolute, which handles absolute ranges. The verb 'queries' and resource 'data over a relative time range' make the purpose unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides typical use cases and explains the relative time range concept, giving an agent clear context on when to invoke it. However, it does not explicitly name alternatives like kairosdb_query_absolute or kairosdb_last_value, so the differentiation is implied rather than stated.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

TDQS

A4/5.0
Disambiguation4/5

query_range/query_absolute/last_value are clearly separated by time framing, and list_metrics/list_tag_values/health serve distinct discovery and operations roles. Some overlap exists between query_range and aggregate, since both support relative ranges with aggregation, though one returns data points with optional stats and the other computes multiple aggregations.

Naming Consistency4/5

All tools share the kairosdb_ prefix and most follow a kairosdb_<operation>_<object> pattern, e.g. query_range, query_absolute, list_metrics, list_tag_values. Minor deviations like kairosdb_aggregate and kairosdb_last_value are still predictable within the overall convention.

Tool Count5/5

Seven tools is a well-scoped size for a read-only time-series database MCP server. Each tool earns its place by covering a distinct querying, discovery, or health-check need without unnecessary redundancy.

Completeness4/5

The set covers relative and absolute time-range queries, latest-value reads, aggregation, metric discovery, tag-value discovery, and health checks. Minor gaps like listing tag keys or write/delete operations are acceptable for a read-oriented query server.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    D
    maintenance
    Enables querying and managing Apache Druid datasources through natural language, including SQL queries, datasource exploration, and cluster connectivity testing.
    4
    22
    2
    Apache 2.0
  • A
    license
    Not graded
    quality
    C
    maintenance
    Provides read-only access to Loki, Prometheus, and Tempo APIs, enabling natural language queries for logs, metrics, and traces. Supports multiple instances and authentication via bearer tokens.
    1
    MIT
  • A
    license
    Not graded
    quality
    C
    maintenance
    Enables interacting with Prometheus through MCP for querying metrics, series, alerts, rules, and server status using natural language.
    85
    6
    MIT
  • F
    license
    B
    quality
    B
    maintenance
    Provides read-only query tools over OpenStreetMap data in PostGIS, enabling natural language queries for features, categories, and spatial analysis.
    7

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/ae3e/kairosdb-mcp-server'

If you have feedback or need assistance with the MCP directory API, please join our Discord server