Databricks MCP Server
Provides access to Databricks functionality through tools that allow interacting with clusters (listing, creating, terminating, starting), jobs (listing, running), notebooks (listing, exporting), files (browsing DBFS paths), and executing SQL queries on a Databricks instance.
Used for implementing test endpoints and API functionality for the MCP server, enabling proper API interaction with Databricks services.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Databricks MCP Serverlist all running clusters"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
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
uvpackage manager (recommended for MCP servers)
Setup
Install
uvif 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 | iexRestart your terminal after installation.
Clone the repository:
git clone https://github.com/JustTryAI/databricks-mcp-server.git cd databricks-mcp-serverSet 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-tokenYou can also create an
.envfile based on the.env.exampletemplate.
Running the MCP Server
To start the MCP server, run:
# Windows
.\start_mcp_server.ps1
# Linux/Mac
./start_mcp_server.shThese 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.shQuerying 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.pyProject 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 configurationSee 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.pyYou 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-missingA 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/apidirectoryAll 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.pyContributing
Contributions are welcome! Please feel free to submit a Pull Request.
Ensure your code follows the project's coding standards
Add tests for any new functionality
Update documentation as necessary
Verify all tests pass before submitting
License
This project is licensed under the MIT License - see the LICENSE file for details.
Available Tools
11 toolscreate_clusterC
Create a new Databricks cluster with parameters: cluster_name (required), spark_version (required), node_type_id (required), num_workers, autotermination_minutes
| Name | Required | Description | Default |
|---|---|---|---|
| params | Yes |
TDQS
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.
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.
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.
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.
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.
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)
| Name | Required | Description | Default |
|---|---|---|---|
| params | Yes |
TDQS
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.
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.
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.
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.
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.
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)
| Name | Required | Description | Default |
|---|---|---|---|
| params | Yes |
TDQS
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.
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.
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.
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.
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.
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)
| Name | Required | Description | Default |
|---|---|---|---|
| params | Yes |
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| params | Yes |
TDQS
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.
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.
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.
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.
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.
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)
| Name | Required | Description | Default |
|---|---|---|---|
| params | Yes |
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| params | Yes |
TDQS
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.
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.
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.
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.
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.
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)
| Name | Required | Description | Default |
|---|---|---|---|
| params | Yes |
TDQS
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.
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.
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.
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.
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.
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)
| Name | Required | Description | Default |
|---|---|---|---|
| params | Yes |
TDQS
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.
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.
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.
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.
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.
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)
| Name | Required | Description | Default |
|---|---|---|---|
| params | Yes |
TDQS
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.
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.
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.
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.
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.
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)
| Name | Required | Description | Default |
|---|---|---|---|
| params | Yes |
TDQS
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.
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.
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.
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.
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.
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.
11 tool updates
- First observed
create_cluster - First observed
execute_sql - First observed
export_notebook - First observed
get_cluster - First observed
list_clusters - First observed
list_files - First observed
list_jobs - First observed
list_notebooks - First observed
run_job - First observed
start_cluster - First observed
terminate_cluster
TDQS
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.
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.
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.
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
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
An MCP server that provides an API to LLMs to manage their JumpCloud resources.
The Mercado Pago MCP Server implements the Model Context Protocol to provide AI agents and LLMs with access to Mercado Pago's APIs and tools within compatible development environments. It acts as an intermediary that translates Mercado Pago resources into executable functions (tools) that AI applications can invoke to perform actions and automate flows. The server simplifies integration, enables using documentation to implement or improve code, and optimizes operations through natural language interactions without manual implementations.
MCP server that lets AI assistants use all OneSchema features exposed via the public API.
MCP server for progressive tool usage at any scale (see https://klavis.ai)
Related MCP Servers
- AlicenseNot gradedqualityCmaintenanceThis 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 format42MIT
- FlicenseNot gradedqualityFmaintenanceA Model Context Protocol server that enables LLMs to interact with Databricks workspaces through natural language, allowing SQL query execution and job management operations.50-
- AlicenseNot gradedqualityDmaintenanceA 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
- AlicenseBqualityDmaintenanceA 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.195MIT
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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