dbt CLI MCP Server
DBT CLI MCP 서버
dbt CLI 도구를 래핑하는 MCP(Model Context Protocol) 서버로, AI 코딩 에이전트가 표준화된 MCP 도구를 통해 dbt 프로젝트와 상호 작용할 수 있도록 합니다.
특징
MCP 도구를 통해 dbt 명령 실행
모든 주요 DBT 작업(실행, 테스트, 컴파일 등) 지원
직접 상호 작용을 위한 명령줄 인터페이스
DBT 프로젝트에 대한 환경 변수 관리
구성 가능한 dbt 실행 파일 경로
유연한 profiles.yml 위치 구성
Related MCP server: @us-all/dbt-mcp
설치
필수 조건
Python 3.10 이상
Python 환경 관리를 위한
uv도구dbt CLI 설치됨
설정
지엑스피1
용법
명령줄 인터페이스
이 패키지는 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필요)
{ "모델": "고객", "프로젝트 디렉토리": "/경로/dbt/프로젝트", "제한": 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: 24MCP 서버를 통해 명령을 실행할 때 프로젝트 디렉토리가 올바르게 구성되었고 두 구성 파일이 모두 있는지 확인하세요.
개발
통합 테스트
이 프로젝트에는 실제 DBT 프로젝트에 대한 기능을 검증하는 통합 테스트가 포함되어 있습니다.
# Run all integration tests
python integration_tests/run_all.py
# Run a specific integration test
python integration_tests/test_dbt_run.py테스트 프로젝트 설정
통합 테스트는 dbt_integration_tests 디렉터리에 Git 하위 모듈로 포함된 jaffle_shop_duckdb 프로젝트를 사용합니다. 설정 섹션에서 설명한 대로 --recurse-submodules 옵션을 사용하여 저장소를 복제하면 자동으로 초기화됩니다.
원래 저장소에서 테스트 프로젝트를 최신 버전으로 업데이트해야 하는 경우:
git submodule update --remote dbt_integration_tests/jaffle_shop_duckdbjaffle_shop_duckdb 디렉토리에서 누락된 파일에 대한 오류가 표시되는 경우 하위 모듈을 초기화해야 할 수 있습니다.
git submodule update --init특허
MIT
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