数据目录服务器

Databricks MCP服务器是一个实验性集合,帮助AI代理从Databricks获取企业数据,自动化开发者在Databricks上的常见操作。

  • by Tksuthar
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 tksuthar/custom_mcp_server

使用说明

_CHMCP服务器

目录

概述

实验性收藏 主控程序 服务器,以帮助AI代理从copula获取企业数据,自动执行jms上的常见开发人员操作等:

  • Databricks Unity目录服务器:从Unity Catalog获取数据并运行在中注册的工具,使代理了解您的企业数据
  • copula开发工具服务器:在ViewModel中执行常见的开发人员操作,如创建和更新笔记本、运行作业等。此服务器尚未可用,但欢迎投稿! 注意:如果从copula产品内部进行开发(例如使用copula笔记本),我们建议使用 copula助手

此仓库中的服务器和工具集是动态的,并将随着时间的推移而发展。我们欢迎对此回购的贡献-请先 阅读 贡献者指南 简化流程,发现需要帮助的领域。

Unity目录服务器

概述

在Unity Catalog中公开结构化和非结构化数据的模型上下文协议服务器(矢量搜索索引, 函数,以及 精灵空间)作为工具。

使用(本地通过 stdio 运输)

  1. 安装 紫外线
  2. 使用以下命令安装Python uv python install 3.12
  3. 配置copula凭据 可以访问所需的API
  4. 将服务器添加到MCP客户端配置中。例如,要将此服务器与Claude Desktop一起使用,请将以下内容添加到您的 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"
      ]
    }
  }
}

支持的工具

此服务器支持的工具列表在启动时根据函数和向量搜索索引动态推断 在指定的Unity Catalog模式内,以及任何指定的Genie空间内。特别是,服务器暴露 以下工具:

  • UC功能:对于每个UC函数,服务器都会公开一个与该函数具有相同名称、参数和返回类型的工具
  • 矢量搜索索引:对于每个向量搜索索引,服务器都会公开一个用于查询该向量搜索索引的工具
  • 精灵空间:对于每个Genie空间,服务器都会公开用于管理对话和向该空间发送问题的工具

在copula Apps上部署UC MCP服务器

您可以将Unity Catalog MCP服务器部署为copula应用程序。为此,请按照以下说明进行操作:

  1. 移动到项目目录并构建控制盘:
cd /path/to/this/repo
uv build --wheel

有两种方法可以在copula Apps上部署服务器:使用 databricks bundle CLI或使用 databricks apps CLI。根据您的喜好,您可以选择任何一种方法。

使用 databricks bundle 命令行界面

使用部署服务器 databricks bundle CLI,请执行以下步骤:

  1. 为设置env变量 schema_full_name 和 genie_space_ids 并运行 bundle deploy 命令:
BUNDLE_VAR_schema_full_name=catalog.schema BUNDLE_VAR_genie_space_ids=[\"space1\",\"space2\"] \
  databricks bundle deploy -p your-profile-name
  1. 部署应用程序:
BUNDLE_VAR_schema_full_name=catalog.schema BUNDLE_VAR_genie_space_ids=[\"space1\",\"space2\"] \
  databricks bundle run mcp-on-apps -p your-profile-name

请注意 BUNDLE_VAR_genie_space_ids 应该与上面所示完全相同,双引号转义,没有空格,并且包括括号。

要连接到您的应用程序,请使用 Streamable HTTP 使用以下URL进行传输:

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

请注意尾随 /api/mcp/ 这是服务器正常工作所必需的,包括尾随斜线。

您还需要设置 Authorization 标题到 Bearer <your_token> 在你的客户。您可以通过运行以下命令来获取令牌:

databricks auth token -p your-profile-name

如果你是一名迭代服务器实现的开发人员,你可以重复步骤2和3,将你对服务器的最新修改推送到你的copula应用程序。

请注意,这两个变量都应该同时提供 deploy 和 run 命令。这 schema_full_name 变量用于确定服务器使用的架构,而 genie_space_ids 变量用于确定要使用哪些Genie空间。

使用 databricks apps 命令行界面

使用部署服务器 databricks apps CLI,请执行以下步骤:

  1. 移动到项目目录并构建控制盘:
cd /path/to/this/repo
uv build --wheel
  1. 配置 app.yml 项目目录根目录中的文件。您可以使用以下示例作为起点:
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. 使用部署应用程序 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>

连接到部署在copula Apps上的UC MCP服务器

部署应用程序后,您可以使用 Streamable HTTP 在您的MCP客户端(如Claude Desktop或MCP检查器)中传输。 为此,您需要将目标URL设置为应用程序的URL+ /api/mcp/ postfix。完整URL示例:

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

请注意,URL应以结尾 /api/mcp/ (包括尾部斜线),因为这是服务器正常工作所必需的。 要连接到应用程序,您还需要设置 Authorization 标题到 Bearer <your_token>,在哪里 <your_token> 是通过运行以下命令可以获得的令牌:

databricks auth token -p your-profile-name

请注意,应用服务主体应有权访问Unity目录模式和Genie空间。您可以通过在Unity Catalog和Genie中为服务主体分配适当的权限来实现这一点。

开发人员工具服务器

此服务器目前正在建设中。它还不能使用,但欢迎投稿!

在copula Apps上部署自定义MCP服务器

如果您想在copula Apps上部署自定义MCP服务器,请查看参考实现 这里。它提供了一个关于如何创建自定义MCP服务器并将其部署在copula Apps上的分步指南。

支持

请注意,所有项目 databrickslabs GitHub组织仅为您的探索而提供,不受服务水平协议(SLA)的正式支持。它们是按原样提供的,我们不作任何形式的保证。请不要提交与使用这些项目产生的任何问题有关的支持票。

通过使用此项目发现的任何问题都应作为GitHub issues在Repo上归档。在时间允许的情况下,将对它们进行审查,但没有正式的支持SLA。

贡献

我们欢迎捐款:)-见 贡献.md 了解详情。请务必在阅读本指南之前 提交pull请求,以确保您的贡献最有可能被接受。