Skip to main content

A Model Completion Protocol (MCP) server for Databricks

Project description

Markov Databricks MCP

A Model Completion Protocol (MCP) server for Databricks that provides access to Databricks functionality via the MCP protocol. This allows LLM-powered tools to interact with Databricks clusters, jobs, notebooks, and more.

๐Ÿš€ One-Click Install

For Cursor Users

Click this link to install instantly:

cursor://anysphere.cursor-deeplink/mcp/install?name=databricks-mcp&config=eyJjb21tYW5kIjoidXZ4IiwiYXJncyI6WyJkYXRhYnJpY2tzLW1jcC1zZXJ2ZXIiXSwiZW52Ijp7IkRBVEFCUklDS1NfSE9TVCI6IiR7REFUQUJSSUNLU19IT1NUfSIsIkRBVEFCUklDS1NfVE9LRU4iOiIke0RBVEFCUklDS1NfVE9LRU59IiwiREFUQUJSSUNLU19XQVJFSE9VU0VfSUQiOiIke0RBVEFCUklDS1NfV0FSRUhPVVNFX0lEfSJ9fQ==

Or copy and paste this deeplink: cursor://anysphere.cursor-deeplink/mcp/install?name=databricks-mcp&config=eyJjb21tYW5kIjoidXZ4IiwiYXJncyI6WyJkYXRhYnJpY2tzLW1jcC1zZXJ2ZXIiXSwiZW52Ijp7IkRBVEFCUklDS1NfSE9TVCI6IiR7REFUQUJSSUNLU19IT1NUfSIsIkRBVEFCUklDS1NfVE9LRU4iOiIke0RBVEFCUklDS1NfVE9LRU59IiwiREFUQUJSSUNLU19XQVJFSE9VU0VfSUQiOiIke0RBVEFCUklDS1NfV0FSRUhPVVNFX0lEfSJ9fQ==

โ†’ Install Databricks MCP in Cursor โ†

This project is maintained by Olivier Debeuf De Rijcker olivier@markov.bot.

Credit for the initial version goes to @JustTryAI.

Features

  • MCP Protocol Support: Implements the MCP protocol to allow LLMs to interact with Databricks
  • Databricks API Integration: Provides access to Databricks REST API functionality
  • Tool Registration: Exposes Databricks functionality as MCP tools
  • Async Support: Built with asyncio for efficient operation

Available Tools

The Databricks MCP Server exposes the following tools:

Cluster Management

  • list_clusters: List all Databricks clusters
  • create_cluster: Create a new Databricks cluster
  • terminate_cluster: Terminate a Databricks cluster
  • get_cluster: Get information about a specific Databricks cluster
  • start_cluster: Start a terminated Databricks cluster

Job Management

  • list_jobs: List all Databricks jobs
  • run_job: Run a Databricks job

Workspace Files

  • list_notebooks: List notebooks in a workspace directory
  • export_notebook: Export a notebook from the workspace
  • get_workspace_file_content: Retrieve content of any workspace file (JSON, notebooks, scripts, etc.)
  • get_workspace_file_info: Get metadata about workspace files

File System

  • list_files: List files and directories in a DBFS path

SQL Execution

  • execute_sql: Execute a SQL statement (warehouse_id optional if DATABRICKS_WAREHOUSE_ID env var is set)

Installation

Quick Install (Recommended)

Use the link above to install with one click:

โ†’ Install Databricks MCP in Cursor โ†

This will automatically install the MCP server using uvx and configure it in Cursor. You'll need to set these environment variables:

  • DATABRICKS_HOST - Your Databricks workspace URL
  • DATABRICKS_TOKEN - Your Databricks personal access token
  • DATABRICKS_WAREHOUSE_ID - (Optional) Your default SQL warehouse ID

Manual Installation

Prerequisites

  • Python 3.10 or higher
  • uv package manager (recommended for MCP servers)

Setup

  1. Install uv if you don't have it already:

    # MacOS/Linux
    curl -LsSf https://astral.sh/uv/install.sh | sh
    
    # Windows (in PowerShell)
    irm https://astral.sh/uv/install.ps1 | iex
    

    Restart your terminal after installation.

  2. Clone the repository:

    git clone https://github.com/markov-kernel/databricks-mcp.git
    cd databricks-mcp
    
  3. Run the setup script:

    # Linux/Mac
    ./scripts/setup.sh
    
    # Windows (PowerShell)
    .\scripts\setup.ps1
    

    The setup script will:

    • Install uv if not already installed
    • Create a virtual environment
    • Install all project dependencies
    • Verify the installation works

    Alternative manual setup:

    # Create and activate virtual environment
    uv venv
    
    # On Windows
    .\.venv\Scripts\activate
    
    # On Linux/Mac
    source .venv/bin/activate
    
    # Install dependencies in development mode
    uv pip install -e .
    
    # Install development dependencies
    uv pip install -e ".[dev]"
    
  4. Set up environment variables:

    # Required variables
    # Windows
    set DATABRICKS_HOST=https://your-databricks-instance.azuredatabricks.net
    set DATABRICKS_TOKEN=your-personal-access-token
    
    # Linux/Mac
    export DATABRICKS_HOST=https://your-databricks-instance.azuredatabricks.net
    export DATABRICKS_TOKEN=your-personal-access-token
    
    # Optional: Set default SQL warehouse (makes warehouse_id optional in execute_sql)
    export DATABRICKS_WAREHOUSE_ID=sql_warehouse_12345
    

    You can also create an .env file based on the .env.example template.

Running the MCP Server

Standalone

To start the MCP server directly for testing or development, run:

# Activate your virtual environment if not already active
source .venv/bin/activate 

# Run the start script (handles finding env vars from .env if needed)
./scripts/start_mcp_server.sh

This is useful for seeing direct output and logs.

Integrating with AI Clients

To use this server with AI clients like Cursor or Claude CLI, you need to register it.

Cursor Setup

  1. Open your global MCP configuration file located at ~/.cursor/mcp.json (create it if it doesn't exist).

  2. Add the following entry within the mcpServers object, replacing placeholders with your actual values and ensuring the path to start_mcp_server.sh is correct:

    {
      "mcpServers": {
        // ... other servers ...
        "databricks-mcp-local": { 
          "command": "/absolute/path/to/your/project/databricks-mcp-server/start_mcp_server.sh",
          "args": [],
          "env": {
            "DATABRICKS_HOST": "https://your-databricks-instance.azuredatabricks.net", 
            "DATABRICKS_TOKEN": "dapiXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
            "DATABRICKS_WAREHOUSE_ID": "sql_warehouse_12345",
            "RUNNING_VIA_CURSOR_MCP": "true" 
          }
        }
        // ... other servers ...
      }
    }
    
  3. Important: Replace /absolute/path/to/your/project/databricks-mcp-server/ with the actual absolute path to this project directory on your machine.

  4. Replace the DATABRICKS_HOST and DATABRICKS_TOKEN values with your credentials.

  5. Save the file and restart Cursor.

  6. You can now invoke tools using databricks-mcp-local:<tool_name> (e.g., databricks-mcp-local:list_jobs).

Claude CLI Setup

  1. Use the claude mcp add command to register the server. Provide your credentials using the -e flag for environment variables and point the command to the start_mcp_server.sh script using -- followed by the absolute path:

    claude mcp add databricks-mcp-local \
      -s user \
      -e DATABRICKS_HOST="https://your-databricks-instance.azuredatabricks.net" \
      -e DATABRICKS_TOKEN="dapiXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX" \
      -e DATABRICKS_WAREHOUSE_ID="sql_warehouse_12345" \
      -- /absolute/path/to/your/project/databricks-mcp-server/start_mcp_server.sh
    
  2. Important: Replace /absolute/path/to/your/project/databricks-mcp-server/ with the actual absolute path to this project directory on your machine.

  3. Replace the DATABRICKS_HOST and DATABRICKS_TOKEN values with your credentials.

  4. You can now invoke tools using databricks-mcp-local:<tool_name> in your Claude interactions.

Querying Databricks Resources

The repository includes utility scripts to quickly view Databricks resources:

# View all clusters
uv run scripts/show_clusters.py

# View all notebooks
uv run scripts/show_notebooks.py

Usage Examples

SQL Execution with Default Warehouse

# With DATABRICKS_WAREHOUSE_ID set, warehouse_id is optional
await session.call_tool("execute_sql", {
    "statement": "SELECT * FROM my_table LIMIT 10"
})

# You can still override the default warehouse
await session.call_tool("execute_sql", {
    "statement": "SELECT * FROM my_table LIMIT 10",
    "warehouse_id": "sql_warehouse_specific"
})

Workspace File Content Retrieval

# Get JSON file content from workspace
await session.call_tool("get_workspace_file_content", {
    "workspace_path": "/Users/user@domain.com/config/settings.json"
})

# Get notebook content in Jupyter format
await session.call_tool("get_workspace_file_content", {
    "workspace_path": "/Users/user@domain.com/my_notebook",
    "format": "JUPYTER"
})

# Get file metadata without downloading content
await session.call_tool("get_workspace_file_info", {
    "workspace_path": "/Users/user@domain.com/large_file.py"
})

Project Structure

databricks-mcp-server/
โ”œโ”€โ”€ src/                             # Source code
โ”‚   โ”œโ”€โ”€ __init__.py                  # Makes src a package
โ”‚   โ”œโ”€โ”€ __main__.py                  # Main entry point for the package
โ”‚   โ”œโ”€โ”€ main.py                      # Entry point for the MCP server
โ”‚   โ”œโ”€โ”€ api/                         # Databricks API clients
โ”‚   โ”œโ”€โ”€ core/                        # Core functionality
โ”‚   โ”œโ”€โ”€ server/                      # Server implementation
โ”‚   โ”‚   โ”œโ”€โ”€ databricks_mcp_server.py # Main MCP server
โ”‚   โ”‚   โ””โ”€โ”€ app.py                   # FastAPI app for tests
โ”‚   โ””โ”€โ”€ cli/                         # Command-line interface
โ”œโ”€โ”€ tests/                           # Test directory
โ”œโ”€โ”€ scripts/                         # Helper scripts
โ”‚   โ”œโ”€โ”€ start_mcp_server.ps1         # Server startup script (Windows)
โ”‚   โ”œโ”€โ”€ run_tests.ps1                # Test runner script
โ”‚   โ”œโ”€โ”€ show_clusters.py             # Script to show clusters
โ”‚   โ””โ”€โ”€ show_notebooks.py            # Script to show notebooks
โ”œโ”€โ”€ examples/                        # Example usage
โ”œโ”€โ”€ docs/                            # Documentation
โ””โ”€โ”€ pyproject.toml                   # Project configuration

See project_structure.md for a more detailed view of the project structure.

Development

Code Standards

  • Python code follows PEP 8 style guide with a maximum line length of 100 characters
  • Use 4 spaces for indentation (no tabs)
  • Use double quotes for strings
  • All classes, methods, and functions should have Google-style docstrings
  • Type hints are required for all code except tests

Linting

The project uses the following linting tools:

# Run all linters
uv run pylint src/ tests/
uv run flake8 src/ tests/
uv run mypy src/

Testing

The project uses pytest for testing. To run the tests:

# Run all tests with our convenient script
.\scripts\run_tests.ps1

# Run with coverage report
.\scripts\run_tests.ps1 -Coverage

# Run specific tests with verbose output
.\scripts\run_tests.ps1 -Verbose -Coverage tests/test_clusters.py

You can also run the tests directly with pytest:

# Run all tests
uv run pytest tests/

# Run with coverage report
uv run pytest --cov=src tests/ --cov-report=term-missing

A minimum code coverage of 80% is the goal for the project.

Documentation

  • API documentation is generated using Sphinx and can be found in the docs/api directory
  • All code includes Google-style docstrings
  • See the examples/ directory for usage examples

Examples

Check the examples/ directory for usage examples. To run examples:

# Run example scripts with uv
uv run examples/direct_usage.py
uv run examples/mcp_client_usage.py

Contributing

Contributions are welcome! Please feel free to submit a Pull Request.

  1. Ensure your code follows the project's coding standards
  2. Add tests for any new functionality
  3. Update documentation as necessary
  4. Verify all tests pass before submitting

License

This project is licensed under the MIT License - see the LICENSE file for details.

About

A Model Completion Protocol (MCP) server for interacting with Databricks services. Maintained by markov.bot.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

databricks_mcp_server-0.2.0.tar.gz (39.3 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

databricks_mcp_server-0.2.0-py3-none-any.whl (24.1 kB view details)

Uploaded Python 3

File details

Details for the file databricks_mcp_server-0.2.0.tar.gz.

File metadata

  • Download URL: databricks_mcp_server-0.2.0.tar.gz
  • Upload date:
  • Size: 39.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.12.0

File hashes

Hashes for databricks_mcp_server-0.2.0.tar.gz
Algorithm Hash digest
SHA256 c817053b414b3cb6bb5ffcaf819b64784a69c4e5c08e13ca79cb46466ea7b61a
MD5 455c30f3b171e01c30f324f1df8809a4
BLAKE2b-256 ddd0ebf8f6a63227ba907b6342b76821d85932c2c867e87df2f7e9b29e21c0ef

See more details on using hashes here.

File details

Details for the file databricks_mcp_server-0.2.0-py3-none-any.whl.

File metadata

File hashes

Hashes for databricks_mcp_server-0.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 d4397eb26935b20f0d8aa54f1a6d73a140c55476efdd1013d9f0543cc6353d5c
MD5 29891784a78563e665129b03357b514a
BLAKE2b-256 a21a4e747d47709b7b9c24437198ea7163a84b539545d61b77aa04b21d4c8bdf

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page