All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, adheres to Semantic Versioning, and is generated by Changie.
- Adds product docs tools: search_product_docs and get_product_doc_pages
- Add dependabot YML config
- Loosen version pin to dbt-protos>=1.0.431
- Add meta field passthrough to tool definition infra for MCP Apps support
- Upgrade MCP SDK version pin from ==1.23.1 to ==1.26.0
- Metadata tool for current branch
- Classify ToolCallErrors as client/server via TypeAlias unions and catch COMPILED timeouts as SemanticLayerQueryTimeoutError
- Recategorize fetch_performance errors
- Add validation for dbt LSP args in LSPClient
- Show user-friendly error message on OAuth setup failure instead of raw TypeError
- Add Dockerfile and .dockerignore for containerized deployment
- Add get_all_macros discovery tool
- Move Logging setup before settings so settings can be logged.
- Add AI SDK agent example for building TypeScript applications with dbt MCP
- Handle invalid tool names in tool allowlist
- Enhance docs gen script to include d2.png updates / proper MCP casing
- Align get_lineage_dev to have similar signature to get_lineage. Rename get_model_lineage_dev to get_lineage to align to naming better as well.
- Use task:d2 to generate d2.png
- Add human tool descriptions for improved README documentation
- Split selector into model_selector and column_selector for dbt.listNodes LSP command
- Fix empty error messages in semantic layer query_metrics tool errors
- Fix get_metrics_compiled_sql and query_metrics failing with "Group by metric_time not found" when combining metrics from different semantic models
- Fix Admin API tools failing due to improper URL encoding of include_related parameter
- Extend detect_binary_type timeout to account for long-running dbt executable
- Add MCP tool to expose server version
- Add the ability to retrieve project information in the Admin tools (incl. repo)
- Add metadata field to get_dimensions tool response
- Add get_model_performance discovery tool
- Add automatic token refresh at startup using refresh token instead of requiring full re-authentication
- Add ability to select production environment during OAuth setup instead of relying on auto-detection
- Add a new CLI tool get_node_details_dev to retrieve information for a node in the current project
- Use httpx for admin tools
- Add to_fastmcp_internal_tool utility to ToolDefinition
- Fix event loop issues with proxied tools by moving registration to app lifecycle
- Prevent duplicate flows for internal/external PRs
- CrewAI agent example with dbt-mcp
- Upgrade dependencies to address CVEs
- Use Python importlib over git in subprocess to get version for manifest.json
- Add generic_dbt_mcp_tool decorator
- Fix get_job_run_error returning empty failed_steps when artifacts don't exist
- Make development environment optional when reusing OAuth context, fixing re-auth loop for projects without a dev environment
- Expand tilde (~) in DBT_PATH, DBT_PROJECT_DIR, and DBT_PROFILES_DIR environment variables to support paths like ~/.local/bin/dbt
- Add MCP Bundle for one-click installation
- Adding get_lineage discovery mcp tool.
- Fix integration tests
- Running integration tests in CI
- Using client session for client tool
- Fixing integration tests for branches from forks
- Using uv for Python pre-commit hooks
- fix: Prevent template injection vulnerabilities
- Migrate admin tools definitions to use the dbt_mcp_tool decorator
- Close proxied_tools_manager for exceptions in listing proxied tools
- Add ability to get model lineage via the cli.
- Add Fusion tools to ToolName enum
- Add search tool to ToolName enum
- Upgrade python MCP SDK
- Add x-dbt-partner-source header to discovery tools
- Extend JSON encoder to handle PyArrow time, timedelta, and binary types in semantic layer query result
- Decouple tool registration from ToolName
- Added explicit allowlist system for tool configuration, enabling fine-grained control over which tools are available.
- Automate Toolset and Tools documentation generation into README
- Test TOOLSET_TO_DISABLE_ATTR and TOOLSET_TO_ENABLE_ATTR
- Python Cursor rule and stylistic guidelines
- Fix discovery tool prompt tool parameters
- Fix JSON serialization error when querying metrics that return Decimal values from the dbt Semantic Layer
- Get resource details for search resources
- stderr logger configuration with formatting and log lever override
- Rename keyword search tool
- Refactor discovery fetchers to share pagination
- Override js-yaml version
- Update gitignore
- Remove pandas dependency
- Use httpx for semantic layer requests
- Use httpx for discovery requests
- Remove search tool
- Fix semantic layer client blocking requests
- Fix lsp binary detection on Windows
- Extend get_job_run_error to support optional warnings
- Add search tools to discovery toolset
- Refactor proxied tools. Enable new search tools.
- Add discovery tool context
- Update d2 diagram with get_all_sources/get_source_details
- Add Semantic Layer tools context
- Add get_source_details tool to retrieve column-level information for dbt sources, providing feature parity with get_model_details
- Return SL query results in ISO timestamp format rather than Unix timestamp
- Undo removal of .env.example file
- correctly apply config.disable_tools when registering lsp tools
-
This adds the get all sources tool.
-
add auto-disable and better validation of MCP settings. A whole bunch of tests needed to change because of this Created fixture for allowing the default behavior to assume all required fields for settings are fully set
-
Add list_saved_queries tool to the Semantic Layer, enabling discovery of predefined MetricFlow queries via GraphQL API. This allows AI agents to list and search saved queries with their associated metrics, dimensions, and filters.
- Abstract LSP client and LSP connection via providers.
- Add version number guidelines to contributing.md
- Make release version determination automatic based on changie changelog entries. The workflow now defaults to 'auto' mode which uses 'changie batch auto' to
- Minor update to the instruction for LSP tool
- Incroduce support for fusion LSP
- Add support for Python debugger
- Update pyproject.toml including development status
- Add example for aws_strands_agent
- Exclude Python 3.14 for now as pyarrow hasn't released wheels yet
- Improved retry logic and post project selection screen
- Avoid double counting in usage tracking proxied tools
- Categorizing ToolCallErrors
- Improved oauth error handling
- Remove oauth env var feature flag. Enable oauth broadly.
- Improved logging for development
- Updating prompts to include examples to avoid bad parameter generation
- Remove DBT_HOST prefix
- Update usage tracking with new fields
- Write .user.yml if it does not exist
- Changed UsageTracker to a protocol
- Fix get_job_run_error truncated log output
- Add get_job_run_error to Admin API tools
- Reorganize code and add ability to format the arrow table differently
- Adding the dbt codegen toolset.
- Updates README with new tools
- Fix .user.yml error with Fusion
- Allow doc files to skip changie requirements
- Upgrade @vitejs/plugin-react
- Add ruff lint config to enforce Python 3.9+ coding style
- Opt-out of usage tracking with standard dbt methods
- Rename SemanticLayerConfig.service_token to SemanticLayerConfig.token
- Fix Error handling as per native MCP error spec
- Use
dbt --helpto identify binary type - Increase dbt CLI timeout default
- Implement SemanticLayerClientProvider
- Update how we identify CLIs
- Create ConfigProvider ABC
- Allow creating pre-releases
- Return compiled code in get_model_details
- Handle Claude Desktop running multiple MCP server instances
- Add docs for using the MCP server with google ADK and dbt-core
- Add search string to SL metadata queries
- Improve parameters in query_metrics examples
- Reduce token usage in
get_job_run_detailsresponse by removing debug param and unnecessary logs - Automatically refresh oauth token
- Improve dbt platform context mcp.yml parsing
- Add PR and issue templates
- Address claude desktop re-triggering oauth on exit
- Turning off caching for static files
- Add account id to dbt platform context
- Add tools to retrieve exposure information from Disco API
- Expect string sub in oauth JWT
- Using sync endpoints for oauth FastAPI server
- Fix release pipeline
- Adding the ability to return the config.meta attribute from list metrics to give the LLM more context
- Oauth initial implementation
- Fix #251 - Add flag for no color + ability to detect binary type
- Add docs for using the MCP server with Pydantic AI
- Don't run mypy on examples
- Add support for --vars flag
- Allow headers in AdminApiConfig
- Remove redundant and outdated documentation
- Update docs with new tools
- Using streamable http for SQL tools
- Correctly handle admin API host containing protocol prefix
- Add support for --full-refresh flag
- Adds a new tool to get model health (last run, tests, source freshness) from discovery API
- Add operational/admin tools to interact with the dbt platform
- LangGraph create_react_agent example
- Make model_name optional for more discovery tools
- Update example with OpenAI to show tool calls
- Fix for timeout on Windows
- Add default --limit to show tool
- Define toolsets
- Fix the prompt to ensure grain is passed even for non-time group by"
- Upgrade dbt-sl-sdk
- Tool policies
- Added Semantic Layer tool to get compiled sql
- Fix JSON formatting in README
- Document dbt Copilot credits relationship
- Make model_name of get_model_details optional
- Add ToolAnnotations
- Add alias field to GET_MODEL_DETAILS GraphQL query
- Test remote tool equality
- Fix initialization integration test
- Refactor README
- Rename Remote Tools to SQL Tools
- Document Remote MCP
- Improved Remote MCP instructions
- Apply dbt_cli_timeout to all dbt commands
- Allow for disabling CLI tools
- Update codeowners
- Improve DISABLE_TOOLS configuration
- Remote MCP example
- Add unit tests for env vars combinations
- Add instructions for Claude Code in README
- Add new example for OpenAI + HTTP Streamable MCP
- Create list of tool names
- Move env var parsing to pydantic_settings for better validation
- Add integration test for server initialization
- Fix SL validation error message when no misspellings are found
- Adding the ability to exclude certain tools when registering
- OpenAI responses example
- Refactor sl tools for reusability
- Update VSCode instructions in README
- Make dbt CLI command timeout configurable
- Allow passing entities in the group by
- Decouple discovery tools from FastMCP
- Catch every tool error and surface as string
- fix order_by input
- Upgrade MCP SDK
- Decrease amount of data retrieved when listing models
- OpenAI conversational analytics example
- README updates
- Move Discover headers to config
- Raise errors if no node is selected (can also be configured)
- Fix when people provide
DBT_PROJECT_DIRas a relative path - Fix link in README
- Timeout dbt list command
- Troubleshooting section in README on clients not finding uvx
- Update Discovery config for simpler usage
- Fixing bug when ordering SL query by a metric
- Instructing the LLM to more likely use a selector
- Instruct LLM to add limit as an argument instead of SQL
- Fix use of limit in dbt show
- Indicate type checking
- Small improvements to improve logging and code organization.
- Move
--selectorto the code instead of the prompt - Cursor deeplink setup
- Fix Cursor deeplinks
- Fix Cursor env var mess up
- Fix Discovery API config enablement
- Add the missing selector argument when running commands
- Fix release action to fetch tags
- Update README to run the MCP server with uvx
- Logging usage events
- Improve remote tools error logging
- Move create-release-tag to release Action
- Update release process documentation
- Fix typo in GH action to create release
- Remove hatch from tag action
- Manually triggering release
- Using
--quietflag to reduce context saturation of coding assistants - Add a tool
get_model_children - Added optional uniqueId parameter to model lookup methods for more precise model identification
- Enable remote tools in production
- Add selector for dbt commands
- Set pre-changie value to 0.1.13
- Require changelog entries for each PR
- Log Python version in install script
- Update license to full Apache 2.0 text
- Roll back installation script and instructions
- Re-enable tests in CI
- Refactor config for modularity
- Document remote tools
- Usage tracking scaffolding
- Update docs to clarify service token permissions required
- Increase remote tools timeout
- Update release process for new versions
- Point to the correct diagram in README
- Install hatch in release process
- Remove hatch from release process
- Fix diagram according to feature set
- Initial releases before using changie