configuring-dbt-mcp-server

bởi dbt-labs

Tạo JSON cấu hình máy chủ MCP, giải quyết thiết lập xác thực và xác thực kết nối máy chủ cho dbt. Sử dụng khi thiết lập, cấu hình hoặc…

npx skills add https://github.com/dbt-labs/dbt-agent-skills --skill configuring-dbt-mcp-server

Configure dbt MCP Server

Overview

The dbt MCP server connects AI tools to dbt's CLI, Semantic Layer, Discovery API, and Admin API. This skill guides users through setup with the correct configuration for their use case.

Decision Flow

flowchart TB
    start([User wants dbt MCP]) --> q1{Local or Remote?}
    q1 -->|dev workflows,<br>CLI access needed| local[Local Server<br>uvx dbt-mcp]
    q1 -->|consumption only,<br>no local install| remote[Remote Server<br>HTTP endpoint]
    local --> q2{Which client?}
    remote --> q2
    q2 --> claude_desktop[Claude Desktop]
    q2 --> claude_code[Claude Code]
    q2 --> cursor[Cursor]
    q2 --> vscode[VS Code]
    claude_desktop --> config[Generate config<br>+ test setup]
    claude_code --> config
    cursor --> config
    vscode --> config

Questions to Ask

1. Server Type

Ask: "Do you want to use the local or remote dbt MCP server?"

Local ServerRemote Server
Runs on your machine via uvxConnects via HTTP to dbt platform
Required for development (authoring models, tests, docs) but can also connect to the dbt platform for consumption (querying metrics, exploring metadata)Best for consumption (querying metrics, exploring metadata)
Supports dbt CLI commands (run, build, test, show)No CLI commands (run, build, test)
Works without a dbt platform account but can also connect to the dbt platform for development (authoring models, tests, docs)Requires dbt platform account
No credit consumptionConsumes dbt Copilot credits

2. MCP Client

Ask: "Which MCP client are you using?"

  • Claude Desktop
  • Claude Code (CLI)
  • Cursor
  • VS Code

3. Use Case (Local Server Only)

Ask: "What's your use case?"

CLI OnlyPlatform OnlyPlatform + CLI
dbt Core/Fusion usersdbt Cloud without local projectFull access to both
No platform account neededOAuth or token authRequires paths + credentials

4. Tools to Enable

Ask: "Which tools do you want enabled?" (show defaults)

Tool CategoryDefaultEnvironment Variable
dbt CLI (run, build, test, compile)EnabledDISABLE_DBT_CLI=true to disable
Semantic Layer (metrics, dimensions)EnabledDISABLE_SEMANTIC_LAYER=true to disable
Discovery API (models, lineage)EnabledDISABLE_DISCOVERY=true to disable
Admin API (jobs, runs)EnabledDISABLE_ADMIN_API=true to disable
SQL (text_to_sql, execute_sql)DisabledDISABLE_SQL=false to enable
Codegen (generate models/sources)DisabledDISABLE_DBT_CODEGEN=false to enable

Prerequisites

Local Server

  1. Install uv: https://docs.astral.sh/uv/getting-started/installation/
  2. Have a dbt project (for CLI commands)
  3. Find paths:
    • DBT_PROJECT_DIR: Folder containing dbt_project.yml
      • macOS/Linux: pwd from project folder
      • Windows: Full path with forward slashes (e.g., C:/Users/name/project)
    • DBT_PATH: Path to dbt executable
      • macOS/Linux: which dbt
      • Windows: where dbt

Remote Server

  1. dbt Cloud account with AI features enabled
  2. Production environment ID (from Orchestration page)
  3. Personal access token or service token

See How to Find Your Credentials for detailed guidance on obtaining tokens and IDs.

Credential Security

  • Always use environment variable references (e.g., ${DBT_TOKEN}) instead of literal token values in configuration files that may be committed to version control
  • Never log, display, or echo token values in terminal output
  • When using .env files, ensure they are added to .gitignore to prevent accidental commits
  • Recommend users rotate tokens regularly and use the minimum required permission set

Configuration Templates

Local Server - CLI Only

{
  "mcpServers": {
    "dbt": {
      "command": "uvx",
      "args": ["dbt-mcp"],
      "env": {
        "DBT_PROJECT_DIR": "/path/to/your/dbt/project",
        "DBT_PATH": "/path/to/dbt"
      }
    }
  }
}

Local Server - Platform + CLI (OAuth)

{
  "mcpServers": {
    "dbt": {
      "command": "uvx",
      "args": ["dbt-mcp"],
      "env": {
        "DBT_HOST": "https://your-subdomain.us1.dbt.com",
        "DBT_PROJECT_DIR": "/path/to/project",
        "DBT_PATH": "/path/to/dbt"
      }
    }
  }
}

Local Server - Platform + CLI (Token Auth)

{
  "mcpServers": {
    "dbt": {
      "command": "uvx",
      "args": ["dbt-mcp"],
      "env": {
        "DBT_HOST": "cloud.getdbt.com",
        "DBT_TOKEN": "${DBT_TOKEN}",
        "DBT_ACCOUNT_ID": "${DBT_ACCOUNT_ID}",
        "DBT_PROD_ENV_ID": "${DBT_PROD_ENV_ID}",
        "DBT_PROJECT_DIR": "/path/to/project",
        "DBT_PATH": "/path/to/dbt"
      }
    }
  }
}

Local Server - Using .env File

{
  "mcpServers": {
    "dbt": {
      "command": "uvx",
      "args": ["--env-file", "/path/to/.env", "dbt-mcp"]
    }
  }
}

.env file contents:

DBT_HOST=cloud.getdbt.com
DBT_TOKEN=<set-via-env-or-secret-manager>
DBT_ACCOUNT_ID=<your-account-id>
DBT_PROD_ENV_ID=<your-prod-env-id>
DBT_DEV_ENV_ID=<your-dev-env-id>
DBT_USER_ID=<your-user-id>
DBT_PROJECT_DIR=/path/to/project
DBT_PATH=/path/to/dbt

Remote Server

{
  "mcpServers": {
    "dbt": {
      "url": "https://cloud.getdbt.com/api/ai/v1/mcp/",
      "headers": {
        "Authorization": "Token ${DBT_TOKEN}",
        "x-dbt-prod-environment-id": "${DBT_PROD_ENV_ID}"
      }
    }
  }
}

Additional headers for SQL/Fusion tools:

{
  "headers": {
    "Authorization": "Token ${DBT_TOKEN}",
    "x-dbt-prod-environment-id": "${DBT_PROD_ENV_ID}",
    "x-dbt-dev-environment-id": "${DBT_DEV_ENV_ID}",
    "x-dbt-user-id": "${DBT_USER_ID}"
  }
}

Client-Specific Setup

Claude Desktop

  1. Click Claude menu in system menu bar (not in-app)
  2. Select Settings...
  3. Go to Developer tab
  4. Click Edit Config
  5. Add the JSON configuration
  6. Save and restart Claude Desktop
  7. Verify: Look for MCP server indicator in bottom-right of input box

Config location:

  • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
  • Windows: %APPDATA%\Claude\claude_desktop_config.json

Claude Code (CLI)

Run:

claude mcp add dbt -s user -- uvx dbt-mcp

This adds the server to your user scope/config (on this system: ~/.claude.json).

For a project-specific setup, run:

claude mcp add dbt -s project -- uvx dbt-mcp

This adds the server to .mcp.json in your project root.

Alternatively, you can use the manual configuration below.

Manual configuration: Edit ~/.claude.json (user scope) or create .mcp.json (project scope) in your project root:

  • ~/.claude.json: Global across all projects
  • .mcp.json: Project-specific, can be committed to version control for team sharing. If using token auth, use environment variable references — never commit literal tokens.

For project-specific dbt setups, use .mcp.json so your team shares the same configuration.

Once the config is created, make sure to add the JSON configuration under the mcpServers key.

Cursor

  1. Open Cursor menuSettingsCursor SettingsMCP
  2. Add the JSON configuration
  3. Update paths and credentials
  4. Save

VS Code

  1. Open Command Palette (Cmd/Ctrl + Shift + P)
  2. Run "MCP: Open User Configuration" (or Workspace for project-specific)
  3. Add the JSON configuration (note: VS Code uses servers not mcpServers):
{
  "servers": {
    "dbt": {
      "command": "uvx",
      "args": ["dbt-mcp"],
      "env": {
        "DBT_PROJECT_DIR": "/path/to/project",
        "DBT_PATH": "/path/to/dbt"
      }
    }
  }
}
  1. Open SettingsFeaturesChat → Enable MCP
  2. Verify: Run "MCP: List Servers" from Command Palette

WSL Users: Configure in Remote settings, not local user settings:

  • Run "Preferences: Open Remote Settings" from Command Palette
  • Use full Linux paths (e.g., /home/user/project, not Windows paths)

Verification Steps

Test Local Server Config

Recommended: Use .env file

  1. Create a .env file in your project root directory and add minimum environment variables for the CLI tools:
DBT_PROJECT_DIR=/path/to/project
DBT_PATH=/path/to/dbt
  1. Test the server:
uvx --env-file .env dbt-mcp

Alternative: Environment variables

# Temporary test (variables only last for this session)
export DBT_PROJECT_DIR=/path/to/project
export DBT_PATH=/path/to/dbt
uvx dbt-mcp

No errors = successful configuration.

Verify in Client

After setup, ask the AI:

  • "What dbt tools do you have access to?"
  • "List my dbt metrics" (if Semantic Layer enabled)
  • "Show my dbt models" (if Discovery enabled)

See Troubleshooting for common issues and fixes.

See Environment Variable Reference for the full list of supported variables.

Thêm skills từ dbt-labs

configuring-dbt-mcp-server
dbt-labs
configuring-dbt-mcp-server — một kỹ năng có thể cài đặt cho các tác nhân AI, được xuất bản bởi dbt-labs/dbt-agent-skills.
official
adding-dbt-unit-test
dbt-labs
Tạo định nghĩa YAML kiểm thử đơn vị để giả lập đầu vào mô hình thượng nguồn và xác thực đầu ra mong đợi. Sử dụng khi thêm kiểm thử đơn vị cho mô hình dbt hoặc thực hành…
official
answering-natural-language-questions-with-dbt
dbt-labs
Viết và thực thi các truy vấn SQL trên kho dữ liệu bằng cách sử dụng Semantic Layer của dbt hoặc SQL tùy chỉnh để trả lời các câu hỏi kinh doanh. Sử dụng khi người dùng hỏi về…
official
auditing-skills
dbt-labs
Sử dụng khi kiểm tra kỹ năng về các vấn đề bảo mật hoặc chất lượng, xem xét kết quả kiểm toán từ skills.sh hoặc Tessl, hoặc khắc phục các phát hiện trên các kỹ năng đã được công bố.
official
building-dbt-semantic-layer
dbt-labs
Sử dụng khi tạo hoặc sửa đổi các thành phần của dbt Semantic Layer — mô hình ngữ nghĩa, chỉ số, thứ nguyên, thực thể, phép đo hoặc time spines. Bao gồm MetricFlow…
official
creating-mermaid-dbt-dag
dbt-labs
Tạo sơ đồ luồng Mermaid về dòng dõi mô hình dbt bằng các công cụ MCP, manifest.json hoặc phân tích mã trực tiếp làm phương án dự phòng. Sử dụng khi trực quan hóa mô hình dbt…
official
fetching-dbt-docs
dbt-labs
Truy xuất và tìm kiếm các trang tài liệu dbt ở định dạng markdown thân thiện với LLM. Sử dụng khi lấy tài liệu dbt, tra cứu tính năng dbt, hoặc trả lời…
official
migrating-dbt-core-to-fusion
dbt-labs
Sử dụng khi người dùng cần trợ giúp phân loại lỗi di chuyển từ dbt-core sang Fusion. Chạy dbt-autofix trước, sau đó phân loại các lỗi còn lại thành các danh mục có thể xử lý…
official