Skip to main content
Glama
JustTryAI

Databricks MCP Server

by JustTryAI

Databricks MCP Server

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.

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

Related MCP server: Databricks MCP Server

Available Tools

The Databricks MCP Server exposes the following tools:

  • 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

  • list_jobs: List all Databricks jobs

  • run_job: Run a Databricks job

  • list_notebooks: List notebooks in a workspace directory

  • export_notebook: Export a notebook from the workspace

  • list_files: List files and directories in a DBFS path

  • execute_sql: Execute a SQL statement

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/JustTryAI/databricks-mcp-server.git
    cd databricks-mcp-server
  3. 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]"
  4. 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.

Running the MCP Server

To start the MCP server, run:

# Windows
.\start_mcp_server.ps1

# Linux/Mac
./start_mcp_server.sh

These wrapper scripts will execute the actual server scripts located in the scripts directory. The server will start and be ready to accept MCP protocol connections.

You can also directly run the server scripts from the scripts directory:

# Windows
.\scripts\start_mcp_server.ps1

# Linux/Mac
./scripts/start_mcp_server.sh

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

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.

Available Tools

11 tools
create_clusterC

Create a new Databricks cluster with parameters: cluster_name (required), spark_version (required), node_type_id (required), num_workers, autotermination_minutes

ParametersJSON Schema
NameRequiredDescriptionDefault
paramsYes

TDQS

C2.7/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden of behavioral disclosure. It states the tool creates a cluster but doesn't describe what happens after creation (e.g., whether it starts automatically, costs involved, time to provision, or error handling). For a mutation tool with zero annotation coverage, this leaves critical behavioral traits unspecified.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, efficient sentence that front-loads the core action and lists parameters without unnecessary details. It avoids redundancy and wastes no words, though it could benefit from slight structuring (e.g., separating parameter explanations) for better readability.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the complexity of creating a Databricks cluster (a mutation operation with no annotations, no output schema, and a nested input schema with 0% coverage), the description is incomplete. It lacks information on behavioral outcomes, error cases, return values, and how it fits with sibling tools, making it insufficient for safe and effective use by an AI agent.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has 0% description coverage and uses a generic 'params' object, so the description must compensate. It lists specific parameters (cluster_name, spark_version, etc.) and marks some as required, adding meaningful semantics beyond the schema. However, it doesn't explain what these parameters mean (e.g., what 'spark_version' entails or how 'num_workers' affects the cluster), leaving gaps in understanding.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('Create a new Databricks cluster') and resource ('Databricks cluster'), making the purpose unambiguous. However, it doesn't explicitly differentiate this tool from sibling tools like 'start_cluster' or 'get_cluster', which would require more specific context about when to create versus start an existing cluster.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives. It doesn't mention prerequisites (e.g., needing permissions or a workspace setup), compare it to siblings like 'start_cluster' (for existing clusters) or 'run_job' (which might involve clusters), or specify scenarios where creation is appropriate versus other operations.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

execute_sqlC

Execute a SQL statement with parameters: statement (required), warehouse_id (required), catalog (optional), schema (optional)

ParametersJSON Schema
NameRequiredDescriptionDefault
paramsYes

TDQS

C2.4/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure. It states the action ('Execute a SQL statement') but doesn't cover critical traits like whether it's read-only or destructive, authentication needs, rate limits, error handling, or output format. This leaves significant gaps for an agent to understand the tool's behavior.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, efficient sentence that front-loads the core action and lists parameters concisely. There's no wasted text, making it easy to parse, though it could benefit from more structured detail.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the complexity of executing SQL (a potentially destructive operation), no annotations, no output schema, and low schema coverage, the description is incomplete. It lacks information on behavior, results, error cases, and how it fits with sibling tools, making it inadequate for safe and effective use.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema description coverage is 0%, and the description lists parameters (statement, warehouse_id, catalog, schema) but doesn't explain their semantics beyond being required or optional. It adds some value by naming parameters, but fails to detail their meanings, formats, or constraints, which is insufficient given the low schema coverage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose3/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states the tool 'Execute a SQL statement with parameters', which provides a clear verb ('Execute') and resource ('SQL statement'), but it's somewhat vague about the exact purpose (e.g., what database or system it targets) and doesn't distinguish it from potential siblings like 'run_job' or 'export_notebook'. It's adequate but lacks specificity.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description mentions parameters but offers no guidance on when to use this tool versus alternatives like 'run_job' or 'list_jobs', nor does it specify prerequisites or contexts for SQL execution. It's a basic statement of function without usage context.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

export_notebookC

Export a notebook from the workspace with parameters: path (required), format (optional, one of: SOURCE, HTML, JUPYTER, DBC)

ParametersJSON Schema
NameRequiredDescriptionDefault
paramsYes

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden of behavioral disclosure. It mentions the action 'Export' but doesn't specify whether this is a read-only operation, if it requires permissions, what happens to the original notebook, or any rate limits. This leaves significant gaps for a tool that likely involves data extraction.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, efficient sentence that front-loads the purpose and key parameters. It avoids unnecessary words, though it could be slightly more structured by separating usage notes from parameter details.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no annotations, 0% schema coverage, no output schema, and a nested parameter structure, the description is incomplete. It doesn't explain the return value, error conditions, or how the 'params' object should be structured, making it inadequate for reliable tool invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The description adds some parameter details (path is required, format is optional with enum values), but with 0% schema description coverage and a nested 'params' object in the schema, it doesn't fully compensate. It provides basic semantics but lacks depth on structure or constraints beyond what's minimally stated.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('Export') and resource ('a notebook from the workspace'), making the purpose understandable. However, it doesn't differentiate this tool from potential sibling tools like 'list_notebooks' or 'run_job' beyond the export function, which prevents a perfect score.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives. With sibling tools like 'list_notebooks' and 'run_job' available, there's no indication of prerequisites, context, or exclusions for choosing export_notebook over other notebook-related operations.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_clusterC

Get information about a specific Databricks cluster with parameter: cluster_id (required)

ParametersJSON Schema
NameRequiredDescriptionDefault
paramsYes

TDQS

C2.4/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure. It states this is a 'Get information' operation which implies read-only behavior, but doesn't disclose any behavioral traits like whether it requires specific permissions, what happens if the cluster doesn't exist, rate limits, or what format the information is returned in. The description is minimal and leaves critical behavioral aspects unspecified.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is appropriately concise with just one sentence that states the purpose and mentions the required parameter. It's front-loaded with the core functionality. While it could be more informative, every word serves a purpose and there's no wasted text.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the complexity of cluster operations, no annotations, no output schema, and minimal parameter documentation, the description is incomplete. It doesn't explain what information is returned, how to interpret results, error conditions, or how this differs from other cluster tools. For a tool that presumably returns detailed cluster configuration and status information, this description leaves too much unspecified.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema description coverage is 0% with 1 parameter, and the description mentions 'cluster_id (required)' which adds some semantic meaning beyond the schema. However, it doesn't explain what format the cluster_id should be in, where to find it, or provide any examples. For a single parameter tool with zero schema coverage, this minimal information is insufficient to compensate adequately.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose3/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states 'Get information about a specific Databricks cluster' which provides a clear verb ('Get information') and resource ('Databricks cluster'), but it doesn't distinguish this from sibling tools like 'list_clusters' or 'start_cluster'. It's vague about what specific information is retrieved compared to alternatives.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives like 'list_clusters' or 'start_cluster'. It mentions the required parameter 'cluster_id' but doesn't explain when this tool is appropriate versus other cluster-related operations available in the sibling tool list.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_clustersC

List all Databricks clusters

ParametersJSON Schema
NameRequiredDescriptionDefault
paramsYes

TDQS

C2.4/5.0
Behavior1/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure but provides none. It doesn't indicate whether this is a read-only operation, what permissions are required, whether there are rate limits, pagination behavior, or what the return format looks like. For a tool with zero annotation coverage, this is completely inadequate.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is extremely concise - a single sentence with no wasted words. It's front-loaded with the core purpose. While it's too brief to be helpful, it earns full marks for conciseness as every word serves a purpose.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness1/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the complexity (listing clusters in Databricks), lack of annotations, no output schema, and 0% parameter coverage, the description is completely inadequate. It doesn't explain what information is returned, how results are structured, whether there are limitations, or any operational context needed to use the tool effectively.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has 1 parameter with 0% description coverage, and the tool description provides absolutely no information about parameters. The description doesn't mention what 'params' should contain, what filtering options are available, or any parameter semantics. With low schema coverage and no compensation in the description, this is a critical gap.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb ('List') and resource ('all Databricks clusters'), making the purpose immediately understandable. However, it doesn't differentiate from sibling tools like 'get_cluster' (which presumably retrieves a single cluster) or 'list_jobs'/'list_notebooks' (which list different resource types).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives. It doesn't mention when to use 'list_clusters' versus 'get_cluster' (for retrieving a single cluster) or other listing tools like 'list_jobs'. There's no information about prerequisites, context, or exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_filesC

List files and directories in a DBFS path with parameter: dbfs_path (required)

ParametersJSON Schema
NameRequiredDescriptionDefault
paramsYes

TDQS

C2.7/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries full burden. It states the action but doesn't disclose behavioral traits such as pagination, rate limits, authentication needs, error handling, or what happens with invalid paths. For a tool with no annotations, this leaves significant gaps in understanding its operation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence that efficiently states the purpose and parameter. It's front-loaded with the core action and avoids unnecessary details. However, it could be slightly more structured by separating purpose from parameter explanation.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no annotations, 0% schema coverage, no output schema, and 1 parameter with nested objects, the description is incomplete. It lacks details on return values, error conditions, and behavioral context, making it inadequate for a tool with these complexities.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, with 1 parameter documented only as 'params' of type 'object' in the schema. The description adds that it's 'dbfs_path (required)', providing basic semantics, but doesn't explain format, constraints, or examples. This partially compensates but is insufficient given the low schema coverage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb ('List') and resource ('files and directories'), specifying the scope as 'in a DBFS path'. It distinguishes from siblings like list_clusters or list_notebooks by focusing on DBFS files. However, it doesn't explicitly differentiate from potential similar file-listing tools that might exist elsewhere.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to use this tool versus alternatives. The description mentions the parameter but doesn't indicate prerequisites, typical use cases, or when other tools like list_notebooks might be more appropriate. It's purely functional without contextual advice.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_jobsC

List all Databricks jobs

ParametersJSON Schema
NameRequiredDescriptionDefault
paramsYes

TDQS

C2.8/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure. 'List all Databricks jobs' implies a read-only operation, but it doesn't specify whether this requires authentication, returns paginated results, includes metadata like job status or owner, or has any rate limits. For a listing tool with zero annotation coverage, this leaves significant behavioral gaps.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is extremely concise at just four words, front-loading the essential information with zero wasted words. Every word earns its place by specifying the action ('List'), scope ('all'), resource type ('Databricks jobs'), making it efficiently structured despite its brevity.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the complexity of a job listing operation with no annotations, no output schema, and 0% parameter documentation, the description is incomplete. It doesn't explain what information is returned (e.g., job IDs, names, statuses), how results are formatted, or any constraints. For a tool that likely returns structured data about jobs, this minimal description leaves too many questions unanswered.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has 0% description coverage with one required parameter 'params' as an object type. The description provides no information about what parameters are accepted (e.g., filters for job name, status, owner, or pagination controls). Since schema coverage is 0%, the description should compensate but fails to do so, leaving parameters completely undocumented.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb ('List') and resource ('all Databricks jobs'), making the tool's purpose immediately understandable. It distinguishes this from sibling tools like 'run_job' or 'create_cluster' by focusing on listing rather than execution or creation. However, it doesn't specify if this includes archived, active, or all job states, which would make it a perfect 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives. It doesn't mention whether to use 'list_jobs' versus 'run_job' for job management, or how it relates to other listing tools like 'list_clusters' or 'list_notebooks'. There's no context about prerequisites, permissions needed, or typical use cases.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_notebooksC

List notebooks in a workspace directory with parameter: path (required)

ParametersJSON Schema
NameRequiredDescriptionDefault
paramsYes

TDQS

C2.4/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries full burden. While it mentions the tool lists notebooks, it doesn't disclose any behavioral traits - no information about pagination, sorting, filtering capabilities, authentication requirements, rate limits, or what happens when the path doesn't exist. For a listing tool with zero annotation coverage, this is inadequate.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is appropriately concise - a single sentence that states the purpose and mentions the required parameter. There's no wasted language, though it could benefit from being more informative while maintaining brevity.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given zero annotation coverage, 0% schema description coverage, no output schema, and a parameter that's a nested object with no documentation, the description is insufficient. It doesn't explain what 'notebooks' are in this context, what format the output takes, or how to interpret the path parameter - leaving significant gaps for an AI agent.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, and the description only mentions 'path (required)' without explaining what format the path should take, what workspace/directory structure it references, or any constraints. With 1 parameter that's completely undocumented in both schema and description, the description adds minimal value beyond stating the parameter exists.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose3/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states the tool 'List notebooks in a workspace directory', which provides a clear verb ('List') and resource ('notebooks'). However, it doesn't distinguish this tool from potential siblings like 'list_files' or 'list_clusters' - it's unclear what makes notebooks different from other file types or resources in this context.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives. With siblings like 'list_files' and 'list_clusters' available, there's no indication of whether this tool is for a specific notebook format, workspace context, or how it differs from general file listing operations.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

run_jobC

Run a Databricks job with parameters: job_id (required), notebook_params (optional)

ParametersJSON Schema
NameRequiredDescriptionDefault
paramsYes

TDQS

C2.4/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries full burden but only mentions parameters without behavioral traits. It doesn't disclose if this is a read/write operation, requires permissions, has side effects (e.g., resource consumption), rate limits, or what happens during execution (e.g., async/sync). This is inadequate for a tool that likely triggers job runs.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is brief and front-loaded with the main action, using only one sentence. However, it could be more structured by separating purpose from parameter details, but it avoids unnecessary verbosity, earning a high score for efficiency.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the complexity (likely a job execution tool with no annotations, 0% schema coverage, and no output schema), the description is incomplete. It lacks details on behavior, return values, error handling, and integration with siblings, making it insufficient for effective agent use in this context.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, and the description adds minimal value beyond the schema. It mentions 'job_id (required), notebook_params (optional)', but the schema has a single nested 'params' object without details. The description doesn't explain parameter formats, constraints, or how they map to the schema, failing to compensate for the coverage gap.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose3/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states the action ('Run a Databricks job') and mentions parameters, which gives a vague purpose. However, it doesn't specify what 'run' entails (e.g., execution, triggering, monitoring) or differentiate from siblings like 'execute_sql' or 'list_jobs', leaving room for ambiguity.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to use this tool versus alternatives. It doesn't mention prerequisites (e.g., job must exist), exclusions (e.g., not for ad-hoc queries), or compare to siblings like 'execute_sql' for different execution contexts, leaving the agent without usage context.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

start_clusterC

Start a terminated Databricks cluster with parameter: cluster_id (required)

ParametersJSON Schema
NameRequiredDescriptionDefault
paramsYes

TDQS

C2.7/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure. It states the action is to start a cluster, implying a mutation operation, but fails to disclose critical traits such as permissions required, whether it's idempotent, potential side effects (e.g., costs, time to start), or response format. This leaves significant gaps for a tool that performs a state change.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, straightforward sentence that efficiently conveys the core action and required parameter without unnecessary words. It's appropriately sized for the tool's complexity, though it could be more front-loaded with key details like behavioral traits.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity (a mutation operation to start a cluster), lack of annotations, no output schema, and low schema description coverage, the description is incomplete. It omits essential context such as behavioral implications, error conditions, or how to verify success, making it inadequate for safe and effective use by an AI agent.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema description coverage is 0%, and the description only mentions 'cluster_id (required)' without explaining what this parameter represents (e.g., a specific cluster identifier), its format, or how to obtain it. Given the low coverage and the presence of a nested object 'params' in the schema, the description adds minimal value beyond stating the parameter name, failing to compensate for the schema's lack of detail.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('Start') and resource ('a terminated Databricks cluster'), making the purpose understandable. However, it doesn't differentiate from sibling tools like 'create_cluster' (which creates new clusters) or 'terminate_cluster' (which stops clusters), missing explicit sibling distinction that would warrant a 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides minimal guidance by mentioning the required parameter 'cluster_id' but offers no explicit context on when to use this tool versus alternatives like 'create_cluster' for new clusters or 'get_cluster' for checking status. There's no mention of prerequisites (e.g., cluster must be terminated) or exclusions, leaving usage unclear.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

terminate_clusterC

Terminate a Databricks cluster with parameter: cluster_id (required)

ParametersJSON Schema
NameRequiredDescriptionDefault
paramsYes

TDQS

C2.7/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries full burden but only states the action without behavioral details. It doesn't disclose if termination is destructive, irreversible, requires specific permissions, has side effects, or what happens post-termination, leaving significant gaps for a mutation tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, efficient sentence with no wasted words, making it easy to parse. However, it's slightly under-specified given the tool's complexity, as it could benefit from more detail without sacrificing brevity.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a destructive mutation tool with no annotations, 0% schema coverage, and no output schema, the description is inadequate. It lacks critical context like behavioral traits, parameter details, and usage scenarios, making it incomplete for safe and effective tool invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, and the description only mentions 'cluster_id (required)' without explaining what it is, its format, or where to find it. This adds minimal value beyond the schema's required 'params' object, failing to compensate for the coverage gap.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('Terminate') and resource ('a Databricks cluster'), making the purpose understandable. However, it doesn't differentiate from sibling tools like 'get_cluster' or 'start_cluster' beyond the obvious action difference, missing explicit comparison.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to use this tool versus alternatives. It mentions a required parameter but doesn't specify prerequisites, conditions for termination, or when to choose this over other cluster-related tools like 'start_cluster' or 'get_cluster'.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.

  1. 11 tool updates
    • First observedcreate_cluster
    • First observedexecute_sql
    • First observedexport_notebook
    • First observedget_cluster
    • First observedlist_clusters
    • First observedlist_files
    • First observedlist_jobs
    • First observedlist_notebooks
    • First observedrun_job
    • First observedstart_cluster
    • First observedterminate_cluster

TDQS

B3.2/5.0
Disambiguation5/5

Each tool has a distinct purpose with clear boundaries: cluster management (create, get, list, start, terminate), SQL execution, notebook operations (export, list), file listing, and job operations (list, run). No overlapping functionality exists, making tool selection straightforward for an agent.

Naming Consistency5/5

All tools follow a consistent verb_noun pattern (e.g., create_cluster, execute_sql, list_files) using snake_case throughout. This predictable naming convention enhances readability and usability for agents.

Tool Count5/5

With 11 tools, the server is well-scoped for Databricks operations, covering clusters, SQL, notebooks, files, and jobs. Each tool serves a clear purpose without redundancy, making the count appropriate for the domain.

Completeness4/5

The toolset provides strong coverage for core Databricks workflows, including cluster lifecycle, SQL execution, notebook/file management, and job operations. Minor gaps exist, such as missing notebook creation or job update tools, but agents can work around these with available operations.

Maintenance

ActivityInactive
ResponsivenessSyncing

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    C
    maintenance
    This is a Model Context Protocol (MCP) server for executing SQL queries against Databricks using the Statement Execution API. It enables AI assistants to directly query Databricks data warehouses, analyze database schemas, and retrieve query results in a structured format
    42
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    A server that provides tools to interact with Databricks for cluster, job, notebook, DBFS, and SQL management through natural language interfaces like Claude-Desktop and Cursor.
    GPL 3.0
  • A
    license
    B
    quality
    D
    maintenance
    A fixed Model Completion Protocol (MCP) server that enables LLMs like Claude Code to interact with Databricks functionality including clusters, jobs, notebooks, and SQL execution through natural language commands.
    19
    5
    MIT

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/JustTryAI/databricks-mcp-server'

If you have feedback or need assistance with the MCP directory API, please join our Discord server