From 436a95b9ddf70dce9d15caf4b8f4e394f9a1c1ad Mon Sep 17 00:00:00 2001 From: Liam Ilan Date: Tue, 20 Oct 2026 14:35:25 -0700 Subject: [PATCH 1/2] feat(third_party): add Databricks Genie One plugin --- .cursor-plugin/marketplace.json | 5 ++ README.md | 1 + .../.cursor-plugin/plugin.json | 60 +++++++++++++++ third_party/databricks-genie-one/CHANGELOG.md | 10 +++ third_party/databricks-genie-one/LICENSE | 21 +++++ third_party/databricks-genie-one/README.md | 72 ++++++++++++++++++ .../databricks-genie-one/assets/logo.png | Bin 0 -> 17558 bytes third_party/databricks-genie-one/mcp.json | 13 ++++ 8 files changed, 182 insertions(+) create mode 100644 third_party/databricks-genie-one/.cursor-plugin/plugin.json create mode 100644 third_party/databricks-genie-one/CHANGELOG.md create mode 100644 third_party/databricks-genie-one/LICENSE create mode 100644 third_party/databricks-genie-one/README.md create mode 100644 third_party/databricks-genie-one/assets/logo.png create mode 100644 third_party/databricks-genie-one/mcp.json diff --git a/.cursor-plugin/marketplace.json b/.cursor-plugin/marketplace.json index f1e01ff08..13efbe20c 100644 --- a/.cursor-plugin/marketplace.json +++ b/.cursor-plugin/marketplace.json @@ -597,6 +597,11 @@ "name": "jobber", "source": "third_party/jobber", "description": "Work with clients, requests, quotes, jobs, visits, and invoices." + }, + { + "name": "databricks-genie-one", + "source": "third_party/databricks-genie-one", + "description": "Ask Databricks Genie questions about your workspace's data in plain language." } ] } diff --git a/README.md b/README.md index cdcc7acd8..22823d7b9 100644 --- a/README.md +++ b/README.md @@ -109,6 +109,7 @@ Official Cursor plugins for popular developer tools, frameworks, and SaaS produc | `gusto` | [Gusto](third_party/gusto/) | Cursor | Integrations | Work with payroll, employees, contractors, time off, and reports. | | `gopuff` | [Gopuff](third_party/gopuff/) | Cursor | Integrations | Shop Gopuff from Grok Bot through Gopuff's official MCP server. Sign in with your Gopuff account; Gopuff handles the sign-in, and your searches, carts, and orders go to Gopuff under that account, so any order you place is charged and delivered like a normal Gopuff order. | | `jobber` | [Jobber](third_party/jobber/) | Cursor | Integrations | Work with clients, requests, quotes, jobs, visits, and invoices. | +| `databricks-genie-one` | [Databricks Genie One](third_party/databricks-genie-one/) | Cursor | Integrations | Ask Databricks Genie questions about your workspace's data in plain language. | Author values match each plugin’s `plugin.json` `author.name` (Cursor lists `plugins@cursor.com` in the manifest). ## Repository structure diff --git a/third_party/databricks-genie-one/.cursor-plugin/plugin.json b/third_party/databricks-genie-one/.cursor-plugin/plugin.json new file mode 100644 index 000000000..3d65cf200 --- /dev/null +++ b/third_party/databricks-genie-one/.cursor-plugin/plugin.json @@ -0,0 +1,60 @@ +{ + "name": "databricks-genie-one", + "displayName": "Databricks Genie One", + "version": "1.0.0", + "minClientVersions": { + "cursor": "3.19.0" + }, + "description": "Ask Databricks Genie questions about your workspace's data in plain language.", + "author": { + "name": "Cursor", + "email": "plugins@cursor.com" + }, + "homepage": "https://github.com/cursor/plugins/tree/main/third_party/databricks-genie-one", + "repository": "https://github.com/cursor/plugins", + "license": "MIT", + "logo": "assets/logo.png", + "keywords": [ + "databricks", + "genie", + "genie one", + "data", + "analytics", + "sql", + "lakehouse", + "mcp" + ], + "category": "integrations", + "tags": [ + "databricks", + "data", + "analytics", + "mcp" + ], + "variables": { + "type": "object", + "additionalProperties": false, + "required": [ + "DATABRICKS_HOST", + "CLIENT_ID" + ], + "properties": { + "DATABRICKS_HOST": { + "type": "string", + "title": "Workspace hostname", + "description": "For example, dbc-a1b2c3d4-e5f6.cloud.databricks.com" + }, + "CLIENT_ID": { + "type": "string", + "title": "Client ID" + }, + "CLIENT_SECRET": { + "type": "string", + "title": "Client secret", + "writeOnly": true, + "format": "password" + } + } + }, + "mcpServers": "./mcp.json" +} diff --git a/third_party/databricks-genie-one/CHANGELOG.md b/third_party/databricks-genie-one/CHANGELOG.md new file mode 100644 index 000000000..42a06b501 --- /dev/null +++ b/third_party/databricks-genie-one/CHANGELOG.md @@ -0,0 +1,10 @@ +# Changelog + +All notable changes to this plugin will be documented here. + +## 1.0.0 — initial release + +- Added the `databricks-genie-one` MCP server pointing at `https://${DATABRICKS_HOST}/ai-gateway/mcp-services/system.ai.genie_one_mcp`. +- Declared `DATABRICKS_HOST`, `CLIENT_ID`, and optional `CLIENT_SECRET` plugin variables for the team's Databricks OAuth app connection, since Databricks has no dynamic client registration. +- Requests the `ai-gateway` and `offline_access` scopes. +- Logo: Databricks' official mark, from the `databricks` GitHub organization. diff --git a/third_party/databricks-genie-one/LICENSE b/third_party/databricks-genie-one/LICENSE new file mode 100644 index 000000000..ca2bba771 --- /dev/null +++ b/third_party/databricks-genie-one/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2026 Cursor + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/third_party/databricks-genie-one/README.md b/third_party/databricks-genie-one/README.md new file mode 100644 index 000000000..0cf18ab0e --- /dev/null +++ b/third_party/databricks-genie-one/README.md @@ -0,0 +1,72 @@ +# Databricks Genie One + +Cursor plugin that connects agents to [Databricks Genie](https://www.databricks.com/product/business-intelligence/genie) through the Genie One [Model Context Protocol](https://modelcontextprotocol.io/) server on your Databricks workspace. + +Agents ask Genie questions about your workspace's data in plain language, and Genie answers from the data the signed-in user can read. + +## Install + +1. A Databricks account admin creates an OAuth app connection (see [Team setup](#team-setup)). +2. A Cursor team admin opens **Cursor Settings → Plugins**, searches for **Databricks Genie One**, installs it for the team, and enters the workspace hostname and client. +3. Each member signs in to Databricks when Cursor prompts them. + +Or run `/add-plugin databricks-genie-one` in chat. + +## MCP + +The plugin points at your workspace's Genie One endpoint: + +```json +{ + "mcpServers": { + "databricks-genie-one": { + "type": "http", + "url": "https://${DATABRICKS_HOST}/ai-gateway/mcp-services/system.ai.genie_one_mcp", + "auth": { + "CLIENT_ID": "${CLIENT_ID}", + "CLIENT_SECRET": "${CLIENT_SECRET}", + "scopes": ["ai-gateway", "offline_access"] + } + } + } +} +``` + +## Team setup + +Databricks does not support dynamic client registration, so each team brings its own OAuth app connection. + +### 1. Create an OAuth app connection in Databricks + +A Databricks account admin opens the account console, goes to **Settings → App connections**, and adds a connection with these redirect URIs: + +- `https://www.cursor.com/agents/mcp/oauth/callback` +- `http://127.0.0.1:8787/callback` + +Generating a client secret is optional. Without one, the connection is a public client. + +### 2. Enter the connection in Cursor + +A Cursor team admin fills in: + +| Field | Value | +| --- | --- | +| `DATABRICKS_HOST` | Bare workspace hostname, for example `dbc-a1b2c3d4-e5f6.cloud.databricks.com`. Leave out `https://`, any path, and any port. | +| `CLIENT_ID` | Client ID of the app connection. | +| `CLIENT_SECRET` | Optional. Client secret of the app connection, if it has one. Stored encrypted and never shown back. | + +### 3. Members sign in + +Each member signs in to Databricks with their own account. Genie answers only from data that account can read. + +## Docs + +- Databricks Genie: https://docs.databricks.com/aws/en/genie/ +- Databricks OAuth app connections: https://docs.databricks.com/aws/en/integrations/enable-disable-oauth +- Model Context Protocol: https://modelcontextprotocol.io + +Logo is Databricks' official mark, from the `databricks` GitHub organization. + +## License + +MIT diff --git a/third_party/databricks-genie-one/assets/logo.png b/third_party/databricks-genie-one/assets/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..b88ccd5719c1e1238e3678fd38e172fb8b4b64dd GIT binary patch literal 17558 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 literal 0 HcmV?d00001 diff --git a/third_party/databricks-genie-one/mcp.json b/third_party/databricks-genie-one/mcp.json new file mode 100644 index 000000000..1dc2a42e6 --- /dev/null +++ b/third_party/databricks-genie-one/mcp.json @@ -0,0 +1,13 @@ +{ + "mcpServers": { + "databricks-genie-one": { + "type": "http", + "url": "https://${DATABRICKS_HOST}/ai-gateway/mcp-services/system.ai.genie_one_mcp", + "auth": { + "CLIENT_ID": "${CLIENT_ID}", + "CLIENT_SECRET": "${CLIENT_SECRET}", + "scopes": ["ai-gateway", "offline_access"] + } + } + } +} From fb4f183cb04fa59f3ecdaa15456383ffa2d3f502 Mon Sep 17 00:00:00 2001 From: Liam Ilan Date: Wed, 21 Oct 2026 12:03:39 -0700 Subject: [PATCH 2/2] fix(databricks-genie-one): default CLIENT_SECRET to empty for public clients --- third_party/databricks-genie-one/README.md | 2 +- third_party/databricks-genie-one/mcp.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/third_party/databricks-genie-one/README.md b/third_party/databricks-genie-one/README.md index 0cf18ab0e..fbd549dc2 100644 --- a/third_party/databricks-genie-one/README.md +++ b/third_party/databricks-genie-one/README.md @@ -24,7 +24,7 @@ The plugin points at your workspace's Genie One endpoint: "url": "https://${DATABRICKS_HOST}/ai-gateway/mcp-services/system.ai.genie_one_mcp", "auth": { "CLIENT_ID": "${CLIENT_ID}", - "CLIENT_SECRET": "${CLIENT_SECRET}", + "CLIENT_SECRET": "${CLIENT_SECRET:-}", "scopes": ["ai-gateway", "offline_access"] } } diff --git a/third_party/databricks-genie-one/mcp.json b/third_party/databricks-genie-one/mcp.json index 1dc2a42e6..9469cd7ff 100644 --- a/third_party/databricks-genie-one/mcp.json +++ b/third_party/databricks-genie-one/mcp.json @@ -5,7 +5,7 @@ "url": "https://${DATABRICKS_HOST}/ai-gateway/mcp-services/system.ai.genie_one_mcp", "auth": { "CLIENT_ID": "${CLIENT_ID}", - "CLIENT_SECRET": "${CLIENT_SECRET}", + "CLIENT_SECRET": "${CLIENT_SECRET:-}", "scopes": ["ai-gateway", "offline_access"] } }