duckdb-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| AWS_PROFILE | No | AWS profile name for S3 authentication. | |
| AWS_ACCESS_KEY_ID | No | AWS access key ID for S3 authentication. | |
| DUCKDB_MCP_TIMEOUT | No | Query timeout in seconds. | 120 |
| DUCKDB_MCP_MAX_ROWS | No | Maximum rows per result. | 500 |
| DUCKDB_MCP_MAX_BYTES | No | Maximum result text size in bytes (200 KB). | 200000 |
| AWS_SECRET_ACCESS_KEY | No | AWS secret access key for S3 authentication. |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": false
} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| queryA | Run a read-only DuckDB SQL statement and return the rows as a markdown table. Only a single SELECT (including WITH/DESCRIBE/SUMMARIZE/SHOW) or EXPLAIN
statement is accepted; anything that writes data, files or settings is
rejected. Read files by quoting their path in the FROM clause, e.g.
Args: sql: The statement to run. max_rows: Row cap for this call (defaults to the server's limit). |
| describe_fileA | Return the column names and types of a data file, plus its row count. Works for any path DuckDB can read -- csv, parquet, json/ndjson, xlsx, compressed variants, globs matching many files, http(s) URLs and s3 URIs. Args: path: File path, glob or URL, e.g. 'data/sales_*.parquet'. include_row_count: Set False to skip counting rows on very large inputs. |
| preview_fileA | Show the first rows of a data file so you can see real values. Args: path: File path, glob or URL. rows: How many rows to show (default 20). |
| list_filesA | List data files in a directory (local, or an s3:// prefix). Args: path: Directory or bucket prefix to list. pattern: Glob pattern for the file name, e.g. '*.parquet'. recursive: Descend into subdirectories. data_files_only: Keep only extensions DuckDB can read; set False to see everything. |
| profile_columnsA | Profile a file's columns: null counts, approximate distinct counts, min/max and the most frequent values of low-cardinality columns. This scans the whole file, so prefer describe_file when you only need types. Args: path: File path, glob or URL. columns: Restrict to these columns (default: all). top_k: Number of most-frequent values to show; 0 to skip that pass. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 5 tools
Each tool has a distinct, non-overlapping purpose: query executes SQL, describe_file returns schema, preview_file shows row samples, list_files enumerates files, and profile_columns computes statistics. No two tools could be confused for the same task.
All tool names are lowercase snake_case and follow a clear verb-first pattern (query, describe_file, preview_file, list_files, profile_columns). The naming is uniform and predictable, aiding agent selection.
Five tools is a well-scoped set for a read-only DuckDB MCP server. Each tool covers a necessary aspect of data exploration without bloat or redundancy.
The tool set provides a complete read-only data exploration workflow: discover files, inspect schemas, preview data, profile columns, and run arbitrary SQL queries. There are no obvious gaps or dead ends for its stated purpose.