fix: wire elicitation into platform config providers#787
Conversation
… credential fetch
test(config): add tests for any_platform_toolset_active and provider wiring test(config): add tests for any_platform_toolset_active and provider wiring
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 8b479410f0
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
| return any(( | ||
| self.enable_semantic_layer, | ||
| self.enable_discovery, | ||
| self.enable_admin_api, | ||
| self.enable_sql, |
There was a problem hiding this comment.
Detect platform tools enabled via DBT_MCP_ENABLE_TOOLS
In allowlist mode, any_platform_toolset_active is entered when enable_tools is set, but this branch only checks enable_* toolset flags and ignores individually enabled tools from DBT_MCP_ENABLE_TOOLS. That means configs that enable a platform tool by name (without setting DBT_MCP_ENABLE_DISCOVERY/_SEMANTIC_LAYER/etc.) are misclassified as “no platform toolsets active”, so load_config() injects raw CredentialsProvider into platform providers and platform calls fail with MissingHostError instead of triggering elicitation.
Useful? React with 👍 / 👎.
Summary
CredentialsProviderProtocolso platform config providers accept bothCredentialsProviderandElicitingCredentialsProvider_is_multi_project()sync — readssettings.dbt_project_idsdirectly instead of callingget_credentials(), eliminating the 17-second hang in Cursor ([Bug]: Cursor - v1.17.1 No tools, prompts, or resources #759)ElicitingCredentialsProviderto platform config providers (discovery, semantic layer, admin API) gated onsettings.any_platform_toolset_active, so elicitation fires when a platform tool is called withoutDBT_HOSTDBT_MCP_ENABLE_DBT_CLI=true) are fully isolated from platform concernsTest plan
list_tools()returns instantly with no credential fetch or OAuthDBT_HOSTtriggers elicitation wizardFixes #762
Root-causes #759