Databricks作业管理服务器

一个用于与Databricks Jobs API交互的Model Context Protocol (MCP)服务器,提供管理和监控Databricks作业的工具。

  • by rajeshpenki
  • Shell
  • 本地部署
  • 更新于
在 GitHub 查看 rajeshpenki/databricks-jobs-mcp-server

使用说明

Databricks Jobs MCP 服务器

一个用于与Databricks Jobs API交互的模型上下文协议(MCP)服务器。此服务器提供了通过MCP管理Databricks作业的工具。

特点/特性

  • 列出带有分页和过滤功能的工作
  • 获取详细的工作信息
  • 运行带有自定义参数的任务
  • 列出带有各种过滤条件的工作运行
  • 获取运行详情和输出结果
  • 取消正在进行的运行
  • 删除任务

可用的交通工具

这台服务器支持两种传输方法:

1. 标准I/O传输(Stdio Transport)index.ts)

使用stdio传输的标准MCP服务器——适用于与Claude桌面集成。

2. 可流式传输的HTTP传输(index-http.ts)

基于HTTP的服务器,具备流媒体功能——适用于Web应用和HTTP客户端。

设置

先决条件

  1. Node.js 18及以上版本
  2. Databricks 工作区和个人访问令牌

环境变量

DATABRICKS_HOST=https://your-workspace.azuredatabricks.net
DATABRICKS_TOKEN=your-personal-access-token
PORT=3000  # Only for HTTP transport

安装

npm install

构建

# Build both versions
npm run build

# Or build individually
npm run build:http  # HTTP version only

使用方法

Stdio 传输(适用于 Claude 桌面版)

  1. 构建并运行:

    npm run build
    npm start
    
  2. Claude 桌面配置: 添加到 ~/.config/claude/claude_desktop_config.json:

    {
      "mcpServers": {
        "databricks-jobs": {
          "command": "node",
          "args": ["/path/to/your/dist/index.js"],
          "env": {
            "DATABRICKS_HOST": "https://your-workspace.azuredatabricks.net",
            "DATABRICKS_TOKEN": "your-token-here"
          }
        }
      }
    }
    

HTTP传输(用于Web应用)

  1. 运行HTTP服务器:

    npm run dev:http  # Development
    # or
    npm run build && npm run start:http  # Production
    
  2. 终点(或:研究终点):

    • POST http://localhost:3000/mcp - 主MCP终端
    • GET http://localhost:3000/sse - 服务器发送事件(Server-Sent Events)端点
    • GET http://localhost:3000/health - 健康检查
    • DELETE http://localhost:3000/mcp/:sessionId - 结束会话
  3. 特点:

    • 使用UUID进行会话管理
    • 已启用CORS(跨源资源共享)
    • 通过SSE提供流式支持
    • 健康监测

可用工具

list_jobs

列出工作区中的所有作业,并可选择进行过滤和分页。

参数:

  • limit (数字):要返回的最大作业数(默认:25,最大:25)
  • offset (数字):分页偏移量(默认:0)
  • expand_tasks (布尔值):是否包含任务详情(默认:false)
  • name (字符串):按作业名称过滤

get_job

获取特定工作的详细信息。

参数:

  • job_id (数字,必填):作业标识符

run_job_now

触发现有作业的新运行,并可选择性地覆盖参数。

参数:

  • job_id (数字,必填):作业标识符
  • jar_params (数组): JAR 任务参数
  • notebook_params (对象): 笔记本任务参数
  • python_params (数组):Python 任务参数
  • spark_submit_params (数组):Spark 提交参数

list_runs

列出作业运行,并提供过滤和分页选项。

参数:

  • job_id (数字):按作业ID筛选
  • active_only (boolean):仅显示活跃的运行
  • completed_only (boolean): 仅显示已完成的运行
  • limit (数字):返回的最大运行次数
  • offset (数字):分页偏移量
  • start_time_from (数字):按开始时间(Unix时间戳)过滤
  • start_time_to (数字):按结束时间(Unix时间戳)过滤

get_run

获取特定作业运行的详细信息。

参数:

  • run_id (数字,必填):运行标识符
  • include_history (布尔值):是否包含维修历史

get_run_output

获取已完成作业运行的输出结果。

参数:

  • run_id (数字,必填):运行标识符

cancel_run

取消一个正在进行的工作运行。

参数:

  • run_id (数字,必填):运行标识符

delete_job

删除任务(无法撤销)。

参数:

  • job_id (数字,必填):作业标识符

Docker 部署

快速入门Docker

  1. 设置环境:

    cp .env.example .env
    # Edit .env with your Databricks credentials
    
  2. 构建并运行:

    ./docker-manage.sh build
    ./docker-manage.sh up
    
  3. 访问服务器:

    • 主服务器:http://localhost:3000
    • 健康检查:http://localhost:3000/health

Docker 管理脚本

这个(或“它”) docker-manage.sh 脚本提供便捷的容器管理功能:

# Build the Docker image
./docker-manage.sh build

# Start services (development mode)
./docker-manage.sh up

# Start with nginx proxy (production mode)
./docker-manage.sh up-prod

# Stop services
./docker-manage.sh down

# View logs
./docker-manage.sh logs -f

# Check health
./docker-manage.sh health

# Open shell in container
./docker-manage.sh shell

# Clean up everything
./docker-manage.sh clean

生产部署

对于使用nginx反向代理的生产环境部署:

# Start with production profile
./docker-manage.sh up-prod

这包括:

  • 支持SSL的Nginx反向代理
  • 速率限制
  • 安全头部(或安全响应头)
  • 正确处理SSE(服务器发送事件)
  • 健康检查

发展

在开发模式下运行:

# Stdio version
npm run dev

# HTTP version  
npm run dev:http

# Or with Docker
./docker-manage.sh up

测试HTTP服务器:

# Health check
curl http://localhost:3000/health

# Example MCP request
curl -X POST http://localhost:3000/mcp \
  -H "Content-Type: application/json" \
  -d '{
    "jsonrpc": "2.0",
    "id": 1,
    "method": "tools/list",
    "params": {}
  }'

建筑学

  • 传输层支持stdio和HTTP传输方式
  • 会话管理HTTP版本包含会话跟踪功能
  • 错误处理使用Databricks API错误详情进行全面的错误处理
  • 类型安全完整的TypeScript实现,采用严格类型检查

依赖项

  • @modelcontextprotocol/sdk用于服务器实现的MCP SDK
  • axiosDatabricks API 调用的 HTTP 客户端
  • express网络框架(仅限HTTP版本)

许可证

麻省理工学院# Databricks作业MCP服务器