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..fbd549dc2 --- /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 000000000..b88ccd571 Binary files /dev/null and b/third_party/databricks-genie-one/assets/logo.png differ diff --git a/third_party/databricks-genie-one/mcp.json b/third_party/databricks-genie-one/mcp.json new file mode 100644 index 000000000..9469cd7ff --- /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"] + } + } + } +}