I craft unique cereal names, stories, and ridiculously cute Cereal Baby images.

dbt-cli-mcp
DBT CLI MCP Server
3 years
Works with Finder
2
Github Watches
2
Github Forks
7
Github Stars
DBT CLI MCP Server
A Model Context Protocol (MCP) server that wraps the dbt CLI tool, enabling AI coding agents to interact with dbt projects through standardized MCP tools.
Features
- Execute dbt commands through MCP tools
- Support for all major dbt operations (run, test, compile, etc.)
- Command-line interface for direct interaction
- Environment variable management for dbt projects
- Configurable dbt executable path
- Flexible profiles.yml location configuration
Installation
Prerequisites
- Python 3.10 or higher
-
uv
tool for Python environment management - dbt CLI installed
Setup
# 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]"
Usage
Command Line Interface
The package provides a command-line interface for direct interaction with 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
You can also use the module directly:
python -m src.cli run --models customers --project-dir /path/to/project
Command Line Options
-
--dbt-path
: Path to dbt executable (default: "dbt") -
--env-file
: Path to environment file (default: ".env") -
--log-level
: Logging level (default: "INFO") -
--profiles-dir
: Path to directory containing profiles.yml file (defaults to project-dir if not specified)
Environment Variables
The server can also be configured using environment variables:
-
DBT_PATH
: Path to dbt executable -
ENV_FILE
: Path to environment file -
LOG_LEVEL
: Logging level -
DBT_PROFILES_DIR
: Path to directory containing profiles.yml file
Using with MCP Clients
To use the server with an MCP client like Claude for Desktop, add it to the client's configuration:
{
"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
}
}
}
}
⚠️ IMPORTANT: Absolute Project Path Required ⚠️
When using any tool from this MCP server, you MUST specify the FULL ABSOLUTE PATH to your dbt project directory with the project_dir
parameter. Relative paths will not work correctly.
// ❌ INCORRECT - Will NOT work
{
"project_dir": "."
}
// ✅ CORRECT - Will work
{
"project_dir": "/Users/username/path/to/your/dbt/project"
}
See the complete dbt MCP usage guide for more detailed instructions and examples.
Available Tools
The server provides the following MCP tools:
-
dbt_run
: Run dbt models (requires absoluteproject_dir
) -
dbt_test
: Run dbt tests (requires absoluteproject_dir
) -
dbt_ls
: List dbt resources (requires absoluteproject_dir
) -
dbt_compile
: Compile dbt models (requires absoluteproject_dir
) -
dbt_debug
: Debug dbt project setup (requires absoluteproject_dir
) -
dbt_deps
: Install dbt package dependencies (requires absoluteproject_dir
) -
dbt_seed
: Load CSV files as seed data (requires absoluteproject_dir
) -
dbt_show
: Preview model results (requires absoluteproject_dir
){ "models": "customers", "project_dir": "/path/to/dbt/project", "limit": 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
When running commands through the MCP server, ensure your project directory is structured correctly with both configuration files present.
Development
Integration Tests
The project includes integration tests that verify functionality against a real dbt project:
# Run all integration tests
python integration_tests/run_all.py
# Run a specific integration test
python integration_tests/test_dbt_run.py
Test Project Setup
The integration tests use the jaffle_shop_duckdb project which is included as a Git submodule in the dbt_integration_tests directory. When you clone the repository with --recurse-submodules
as mentioned in the Setup section, this will automatically be initialized.
If you need to update the test project to the latest version from the original repository:
git submodule update --remote dbt_integration_tests/jaffle_shop_duckdb
If you're seeing errors about missing files in the jaffle_shop_duckdb directory, you may need to initialize the submodule:
git submodule update --init
License
MIT
相关推荐
Converts Figma frames into front-end code for various mobile frameworks.
Confidential guide on numerology and astrology, based of GG33 Public information
A unified API gateway for integrating multiple etherscan-like blockchain explorer APIs with Model Context Protocol (MCP) support for AI assistants.
Mirror ofhttps://github.com/suhail-ak-s/mcp-typesense-server
本项目是一个钉钉MCP(Message Connector Protocol)服务,提供了与钉钉企业应用交互的API接口。项目基于Go语言开发,支持员工信息查询和消息发送等功能。
Micropython I2C-based manipulation of the MCP series GPIO expander, derived from Adafruit_MCP230xx
Short and sweet example MCP server / client implementation for Tools, Resources and Prompts.
Reviews

user_RXgRu9qa
As an avid user of Apisix Mcp, I must commend it for its efficiency and ease of use. The product by api7 has significantly improved our API management processes. Its seamless integration and robust performance make it an indispensable tool in our stack. Highly recommended for anyone looking for a reliable API gateway solution!