dbt CLI MCP Server
DBT CLI MCP 服务器
包装 dbt CLI 工具的模型上下文协议 (MCP) 服务器,使 AI 编码代理能够通过标准化 MCP 工具与 dbt 项目进行交互。
特征
通过 MCP 工具执行 dbt 命令
支持所有主要的 dbt 操作(运行、测试、编译等)
用于直接交互的命令行界面
dbt 项目的环境变量管理
可配置 dbt 可执行文件路径
灵活的profiles.yml位置配置
Related MCP server: @us-all/dbt-mcp
安装
先决条件
Python 3.10 或更高版本
Python 环境管理工具
uv已安装 dbt CLI
设置
# Clone the repository with submodules
git clone --recurse-submodules https://github.com/yourusername/dbt-cli-mcp.git
cd dbt-cli-mcp
# If you already cloned without --recurse-submodules, initialize the submodule
# git submodule update --init
# Create and activate a virtual environment
uv venv
source .venv/bin/activate # On Windows: .venv\Scripts\activate
# Install dependencies
uv pip install -e .
# For development, install development dependencies
uv pip install -e ".[dev]"用法
命令行界面
该软件包提供了一个命令行界面,可与 dbt 直接交互:
# Run dbt models
dbt-mcp run --models customers --project-dir /path/to/project
# Run dbt models with a custom profiles directory
dbt-mcp run --models customers --project-dir /path/to/project --profiles-dir /path/to/profiles
# List dbt resources
dbt-mcp ls --resource-type model --output-format json
# Run dbt tests
dbt-mcp test --project-dir /path/to/project
# Get help
dbt-mcp --help
dbt-mcp run --help您也可以直接使用该模块:
python -m src.cli run --models customers --project-dir /path/to/project命令行选项
--dbt-path:dbt 可执行文件的路径(默认值:“dbt”)--env-file:环境文件路径(默认值:“.env”)--log-level:日志级别(默认值:“INFO”)--profiles-dir:包含 profiles.yml 文件的目录路径(如果未指定,则默认为 project-dir)
环境变量
还可以使用环境变量来配置服务器:
DBT_PATH:dbt 可执行文件的路径ENV_FILE:环境文件路径LOG_LEVEL:日志记录级别DBT_PROFILES_DIR:包含 profiles.yml 文件的目录路径
与 MCP 客户端一起使用
要将服务器与 Claude for Desktop 等 MCP 客户端一起使用,请将其添加到客户端的配置中:
{
"mcpServers": {
"dbt": {
"command": "uv",
"args": ["--directory", "/path/to/dbt-cli-mcp", "run", "src/server.py"],
"env": {
"DBT_PATH": "/absolute/path/to/dbt",
"ENV_FILE": ".env"
// You can also set DBT_PROFILES_DIR here for a server-wide default
}
}
}
}⚠️ 重要提示:需要绝对项目路径 ⚠️
使用此 MCP 服务器中的任何工具时,必须使用project_dir参数指定 dbt 项目目录的完整绝对路径。相对路径将无法正常工作。
// ❌ INCORRECT - Will NOT work
{
"project_dir": "."
}
// ✅ CORRECT - Will work
{
"project_dir": "/Users/username/path/to/your/dbt/project"
}请参阅完整的 dbt MCP 使用指南以获取更详细的说明和示例。
可用工具
该服务器提供以下 MCP 工具:
dbt_run:运行 dbt 模型(需要绝对project_dir)dbt_test:运行 dbt 测试(需要绝对project_dir)dbt_ls:列出 dbt 资源(需要绝对project_dir)dbt_compile:编译 dbt 模型(需要绝对project_dir)dbt_debug:调试 dbt 项目设置(需要绝对project_dir)dbt_deps:安装 dbt 包依赖项(需要绝对project_dir)dbt_seed:将 CSV 文件加载为种子数据(需要绝对project_dir)dbt_show:预览模型结果(需要绝对project_dir)
{ “模型”:“客户”, “project_dir”:“/path/to/dbt/project”, “限制”:10 } </use_mcp_tool>
### dbt Profiles Configuration
When using the dbt MCP tools, it's important to understand how dbt profiles are handled:
1. The `project_dir` parameter **MUST** be an absolute path (e.g., `/Users/username/project` not `.`) that points to a directory containing both:
- A valid `dbt_project.yml` file
- A valid `profiles.yml` file with the profile referenced in the project
2. The MCP server automatically sets the `DBT_PROFILES_DIR` environment variable to the absolute path of the directory specified in `project_dir`. This tells dbt where to look for the profiles.yml file.
3. If you encounter a "Could not find profile named 'X'" error, it means either:
- The profiles.yml file is missing from the project directory
- The profiles.yml file doesn't contain the profile referenced in dbt_project.yml
- You provided a relative path instead of an absolute path for `project_dir`
Example of a valid profiles.yml file:
```yaml
jaffle_shop: # This name must match the profile in dbt_project.yml
target: dev
outputs:
dev:
type: duckdb
path: 'jaffle_shop.duckdb'
threads: 24通过 MCP 服务器运行命令时,请确保项目目录结构正确且存在两个配置文件。
发展
集成测试
该项目包括针对真实 dbt 项目验证功能的集成测试:
# Run all integration tests
python integration_tests/run_all.py
# Run a specific integration test
python integration_tests/test_dbt_run.py测试项目设置
集成测试使用 jaffle_shop_duckdb 项目,该项目作为 Git 子模块包含在 dbt_integration_tests 目录中。当您使用“设置”部分中提到的--recurse-submodules选项克隆存储库时,它将自动初始化。
如果需要将测试项目从原始存储库更新到最新版本:
git submodule update --remote dbt_integration_tests/jaffle_shop_duckdb如果您看到有关 jaffle_shop_duckdb 目录中缺少文件的错误,则可能需要初始化子模块:
git submodule update --init执照
麻省理工学院
Available Tools
9 toolsdbt_buildA
Run build command (seeds, tests, snapshots, and models). An AI agent should use this tool when it needs to execute a comprehensive build process that runs seeds, snapshots, models, and tests in the correct order. This is ideal for complete project deployment or ensuring all components work together.
Returns:
Output from the dbt build command as text (this command does not support JSON output format)
| Name | Required | Description | Default |
|---|---|---|---|
| models | No | Specific models to build, using the dbt selection syntax | |
| selector | No | Named selector to use | |
| exclude | No | Models to exclude | |
| project_dir | No | ABSOLUTE PATH to the directory containing the dbt project (e.g. '/Users/username/projects/dbt_project' not '.') | . |
| profiles_dir | No | Directory containing the profiles.yml file (defaults to project_dir if not specified) | |
| full_refresh | No | Whether to perform a full refresh |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden. It discloses key behavioral traits: the command runs multiple components 'in the correct order' and returns 'output as text (this command does not support JSON output format).' However, it doesn't mention potential side effects like database mutations, execution time, or error handling.
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?
Well-structured with purpose first, usage guidelines second, and return format third. The three sentences each earn their place, though the second sentence could be slightly more concise by combining the two usage scenarios.
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 (multi-step build process) and 100% schema coverage with an output schema present, the description provides excellent contextual completeness. It explains the comprehensive nature of the operation, when to use it, and clarifies the output format limitation.
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 description coverage is 100%, so the schema already documents all 6 parameters thoroughly. The description adds no parameter-specific information beyond what's in the schema, meeting the baseline expectation when schema coverage is high.
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 'Run build command (seeds, tests, snapshots, and models)' with specific verb+resource. It distinguishes from siblings by explaining this is a 'comprehensive build process' that runs multiple components in order, unlike single-purpose tools like dbt_seed or dbt_test.
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?
Explicitly states when to use: 'when it needs to execute a comprehensive build process... ideal for complete project deployment or ensuring all components work together.' This provides clear context for choosing this tool over simpler alternatives like dbt_run or dbt_test.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
dbt_compileA
Compile dbt models. An AI agent should use this tool when it needs to generate the SQL that will be executed without actually running it against the database. This is valuable for validating SQL syntax, previewing transformations, or investigating how dbt interprets models before committing to execution.
Returns:
Output from the dbt compile command as text (this command does not support JSON output format)
| Name | Required | Description | Default |
|---|---|---|---|
| models | No | Specific models to compile, using the dbt selection syntax | |
| selector | No | Named selector to use | |
| exclude | No | Models to exclude | |
| project_dir | No | ABSOLUTE PATH to the directory containing the dbt project (e.g. '/Users/username/projects/dbt_project' not '.') | . |
| profiles_dir | No | Directory containing the profiles.yml file (defaults to project_dir if not specified) |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden and does well: explains the tool is for preview/validation (not execution), discloses output format limitation ('does not support JSON output format'), and describes what the compilation process does. Could improve by mentioning performance implications or error handling.
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?
Perfectly structured: purpose statement first, usage guidance second, return format third. Every sentence earns its place with zero waste. The two-sentence format is efficient and front-loaded with the most important information.
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?
Complete for a compilation tool: clear purpose, explicit usage guidelines, behavioral context (preview vs execution), and output format disclosure. With 100% schema coverage and an output schema present, the description focuses appropriately on the conceptual aspects rather than repeating structured data.
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 description coverage is 100%, so parameters are well-documented in the schema. The description adds no specific parameter information beyond what's in the schema, but the schema documentation is comprehensive. Baseline 3 is appropriate when schema does the heavy lifting.
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: 'Compile dbt models' with specific explanation of what compilation does ('generate the SQL that will be executed without actually running it'). It distinguishes from siblings like dbt_run (which executes) and dbt_show (which shows compiled SQL with sample data).
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?
Explicitly states when to use: 'when it needs to generate the SQL that will be executed without actually running it' and provides three specific use cases (validating SQL syntax, previewing transformations, investigating dbt interpretations). This clearly differentiates from execution tools like dbt_run.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
dbt_debugA
Run dbt debug to validate the project setup. An AI agent should use this tool when it needs to troubleshoot configuration issues, check database connectivity, or verify that all project dependencies are properly installed. This is essential for diagnosing problems before attempting to run models or tests.
Returns:
Output from the dbt debug command as text (this command does not support JSON output format)
| Name | Required | Description | Default |
|---|---|---|---|
| project_dir | No | ABSOLUTE PATH to the directory containing the dbt project (e.g. '/Users/username/projects/dbt_project' not '.') | . |
| profiles_dir | No | Directory containing the profiles.yml file (defaults to project_dir if not specified) |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It effectively describes the tool's purpose (diagnostic validation), output format (text rather than JSON), and when it should be used (before running other operations). It doesn't mention potential side effects, performance characteristics, or error handling, but provides sufficient context for safe usage.
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 efficiently structured with two focused paragraphs: the first explains purpose and usage guidelines, the second clarifies output format. Every sentence adds value without redundancy, and the information is appropriately front-loaded with the most important context first.
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 diagnostic nature, 100% schema coverage, and the presence of an output schema (implied by 'Has output schema: true'), the description provides complete context. It explains what the tool does, when to use it, and the output format, which is sufficient for this type of validation 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?
Schema description coverage is 100%, so the schema already fully documents both parameters. The description doesn't add any parameter-specific information beyond what's in the schema. This meets the baseline expectation when schema coverage is complete.
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 specific action ('Run dbt debug to validate the project setup') and distinguishes it from siblings by focusing on troubleshooting configuration issues, checking connectivity, and verifying dependencies. It explicitly contrasts with tools like dbt_run or dbt_test that execute models rather than diagnose problems.
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 explicit guidance on when to use this tool ('when it needs to troubleshoot configuration issues, check database connectivity, or verify that all project dependencies are properly installed') and when not to use it ('before attempting to run models or tests'), clearly differentiating it from sibling tools that perform those execution tasks.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
dbt_depsA
Install dbt package dependencies. An AI agent should use this tool when it needs to install or update external packages that the dbt project depends on. This ensures that all required modules, macros, and models from other packages are available before running the project.
Returns:
Output from the dbt deps command as text (this command does not support JSON output format)
| Name | Required | Description | Default |
|---|---|---|---|
| project_dir | No | ABSOLUTE PATH to the directory containing the dbt project (e.g. '/Users/username/projects/dbt_project' not '.') | . |
| profiles_dir | No | Directory containing the profiles.yml file (defaults to project_dir if not specified) |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It effectively describes the tool's function (installing/updating dependencies) and output format (text from the dbt deps command, not JSON). However, it doesn't mention potential side effects like network dependencies, time requirements, or error conditions, which would be helpful for a mutation 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 efficiently structured with two sentences: the first states the purpose and usage guidelines, and the second explains the output format. Every sentence adds value without redundancy, and the information is front-loaded with the core functionality.
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 moderate complexity (installing dependencies), no annotations, and an output schema that exists (though the description clarifies it returns text, not JSON), the description is mostly complete. It covers purpose, usage, and output format, but could improve by mentioning behavioral aspects like idempotency or prerequisites.
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 100%, so the schema already documents both parameters (project_dir and profiles_dir) thoroughly. The description adds no additional parameter information beyond what's in the schema, maintaining the baseline score of 3 for high schema coverage.
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 specific action ('install dbt package dependencies') and resource ('external packages'), distinguishing it from siblings like dbt_run or dbt_test that perform different operations. It explicitly mentions installing or updating dependencies, which is distinct from building, compiling, or testing the project.
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 explicit guidance on when to use this tool: 'when it needs to install or update external packages that the dbt project depends on.' It also explains the purpose ('ensures that all required modules, macros, and models from other packages are available before running the project'), which implicitly suggests using it as a prerequisite before other operations like dbt_run or dbt_test.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
dbt_lsA
List dbt resources. An AI agent should use this tool when it needs to discover available models, tests, sources, and other resources within a dbt project. This helps the agent understand the project structure, identify dependencies, and select specific resources for other operations like running or testing.
Returns:
When output_format is 'json' (default):
- With verbose=False (default): returns a simplified JSON with only name, resource_type, and depends_on.nodes
- With verbose=True: returns a full JSON with all resource details
When output_format is 'name', 'path', or 'selector', returns plain text with the respective format.
| Name | Required | Description | Default |
|---|---|---|---|
| models | No | Specific models to list, using the dbt selection syntax. Note that you probably want to specify your selection here e.g. silver.fact | |
| selector | No | Named selector to use | |
| exclude | No | Models to exclude | |
| resource_type | No | Type of resource to list (model, test, source, etc.) | |
| project_dir | No | ABSOLUTE PATH to the directory containing the dbt project (e.g. '/Users/username/projects/dbt_project' not '.') | . |
| profiles_dir | No | Directory containing the profiles.yml file (defaults to project_dir if not specified) | |
| output_format | No | Output format (json, name, path, or selector) | json |
| verbose | No | Return full JSON output instead of simplified version |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden and does well by detailing output behavior based on parameters (verbose flag and output_format). It explains what gets returned in different scenarios, though it doesn't mention performance characteristics, error conditions, or authentication requirements.
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?
Well-structured with purpose first, then usage guidance, then detailed output behavior. Every sentence adds value, though the output format explanation is somewhat dense and could be more streamlined.
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 (8 parameters, no annotations, but with output schema), the description is complete. It covers purpose, usage context, and detailed output behavior. With an output schema present, it appropriately doesn't need to explain return value structure beyond the behavioral variations.
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 description coverage is 100%, so the schema already documents all 8 parameters thoroughly. The description adds value by explaining how output_format and verbose parameters affect return values, but doesn't provide additional semantic context for other parameters beyond what's in the 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 verb ('List') and resource ('dbt resources'), specifying it discovers models, tests, sources, and other resources. It distinguishes from siblings by focusing on discovery rather than execution operations like dbt_run or dbt_test.
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?
Explicitly states when to use: 'when it needs to discover available models, tests, sources, and other resources within a dbt project' and explains the purpose: 'helps the agent understand the project structure, identify dependencies, and select specific resources for other operations'. This provides clear context for choosing this tool over execution-oriented siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
dbt_runA
Run dbt models. An AI agent should use this tool when it needs to execute dbt models to transform data and build analytical tables in the data warehouse. This is essential for refreshing data or implementing new data transformations in a project.
Returns:
Output from the dbt run command as text (this command does not support JSON output format)
| Name | Required | Description | Default |
|---|---|---|---|
| models | No | Specific models to run, using the dbt selection syntax (e.g., "model_name+") | |
| selector | No | Named selector to use | |
| exclude | No | Models to exclude | |
| project_dir | No | ABSOLUTE PATH to the directory containing the dbt project (e.g. '/Users/username/projects/dbt_project' not '.') | . |
| profiles_dir | No | Directory containing the profiles.yml file (defaults to project_dir if not specified) | |
| full_refresh | No | Whether to perform a full refresh |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It effectively explains what the tool does (executes dbt models to transform data), mentions the output format (text, not JSON), and implies it's a write operation that changes data in the warehouse. It could be more explicit about potential side effects like data overwriting or performance impact.
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 with two paragraphs that efficiently convey purpose, usage context, and output format. The first sentence clearly states the core function, and the 'Returns' section provides important behavioral information. There's minimal wasted text.
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 6-parameter tool with no annotations but 100% schema coverage and an output schema, the description provides good context about what the tool does and when to use it. It explains the output format limitation (text not JSON) which is valuable. The main gap is lack of explicit guidance on when NOT to use it versus sibling tools like dbt_build or dbt_compile.
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 100%, so all parameters are well-documented in the schema itself. The description doesn't add any parameter-specific information beyond what's already in the schema descriptions, so it meets the baseline expectation without providing additional value.
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 dbt models', 'transform data', 'build analytical tables') and distinguishes it from siblings by mentioning its role in refreshing data or implementing new transformations. It explicitly names the resource (dbt models) and the action (run).
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 ('when it needs to execute dbt models to transform data and build analytical tables'), including essential use cases like refreshing data or implementing new transformations. However, it doesn't explicitly mention when NOT to use it or name specific alternatives among the sibling tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
dbt_seedA
Load CSV files as seed data. An AI agent should use this tool when it needs to load initial data from CSV files into the database. This is essential for creating reference tables, test datasets, or any static data that models will depend on.
Returns:
Output from the dbt seed command as text (this command does not support JSON output format)
| Name | Required | Description | Default |
|---|---|---|---|
| selector | No | Named selector to use | |
| exclude | No | Seeds to exclude | |
| project_dir | No | ABSOLUTE PATH to the directory containing the dbt project (e.g. '/Users/username/projects/dbt_project' not '.') | . |
| profiles_dir | No | Directory containing the profiles.yml file (defaults to project_dir if not specified) |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden and does well by explaining the tool's purpose and use cases. It adds valuable context about the output format ('Returns: Output from the dbt seed command as text (this command does not support JSON output format)'), which is crucial behavioral information not in the input schema. However, it doesn't mention potential side effects like database writes or performance implications.
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?
Well-structured with purpose first, then usage guidelines, and finally output format. Every sentence adds value, though the output format section could be slightly more integrated rather than a separate 'Returns:' block.
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?
Good completeness for a data loading tool with no annotations but an output schema. The description covers purpose, usage context, and output behavior. With 4 parameters fully documented in the schema and an output schema present, the main gap is lack of explicit warnings about database writes or permissions needed.
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 description coverage is 100%, providing good documentation for all 4 parameters. The description doesn't add any parameter-specific information beyond what's in the schema, so it meets the baseline of 3 where the schema does the heavy lifting without compensating with extra semantic context.
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 specific action ('Load CSV files as seed data') and resource ('database'), distinguishing it from siblings by focusing on initial data loading from CSV files rather than building, compiling, testing, or other dbt operations.
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?
Explicitly states when to use this tool ('when it needs to load initial data from CSV files into the database') and provides concrete use cases ('creating reference tables, test datasets, or any static data that models will depend on'), giving clear context for selection among sibling tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
dbt_showA
Preview the results of a model. An AI agent should use this tool when it needs to preview data from a specific model without materializing it. This helps inspect transformation results, debug issues, or demonstrate how data looks after processing without modifying the target database.
Returns:
Output from the dbt show command, defaulting to JSON format if not specified
| Name | Required | Description | Default |
|---|---|---|---|
| models | Yes | Specific model to show. For model references, use standard dbt syntax like 'model_name'. For inline SQL, use the format 'select * from {{ ref("model_name") }}' to reference other models. | |
| project_dir | No | ABSOLUTE PATH to the directory containing the dbt project (e.g. '/Users/username/projects/dbt_project' not '.') | . |
| profiles_dir | No | Directory containing the profiles.yml file (defaults to project_dir if not specified) | |
| limit | No | Limit the number of rows returned | |
| output | No | Output format (json, table, etc.) | json |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden and does well by clarifying this is a preview operation that doesn't modify the target database. It explains the non-destructive nature and default JSON output format, though it could mention performance characteristics or authentication requirements.
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 efficiently structured with a clear purpose statement followed by usage guidance and return format information. Every sentence adds value, and the information is front-loaded with the most important details about previewing without materialization.
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 moderate complexity, no annotations, but with an output schema present, the description provides good context about the tool's purpose and behavior. It covers the key distinction from materialization tools and mentions the return format, though could benefit from more operational details given the lack of annotations.
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 100% schema description coverage, the baseline is 3. The description doesn't add parameter-specific information beyond what's already in the schema, though it does mention the default JSON format which relates to the 'output' parameter. No additional syntax or usage examples are provided for parameters.
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 specific action ('preview the results of a model') and resource ('model'), distinguishing it from siblings by emphasizing non-materialization. It explicitly contrasts with tools like dbt_run that would materialize data, providing clear 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 explicit guidance on when to use this tool ('when it needs to preview data from a specific model without materializing it') and offers concrete use cases ('inspect transformation results, debug issues, or demonstrate how data looks after processing'). It clearly distinguishes from materialization tools in the sibling set.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
dbt_testA
Run dbt tests. An AI agent should use this tool when it needs to validate data quality and integrity by running tests defined in a dbt project. This helps ensure that data transformations meet expected business rules and constraints before being used for analysis or reporting.
Returns:
Output from the dbt test command as text (this command does not support JSON output format)
| Name | Required | Description | Default |
|---|---|---|---|
| models | No | Specific models to test, using the dbt selection syntax | |
| selector | No | Named selector to use | |
| exclude | No | Models to exclude | |
| project_dir | No | ABSOLUTE PATH to the directory containing the dbt project (e.g. '/Users/username/projects/dbt_project' not '.') | . |
| profiles_dir | No | Directory containing the profiles.yml file (defaults to project_dir if not specified) |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It effectively describes the core behavior (running tests to validate data quality) and importantly discloses that the output is 'text (this command does not support JSON output format)', which is valuable behavioral information not captured elsewhere. It doesn't mention execution time, error handling, or side effects, but provides solid core behavioral context.
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 efficiently structured with three focused sentences: purpose statement, usage guidance, and output format disclosure. Every sentence adds value without redundancy. The information is front-loaded with the core purpose, followed by usage context, and ending with important behavioral detail about the output format.
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 testing tool with 5 parameters, 100% schema coverage, and an output schema, the description provides good contextual completeness. It explains the purpose, when to use it, and importantly discloses the text-only output format. While it doesn't cover all possible behavioral aspects (like execution characteristics or error conditions), it provides sufficient context given the rich schema documentation.
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 100%, with all 5 parameters well-documented in the schema. The description adds no specific parameter information beyond what's already in the schema, so it meets the baseline of 3. The description focuses on the tool's purpose and output format rather than parameter details.
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 specific action ('run dbt tests'), the resource ('tests defined in a dbt project'), and the purpose ('validate data quality and integrity'). It distinguishes this tool from siblings by focusing specifically on testing rather than building, compiling, running, or other dbt operations.
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 explicit guidance on when to use this tool: 'when it needs to validate data quality and integrity by running tests defined in a dbt project.' It also explains the value: 'helps ensure that data transformations meet expected business rules and constraints before being used for analysis or reporting.' This gives clear context for when this testing tool should be selected over other dbt operations.
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. Dates show when Glama detected each change.
9 tool updates
- First observed
dbt_build - First observed
dbt_compile - First observed
dbt_debug - First observed
dbt_deps - First observed
dbt_ls - First observed
dbt_run - First observed
dbt_seed - First observed
dbt_show - First observed
dbt_test
TDQS
Each tool corresponds to a distinct dbt CLI command with a clear, non-overlapping purpose. The descriptions explicitly differentiate their use cases, such as dbt_build for comprehensive builds versus dbt_run for model execution, preventing agent misselection.
All tool names follow a consistent 'dbt_' prefix with the exact CLI command name in lowercase, such as dbt_build, dbt_compile, and dbt_debug. This uniform pattern makes the set predictable and easy to navigate for agents.
With 9 tools, the server covers core dbt CLI operations without being overwhelming. This count aligns well with the domain, providing essential commands for project management, execution, and validation in a data transformation workflow.
The tool set offers comprehensive coverage of dbt CLI functionality, including project setup (debug, deps), resource listing (ls), execution (run, build, seed, test), and inspection (compile, show). No obvious gaps exist for typical agent workflows in this domain.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
A comprehensive Model Context Protocol (MCP) server that enables AI assistants to interact with yo…
A Model Context Protocol server for Wix AI tools
The Mercado Pago MCP Server implements the Model Context Protocol to provide AI agents and LLMs with access to Mercado Pago's APIs and tools within compatible development environments. It acts as an intermediary that translates Mercado Pago resources into executable functions (tools) that AI applications can invoke to perform actions and automate flows. The server simplifies integration, enables using documentation to implement or improve code, and optimizes operations through natural language interactions without manual implementations.
Model Context Protocol server for the Apideck Unified API. Connect any MCP-compatible agent framework to 100+ accounting systems, HRIS platforms, file storage providers, and more through one integration. More information https://www.apideck.com/mcp-server
Related MCP Servers
- AlicenseBqualityAmaintenanceA MCP (Model Context Protocol) server for interacting with dbt.16602Apache 2.0
- AlicenseBqualityAmaintenanceA read-only MCP server that exposes dbt project artifacts and data quality result tables (BigQuery/Postgres) to LLM clients, enabling deep introspection, run-history analysis, source freshness, test coverage, and lineage walks.2774MIT
- FlicenseNot gradedqualityDmaintenanceA minimal, extensible MCP server to run dbt models via CLI, HTTP API, or AI interfaces like Claude, with Slack notifications for task completions.2-
- AlicenseNot gradedqualityDmaintenanceMCP server that provides tools to interact with dbt, including dbt Core, Cloud CLI, Semantic Layer, and Discovery API.Apache 2.0
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/MammothGrowth/dbt-cli-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server