Markov Databricks 集成
STDIO通过MCP协议访问Databricks功能
通过MCP协议访问Databricks功能
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.
This project is maintained by Olivier Debeuf De Rijcker [email protected].
Credit for the initial version goes to @JustTryAI.
The Databricks MCP Server exposes the following tools:
uv
package manager (recommended for MCP servers)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.
Clone the repository:
git clone https://github.com/markov-kernel/databricks-mcp.git cd databricks-mcp
Set up the project with uv
:
# 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]"
Set up environment 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
You can also create an .env
file based on the .env.example
template.
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.
To use this server with AI clients like Cursor or Claude CLI, you need to register it.
Open your global MCP configuration file located at ~/.cursor/mcp.json
(create it if it doesn't exist).
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", "RUNNING_VIA_CURSOR_MCP": "true" } } // ... other servers ... } }
Important: Replace /absolute/path/to/your/project/databricks-mcp-server/
with the actual absolute path to this project directory on your machine.
Replace the DATABRICKS_HOST
and DATABRICKS_TOKEN
values with your credentials.
Save the file and restart Cursor.
You can now invoke tools using databricks-mcp-local:<tool_name>
(e.g., databricks-mcp-local:list_jobs
).
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" \ -- /absolute/path/to/your/project/databricks-mcp-server/start_mcp_server.sh
Important: Replace /absolute/path/to/your/project/databricks-mcp-server/
with the actual absolute path to this project directory on your machine.
Replace the DATABRICKS_HOST
and DATABRICKS_TOKEN
values with your credentials.
You can now invoke tools using databricks-mcp-local:<tool_name>
in your Claude interactions.
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
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.
The project uses the following linting tools:
# Run all linters uv run pylint src/ tests/ uv run flake8 src/ tests/ uv run mypy src/
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.
docs/api
directoryexamples/
directory for usage examplesCheck 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
Contributions are welcome! Please feel free to submit a Pull Request.
This project is licensed under the MIT License - see the LICENSE file for details.
A Model Completion Protocol (MCP) server for interacting with Databricks services. Maintained by markov.bot.