Skip to main content
Glama
yeongbin-hwang

imply-druid-mcp

imply-druid-mcp

PyPI version Python 3.10+ License: MIT

A read-only MCP (Model Context Protocol) server for Imply Cloud/Druid databases. Query and explore your Druid data through Claude and other AI assistants.

Features

Supported ✅

  • SQL Query Execution

    • Synchronous query execution

    • Asynchronous query execution (for large datasets)

  • Query Management

    • Check query status

    • Retrieve query results

    • Cancel running queries

  • Table Operations

    • List all tables in project

    • Get table schema details

  • Dashboard Operations

    • List all dashboards

    • Get dashboard details

  • Data Cube Operations

    • List all data cubes

    • Get data cube details

    • Execute Pivot SQL queries

Not Supported ❌

  • Data Ingestion

  • Table/Schema Creation or Modification

  • User/Permission Management

  • Supervisor Management

Related MCP server: starrocks-mcp

Tools

Query Tools

Tool

Description

execute_sql_query

Execute a SQL query synchronously and return results immediately

execute_async_query

Execute a SQL query asynchronously for large datasets. Returns a query ID

get_query_results

Retrieve results from an async query using query ID

get_query_status

Check the execution status of an async query

cancel_query

Cancel a running async query

Table Tools

Tool

Description

list_tables

List all tables (datasources) in the Druid project

get_table_schema

Get detailed schema information for a specific table

Dashboard Tools

Tool

Description

list_dashboards

List all dashboards in the Imply project

get_dashboard

Get detailed information about a specific dashboard

Data Cube Tools

Tool

Description

list_data_cubes

List all data cubes in the Imply project

get_data_cube

Get detailed data cube information including dimensions and measures

query_data_cube

Execute Pivot SQL query against a data cube

API Mapping

This MCP server maps to the Imply Polaris API:

MCP Tool

Imply API Endpoint

execute_sql_query

POST /v1/projects/{projectId}/query/sql

execute_async_query

POST /v1/projects/{projectId}/query/sql/statements

get_query_results

GET /v1/projects/{projectId}/query/sql/statements/{queryId}/results

get_query_status

GET /v1/projects/{projectId}/query/sql/statements/{queryId}

cancel_query

DELETE /v1/projects/{projectId}/query/sql/statements/{queryId}

list_tables

GET /v1/projects/{projectId}/tables

get_table_schema

GET /v1/projects/{projectId}/tables/{tableName}

list_dashboards

GET /v1/projects/{projectId}/dashboards

get_dashboard

GET /v1/projects/{projectId}/dashboards/{dashboardId}

list_data_cubes

GET /v1/projects/{projectId}/data-cubes

get_data_cube

GET /v1/projects/{projectId}/data-cubes/{cubeName}

query_data_cube

POST /v0/projects/{projectId}/pivot/data-cube-sql/query

Installation

uvx imply-druid-mcp

Using pip

pip install imply-druid-mcp
imply-druid-mcp

Using pipx

pipx install imply-druid-mcp
imply-druid-mcp

Configuration

Environment Variable

Required

Default

Description

IMPLY_ORGANIZATION

Yes

-

Imply Cloud organization name

IMPLY_REGION

Yes

-

Region (e.g., us-east-1)

IMPLY_CLOUD_PROVIDER

Yes

-

Cloud provider: aws, gcp, or azure

IMPLY_PROJECT_ID

Yes

-

Imply project ID

IMPLY_API_KEY

Yes*

-

Imply API key

IMPLY_ACCESS_TOKEN

Yes*

-

OAuth access token (alternative)

LOG_LEVEL

No

INFO

Logging level

DEFAULT_QUERY_TIMEOUT_MS

No

30000

Default query timeout (ms)

MAX_QUERY_LENGTH

No

10000

Maximum SQL query length

*Either IMPLY_API_KEY or IMPLY_ACCESS_TOKEN is required.

Claude Desktop Setup

Add to your Claude Desktop config file:

  • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json

  • Windows: %APPDATA%\Claude\claude_desktop_config.json

{
  "mcpServers": {
    "imply-druid": {
      "command": "uvx",
      "args": ["imply-druid-mcp"],
      "env": {
        "IMPLY_ORGANIZATION": "your-org",
        "IMPLY_REGION": "us-east-1",
        "IMPLY_CLOUD_PROVIDER": "aws",
        "IMPLY_PROJECT_ID": "your-project-id",
        "IMPLY_API_KEY": "your-api-key"
      }
    }
  }
}

Usage Examples

User: Show me all tables in my Druid project

Claude: [Uses list_tables]
- wikipedia (datasource)
- events (datasource)
- metrics (datasource)
User: Query the top 10 records from wikipedia table

Claude: [Uses execute_sql_query with "SELECT * FROM wikipedia LIMIT 10"]
[Results displayed]
User: Show me all data cubes

Claude: [Uses list_data_cubes]
- sales_cube: Sales Analytics (source: sales_table)
- events_cube: Events Tracking (source: events)
User: Query the sales data cube for top cities

Claude: [Uses query_data_cube with Pivot SQL syntax]
SELECT "DIM:city" AS "City", MEASURE_BY_ID('total_sales') AS "Sales"
FROM "datacube"."sales_cube"
ORDER BY 2 DESC
LIMIT 10

Development

git clone https://github.com/yeongbin-hwang/imply-druid-mcp.git
cd imply-druid-mcp
pip install -e ".[dev]"

License

MIT License - see LICENSE for details.

Resources

Available Tools

12 tools
cancel_queryB

Cancel a running query.

ParametersJSON Schema
NameRequiredDescriptionDefault
query_idYesQuery ID to cancel

TDQS

B3.3/5.0
Behavior2/5

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

No annotations provided; the description does not disclose side effects, requirements (e.g., query must be running), error handling, or return behavior.

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?

A single concise sentence that is front-loaded with the action verb, but lacks context that could be added without bloating.

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

Completeness2/5

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

For a cancellation command with no output schema and minimal description, important details like expected input format or prerequisites are missing.

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 100% with a clear parameter description; the tool description adds no additional semantic value beyond the schema.

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 'Cancel' and resource 'a running query', clearly distinguishing it from sibling tools like execute_async_query or get_query_status.

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

Usage Guidelines3/5

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

No explicit guidance on when to use this tool versus alternatives like get_query_status to check completion, though the purpose is implied.

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

execute_async_queryA

Execute an asynchronous SQL query for large datasets or long-running queries. Returns a query ID.

ParametersJSON Schema
NameRequiredDescriptionDefault
sqlYesSQL query to execute
timeout_msNoQuery timeout in milliseconds (optional)

TDQS

A3.6/5.0
Behavior2/5

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

The description notes the tool is asynchronous and returns a query ID, but with no annotations, it fails to explain that results must be retrieved later (e.g., via get_query_results), potential failure modes, or that the query is queued. This is a significant omission for an async tool.

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?

Two sentences with no wasted words: the first states the core purpose and context, the second specifies the return value. Perfectly front-loaded and concise.

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

Completeness2/5

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

The tool has asynchronous behavior requiring subsequent polling to retrieve results, but the description omits this crucial workflow. It also lacks any explanation of error handling or timeouts beyond the parameter. Given the complexity and no output schema, the description is incomplete.

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 100% and the schema already describes both parameters adequately. The description adds no additional meaning beyond restating the schema descriptions, so baseline score of 3 is appropriate.

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 action ('execute'), the resource ('asynchronous SQL query'), and the context ('for large datasets or long-running queries'), and distinguishes from siblings like execute_sql_query (presumably synchronous) by specifying it returns a query ID.

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 indicates when to use this tool ('for large datasets or long-running queries'), implying an alternative is the synchronous query tool. While it doesn't explicitly list alternatives or when-not-to-use, the context of sibling tools provides sufficient guidance.

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

execute_sql_queryA

Execute a SQL query against Druid and return results. Use this for synchronous queries on small datasets.

ParametersJSON Schema
NameRequiredDescriptionDefault
sqlYesSQL query to execute
timeout_msNoQuery timeout in milliseconds (optional)

TDQS

A3.8/5.0
Behavior2/5

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

No annotations are provided, so description carries full burden. It mentions synchronous execution but fails to disclose important traits like whether the query can modify data (SQL can be DDL/DML), error behavior, rate limits, or result size limits. This is a significant gap for a potentially mutation-capable tool.

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?

Two sentences, no redundancy, front-loaded with key information. Every sentence earns its place without waste.

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?

Given 2 parameters, no output schema, and sibling tools, the description is mostly sufficient. However, lacks details on query restrictions (e.g., read-only recommended) or security considerations. For a simple tool, it's adequate but could be more complete.

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 100% (both parameters have descriptions in schema). The description adds context about synchronous and small datasets but does not provide additional parameter-specific meaning beyond the schema. Baseline 3 applies.

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?

Description clearly states verb (execute), resource (SQL query against Druid), and action (return results). It distinguishes from siblings by specifying synchronous queries on small datasets, contrasting with execute_async_query.

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?

Explicitly states 'Use this for synchronous queries on small datasets', providing clear context for when to use. Implies not for large datasets or async needs, but does not explicitly list alternatives or when not to use.

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

get_dashboardB

Get detailed information about a specific dashboard including its configuration.

ParametersJSON Schema
NameRequiredDescriptionDefault
dashboard_idYesID of the dashboard

TDQS

B3.4/5.0
Behavior2/5

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

With no annotations, the description carries full transparency burden. It mentions 'Get' implying read-only, but does not disclose return format, authentication needs, rate limits, or that it only retrieves one dashboard at a time.

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 a single concise sentence front-loading the purpose. However, it lacks additional structural elements like usage notes, which would improve clarity without harming conciseness.

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

Completeness3/5

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

Given the simple tool (one param, no output schema), the description adequately explains the core action. However, completeness is hampered by missing usage guidance and behavioral details, especially with many sibling 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?

Schema description coverage is 100%, with 'dashboard_id' described. The description adds no extra meaning beyond the schema, meeting the baseline for high schema coverage.

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 retrieves detailed information for a specific dashboard, including its configuration. It distinguishes from the sibling 'list_dashboards' which lists dashboards without details.

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

Usage Guidelines3/5

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

The description does not explicitly state when to use this tool versus alternatives like 'list_dashboards' for summaries. Usage is implied (need detailed info), but no exclusions or conditions are provided.

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

get_data_cubeA

Get detailed information about a specific data cube including dimensions and measures.

ParametersJSON Schema
NameRequiredDescriptionDefault
cube_idYesID of the data cube (from list_data_cubes)

TDQS

A3.9/5.0
Behavior3/5

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

No annotations are provided, so the description must disclose behavioral traits. It describes a read operation ('Get'), which implies non-destructive behavior, but does not explicitly state this or other aspects like error handling or restrictions.

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 a single sentence with no unnecessary words, front-loading the key action and resource.

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

Completeness3/5

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

Given no output schema, the description only mentions 'dimensions and measures' but does not detail the return structure or other fields. While sibling tools provide context, the description is minimally adequate for a simple retrieval tool.

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?

Schema coverage is 100% with one parameter. The description adds context that cube_id comes from list_data_cubes, which provides meaningful information beyond the schema's basic description.

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 'Get detailed information about a specific data cube', using a specific verb and resource. It distinguishes from sibling tools like list_data_cubes (which lists cubes) and query_data_cube (which queries data).

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

Usage Guidelines3/5

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

The description implies usage by requiring a cube_id from list_data_cubes, but it does not explicitly state when to use this tool versus alternatives like get_table_schema or query_data_cube. No exclusions or context are provided.

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

get_query_resultsB

Get results from an asynchronous query using its query ID.

ParametersJSON Schema
NameRequiredDescriptionDefault
query_idYesQuery ID from execute_async_query

TDQS

B3.1/5.0
Behavior2/5

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

With no annotations, the description carries full burden. It does not disclose behavioral traits such as that the query must have completed, potential pagination, data retention limits, or error states. This is insufficient for safe invocation.

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 a single, concise sentence with no wasted words. However, its brevity sacrifices useful information, so not a 5.

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

Completeness2/5

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

Given the simplicity of the tool (one parameter, no output schema, no annotations), the description should cover prerequisites, potential errors, and return expectations. It does not, making it incomplete for effective use.

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 input schema has 100% coverage, describing the parameter as 'Query ID from execute_async_query'. The description adds no additional meaning beyond that, so baseline of 3 is appropriate.

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 verb 'Get results' and the resource 'asynchronous query', and specifies using the query ID. This distinguishes it from sibling tools like get_query_status or cancel_query.

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

Usage Guidelines2/5

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

No guidance on when to use this tool versus alternatives like get_query_status (for checking progress) or execute_async_query (for starting). The description implies it follows an async query but does not explicitly state prerequisites or when not to use it.

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

get_query_statusC

Check the status of an asynchronous query.

ParametersJSON Schema
NameRequiredDescriptionDefault
query_idYesQuery ID to check

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are present, so the description carries full burden. It fails to disclose expected return values, status states (e.g., pending, completed, failed), or whether the tool is read-only. The minimal description does not provide sufficient behavioral context.

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 a single, concise sentence without unnecessary words. However, it lacks any structure or additional elaboration that could improve usability.

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

Completeness2/5

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

Despite low complexity (one parameter, no output schema), the description is insufficient. It does not explain what 'status' means, possible values, or how to interpret the response, leaving an agent uninformed.

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 100% with a clear description for the sole parameter. The tool description adds no extra meaning beyond what the schema already provides, meeting the baseline.

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 clearly states the tool checks the status of an asynchronous query, which is a specific verb and resource. However, it does not distinguish it from siblings like 'get_query_results', but the name and context imply a status check rather than result retrieval.

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus alternatives like 'execute_async_query' or 'cancel_query'. The description lacks context for appropriate usage.

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

get_table_schemaC

Get detailed schema information for a specific table.

ParametersJSON Schema
NameRequiredDescriptionDefault
table_nameYesName of the table

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are present, so the description carries full burden. It only states the basic action without disclosing side effects, auth needs, or return behavior, leaving important behavioral gaps.

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 a single, front-loaded sentence with no wasted words. It is concise but could be more informative without becoming verbose.

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

Completeness2/5

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

The tool has one parameter and no output schema, so the description must compensate. It fails to mention the return format, possible errors, or that the table must exist, leaving the agent underspecified.

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 100% (the only parameter 'table_name' is described in the schema). The description adds no additional meaning beyond the schema, so baseline score of 3 is appropriate.

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 clearly states the tool gets schema information for a specific table, using a specific verb and resource. However, it does not detail what 'schema information' includes (e.g., columns, data types), missing some precision.

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus siblings like list_tables or other query tools. The agent has no context about prerequisites or alternatives.

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

list_dashboardsA

List all dashboards in the Imply project with their metadata.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.1/5.0
Behavior3/5

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

No annotations are provided, so the description carries the full burden. It states the tool lists dashboards with metadata but does not disclose any behavioral traits such as side effects, rate limits, or read-only nature.

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 a single, front-loaded sentence with no unnecessary words. It efficiently conveys the tool's purpose.

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?

Given the tool's simplicity (no parameters, no output schema), the description is complete enough. It clearly specifies what the tool does without needing additional elaboration.

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 no parameters, so schema coverage is 100%. The description adds context about metadata inclusion, which is helpful. Baseline is 4 for 0 parameters.

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 verb ('list'), resource ('dashboards'), and scope ('all', 'with their metadata'). It distinguishes from sibling tool 'get_dashboard' which likely retrieves a single dashboard.

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

Usage Guidelines3/5

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

The description implies the tool is for listing all dashboards, but does not provide explicit guidance on when to use it versus alternatives or when not to use it.

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

list_data_cubesA

List all data cubes in the Imply project with their metadata.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.5/5.0
Behavior2/5

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

No annotations are provided, so the description must fully disclose behavioral traits. It states the tool 'lists all data cubes' and returns 'metadata', but does not mention whether it is read-only, required permissions, rate limits, or any side effects. The agent must assume it is safe, but that is not explicitly stated.

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 a single sentence of 12 words, front-loading the core purpose. It contains no redundancy or unnecessary information, achieving maximum conciseness.

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

Completeness3/5

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

Given no parameters and no output schema, the description is minimal but adequate for a simple listing tool. However, it does not specify what metadata fields are returned, whether pagination exists, or any default behavior, which could be useful for an agent.

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?

With zero parameters and 100% schema description coverage, the baseline is 4. The description adds no parameter details (none needed) but clarifies that the tool returns metadata, which is sufficient.

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 ('List') and resource ('data cubes') with scope ('in the Imply project') and output ('with their metadata'). It clearly distinguishes from related tools like 'get_data_cube' (singular) and 'list_dashboards' (different resource).

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives (e.g., 'get_data_cube' for a specific cube). It does not mention exclusions, prerequisites, or context, leaving the agent to infer usage from the tool name alone.

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

list_tablesA

List all tables in the Druid project with their metadata.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.7/5.0
Behavior2/5

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

No annotations provided, so description must carry full burden. It only states 'List all tables with their metadata', but does not disclose whether it is read-only, requires authentication, or any side effects. Minimal behavioral context.

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?

Single sentence with verb-first structure. No wasted words; front-loaded and efficient.

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

Completeness3/5

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

Given no output schema, the description leaves 'metadata' ambiguous. It does not specify what metadata is returned (e.g., names, sizes, creation dates). For a listing tool, this is incomplete without further detail.

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?

Input schema has no parameters, so schema coverage is 100%. Description adds no parameter info, but none is needed. Baseline score of 4 for zero parameters is appropriate.

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?

Description clearly states verb 'list', resource 'tables', scope 'in the Druid project', and mentions 'metadata'. It distinguishes from siblings like 'get_table_schema' (specific table) and 'list_dashboards' (different resource).

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

Usage Guidelines3/5

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

Implied usage for listing tables, but no explicit guidance on when to use this vs alternatives like 'get_table_schema' or 'execute_sql_query'. No exclusions or context provided.

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

query_data_cubeA

Execute SQL query against a data cube (Pivot). Use 'source' from list_data_cubes. Syntax: FROM "datacube"."SOURCE", "DIM:dimension_name", MEASURE_BY_ID('measure_id')

ParametersJSON Schema
NameRequiredDescriptionDefault
query_stringYesSQL query with data cube syntax
exact_results_onlyNoUse exact results for TopN/COUNT DISTINCT (default: false)

TDQS

A3.8/5.0
Behavior3/5

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

No annotations are provided, so the description carries full burden. It discloses the data cube SQL syntax and effect of 'exact_results_only' parameter, but does not mention read-only nature, rate limits, or other behavioral traits. Adequate but not comprehensive.

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 concise (one sentence plus syntax hint), front-loaded with purpose, and contains no redundant information. Every sentence adds value.

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?

Given the complexity of data cube SQL queries, the description fairly complete with syntax and parameter notes. Lacks details on error handling or output, but no output schema exists. Context of using list_data_cubes for 'source' is helpful.

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 100% with clear parameter descriptions. The description adds minimal extra meaning beyond the schema, only providing a syntax example. Baseline 3 is appropriate given high coverage.

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's purpose: 'Execute SQL query against a data cube (Pivot).' It specifies the verb and resource, and provides syntax hints. Distinguishes from sibling tools like execute_sql_query which target general SQL tables.

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

Usage Guidelines3/5

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

The description gives context by mentioning 'source from list_data_cubes' and syntax, but does not explicitly state when to use this tool versus siblings like execute_sql_query or cancel_query. Some implicit guidance exists but could be more explicit.

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

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 12 tool updatesv0.2.0
    • First observedcancel_query
    • First observedexecute_async_query
    • First observedexecute_sql_query
    • First observedget_dashboard
    • First observedget_data_cube
    • First observedget_query_results
    • First observedget_query_status
    • First observedget_table_schema
    • First observedlist_dashboards
    • First observedlist_data_cubes
    • First observedlist_tables
    • First observedquery_data_cube

TDQS

A3.8/5.0

Scored across 12 tools

Disambiguation5/5

Each tool has a clear, distinct purpose. Sync and async queries are separated, and the data cube query uses a different syntax. No two tools appear to do the same thing.

Naming Consistency5/5

All tool names follow a consistent verb_noun pattern (e.g., list_*, get_*, execute_*, cancel_*, query_*). No mixing of conventions or vague verbs.

Tool Count5/5

12 tools appropriately cover the core functionalities of querying Druid, managing dashboards, data cubes, and tables. Not too few nor too many.

Completeness5/5

The tool set provides full lifecycle coverage for querying (sync, async, cancellation, status, results) and browsing resources (list, get details, schema). No obvious gaps for a query-oriented server.

Maintenance

ActivityInactive
ResponsivenessNo issues

Related MCP Connectors

  • Draxlr's remote MCP server connects AI assistants to your SQL databases and dashboards. Explore schemas, run read-only queries, manage saved queries and dashboards, and export results, all with row-level security so each user sees only their own data.

  • Query your org's data in natural language — read-only MCP access to SQL, NoSQL, files & warehouses.

  • The HubSpot MCP Server acts as a bridge that enables AI assistants and Large Language Models to securely interact with HubSpot CRM data through natural conversation, without requiring users to understand complex API structures. It provides read-only access to standard CRM objects (contacts, companies, deals, tickets, products, invoices, and more) and their associations, secured via OAuth 2.0, allowing AI agents to perform tasks like summarizing deals, fetching company updates, and looking up record changes.

  • Query your warehouse or a CSV with Claude/ChatGPT over MCP, governed by table-level ACL + audit.

Related MCP Servers

  • A
    license
    B
    quality
    C
    maintenance
    A Model Context Protocol (MCP) server that provides read-only TDengine database queries for AI assistants, allowing users to execute queries, explore database structures, and investigate data directly from AI-powered tools.
    6
    11
    MIT
  • A
    license
    A
    quality
    D
    maintenance
    A read-only MCP server that enables users to query and explore StarRocks databases through AI assistants like Claude. It supports SQL execution, schema discovery, and secure LDAP authentication for data analysis and metadata exploration.
    4
    1
    MIT
  • A
    license
    A
    quality
    A
    maintenance
    A read-only MCP server that exposes SQL database access to LLMs, supporting multiple database types, compact columnar results, pagination, and file export.
    6
    17
    MIT