Apache Doris MCP Server
Provides tools for interacting with Apache Doris, enabling SQL query execution and database management.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Apache Doris MCP Serverdescribe the 'users' table schema"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Apache Doris MCP Server
An MCP server for Apache Doris.

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-dorisRelated 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.pyThen visit http://localhost:5173 in web browser.
Publish
uv build
uv publishAvailable Tools
3 toolsexecute_queryA
Run a SELECT query against Doris with timeout protection.
Args: query: The SQL query to execute
Returns: List[Dict]: The query results
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes |
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| database | Yes | ||
| like | No |
TDQS
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.
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.
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.
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.
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.
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.
3 tool updates
v0.1.1- First observed
execute_query - First observed
show_databases - First observed
show_tables
TDQS
Scored across 3 tools
Each tool has a distinct purpose: executing SELECT queries, listing databases, and listing tables. No overlap in functionality.
All tool names follow a consistent verb_noun pattern in snake_case (execute_query, show_databases, show_tables), making them predictable.
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.
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
Related MCP Connectors
- mcpOAuthcom.gibsonai
GibsonAI MCP server: manage your databases with natural language
MCP server for querying and analyzing data from ad platforms, analytics tools, and spreadsheets
The BigQuery remote MCP server is a fully managed service that uses the Model Context Protocol to connect AI applications and LLMs to BigQuery data sources. It provides secure, standardized tools for AI agents to list datasets and tables, retrieve schemas, generate and execute SQL queries through natural language, and analyze data—enabling direct access to enterprise analytics data without requiring manual SQL coding.
MCP server for AI dialogue using various LLM models via AceDataCloud
Related MCP Servers
- AlicenseNot gradedqualityFmaintenanceEnables natural language querying of Apache Doris databases via LLM-powered SQL generation, execution, and metadata management through the MCP protocol.9Apache 2.0
- AlicenseNot gradedqualityDmaintenanceA unified MCP server for querying and managing multiple database types (PostgreSQL, MySQL, SQL Server, etc.) via natural language through AI assistants.GPL 3.0
- AlicenseBqualityFmaintenanceMCP server for MaxCompute, enabling table listing, schema inspection, partition lookups, and SELECT queries via natural language.411Apache 2.0
- FlicenseNot gradedqualityDmaintenanceA comprehensive MCP server that enables database operations, schema management, and statistics via natural language through SQL queries and resources.18 npm-