8000 GitHub - databrickslabs/mcp
[go: up one dir, main page]
More Web Proxy on the site http://driver.im/
Skip to content

databrickslabs/mcp

Repository files navigation

Databricks MCP servers

Test Status

Table of Contents

Overview

An experimental collection of MCP servers to help AI agents fetch enterprise data from Databricks, automate common developer actions on Databricks, etc:

  • status: Beta Databricks Unity Catalog server: Fetch data and run tools registered in from Unity Catalog, making agents aware of your enterprise data
  • status: Under construction Databricks developer tools server: Perform common developer actions in Databricks, like creating and updating notebooks, running jobs, etc. This server is not yet usable, but contributions are welcome! Note: if developing from within the Databricks product (e.g. using Databricks notebooks), we recommend using Databricks Assistant

The set of servers and tools in this repo is fluid and will evolve over time. We welcome contributions to this repo - please first read the contributor guidelines to streamline the process and discover areas where help is needed.

Unity Catalog Server

status: Beta

Overview

A Model Context Protocol server that exposes structured and unstructured data in Unity Catalog (vector search indexes, functions, and Genie spaces), as tools.

Demo image

Usage (locally via stdio transport)

  1. Install uv
  2. Install Python using uv python install 3.12
  3. Configure Databricks credentials with access to the required APIs
  4. Add the server to your MCP client configuration. For example, to use this server with Claude Desktop, add the following to your claude_desktop_config.json:
{
  "mcpServers": {
    "databricks_unity_catalog": {
      "command": "/path/to/uv/executable/uv",
      "args": [
        "--directory",
        "/path/to/this/repo",
        "run",
        "unitycatalog-mcp",
        "-s",
        "your_catalog.your_schema",
        "-g",
        "genie_space_id_1,genie_space_id_2"
      ]
    }
  }
}

Supported tools

The list of tools supported by this server is dynamically inferred at startup time based on the functions and vector search indexes within the specified Unity Catalog schema, as well as any specified Genie spaces. In particular, the server exposes the following tools:

  • UC Functions: for each UC function, the server exposes a tool with the same name, arguments, and return type as the function
  • Vector search indexes: for each vector search index, the server exposes a tool for querying that vector search index
  • Genie spaces: for each Genie space, the server exposes tools for managing conversations and sending questions to the space

Deploying UC MCP server on Databricks Apps

You can deploy the Unity Catalog MCP server as a Databricks app. To do so, follow the instructions below:

  1. Move into the project directory and build the wheel:
cd /path/to/this/repo
uv build --wheel

There are two ways to deploy the server on Databricks Apps: using the databricks bundle CLI or using the databricks apps CLI. Depending on your preference, you can choose either method.

Using databricks bundle CLI

To deploy the server using the databricks bundle CLI, follow these steps:

  1. Set the env variables for the schema_full_name and genie_space_ids and run the bundle deploy command:
BUNDLE_VAR_schema_full_name=catalog.schema BUNDLE_VAR_genie_space_ids=[\"space1\",\"space2\"] \
  databricks bundle deploy -p your-profile-name
  1. Deploy the app:
BUNDLE_VAR_schema_full_name=catalog.schema BUNDLE_VAR_genie_space_ids=[\"space1\",\"space2\"] \
  databricks bundle run mcp-on-apps -p your-profile-name

Please note that BUNDLE_VAR_genie_space_ids should be exactly as shown above, with the double quotes escaped, no spaces, and the brackets included.

To connect to your app, use the Streamable HTTP transport with the following URL:

https://your-app-url.usually.ends.with.databricksapps.com/api/mcp/

Please note the trailing /api/mcp/ in the URL. This is required for the server to work correctly,including the trailing slash.

You'll also need to set the Authorization header to Bearer <your_token> in your client. You can get the token by running the following command:

databricks auth token -p your-profile-name

If you are a developer iterating on the server implementation, you can repeat steps #2 and #3 to push your latest modifications to the server to your Databricks app.

Please note that both variables should be provided in both deploy and run commands. The schema_full_name variable is used to determine the schema to use for the server, while the genie_space_ids variable is used to determine which Genie spaces to use.

Using databricks apps CLI

To deploy the server using the databricks apps CLI, follow these steps:

  1. Move into the project directory and build the wheel:
cd /path/to/this/repo
uv build --wheel
  1. Configure the app.yml file in the root of the project directory. You can use the following example as a starting point:
command: ["uvicorn", "databricks.labs.mcp.servers.unity_catalog.app:app"]
env:
  - name: SCHEMA_FULL_NAME
    value: catalog.schema
  - name: GENIE_SPACE_IDS
    value: '["space1","space2"]'
  1. Deploy the app using the databricks apps CLI:
uv build --wheel
databricks sync ./build -p <your-profile-name> /Workspace/Users/my-email@org.com/my-app
databricks apps deploy my-app-name -p <your-profile-name> --source-code-path /Workspace/Users/my-email@org.com/my-app
databricks apps start my-app-name -p <your-profile-name>

Connecting to the UC MCP server deployed on Databricks Apps

After the app is deployed, you can connect to it using the Streamable HTTP transport in your MCP client, such as Claude Desktop or MCP inspector. To do this, you need to set the target URL to the URL of your app + /api/mcp/ postfix. Full URL example:

https://your-app-url.usually.ends.with.databricksapps.com/api/mcp/

Please note that the URL should end with /api/mcp/ (including the trailing slash), as this is required for the server to work correctly. To connect to the app, you also need to set the Authorization header to Bearer <your_token>, where <your_token> is the token you can get by running the following command:

databricks auth token -p your-profile-name

Please note that app service principal should be entitled with necessary permissions to access the Unity Catalog schema and Genie spaces. You can do this by assigning the appropriate permissions to the service principal in Unity Catalog and Genie.

Developer Tools Server

This server is currently under construction. It is not yet usable, but contributions are welcome!

Deploying a custom MCP server on Databricks Apps

If you would like to deploy a custom MCP server on Databricks Apps, take a look at the reference implementation here. It provides a step-by-step guide on how to create a custom MCP server and deploy it on Databricks Apps.

Support

Please note that all projects in the databrickslabs GitHub organization are provided for your exploration only, and are not formally supported by Databricks with Service Level Agreements (SLAs). They are provided AS-IS and we do not make any guarantees of any kind. Please do not submit a support ticket relating to any issues arising from the use of these projects.

Any issues discovered through the use of this project should be filed as GitHub Issues on the Repo. They will be reviewed as time permits, but there are no formal SLAs for support.

Contributing

We welcome contributions :) - see CONTRIBUTING.md for details. Please make sure to read this guide before submitting pull requests, to ensure your contribution has the best chance of being accepted.

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 6

0