IoTDB MCP Server
OfficialThe IoTDB MCP Server provides an interface for interacting with IoTDB databases with the following capabilities:
SQL Query Execution: Execute SELECT queries using both Tree and Table SQL dialects for data retrieval
Metadata Operations: Run SHOW and COUNT queries for metadata (databases, timeseries, devices)
Schema Management: List all tables and describe table schemas (column names and types)
Data Export: Export query results to CSV or Excel files
Performance Optimizations: Includes session pooling, connection retry mechanisms, and timeout management
Connectivity: Configure connections using host, port, username, password, and database name
SQL Dialect Support: Switch between "Tree" and "Table" SQL dialects as needed
Provides database interaction with Apache IoTDB, enabling execution of SQL queries to read data, list tables, and describe table schemas.
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., "@IoTDB MCP Servershow me the list of all tables in the database"
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.
IoTDB MCP Server
English | 中文
Overview
A Model Context Protocol (MCP) server implementation that provides database interaction and business intelligence capabilities through IoTDB. This server enables running SQL queries and interacting with IoTDB using different SQL dialects (Tree Model and Table Model).
Related MCP server: XiYan MCP Server
Components
Resources
The server doesn't expose any resources.
Prompts
The server doesn't provide any prompts.
Permission Model
IoTDB MCP permissions are advisory by default. The server reports the required
permission, risk level, and confirmation parameter for SQL actions, while the
host agent system owns user approval. Use inspect_sql_permission before
executing DDL/DML or destructive SQL when the tool is available.
Long-running hosted agents can provide full-permission defaults with
environment variables such as IOTDB_SQL_DRIVER_MODE=full and
TIMESEEK_MCP_PERMISSION_ENFORCEMENT=advisory. Set
TIMESEEK_MCP_PERMISSION_ENFORCEMENT=strict only when the MCP server itself
should hard-block disallowed operations.
Tools
The server offers different tools for IoTDB Tree Model and Table Model. You can choose between them by setting the "IOTDB_SQL_DIALECT" configuration to either "tree" or "table".
Dialect-specific identifier semantics:
Tree dialect:
FROMtargets use explicitroot...paths.Projection expressions should usually use measurement names instead of full
root...paths.IOTDB_DATABASEis only a connection/session hint; tree SQL still needs explicit root paths.
Table dialect:
FROMtargets use table names in the current database.Projection expressions use column names.
Tree Model
metadata_queryExecute SHOW/COUNT queries to read metadata from the database
Input:
query_sql(string): The SHOW/COUNT SQL query to execute
Supported query types:
SHOW DATABASES [path]
SHOW TIMESERIES [path]
SHOW CHILD PATHS [path]
SHOW CHILD NODES [path]
SHOW DEVICES [path]
COUNT TIMESERIES [path]
COUNT NODES [path]
COUNT DEVICES [path]
Returns: Query results as array of objects
select_queryExecute SELECT queries to read data from the database
Input:
query_sql(string): The SELECT SQL query to execute (using TREE dialect, time using ISO 8601 format, e.g. 2017-11-01T00:08:00.000)
Supported functions:
SUM, COUNT, MAX_VALUE, MIN_VALUE, AVG, VARIANCE, MAX_TIME, MIN_TIME, etc.
Returns: Query results as array of objects
sql_executor_batchExecute multiple readonly SQL statements in parallel and store each result in ResultStore
Input:
sqls(array): Explicit single SQL statements, orsql_template+param_sets: Repeated SQL template with parameter objectsmax_concurrency(integer): Concurrent statement limit, default 4worker_pool_size(integer): Thread worker pool size, default follows concurrency and is capped byIOTDB_SQL_EXECUTOR_BATCH_MAX_WORKER_POOL_SIZE(default 16)per_item_timeout_ms(integer): Per-statement wait timeout, default 60000batch_timeout_ms(integer): Whole-batch wait timeout, default 300000max_result_rows_per_item/max_result_bytes_per_item: Per-statement result quota, defaults 10000 rows and 16 MiBmax_batch_result_rows/max_batch_result_bytes: Whole-batch result quota, defaults 100000 rows and 64 MiB
Template placeholders:
{{name}}for SQL literals,{{name:path}}for IoTDB paths,{{name:identifier}}for SQL identifiers
Returns: Batch summary plus per-statement
result_id, row count, preview rows, and paging metadata
read_result_pagesRead multiple ResultStore pages in one MCP call
Input:
pages(array): Page request objects withresult_idplus optionalcursor,offset,limit, andowner_session_iddefault_limit(integer): Default page size for items withoutlimitmax_pages/max_total_rows: Per-call quotas, defaults 32 pages and 10000 rowscontinue_on_error(boolean): Return per-item errors instead of aborting, default true
Returns: Batch page summary plus per-page rows, cursors, and errors
export_queryExecute a query and export the results to a CSV or Excel file
Input:
query_sql(string): The SQL query to execute (using TREE dialect)format(string): Export format, either "csv" or "excel" (default: "csv")filename(string): Optional filename for the exported file. If not provided, a unique filename will be generated.
Returns: Information about the exported file and a preview of the data (max 10 rows)
model_inferenceExecute AINode
CALL INFERENCE(...)SQL and return the result setInput:
inference_sql(string): A single Tree-dialect SQL statement starting withCALL INFERENCE
Validates model id, quoted input SELECT SQL, explicit non-wildcard columns, and supported parameters (
generateTime,outputLength) before executionPermission metadata: model management is reported through the advisory MCP policy layer. In strict mode,
IOTDB_ENABLE_MODEL_MANAGEMENT=trueandIOTDB_MODEL_ALLOWED_USERSare enforced.
prepare_model_inference_requestBuild and validate AINode
CALL INFERENCE(...)SQL from structured fieldsInput:
model_id(string): Registered AINode model idinput_sql(string): Bounded Tree-dialect SELECT query used as model inputoutput_length(int): Forecast output length (default: 96)generate_time(bool): Whether to request a Time column (default: false)
UDF Tools
list_udf_functionsExecute
SHOW FUNCTIONSfor the selected IoTDB target.
prepare_udf_queryBuild a read-only UDF
SELECTfrom structured inputs.Tree form:
SELECT UDF(measurement, "k"="v") FROM root.sg.d1 ...Table form:
SELECT UDF(column, "k"="v") FROM table ...
execute_udf_queryExecute the validated UDF query and return a ResultStore-backed preview.
export_udf_queryExecute the validated UDF query and export the result set to CSV or Excel.
UDF tools reject semicolons, SQL comments, and DDL/DML keywords in expressions and filter clauses. They are intended for read-only UDF calls such as data quality, profiling, repair planning, and anomaly scoring.
Table Model
Query Tools
read_queryExecute SELECT queries to read data from the database
Input:
query_sql(string): The SELECT SQL query to execute (using TABLE dialect, time using ISO 8601 format, e.g. 2017-11-01T00:08:00.000)
Returns: Query results as array of objects
Schema Tools
list_tablesGet a list of all tables in the database
No input required
Returns: Array of table names
describe_tableView schema information for a specific table
Input:
table_name(string): Name of table to describe
Returns: Array of column definitions with names and types
export_table_queryExecute a query and export the results to a CSV or Excel file
Input:
query_sql(string): The SQL query to execute (using TABLE dialect)format(string): Export format, either "csv" or "excel" (default: "csv")filename(string): Optional filename for the exported file. If not provided, a unique filename will be generated.
Returns: Information about the exported file and a preview of the data (max 10 rows)
Configuration Options
IoTDB MCP Server supports the following configuration options, which can be set via environment variables or command-line arguments:
Option | Environment Variable | Default Value | Description |
--host | IOTDB_HOST | 127.0.0.1 | IoTDB host address |
--port | IOTDB_PORT | 6667 | IoTDB port |
--user | IOTDB_USER | root | IoTDB username |
--password | IOTDB_PASSWORD | empty | IoTDB password |
--database | IOTDB_DATABASE | test | Table dialect: current database name. Tree dialect: optional session/root scope hint; queries still use explicit |
--sql-dialect | IOTDB_SQL_DIALECT | table | SQL dialect: tree or table |
--export-path | IOTDB_EXPORT_PATH | /tmp | Path for exporting query results |
The target registry contains only connections that have completed a successful
login. Call prepare_iotdb_target with non-secret fields, then pass explicitly
user-supplied credentials to connect_iotdb_target for one authentication
attempt. If credentials are absent, ask the user; never probe empty or default
passwords. An explicitly supplied empty password remains valid input.
Successful login atomically publishes the target and records its per-target
last_known_good_credential. Any connection-layer failure consumes the
candidate or evicts the published target. A retry requires a new candidate and
user_confirmed_retry=true after explicit user instruction. Public target
responses redact both the active password and last-known-good password.
When TIMESEEK_IOTDB_TARGETS_FILE is configured, successful connections are
persisted by default. The local Java CLI can reuse exactly that target through
iotdb-target-cli:
iotdb-target-cli --target-id cloud \
--cli /opt/iotdb/sbin/start-cli.sh -- -e "SHOW VERSION"The wrapper reloads the verified target on every invocation and supplies its
host, port, dialect, username, and last-known-good password. It does not pass
-db to start-cli.sh, because the Java CLI does not support that option;
select a table database with SQL USE <database>. For import-data.sh and
import-data.bat, which do support -db, a table target's database is injected
automatically. A verified empty password is represented by omitting -pw, and
command previews redact non-empty passwords. Calling start-cli.sh directly
does not read the target registry.
Performance Optimizations
IoTDB MCP Server includes the following performance optimization features:
Session Pool Management: Uses optimized session pool configurations, supporting up to 100 concurrent sessions
Optimized Fetch Size: For queries, a fetch size of 1024 is set
Connection Retry: Configured automatic retry mechanism for connection failures
Timeout Management: Session wait timeout set to 5000 milliseconds for improved reliability
Export Functionality: Support for exporting query results to CSV or Excel formats
Prerequisites
Python environment
uvpackage managerIoTDB installation
MCP server dependencies
Development
# Clone the repository
git clone https://github.com/apache/iotdb-mcp-server.git
cd iotdb-mcp-server
# Create virtual environment
uv venv
source venv/bin/activate # or `venv\Scripts\activate` on Windows
# Install development dependencies
uv syncClaude Desktop Integration
Configure the MCP server in Claude Desktop's configuration file:
macOS
Location: ~/Library/Application Support/Claude/claude_desktop_config.json
Windows
Location: %APPDATA%/Claude/claude_desktop_config.json
You may need to put the full path to the uv executable in the command field. You can get this by running which uv on MacOS/Linux or where uv on Windows.
Claude Desktop Configuration Example
Add the following configuration to Claude Desktop's configuration file:
{
"mcpServers": {
"iotdb": {
"command": "uv",
"args": [
"--directory",
"/Users/your_username/iotdb-mcp-server/src/iotdb_mcp_server",
"run",
"server.py"
],
"env": {
"IOTDB_HOST": "127.0.0.1",
"IOTDB_PORT": "6667",
"IOTDB_USER": "root",
"IOTDB_PASSWORD": "",
"IOTDB_DATABASE": "test",
"IOTDB_SQL_DIALECT": "table",
"IOTDB_EXPORT_PATH": "/path/to/export/folder"
}
}
}
}Note: Make sure to replace the
--directoryparameter's path with your actual repository clone path.
Error Handling and Logging
IoTDB MCP Server includes comprehensive error handling and logging capabilities:
Log Level: Logging level is set to INFO, allowing you to view server status in the console
Exception Handling: All database operations include exception handling to ensure graceful handling and meaningful error messages when errors occur
Session Management: Automatic closure of used sessions to prevent resource leaks
Parameter Validation: Basic validation of user-input SQL queries to ensure only allowed query types are executed
Docker Support
You can build a container image for the IoTDB MCP Server using the Dockerfile in the project root:
# Build Docker image
docker build -t iotdb-mcp-server .
# Run container
docker run -e IOTDB_HOST=<your-iotdb-host> -e IOTDB_PORT=<your-iotdb-port> -e IOTDB_USER=<your-iotdb-user> -e IOTDB_PASSWORD=<your-iotdb-password> iotdb-mcp-serverAvailable Tools
4 toolsdescribe_tableC
Get the schema information for a specific table Args: table_name: name of the table to describe
| Name | Required | Description | Default |
|---|---|---|---|
| table_name | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It states the tool retrieves schema information but doesn't describe what that includes (e.g., column names, types, constraints), whether it's a read-only operation, potential errors (e.g., if the table doesn't exist), or any rate limits. This leaves significant gaps in understanding the tool's behavior.
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 concise with two sentences, but the structure could be improved. The first sentence states the purpose clearly, but the second sentence is formatted as an 'Args:' section, which might be redundant with the input schema. It's front-loaded but includes unnecessary formatting that doesn't add value beyond the schema.
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 complexity of a schema retrieval tool with no annotations, no output schema, and low parameter documentation, the description is incomplete. It doesn't explain what the output includes (e.g., JSON structure, error handling), making it hard for an agent to use effectively without additional context.
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?
The schema description coverage is 0%, so the description must compensate for the lack of parameter documentation. It adds minimal meaning by specifying that 'table_name' is the 'name of the table to describe', but this is basic and doesn't provide details like format, constraints, or examples. For a single parameter with no schema documentation, this is inadequate.
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's purpose with a specific verb ('Get') and resource ('schema information for a specific table'), making it easy to understand what it does. However, it doesn't explicitly differentiate from sibling tools like 'list_tables' (which might list table names without schema details) or 'read_query' (which might execute queries rather than describe structure), missing full sibling differentiation.
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 provides no guidance on when to use this tool versus alternatives. It doesn't mention sibling tools like 'list_tables' or 'export_table_query', nor does it specify prerequisites or contexts for use, leaving the agent to infer usage based on the purpose alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
export_table_queryA
Execute a query and export the results to a CSV or Excel file.
Args: query_sql: The SQL query to execute (using TABLE dialect, time using ISO 8601 format, e.g. 2017-11-01T00:08:00.000) format: Export format, either "csv" or "excel" (default: "csv") filename: Optional filename for the exported file. If not provided, a unique filename will be generated.
SQL Syntax: SELECT ⟨select_list⟩ FROM ⟨tables⟩ [WHERE ⟨condition⟩] [GROUP BY ⟨groups⟩] [HAVING ⟨group_filter⟩] [FILL ⟨fill_methods⟩] [ORDER BY ⟨order_expression⟩] [OFFSET ⟨n⟩] [LIMIT ⟨n⟩];
Returns: Information about the exported file and a preview of the data (max 10 rows)
| Name | Required | Description | Default |
|---|---|---|---|
| query_sql | Yes | ||
| format | No | csv | |
| filename | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden and discloses key behavioral traits: it describes the export process, file format options, filename generation behavior, and preview limitations (max 10 rows). However, it doesn't mention potential side effects like file creation impacts, authentication needs, rate limits, or error handling for invalid SQL.
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 clear sections (Args, SQL Syntax, Returns) and front-loaded purpose statement. While comprehensive, some details like the full SQL syntax example might be excessive if the agent already understands SQL, but overall it's efficiently organized with minimal waste.
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 complexity (query execution + file export), no annotations, no output schema, and 3 parameters, the description provides good coverage: purpose, parameters, SQL syntax, and return information. However, it could better address behavioral aspects like error conditions or file system impacts to be fully complete for this mutation tool.
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 0% schema description coverage, the description fully compensates by providing detailed semantic information for all 3 parameters: query_sql (SQL query with dialect and time format specifics), format (export format options with default), and filename (optional with auto-generation behavior). It adds substantial value beyond the bare schema.
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's purpose with specific verbs ('execute a query and export the results') and resources ('to a CSV or Excel file'), distinguishing it from sibling tools like describe_table, list_tables, and read_query which don't mention export functionality. It explicitly combines query execution with file export, making its unique role evident.
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 provides clear context for when to use this tool (to execute queries and export results to files), but doesn't explicitly state when not to use it or name alternatives among sibling tools. It implies usage for file exports but lacks explicit guidance on choosing between this and read_query for non-export scenarios.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_tablesB
List all tables in the IoTDB database.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden but only states the basic action. It doesn't disclose behavioral traits like whether it's read-only, pagination, rate limits, or error handling, leaving significant gaps for a tool with zero annotation coverage.
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 a single, efficient sentence that directly states the tool's purpose without any unnecessary words or fluff. It is appropriately sized and front-loaded.
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 annotations, no output schema, and a simple but incomplete description, the tool lacks context on behavior, output format, or usage scenarios. This is inadequate for a tool that might return a list of tables without further details.
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?
The tool has 0 parameters, and schema description coverage is 100%, so no parameter information is needed. The description appropriately doesn't discuss parameters, earning a high baseline score for this dimension.
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 action ('List') and resource ('all tables in the IoTDB database'), providing a specific purpose. However, it doesn't explicitly differentiate from sibling tools like 'describe_table' or 'export_table_query', which prevents a perfect score.
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 such as 'describe_table' or 'export_table_query'. The description only states what it does, without context for selection among siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
read_queryB
Execute a SELECT query on the IoTDB. Please use table sql_dialect when generating SQL queries.
Args: query_sql: The SQL query to execute (using TABLE dialect, time using ISO 8601 format, e.g. 2017-11-01T00:08:00.000)
| Name | Required | Description | Default |
|---|---|---|---|
| query_sql | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden for behavioral disclosure. It mentions the SQL dialect and time format, which is useful context. However, it doesn't disclose critical behavioral traits: whether this is read-only (though implied by SELECT), authentication requirements, rate limits, error handling, result format, or pagination. For a query execution tool with zero annotation coverage, this leaves significant gaps.
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 appropriately sized and front-loaded: the first sentence states the core purpose, followed by specific guidance and parameter details. The 'Args:' section is clear and adds necessary information. While efficient, it could be slightly more structured by separating usage guidelines from parameter documentation.
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 complexity (query execution with SQL), no annotations, no output schema, and 0% schema description coverage, the description is moderately complete. It covers the purpose, basic usage guidelines, and parameter semantics adequately. However, it lacks information about return values, error conditions, and behavioral constraints that would be needed for robust agent usage.
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?
The description adds substantial meaning beyond the input schema, which has 0% description coverage. It explains that 'query_sql' is 'The SQL query to execute' and provides crucial context about the TABLE dialect and ISO 8601 time format. With only one parameter and the schema providing no descriptions, the description effectively compensates by explaining the parameter's purpose and constraints.
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's purpose: 'Execute a SELECT query on the IoTDB' - a specific verb (execute) and resource (SELECT query on IoTDB). It distinguishes itself from siblings like 'describe_table', 'export_table_query', and 'list_tables' by focusing on query execution rather than metadata or export operations. However, it doesn't explicitly differentiate itself from potential write operations or other query types beyond SELECT.
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 provides some usage context: 'Please use table sql_dialect when generating SQL queries' and mentions the TABLE dialect and ISO 8601 time format. However, it doesn't explicitly state when to use this tool versus alternatives like 'export_table_query' (which might handle results differently) or provide clear exclusion criteria for non-SELECT queries. The guidance is helpful but incomplete.
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
v1.0.0- Changed
describe_table1 field changed- removed
Input schema / properties / table_name / titleRemoved value: -"Table Name"
- Changed
export_table_query3 fields changed- removed
Input schema / properties / filename / titleRemoved value: -"Filename" - removed
Input schema / properties / format / titleRemoved value: -"Format" - removed
Input schema / properties / query_sql / titleRemoved value: -"Query Sql"
- Changed
read_query1 field changed- removed
Input schema / properties / query_sql / titleRemoved value: -"Query Sql"
4 tool updates
- First observed
describe_table - First observed
export_table_query - First observed
list_tables - First observed
read_query
TDQS
Scored across 4 tools
The tools have distinct primary functions (describe, export, list, read), but there's significant overlap between export_table_query and read_query as both execute SQL queries. The descriptions clarify that export_table_query focuses on file export while read_query returns query results directly, but an agent might still confuse when to use each for data retrieval.
Three tools follow a consistent verb_noun pattern (describe_table, list_tables, export_table_query), while read_query deviates slightly by using 'read' instead of a more specific verb like 'execute' or 'run'. The naming is mostly predictable and readable, with only minor inconsistency in the verb choice for one tool.
Four tools is a reasonable count for a database server, allowing core operations without being overwhelming. However, it feels slightly thin for full IoTDB coverage, as it lacks tools for table creation, deletion, or data insertion, which might be expected in a complete database interface.
The toolset is severely incomplete for a database server. It covers read operations (list, describe, query) and export, but lacks any write capabilities (create, insert, update, delete) or administrative functions. This creates significant gaps that will cause agent failures when trying to perform basic database management tasks.
Related MCP Connectors
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.
The Grafbase MCP server sits in front of a GraphQL API and exposes an MCP protocol-compliant interface that allows AI agents and LLMs to explore and query GraphQL APIs using natural language. It provides tools to search schemas, introspect types and fields, and execute GraphQL queries while minimizing context bloat by returning only relevant schema subsets, with built-in support for authentication, authorization, and configurable access control.
Draxlr's remote MCP server connects AI assistants to your SQL databases and dashboards. Explore schemas, run read-only queries, manage saved queries and dashboards, and export results, all with row-level security so each user sees only their own data.
A Model Context Protocol server for Wix AI tools
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceA Model Context Protocol server that enables SQL query execution, database management, and business intelligence capabilities through MySQL connections.633 npmMIT
- AlicenseNot gradedqualityDmaintenanceA Model Context Protocol server that enables natural language queries to MySQL databases, powered by XiYanSQL text-to-SQL technology.240Apache 2.0
- AlicenseBqualityDmaintenanceA Model Context Protocol server that enables executing SQL queries and managing connections with Microsoft SQL Server databases.12,348 npm6MIT
- FlicenseBqualityDmaintenanceA Model Context Protocol server that allows executing SELECT queries on TiDB databases, with optional support for INSERT, UPDATE, and DELETE operations when explicitly enabled.15 npm-