Databricks MCP Server

by JordiNeil
Verified
#!/usr/bin/env python """ Databricks Connection Test Script This script tests the connection to Databricks using credentials from the .env file. It attempts to connect to both the SQL warehouse and the Databricks API. """ import os from dotenv import load_dotenv import sys # Load environment variables load_dotenv() # Get Databricks credentials from environment variables DATABRICKS_HOST = os.getenv("DATABRICKS_HOST") DATABRICKS_TOKEN = os.getenv("DATABRICKS_TOKEN") DATABRICKS_HTTP_PATH = os.getenv("DATABRICKS_HTTP_PATH") def check_env_vars(): """Check if all required environment variables are set""" missing = [] if not DATABRICKS_HOST: missing.append("DATABRICKS_HOST") if not DATABRICKS_TOKEN: missing.append("DATABRICKS_TOKEN") if not DATABRICKS_HTTP_PATH: missing.append("DATABRICKS_HTTP_PATH") if missing: print("❌ Missing required environment variables:") for var in missing: print(f" - {var}") print("\nPlease check your .env file and make sure all required variables are set.") return False print("✅ All required environment variables are set") return True def test_databricks_api(): """Test connection to Databricks API""" import requests print("\nTesting Databricks API connection...") try: headers = { "Authorization": f"Bearer {DATABRICKS_TOKEN}", "Content-Type": "application/json" } url = f"https://{DATABRICKS_HOST}/api/2.0/clusters/list-node-types" response = requests.get(url, headers=headers) if response.status_code == 200: print("✅ Successfully connected to Databricks API") return True else: print(f"❌ Failed to connect to Databricks API: {response.status_code} - {response.text}") return False except Exception as e: print(f"❌ Error connecting to Databricks API: {str(e)}") return False def test_sql_connection(): """Test connection to Databricks SQL warehouse""" print("\nTesting Databricks SQL warehouse connection...") try: from databricks.sql import connect conn = connect( server_hostname=DATABRICKS_HOST, http_path=DATABRICKS_HTTP_PATH, access_token=DATABRICKS_TOKEN ) cursor = conn.cursor() cursor.execute("SELECT 1 AS test") result = cursor.fetchall() if result and result[0][0] == 1: print("✅ Successfully connected to Databricks SQL warehouse") conn.close() return True else: print("❌ Failed to get expected result from SQL warehouse") conn.close() return False except Exception as e: print(f"❌ Error connecting to Databricks SQL warehouse: {str(e)}") return False if __name__ == "__main__": print("Databricks Connection Test") print("=========================\n") # Check for dependencies try: import requests from databricks.sql import connect except ImportError as e: print(f"❌ Missing dependency: {str(e)}") print("Please run: pip install -r requirements.txt") sys.exit(1) # Run tests env_ok = check_env_vars() if not env_ok: sys.exit(1) api_ok = test_databricks_api() sql_ok = test_sql_connection() # Summary print("\nTest Summary") print("===========") print(f"Environment Variables: {'✅ OK' if env_ok else '❌ Failed'}") print(f"Databricks API: {'✅ OK' if api_ok else '❌ Failed'}") print(f"Databricks SQL: {'✅ OK' if sql_ok else '❌ Failed'}") if env_ok and api_ok and sql_ok: print("\n✅ All tests passed! Your Databricks MCP server should work correctly.") sys.exit(0) else: print("\n❌ Some tests failed. Please check the errors above and fix your configuration.") sys.exit(1)