Skip to main content
Glama
yaowenqiang

impala-mcp-server

by yaowenqiang

impala-mcp-server

English | 简体中文

An Apache Impala Model Context Protocol (MCP) server, modeled after apache/doris-mcp-server. It gives AI agents (Claude, Cursor, Cline, Dify, ...) safe, read-only access to an Impala cluster: SQL queries, catalog/metadata exploration, table statistics, cluster overview, and analysis prompt templates.

AI agent ──MCP──▶ impala-mcp-server ──HiveServer2 (impyla)──▶ Apache Impala

Features

  • 17 read-only tools with Doris-MCP-compatible flat naming (get_db_list, get_table_schema, get_table_preview, ...) plus Impala-specific ones (get_partitions, get_column_stats, get_slow_query_records, ...).

  • Read-only SQL guard: only SELECT / SHOW / DESCRIBE / EXPLAIN / WITH ... SELECT / bare SET are allowed; DDL/DML keywords, multi-statement injection, and session mutation (SET x=y) are rejected. Identifier validation + backtick quoting for every tool-built statement.

  • 4 MCP resources: impala://databases, per-database tables, table schemas, cluster overview.

  • 9 prompt templates for common analysis workflows (data exploration, join analysis, performance tuning, slow-query hunting, data quality, reporting, DDL drafting).

  • Transports: stdio (local MCP clients) and Streamable HTTP (http://host:3000/mcp with /live and /ready probes).

  • Enterprise connectivity: NOSASL / PLAIN / LDAP / Kerberos (GSSAPI), TLS, HiveServer2-over-HTTP (Knox), configurable query timeout (SET QUERY_TIMEOUT_S) and a small thread-safe connection pool.

  • Lazy connections: startup never touches Impala; tools return graceful JSON errors when the cluster is unreachable.

Related MCP server: Cloudera Iceberg MCP Server

Tool list

Tool

Impala statement

Purpose

query

(any read-only SQL)

Execute SELECT / SHOW / DESCRIBE / EXPLAIN / WITH / bare SET

explain_query

EXPLAIN ...

Execution plan of a query

get_session_options

SET

Current session query options

get_db_list

SHOW DATABASES [LIKE p]

List databases

get_db_table_list

SHOW TABLES IN db [LIKE p]

Tables/views of a database

get_table_schema

DESCRIBE db.t

Columns, types, comments, partition columns

get_table_comment

SHOW CREATE TABLE (parsed)

Table-level comment

get_ddl

SHOW CREATE TABLE db.t

Full CREATE TABLE statement

get_table_preview

SELECT * ... LIMIT n

First rows of a table (n ≤ 1000)

get_functions

SHOW FUNCTIONS IN db

Built-in + UDF functions

get_table_size

SHOW TABLE STATS

Rows / files / bytes totals

get_column_stats

SHOW COLUMN STATS

Distinct values, nulls, avg size

get_partitions

SHOW PARTITIONS

Partition list with per-partition stats

get_db_metadata_summary

mixed

Table/view counts + aggregated sizes per database

get_health_check

SELECT 1, VERSION()

Connectivity, latency, version

get_cluster_overview

SHOW HOSTS, VERSION()

Version, hosts, database list

get_slow_query_records

sys.impala_query_log

Recent/slow queries (Impala 4.2+ workload management)

Every tool returns a JSON string: {"status": "success", "data": ...} or {"status": "error", "error": {"type", "message", "hint"}}.

Doris parity: the tool names deliberately mirror doris-mcp-server's flat API (get_db_list, get_db_table_list, get_table_schema, get_table_comment, get_ddl, get_table_preview, get_table_size, get_db_metadata_summary, get_health_check, get_cluster_overview, ...), so agents configured for the Doris server adapt with minimal prompt changes.

Installation

Requires Python 3.10+.

# from source
git clone <this-repo> && cd impala-mcp-server
pip install -e .
# with test dependencies
pip install -e ".[dev]"

Configuration

Environment variables (a .env file is loaded automatically; see .env.example):

Variable

Default

Description

IMPALA_HOST

localhost

Impala coordinator (impalad) host

IMPALA_PORT

21050

HiveServer2 port

IMPALA_DATABASE

default

Default database context

IMPALA_USER / IMPALA_PASSWORD

Credentials (PLAIN / LDAP)

IMPALA_AUTH_MECHANISM

NOSASL

NOSASL / PLAIN / LDAP / GSSAPI

IMPALA_KERBEROS_SERVICE_NAME

impala

For GSSAPI

IMPALA_USE_SSL / IMPALA_CA_CERT

false / —

TLS settings

IMPALA_USE_HTTP_TRANSPORT / IMPALA_HTTP_PATH

false / —

HS2-over-HTTP (Knox)

IMPALA_CONNECTION_TIMEOUT

30

Socket connect timeout (s)

IMPALA_QUERY_TIMEOUT

300

Server-side query timeout via SET QUERY_TIMEOUT_S

IMPALA_MAX_CONNECTIONS

10

Pool size

IMPALA_MAX_CONNECTION_AGE

3600

Recycle connections older than this (s)

IMPALA_QUERY_LOG_TABLE

sys.impala_query_log

Source for slow-query tool

ENABLE_SECURITY_CHECK

true

Read-only guard master switch

BLOCKED_KEYWORDS

DDL/DML list

Comma-separated override

ALLOW_WRITE_SQL

false

Dangerous: allow DDL/DML through query

MAX_RESULT_ROWS

10000

Hard row cap

DEFAULT_RESULT_ROWS

1000

Default cap for query

MCP_TRANSPORT

stdio

stdio or http

MCP_HOST / MCP_PORT

localhost / 3000

HTTP bind address

LOG_LEVEL / LOG_FILE_PATH

INFO / —

Logging (stderr for stdio)

Usage

# stdio (Claude Code / Cursor / Cline ...)
impala-mcp-server

# Streamable HTTP
impala-mcp-server --transport http --host 0.0.0.0 --port 3000
#   MCP endpoint:  POST /mcp
#   Liveness:      GET  /live
#   Readiness:     GET  /ready (pings Impala)

Claude Desktop / Cursor config

{
  "mcpServers": {
    "impala": {
      "command": "impala-mcp-server",
      "env": {
        "IMPALA_HOST": "impala-coordinator.example.com",
        "IMPALA_PORT": "21050",
        "IMPALA_AUTH_MECHANISM": "LDAP",
        "IMPALA_USER": "analyst",
        "IMPALA_PASSWORD": "secret"
      }
    }
  }
}

Streamable HTTP (Dify / LangChain / custom hosts)

{
  "mcpServers": {
    "impala": {
      "url": "http://127.0.0.1:3000/mcp"
    }
  }
}

Security notes

  • The server is read-only by design. ALLOW_WRITE_SQL=true disables the guard entirely — prefer leaving it off and granting a read-only Impala role.

  • All identifiers supplied to tools are validated and backtick-quoted; LIKE patterns are literal-escaped.

  • Statements are checked one-by-one after stripping comments and string literals, so SELECT 'DROP TABLE x' passes while WITH cte AS (...) INSERT ... is blocked.

  • HTTP transport binds to loopback by default; put an authenticating proxy in front for remote use (the MCP server itself does not add auth).

  • The slow-query tool only reads the system query log table; it requires workload management to be enabled cluster-side.

Docker

docker build -t impala-mcp-server .
docker run --rm -e IMPALA_HOST=coordinator.example.com -p 3000:3000 \
  impala-mcp-server --transport http --host 0.0.0.0

Development

pip install -e ".[dev]"
pytest            # 93 tests, no live Impala required

Layout (mirrors doris-mcp-server):

impala_mcp_server/
├── main.py              # argparse, FastMCP assembly, transports, health probes
└── utils/
    ├── config.py        # dataclass config from IMPALA_* env vars
    ├── db.py            # impyla wrapper: pool, execution, JSON-safe serialization
    ├── sql_security.py  # identifier validation, read-only SQL guard
    ├── tools.py         # 17 MCP tools + registration
    └── prompts.py       # 9 prompt templates

License

Apache License 2.0. This project is not affiliated with the Apache Software Foundation; "Apache Impala" is a trademark of the ASF.

Available Tools

17 tools
explain_queryA
Read-onlyIdempotent

Return the Impala execution plan (EXPLAIN) for a SELECT or WITH query.

ParametersJSON Schema
NameRequiredDescriptionDefault
sqlYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.1/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, covering safety and side-effects. The description adds that it returns an execution plan and restricts input to SELECT or WITH queries, which is beyond the annotations. However, it does not describe edge behaviors like failure mode or cluster-specific aspects, though those are minor given the safety profile.

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?

A single sentence that front-loads the core action (return execution plan) and supplies the only necessary constraint (SELECT/WITH). There is no filler or redundant information, making it highly scannable and complete.

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?

The tool is simple (one required parameter), has an output schema, and is fully covered by annotations (read-only, idempotent, non-destructive). The description provides all essential context for invoking it: what it returns, for what kind of input, and the execution plan format. Nothing obscure remains unexplained.

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 schema description coverage at 0%, the description must compensate. It does so by qualifying that the 'sql' parameter must be a 'SELECT or WITH query' for Impala, which is meaningful semantic guidance beyond the bare schema field type. It could be more explicit about the exact grammar or quoting requirements, but it sufficiently clarifies the expected input.

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 verb ('Return') and a specific resource ('Impala execution plan (EXPLAIN)'), and narrows the scope to 'SELECT or WITH query'. This clearly distinguishes it from siblings like 'query' (executes a query) and 'get_ddl' (returns DDL), so an agent can tell what the tool does without opening schemas.

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 when to use the tool (when you want an Impala execution plan rather than execution), but it never explicitly says 'use this instead of query when...' or names any sibling alternatives. There are no exclusions or conditions beyond the SELECT/WITH scope, so the guidance is implied rather than explicit.

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

get_cluster_overviewA
Read-onlyIdempotent

Cluster snapshot: Impala version, current database, database list and impalad hosts (SHOW HOSTS).

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.7/5.0
Behavior3/5

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

Annotations already declare readOnly, openWorld, idempotent, and non-destructive behavior, so the description carries a lighter burden. It adds useful context about what the snapshot contains and notes the SHOW HOSTS source, but does not disclose additional behavioral traits such as latency, staleness, or session dependence.

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, compact sentence that front-loads the core concept (cluster snapshot) and then lists specific contents. Every part contributes information without redundancy.

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 zero-parameter signature, rich annotations, and presence of an output schema, the description is sufficiently complete. It tells an agent what data to expect, though it could slightly expand on how the snapshot relates to the active session or cluster state.

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 there is nothing for the description to clarify beyond the schema. The baseline of 4 applies because no parameter documentation is needed.

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 identifies the tool as a cluster snapshot and enumerates its contents: Impala version, current database, database list, and impalad hosts. This distinguishes it from more narrowly scoped siblings like get_db_list, though it does not explicitly name a sibling or use a strong verb.

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 phrase "Cluster snapshot" implies use when an agent needs a high-level cluster overview rather than a specific resource detail. However, there is no explicit when-to-use or when-not-to-use guidance or mention of alternatives.

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

get_column_statsA
Read-onlyIdempotent

Column-level statistics: distinct values, nulls, max/avg size (SHOW COLUMN STATS).

ParametersJSON Schema
NameRequiredDescriptionDefault
db_nameYes
table_nameYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.7/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 the safety profile is covered. The description adds context about what statistics are included and the SQL command, but it does not disclose any additional behavioral traits such as permission requirements, limitations, or performance characteristics.

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 filler. Every part adds value: the resource type, the specific statistics returned, and the underlying command.

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 read-only tool with two self-explanatory parameters, an output schema, and strong annotations, the description is largely complete. It could be slightly richer by explicitly stating that statistics are reported per column or by noting any table prerequisites, but the current definition is sufficient for correct selection and invocation.

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

Parameters2/5

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

Schema description coverage is 0%, and the description does not explain db_name or table_name, their format, or their relationship to the results. The parameter names are self-explanatory enough to avoid a score of 1, but the description adds no parameter-level meaning to compensate for the missing schema descriptions.

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 identifies the resource (column-level statistics) and the specific content returned (distinct values, nulls, max/avg size), and it names the underlying command (SHOW COLUMN STATS). The phrase 'column-level' differentiates this from table-level siblings such as get_table_size, get_table_schema, and get_table_preview.

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 when column-level statistics such as distinct counts, null counts, or size metrics are needed, but it does not explicitly state when to use this tool versus alternatives or when not to use it. No sibling alternatives are mentioned.

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

get_db_listA
Read-onlyIdempotent

List all databases visible to the configured Impala user, optionally filtered by a SQL LIKE pattern.

ParametersJSON Schema
NameRequiredDescriptionDefault
patternNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

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 idempotentHint=true, so the safety profile is covered. The description adds useful behavioral context beyond annotations: the result is scoped to what the configured Impala user can see, and the optional pattern follows SQL LIKE semantics. This clarifies permission-related behavior and filter behavior not captured elsewhere.

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?

A single sentence that front-loads the action and resource, states the scope, and incorporates the parameter usage. Every word earns its place; there is no redundancy or filler.

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 simple read-only listing tool with one optional parameter, the description covers what the tool does, its scope, and the filter semantics. An output schema exists to define return values, and annotations cover safety and idempotency. Nothing essential is missing for an agent to invoke this 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?

Schema description coverage is 0%, so the description must carry the burden for the 'pattern' parameter. It does: it explains the parameter is an optional SQL LIKE pattern, which communicates wildcard semantics implicitly. It doesn't provide concrete examples or mention case sensitivity, but the core meaning is sufficiently conveyed for an agent familiar with SQL.

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 verb ('List'), a specific resource ('databases'), and a clear scope ('visible to the configured Impala user'). It also mentions an optional filter, making the tool's exact function unambiguous and easily distinguishable from siblings like get_db_table_list or get_table_schema.

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 makes the use case clear: when you need to list all databases the current user can see. It does not explicitly name alternatives or exclusions, but the simple, well-defined scope gives the agent enough context to select this tool over table- or schema-focused siblings.

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

get_db_metadata_summaryA
Read-onlyIdempotent

Summarize a database: table/view counts plus aggregated rows/files/bytes sampled over up to max_tables tables.

ParametersJSON Schema
NameRequiredDescriptionDefault
db_nameNo
max_tablesNo
include_table_statsNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4/5.0
Behavior4/5

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

With readOnlyHint and idempotentHint already declared, the description adds genuine behavioral context by stating the operation is 'sampled over up to max_tables tables,' implying bounded, approximate work rather than full scans. It also describes the aggregation (rows/files/bytes) so agents know the result is summary-level. It does not discuss auth or rates, but the annotations already cover the safety profile.

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?

A single, front-loaded sentence with no filler; it leads with the core action and packs the key qualifiers (counts, aggregates, sampling bound) efficiently.

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?

The description is sufficient for selecting the tool and understanding the general result shape, especially given the read-only annotations and presence of an output schema. The main gap is the unstated behavior of include_table_stats and absence of any note on how defaults such as max_tables=50 apply, but these are minor for a metadata-summary tool.

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 0%, so the description must carry parameter meaning; it does explain max_tables ('sampled over up to max_tables tables') and implicitly maps db_name to 'a database.' However, it never mentions include_table_stats, its effect, or defaults, leaving one of three parameters under-described.

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 the verb 'summarize' with resource 'database' and lists concrete outputs (table/view counts, aggregated rows/files/bytes, sampling bound). This distinguishes it from siblings like get_db_table_list and get_table_size without ambiguity.

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 a database-level overview use case but never explains when to choose it over siblings such as get_db_table_list or get_cluster_overview. There are no explicit when-to-use/when-not-to-use instructions or alternative tool names, so usage must be inferred from the name and content.

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

get_db_table_listA
Read-onlyIdempotent

List tables and views of a database (SHOW TABLES IN db). Omit db_name to use the server default database; pattern filters with SQL LIKE.

ParametersJSON Schema
NameRequiredDescriptionDefault
db_nameNo
patternNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.6/5.0
Behavior4/5

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

Annotations already declare this as read-only, idempotent, and non-destructive. The description adds meaningful behavior beyond those hints: it performs SHOW TABLES IN, uses the server default database when db_name is omitted, and applies SQL LIKE filtering via pattern. This gives the agent accurate expectations without contradicting any annotation.

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 two compact clauses with no filler. The core action is front-loaded, followed immediately by the two parameter behaviors that matter for invoking the tool correctly.

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 simple parameterless-required listing tool, the description covers the essentials: what is listed, which database is used by default, and how filtering works. An output schema is present, so return-value details do not need to be stated in the description.

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

Parameters5/5

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

Schema description coverage is 0%, so the description must explain parameter meaning. It does so explicitly for both parameters: db_name selects the database and defaults to the server default database when omitted, while pattern filters using SQL LIKE semantics. This fully compensates for the lack of schema descriptions.

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 and resource: 'List tables and views of a database', and reinforces it with the actual SQL command 'SHOW TABLES IN db'. This clearly distinguishes it from sibling tools like get_db_list (databases) and get_table_schema (individual table details).

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 gives clear context for when to use the tool: to list tables and views in a database. It also provides practical usage guidance for optional parameters (omit db_name to use the default database; pattern uses SQL LIKE). It does not explicitly name alternatives or exclusion cases, but the context is unambiguous.

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

get_ddlA
Read-onlyIdempotent

Return the full CREATE TABLE statement (SHOW CREATE TABLE) including partitions, storage format and properties.

ParametersJSON Schema
NameRequiredDescriptionDefault
db_nameYes
table_nameYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.8/5.0
Behavior3/5

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

The annotations already establish read-only, idempotent, and non-destructive behavior. The description adds the SHOW CREATE TABLE implementation detail and the included content categories, which is useful but does not disclose permission requirements, error behavior, or output size limits. The strong annotations keep the burden low.

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?

One sentence leads with the action, names the output mechanism, and lists the scope boundaries. Every word earns its place and there is no 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 read-only, idempotent tool with only two conventional string parameters and an output schema present, the description is sufficient to invoke the tool correctly. The full-DDL scope is clear, and the content list removes ambiguity about what is returned.

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

Parameters2/5

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

Schema description coverage is 0%, so the description needed to clarify db_name and table_name, but it only describes the output content. The parameter names are conventional and inferable, yet the description itself adds no explicit semantic guidance for either parameter.

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 a specific verb ('Return') and names a concrete resource: the full CREATE TABLE statement via SHOW CREATE TABLE. It then enumerates the content scope (partitions, storage format, properties), which differentiates it from sibling tools like get_table_schema or get_partitions.

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 text implies this tool is for retrieving complete DDL for an existing table, but it does not explicitly say when to prefer get_ddl over get_table_schema, get_partitions, or get_table_comment. There are no exclusion criteria or alternative-routing statements, so usage guidance is only implicit.

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

get_functionsA
Read-onlyIdempotent

List built-in and user-defined functions of a database (SHOW FUNCTIONS), optionally filtered by a LIKE pattern.

ParametersJSON Schema
NameRequiredDescriptionDefault
db_nameNo
patternNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.6/5.0
Behavior3/5

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

The annotations already declare readOnlyHint, idempotentHint, and non-destructive behavior, so the safety profile is covered. The description adds the SHOW FUNCTIONS execution model and optional pattern filtering, but does not disclose any additional behavioral nuances such as default-database handling or result format.

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?

A single, efficient sentence that front-loads the action and resource, includes the SQL equivalent in parentheses, and mentions the optional filter. Every phrase earn its place.

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?

The tool is simple, the annotations cover safety, and the output schema exists, so the description need not describe return values. The only notable gap is the lack of explicit behavior for missing db_name or pattern defaults, which matters for fully 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?

With 0% schema description coverage, the description must compensate. It explains that the pattern is a LIKE pattern and that the operation targets a database, which maps to db_name and pattern. However, it does not clarify what happens when db_name is empty or how the default interacts with the 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 states a specific verb ('List') and a specific resource ('built-in and user-defined functions of a database'), and grounds it in the SQL equivalent (SHOW FUNCTIONS). This clearly distinguishes it from sibling tools about tables, schemas, and DDL.

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?

There is no guidance about when to use this tool versus alternatives, nor any mention of when not to use it. The description simply states what the tool does, leaving usage decisions to the agent.

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

get_health_checkA
Read-onlyIdempotent

Check Impala connectivity: SELECT 1 round-trip latency and server version.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.7/5.0
Behavior5/5

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

Annotations already indicate read-only, idempotent, non-destructive behavior, and the description adds specific behavioral detail beyond that: it runs a SELECT 1 round-trip and reports server version. There is no contradiction and no misleading implication.

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 concise sentence with the primary purpose ('Check Impala connectivity') front-loaded, followed by the precise mechanism and returned information. No wasted words.

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 zero parameters, rich annotations, and an output schema, the description is complete for an agent to understand what this tool does and invoke it correctly. There is no missing behavioral or contextual information.

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 high and the description need not explain parameters. The schema and annotation context cover this dimension fully.

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 names a specific action ('Check Impala connectivity') and a specific resource (Impala), with concrete details on what it does: SELECT 1 round-trip latency and server version. This clearly distinguishes it from sibling metadata/query tools.

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 clearly conveys that this tool is for checking Impala connectivity, which implies when it should be used. It does not explicitly name alternatives or exclusions, but among the sibling tools, none overlap with a health check, so the usage context is adequately clear.

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

get_partitionsA
Read-onlyIdempotent

List partitions with per-partition statistics (SHOW PARTITIONS). Only valid for partitioned tables.

ParametersJSON Schema
NameRequiredDescriptionDefault
db_nameYes
table_nameYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.2/5.0
Behavior4/5

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

The annotations already establish readOnly and idempotent behavior, and the description adds useful constraints: the operation is a SHOW-style listing, returns per-partition statistics, and only works on partitioned tables. This goes beyond the structured 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 a single front-loaded sentence with no filler. Every clause adds information: what is listed, what comes with it, what command backs it, and when it is valid.

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 simple metadata-listing tool with two self-evident parameters, an output schema, and safety annotations already present, the description is sufficient. It conveys the core behavioral constraint (partitioned tables) and return nature (per-partition statistics) without redundant detail.

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

Parameters2/5

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

With 0% schema description coverage, the description was expected to compensate for parameter meaning, but it only mentions partitions and partitioned tables generically. db_name and table_name are left to the agent to infer from their names; no parameter-level guidance is provided.

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 and resource ('List partitions') and further specifies 'with per-partition statistics', making the tool's function unambiguous. It also states the SHOW PARTITIONS underlying command, which distinguishes it from other table metadata tools like get_table_schema or get_column_stats.

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?

It gives clear usage context with 'Only valid for partitioned tables', telling the agent when the tool applies and implicitly not to use it for non-partitioned tables. It does not name alternative sibling tools, but the condition is explicit and actionable.

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

get_session_optionsA
Read-onlyIdempotent

List current Impala session query options (SET).

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.1/5.0
Behavior3/5

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

The annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false, so the safety profile is known. The description adds the qualifier 'current', implying session state is live, but does not disclose any additional behavioral traits beyond what annotations provide.

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?

One short sentence with no filler; the action word 'List' leads, and the parenthetical 'SET' adds a useful synonym. Every word carries meaning.

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 has no parameters, has a full annotations block, and an output schema, the one-sentence description is sufficient. An agent has everything needed to invoke it; the output schema covers return value details.

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 input schema fully covers parameter semantics. Per the baseline for parameterless tools, the description need not add parameter details.

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 ('List') and resource ('current Impala session query options'), and clarifies it corresponds to the SET command. This clearly distinguishes it from sibling tools that operate on database objects, tables, or cluster health.

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 no explicit guidance on when to choose this tool over siblings, nor does it mention exclusions. The intended use is implied by the tool name and description, but there is no explicit routing or alternative comparison.

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

get_slow_query_recordsA
Read-onlyIdempotent

Recent/slow queries from the Impala workload-management query log (sys.impala_query_log by default; needs Impala 4.2+ / CDP). Filter by time_range_hours or min_duration_ms.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
min_duration_msNo
time_range_hoursNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.8/5.0
Behavior4/5

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

Annotations already establish read-only/idempotent/non-destructive behavior. The description adds useful runtime context: the default backing log, the Impala 4.2+/CDP prerequisite, and the available filters. This is meaningful behavioral information beyond the annotations, though it stops short of detailing ordering or default result behavior.

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 two sentences, front-loads the core behavior and source, and has no filler or repeated schema information.

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 retrieval tool with an output schema, the description covers the essential operational context: what data is queried, the source and version requirement, and the main filters. Minor gaps such as result ordering and filter semantics do not prevent a capable agent from invoking it 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 0%, so the description must compensate. It explains the purpose of time_range_hours and min_duration_ms as filters, but does not clarify the limit parameter, whether the filters can be combined, or whether thresholds are inclusive.

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 returns recent/slow queries from a specific Impala log, and the source (sys.impala_query_log) differentiates it from the sibling metadata tools. It lacks an explicit main verb, but the tool name plus resource makes the operation unambiguous.

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 usage context—querying the Impala workload-management log for slow/recent queries—and names the relevant filter parameters. However, it does not state when to prefer this tool over siblings such as query or explain_query, nor give exclusions.

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

get_table_commentB
Read-onlyIdempotent

Return the table-level comment parsed from SHOW CREATE TABLE.

ParametersJSON Schema
NameRequiredDescriptionDefault
db_nameYes
table_nameYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.2/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint, and non-destructive behavior. The description adds that the comment is parsed from SHOW CREATE TABLE, which is useful context beyond the annotations. It does not mention edge cases like missing comments or permission requirements, but the annotation safety profile lowers the burden.

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, focused sentence with no filler. The core behavior and data source are front-loaded, making it easy to scan.

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 read-only getter with only two required parameters and an output schema, the description is largely complete. Annotations cover side-effect safety. Minor gaps remain around null-result behavior and error conditions, but they are not blocking for correct invocation.

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

Parameters2/5

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

Schema description coverage is 0%, and the description does not explain db_name or table_name. The parameter names are self-explanatory, but the description fails to compensate for the missing schema descriptions, so it adds no meaning beyond the input 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 uses a specific verb ('Return') and a precise resource ('table-level comment'), and clarifies the source ('parsed from SHOW CREATE TABLE'). It is clear, but it does not explicitly differentiate this tool from siblings like get_ddl or get_table_schema.

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 gives no guidance on when to use this tool versus alternatives such as get_ddl or get_table_schema. The phrase 'parsed from SHOW CREATE TABLE' hints at its niche, but there is no explicit when-to-use or when-not-to-use guidance.

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

get_table_previewA
Read-onlyIdempotent

Preview the first rows of a table (SELECT * ... LIMIT n, n<=1000).

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
db_nameYes
table_nameYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.8/5.0
Behavior4/5

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

Annotations already declare the operation read-only, safe, and idempotent. The description adds a concrete behavioral constraint (n<=1000) and clarifies that only leading rows via a SELECT projection are returned. This is meaningful extra context without contradicting 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 entire description is one focused sentence with the core action front-loaded and a compact parenthetical that defines the SQL behavior and maximum limit. No redundant wording.

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 preview tool with an output schema and read-only annotations, the description covers the key operational detail (row cap) and object. It lacks only minor context such as unordered/arbitrary result ordering or explicit guidance to use 'query' for full SQL.

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?

With 0% schema description coverage, the description partially compensates by explaining table_name's role and the limit constraint (n<=1000). However, the required db_name parameter is not described, leaving the agent to infer it from the parameter name alone.

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 names a specific operation ('Preview the first rows of a table') and specifies its mechanism ('SELECT * ... LIMIT n'). This clearly identifies the resource and behavior, though it does not explicitly contrast the tool with the 'query' sibling.

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?

Usage context is implied by 'Preview' — an agent can infer this is for a quick read-only peek at table data. It does not state when to prefer 'query' or other siblings, nor give exclusions, so guidance remains implicit.

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

get_table_schemaB
Read-onlyIdempotent

Describe a table: column names, data types, comments and partition columns (DESCRIBE table).

ParametersJSON Schema
NameRequiredDescriptionDefault
db_nameYes
table_nameYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.2/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, openWorldHint, idempotentHint, and destructiveHint=false, so the safety profile is clear. The description adds that the output includes partition columns but does not mention error behavior, missing-table handling, or the shape of the returned schema beyond what the output schema already implies.

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 one efficient sentence that front-loads the purpose and uses the parenthetical 'DESCRIBE table' to disambiguate. Every part adds value, and there is no 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 the simple two-parameter schema, a clearly named read operation, and an available output schema, the description supplies sufficient context for a basic call. It is complete enough for selecting the tool, though a small note about parameter semantics would move it to a 5.

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

Parameters2/5

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

The input schema provides 0% description coverage for db_name and table_name, and the description does not elaborate on these parameters. Their names are reasonably self-explanatory, but for a low-coverage schema, the description should define what db_name and table_name refer to (e.g., catalog/schema/table naming, expected format) and it does not.

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 and enumerates the table metadata contents (column names, data types, comments, partition columns). This differentiates it implicitly from siblings like get_table_comment or get_partitions, though it never names them explicitly.

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?

There is no guidance on when to use this tool versus alternatives such as get_table_preview, get_ddl, or get_table_comment, nor any exclusions or prerequisites. The agent must infer usage from the plain-language description alone.

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

get_table_sizeB
Read-onlyIdempotent

Physical table statistics: row count, number of files and total bytes (SHOW TABLE STATS). Values are -1 until COMPUTE STATS has been run.

ParametersJSON Schema
NameRequiredDescriptionDefault
db_nameYes
table_nameYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.3/5.0
Behavior4/5

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

Annotations already mark the tool as read-only and idempotent; the description adds a valuable behavioral caveat that values are -1 until COMPUTE STATS has been run. This goes beyond structured annotations and gives the agent important context for interpreting results.

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 two terse sentences with no filler. The core output is stated first, followed by a crucial caveat about COMPUTE STATS, making it highly scannable 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?

The tool is simple (two string parameters) and has an output schema, so the description covers the key return values and the -1 caveat. However, it omits any usage context or parameter-level detail, making it minimally adequate rather than fully complete.

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

Parameters2/5

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

Schema description coverage is 0% and the description does not explain db_name or table_name at all. The parameter names are self-explanatory, but the description still fails to add any semantic meaning or relationship between the parameters and the statistics being fetched.

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 identifies the tool as returning physical table statistics (row count, file count, total bytes) and cites the underlying command SHOW TABLE STATS. This unambiguously distinguishes it from schema/comment/preview tools, though it does not explicitly name any sibling.

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 explicit guidance is given about when to use this tool versus alternatives like get_table_schema or get_table_preview. The description only states what the tool returns, leaving usage context implicit.

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

queryA
Read-onlyIdempotent

Execute a read-only SQL statement (SELECT / SHOW / DESCRIBE / EXPLAIN / WITH ... SELECT / bare SET) against Apache Impala and return columns+rows. DDL/DML is blocked unless the server runs with ALLOW_WRITE_SQL=true.

ParametersJSON Schema
NameRequiredDescriptionDefault
sqlYes
max_rowsNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4/5.0
Behavior4/5

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

Annotations already provide readOnlyHint and idempotentHint, but the description adds concrete behavioral detail: accepted statement families, 'return columns+rows', and the important ALLOW_WRITE_SQL=true caveat that the read-only guarantee is conditional on server configuration. It does not cover error handling or resource limits, but these are secondary given the output schema and 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?

Two dense sentences with the primary action and scope front-loaded, followed by the safety caveat. The parenthesized list of SQL forms is long but earns its place by defining valid input boundaries.

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 two-parameter query tool with rich annotations and an output schema, the description provides the essential behavioral contract including the write-safety caveat. The only notable omission is explicit semantics for max_rows, but the parameter is simple enough that an agent can likely infer it.

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 0%, so the description must carry parameter meaning; it usefully constrains the sql parameter to SELECT/SHOW/DESCRIBE/EXPLAIN/WITH...SELECT/bare SET. However, it never mentions max_rows, leaving the second parameter's row-limiting behavior to inference from its title and default value.

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 specifies a concrete verb and resource: 'Execute a read-only SQL statement ... against Apache Impala'. It enumerates accepted statement forms and states the return shape, clearly distinguishing this general query tool from the specialized get_* siblings and explain_query.

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 allowed SQL statement types and the DDL/DML block provide implicit usage boundaries, so an agent can infer it is meant for ad-hoc read-only queries. However, it never names alternatives or explicitly says when to prefer specialized siblings such as explain_query or get_table_preview.

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. 17 tool updatesv1.0.0
    • First observedexplain_query
    • First observedget_cluster_overview
    • First observedget_column_stats
    • First observedget_db_list
    • First observedget_db_metadata_summary
    • First observedget_db_table_list
    • First observedget_ddl
    • First observedget_functions
    • First observedget_health_check
    • First observedget_partitions
    • First observedget_session_options
    • First observedget_slow_query_records
    • First observedget_table_comment
    • First observedget_table_preview
    • First observedget_table_schema
    • First observedget_table_size
    • First observedquery

TDQS

A3.9/5.0

Scored across 17 tools

Disambiguation5/5

Each tool targets a clearly distinct resource or action: query execution, plan explanation, session options, and a comprehensive set of metadata inspectors for databases, tables, schemas, DDL, stats, partitions, and cluster health. Even similar-sounding tools like get_table_schema, get_table_comment, and get_ddl are cleanly separated by their descriptions.

Naming Consistency4/5

The vast majority of tools follow a consistent lower_snake_case get_* pattern with clear noun targets. The exceptions are the bare `query` tool and `explain_query`, which are still readable but deviate slightly from the dominant get_ prefix convention.

Tool Count4/5

At 17 tools, the server is slightly above the typical 3–15 range, but the count is justified by the broad scope of Impala metadata and query functionality. Each tool addresses a distinct need, so the set does not feel bloated.

Completeness5/5

The tool set covers the full envelope of read-only Impala interaction: arbitrary queries, execution plans, session settings, database/table listing, schema inspection, DDL retrieval, data previews, functions, table and column statistics, partitions, cluster overview, and slow-query logs. There are no obvious dead ends or major missing operations for its intended read-only/metadata-analysis purpose.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    B
    quality
    D
    maintenance
    Enables read-only access to Apache Iceberg tables via Impala, allowing LLMs to inspect database schemas and execute SQL queries to retrieve data from Iceberg tables.
    2
    14
    Apache 2.0
  • A
    license
    A
    quality
    D
    maintenance
    Enables AI agents to execute SQL queries and explore Snowflake databases using natural language, with schema discovery, table inspection, and readonly mode.
    11
    547 npm
    MIT
  • F
    license
    A
    quality
    C
    maintenance
    Enables LLM agents to query and explore Cloudera Hive virtual warehouses through tools like list_databases, list_tables, describe_table, get_table_sample, and execute_query with read-only safety.
    5
    -