CtrlK
BlogDocsLog inGet started
Tessl Logo

configuring-dbt-mcp-server

Use when setting up, configuring, or troubleshooting the dbt MCP server for AI tools like Claude Desktop, Claude Code, Cursor, or VS Code.

Install with Tessl CLI

npx tessl i github:dbt-labs/dbt-agent-skills --skill configuring-dbt-mcp-server
What are skills?

84

Quality

83%

Does it follow best practices?

Impact

Pending

No eval scenarios have been run

SKILL.md
Review
Evals

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

How to Find Your Credentials

Which Token Type Should I Use?

Use CaseToken TypeWhy
Personal development setupPersonal Access Token (PAT)Inherits your permissions, works with all APIs including execute_sql
Shared team setupService TokenMultiple users, controlled permissions, separate from individual accounts
Using execute_sql toolPAT (required)SQL tools that require x-dbt-user-id need a PAT
CI/CD or automationService TokenSystem-level access, not tied to a person

Personal Access Token (PAT)

  1. Go to Account Settings → expand API tokens → click Personal tokens
  2. Click Create personal access token
  3. Enter a descriptive name and click Save
  4. Copy the token immediately — it won't be shown again

Notes:

  • Requires a Developer license
  • Inherits all permissions from your user account
  • Account-scoped: create separate tokens for each dbt account you access
  • Rotate regularly for security

Service Token

Use service tokens for system-level integrations (CI/CD, automation) rather than user-specific access.

  1. Go to Account SettingsService Tokens (in left sidebar)
  2. Click + New Token
  3. Select the appropriate permission set for your use case
  4. Save the token immediately — it won't be shown again

Permission sets for MCP:

  • Semantic Layer Only: For querying metrics only
  • Metadata Only: For Discovery API access
  • Job Admin: For Admin API (triggering jobs)
  • Developer: For broader access

Notes:

  • Requires Developer license + account admin permissions to create
  • Service tokens belong to the account, not a user
  • Cannot use service tokens for execute_sql — use PAT instead

Account ID

  1. Sign in to dbt Cloud
  2. Look at the URL in your browser — the Account ID is the number after /accounts/

Example: In https://cloud.getdbt.com/settings/accounts/12345/..., the Account ID is 12345

Alternative: Go to SettingsAccount Settings and check the URL.

Environment ID (Production or Development)

  1. In dbt Cloud, go to DeployEnvironments
  2. Click on the environment (Production or Development)
  3. Look at the URL — the Environment ID is the last number

URL pattern: https://cloud.getdbt.com/deploy/<account_id>/projects/<project_id>/environments/<environment_id>

Example: In .../environments/98765, the Environment ID is 98765

User ID

  1. Go to Account SettingsTeamUsers
  2. Click on your user profile
  3. Look at the URL — the number after /users/ is your User ID

Example: In https://cloud.getdbt.com/settings/accounts/12345/users/67891, the User ID is 67891

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": "your-token",
        "DBT_ACCOUNT_ID": "your-account-id",
        "DBT_PROD_ENV_ID": "your-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=your-token
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 your-token",
        "x-dbt-prod-environment-id": "your-prod-env-id"
      }
    }
  }
}

Additional headers for SQL/Fusion tools:

{
  "headers": {
    "Authorization": "Token your-token",
    "x-dbt-prod-environment-id": "your-prod-env-id",
    "x-dbt-dev-environment-id": "your-dev-env-id",
    "x-dbt-user-id": "your-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, committed to version control for team sharing

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)

Troubleshooting

"uvx not found" or "spawn uvx ENOENT"

Find full path and use it in config:

# macOS/Linux
which uvx
# Use output like: /opt/homebrew/bin/uvx

# Windows
where uvx

Update config:

{
  "command": "/opt/homebrew/bin/uvx",
  "args": ["dbt-mcp"]
}

"Could not connect to MCP server"

  1. Check uvx is installed: uvx --version
  2. Verify paths exist: ls $DBT_PROJECT_DIR/dbt_project.yml
  3. Check dbt works: $DBT_PATH --version

OAuth Not Working

Only accounts with static subdomains (e.g., abc123.us1.dbt.com) support OAuth. Check your Access URLs in dbt platform settings.

Remote Server Returns 401/403

  • Verify token has Semantic Layer and Developer permissions
  • For execute_sql: Use personal access token, not service token
  • Check environment ID is correct (from Orchestration page)

Common Mistakes

MistakeFix
Using npm/npx instead of uvxThe package is dbt-mcp via uvx, not npm
Wrong env var names (DBT_CLOUD_*)Use DBT_TOKEN, DBT_PROD_ENV_ID, etc.
Using mcpServers in VS CodeVS Code uses servers key in mcp.json
Service token for execute_sqlUse personal access token for SQL tools
Windows paths in WSLUse Linux paths (/home/...) not Windows
Local user settings in WSLMust use Remote settings in VS Code
Missing uv installationInstall uv first: https://docs.astral.sh/uv/

Environment Variable Reference

VariableRequired ForDescription
DBT_PROJECT_DIRCLI commandsPath to folder with dbt_project.yml
DBT_PATHCLI commandsPath to dbt executable
DBT_HOSTPlatform accessDefault: cloud.getdbt.com
DBT_TOKENPlatform (non-OAuth)Personal or service token
DBT_ACCOUNT_IDAdmin APIYour dbt account ID
DBT_PROD_ENV_IDPlatform accessProduction environment ID
DBT_DEV_ENV_IDSQL/Fusion toolsDevelopment environment ID
DBT_USER_IDSQL/Fusion toolsYour dbt user ID
MULTICELL_ACCOUNT_PREFIXMulti-cell accountsAccount prefix (exclude from DBT_HOST)
DBT_CLI_TIMEOUTCLI commandsTimeout in seconds (default: 60)
DBT_MCP_LOG_LEVELDebuggingDEBUG, INFO, WARNING, ERROR, CRITICAL
Repository
dbt-labs/dbt-agent-skills
Last updated
Created

Is this your skill?

If you maintain this skill, you can claim it as your own. Once claimed, you can manage eval scenarios, bundle related skills, attach documentation or rules, and ensure cross-agent compatibility.