Skip to main content
Glama
fastmcp-me

Apache Doris MCP Server

by fastmcp-me

Add to Cursor Add to VS Code Add to Claude Add to ChatGPT Add to Codex Add to Gemini

Apache Doris MCP Server

An MCP server for Apache Doris.

Demo

Usage

Cursor

Name: doris
Type: command
Command: DORIS_HOST=<doris-host> DORIS_PORT=<port> DORIS_USER=<doris-user> DORIS_PASSWORD=<doris-pwd> uv run --with mcp-doris --python 3.13 mcp-doris

Related MCP server: Legion Database MCP Server

Development

Prerequest

  • install uv

Run MCP Inspector

cd /path/to/mcp-doris
uv sync
source .venv/bin/activate
export PYTHONPATH=/path/to/mcp-doris:$PYTHONPATH
env DORIS_HOST=<doris-host> DORIS_PORT=<port> DORIS_USER=<doris-user> DORIS_PASSWORD=<doris-pwd> mcp dev mcp_doris/mcp_server.py

Then visit http://localhost:5173 in web browser.

Publish

uv build
uv publish

Available Tools

3 tools
execute_queryA

Run a SELECT query against Doris with timeout protection.

Args: query: The SQL query to execute

Returns: List[Dict]: The query results

ParametersJSON Schema
NameRequiredDescriptionDefault
queryYes

TDQS

A3.5/5.0
Behavior3/5

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

The description mentions 'timeout protection,' which is a behavioral trait beyond the schema. However, it lacks details on error handling, idempotency, rate limits, or whether the tool is read-only. Since no annotations are provided, the description carries the full burden but remains brief.

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 extremely concise with a single opening line, structured Args and Returns sections, and zero wasted words. It is easy to scan and front-loaded with the key action.

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 tool's simplicity (one parameter, no output schema), the description covers the basic function but omits details like whether modifications are allowed, timeout behavior, and exact return format beyond 'List[Dict]'. 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?

With schema description coverage at 0%, the description must compensate. It describes the single 'query' parameter as 'The SQL query to execute,' which adds minimal meaning beyond the parameter name. It could clarify expected format (e.g., SELECT only) but is adequate.

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 runs SELECT queries against Doris with timeout protection, using specific verb and resource. It distinguishes from sibling tools (show_databases, show_tables) which are for listing databases/tables rather than executing queries.

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 show_databases/show_tables. There is no mention of prerequisites, constraints (e.g., only SELECT queries), or when to avoid using it.

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

show_databasesA

List all databases in the Doris instance.

Returns: List[str]: A list of database names

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.8/5.0
Behavior2/5

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

With no annotations, the description should disclose behavioral traits. It notes the return type (List[str]) but omits whether the operation is read-only, safe, or requires any permissions. Basic info only.

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?

Extremely concise: two sentences with clear purpose and return type. No wasted words.

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 zero-parameter tool that lists databases, the description covers purpose and return type adequately. Missing details like ordering or potential errors, but overall complete for simple use.

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?

No parameters exist, and schema coverage is 100%. Baseline for 0 parameters is 4, and the description adds value by specifying the return type. No additional param info needed.

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' and resource 'all databases', distinguishing it from sibling tools 'show_tables' (tables) and 'execute_query' (arbitrary queries).

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 usage is implied: when you need a list of databases. However, no explicit guidance on when not to use (e.g., if you need detailed info) or alternatives like 'execute_query' for custom listings.

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

show_tablesA

List all tables in the specified database.

Args: database: The database name like: Optional pattern to filter table names

Returns: List[Dict]: A list of table information dictionaries

ParametersJSON Schema
NameRequiredDescriptionDefault
databaseYes
likeNo

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 carries full burden. It explains the return format as a list of dictionaries, but lacks details on potential side effects (none expected for a listing operation) or authorization needs. This is adequate for a simple read tool.

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

Conciseness4/5

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

The description is well-structured with Args and Returns sections. It is concise but includes all necessary parts. Minor improvement could be dropping the Returns section if redundant, but it adds clarity.

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 no output schema and no annotations, the description covers the essential: purpose, parameter semantics, and return format. It lacks details on filter syntax and result ordering, but for a simple listing tool, it is mostly complete.

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 0%, meaning the schema has no descriptions. The description adds meaning by specifying 'database: The database name' and 'like: Optional pattern to filter table names,' which goes beyond the schema's bare type and title. However, it does not specify the pattern format (e.g., SQL LIKE syntax).

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 'List all tables in the specified database,' which is a specific verb and resource. It naturally distinguishes from sibling tools like show_databases (which lists databases) and execute_query (which runs SQL).

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 for listing tables but does not explicitly provide when-to-use or when-not-to-use guidance. However, given the distinct sibling tools, confusion is unlikely.

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. 3 tool updatesv0.1.1
    • First observedexecute_query
    • First observedshow_databases
    • First observedshow_tables

TDQS

A3.7/5.0

Scored across 3 tools

Disambiguation5/5

Each tool has a distinct purpose: executing SELECT queries, listing databases, and listing tables. No overlap in functionality.

Naming Consistency5/5

All tool names follow a consistent verb_noun pattern in snake_case (execute_query, show_databases, show_tables), making them predictable.

Tool Count3/5

Three tools is on the low side for a database server, but it's acceptable for a minimal read-only interface. The scope feels thin but not extreme.

Completeness2/5

The tool set lacks write operations (INSERT, UPDATE, DELETE), DDL commands (CREATE, DROP, ALTER), and metadata queries (DESCRIBE). Significant gaps for a database server.

Maintenance

ActivityInactive
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    F
    maintenance
    Enables natural language querying of Apache Doris databases via LLM-powered SQL generation, execution, and metadata management through the MCP protocol.
    9
    Apache 2.0
  • A
    license
    Not graded
    quality
    D
    maintenance
    A unified MCP server for querying and managing multiple database types (PostgreSQL, MySQL, SQL Server, etc.) via natural language through AI assistants.
    GPL 3.0
  • A
    license
    B
    quality
    F
    maintenance
    MCP server for MaxCompute, enabling table listing, schema inspection, partition lookups, and SELECT queries via natural language.
    4
    11
    Apache 2.0
  • F
    license
    Not graded
    quality
    D
    maintenance
    A comprehensive MCP server that enables database operations, schema management, and statistics via natural language through SQL queries and resources.
    18 npm
    -