11use clap:: { Parser , Subcommand } ;
22use edda_mcp:: paths;
33use edda_mcp:: providers:: {
4- CombinedProvider , DatabricksProvider , DeploymentProvider , GoogleSheetsProvider , IOProvider ,
5- ProviderType , WorkspaceTools ,
4+ CombinedProvider , DatabricksCliProvider , DatabricksRestProvider , DeploymentProvider ,
5+ GoogleSheetsProvider , IOProvider , ProviderType , WorkspaceTools ,
66} ;
77use edda_mcp:: session:: SessionContext ;
88use edda_mcp:: trajectory:: TrajectoryTrackingProvider ;
@@ -225,6 +225,16 @@ fn should_enable_provider(config: &edda_mcp::config::Config, provider: ProviderT
225225 config. required_providers . contains ( & provider)
226226}
227227
228+ /// helper to check if DatabricksRest provider should be enabled (checks both DatabricksRest and legacy Databricks)
229+ fn should_enable_databricks_rest ( config : & edda_mcp:: config:: Config ) -> bool {
230+ config. required_providers . contains ( & ProviderType :: DatabricksRest )
231+ }
232+
233+ /// helper to check if DatabricksCli provider should be enabled
234+ fn should_enable_databricks_cli ( config : & edda_mcp:: config:: Config ) -> bool {
235+ config. required_providers . contains ( & ProviderType :: DatabricksCli )
236+ }
237+
228238/// check environment configuration and prerequisites
229239async fn check_environment ( config : & edda_mcp:: config:: Config ) -> Result < ( ) > {
230240 use edda_mcp:: providers:: ProviderType ;
@@ -247,10 +257,10 @@ async fn check_environment(config: &edda_mcp::config::Config) -> Result<()> {
247257 }
248258 }
249259
250- // check databricks environment variables only if databricks or deployment is required
260+ // check databricks environment variables only if databricks rest or deployment is required
251261 let databricks_required = config
252262 . required_providers
253- . contains ( & ProviderType :: Databricks )
263+ . contains ( & ProviderType :: DatabricksRest )
254264 || config
255265 . required_providers
256266 . contains ( & ProviderType :: Deployment ) ;
@@ -402,10 +412,17 @@ async fn run_server(config: edda_mcp::config::Config) -> Result<()> {
402412 } ) ;
403413
404414 // initialize all available providers
405- let databricks = match should_enable_provider ( & config, ProviderType :: Databricks ) {
406- true => DatabricksProvider :: new ( ) . ok ( ) ,
415+ let databricks = match should_enable_databricks_rest ( & config) {
416+ true => DatabricksRestProvider :: new ( ) . ok ( ) ,
407417 false => None ,
408418 } ;
419+
420+ // enable DatabricksCli provider if explicitly requested in config
421+ let databricks_cli = match should_enable_databricks_cli ( & config) {
422+ true => DatabricksCliProvider :: new ( ) . ok ( ) ,
423+ false => None ,
424+ } ;
425+
409426 let deployment = match config. with_deployment {
410427 true => DeploymentProvider :: new ( ) . ok ( ) ,
411428 false => None ,
@@ -429,6 +446,9 @@ async fn run_server(config: edda_mcp::config::Config) -> Result<()> {
429446 if databricks. is_some ( ) {
430447 providers_list. push ( "Databricks" ) ;
431448 }
449+ if databricks_cli. is_some ( ) {
450+ providers_list. push ( "Databricks CLI" ) ;
451+ }
432452 if deployment. is_some ( ) {
433453 providers_list. push ( "Deployment" ) ;
434454 }
@@ -461,6 +481,7 @@ async fn run_server(config: edda_mcp::config::Config) -> Result<()> {
461481 let provider = CombinedProvider :: new (
462482 session_ctx,
463483 databricks,
484+ databricks_cli,
464485 deployment,
465486 google_sheets,
466487 io,
0 commit comments