diff --git a/plugins-main/.cursor-plugin/marketplace.json b/plugins-main/.cursor-plugin/marketplace.json index f1e01ff..61c11c0 100644 --- a/plugins-main/.cursor-plugin/marketplace.json +++ b/plugins-main/.cursor-plugin/marketplace.json @@ -597,6 +597,26 @@ "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." + }, + { + "name": "lark", + "source": "third_party/lark", + "description": "Search, create, and update Lark Suite docs, and read Lark messages and groups." + }, + { + "name": "feishu", + "source": "third_party/feishu", + "description": "Search, create, and update Feishu docs, and read Feishu messages and groups." + }, + { + "name": "framer", + "source": "third_party/framer", + "description": "Design, build, and edit your Framer sites, pages, and CMS content." } ] } diff --git a/plugins-main/README.md b/plugins-main/README.md index cdcc7ac..ba44ad6 100644 --- a/plugins-main/README.md +++ b/plugins-main/README.md @@ -109,6 +109,10 @@ 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. | +| `lark` | [Lark](third_party/lark/) | Cursor | Integrations | Search, create, and update Lark Suite docs, and read Lark messages and groups. | +| `feishu` | [Feishu](third_party/feishu/) | Cursor | Integrations | Search, create, and update Feishu docs, and read Feishu messages and groups. | +| `framer` | [Framer](third_party/framer/) | Cursor | Integrations | Design, build, and edit your Framer sites, pages, and CMS content. | Author values match each plugin’s `plugin.json` `author.name` (Cursor lists `plugins@cursor.com` in the manifest). ## Repository structure diff --git a/plugins-main/third_party/databricks-genie-one/.cursor-plugin/plugin.json b/plugins-main/third_party/databricks-genie-one/.cursor-plugin/plugin.json new file mode 100644 index 0000000..4371307 --- /dev/null +++ b/plugins-main/third_party/databricks-genie-one/.cursor-plugin/plugin.json @@ -0,0 +1,60 @@ +{ + "name": "databricks-genie-one", + "displayName": "Databricks Genie One", + "version": "1.0.1", + "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/plugins-main/third_party/databricks-genie-one/CHANGELOG.md b/plugins-main/third_party/databricks-genie-one/CHANGELOG.md new file mode 100644 index 0000000..796051b --- /dev/null +++ b/plugins-main/third_party/databricks-genie-one/CHANGELOG.md @@ -0,0 +1,14 @@ +# Changelog + +All notable changes to this plugin will be documented here. + +## 1.0.1 — Genie icon + +- Logo: replaced the Databricks mark with Databricks' official Genie icon from https://www.databricks.com/sites/default/files/2026-05/icon-genie.svg, rendered at 192×192 on a transparent background. No server or client-version changes. + +## 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/plugins-main/third_party/databricks-genie-one/LICENSE b/plugins-main/third_party/databricks-genie-one/LICENSE new file mode 100644 index 0000000..ca2bba7 --- /dev/null +++ b/plugins-main/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/plugins-main/third_party/databricks-genie-one/README.md b/plugins-main/third_party/databricks-genie-one/README.md new file mode 100644 index 0000000..2c827a0 --- /dev/null +++ b/plugins-main/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 Genie icon, from databricks.com. + +## License + +MIT diff --git a/plugins-main/third_party/databricks-genie-one/assets/logo.png b/plugins-main/third_party/databricks-genie-one/assets/logo.png new file mode 100644 index 0000000..7737bde Binary files /dev/null and b/plugins-main/third_party/databricks-genie-one/assets/logo.png differ diff --git a/plugins-main/third_party/databricks-genie-one/mcp.json b/plugins-main/third_party/databricks-genie-one/mcp.json new file mode 100644 index 0000000..9469cd7 --- /dev/null +++ b/plugins-main/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"] + } + } + } +} diff --git a/plugins-main/third_party/feishu/.cursor-plugin/plugin.json b/plugins-main/third_party/feishu/.cursor-plugin/plugin.json new file mode 100644 index 0000000..5745498 --- /dev/null +++ b/plugins-main/third_party/feishu/.cursor-plugin/plugin.json @@ -0,0 +1,32 @@ +{ + "name": "feishu", + "displayName": "Feishu", + "version": "1.0.0", + "minClientVersions": { + "cursor": "3.13.0" + }, + "description": "Search, create, and update Feishu docs, and read Feishu messages and groups.", + "author": { + "name": "Cursor", + "email": "plugins@cursor.com" + }, + "homepage": "https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/mcp_integration/mcp_introduction", + "repository": "https://github.com/cursor/plugins", + "license": "MIT", + "logo": "assets/logo.png", + "keywords": [ + "feishu", + "docs", + "im", + "messages", + "mcp" + ], + "category": "integrations", + "tags": [ + "feishu", + "docs", + "messaging", + "mcp" + ], + "mcpServers": "./mcp.json" +} diff --git a/plugins-main/third_party/feishu/CHANGELOG.md b/plugins-main/third_party/feishu/CHANGELOG.md new file mode 100644 index 0000000..bc458bf --- /dev/null +++ b/plugins-main/third_party/feishu/CHANGELOG.md @@ -0,0 +1,9 @@ +# Changelog + +All notable changes to this plugin will be documented here. + +## 1.0.0 — initial release + +- Added the `feishu` MCP server pointing at Feishu's hosted Streamable HTTP endpoint (`https://mcp.feishu.cn/mcp`). +- Auth uses MCP OAuth with Feishu user login and Dynamic Client Registration — no API token, client secret, or custom header to configure. +- Logo: the official Lark/Feishu bird mark, from the `larksuite` GitHub organization (Lark Technologies Pte. Ltd.). Feishu uses the same bird as Lark. diff --git a/plugins-main/third_party/feishu/LICENSE b/plugins-main/third_party/feishu/LICENSE new file mode 100644 index 0000000..ca2bba7 --- /dev/null +++ b/plugins-main/third_party/feishu/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/plugins-main/third_party/feishu/README.md b/plugins-main/third_party/feishu/README.md new file mode 100644 index 0000000..0884c3b --- /dev/null +++ b/plugins-main/third_party/feishu/README.md @@ -0,0 +1,65 @@ +# Feishu + +Cursor plugin that connects agents to [Feishu](https://www.feishu.cn) (飞书, the China product) through Feishu's official remote [Model Context Protocol](https://modelcontextprotocol.io/) server. + +Search, create, fetch, and update Feishu docs, work with doc comments and files, and read Feishu IM groups and messages in the signed-in Feishu account. + +Official MCP introduction: https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/mcp_integration/mcp_introduction + +## Install + +1. Open **Cursor Settings → Plugins**. +2. Search for **Feishu**. +3. Click **Install**, then complete the Feishu sign-in prompt. + +Or run `/add-plugin feishu` in chat. + +Accounts on international Lark Suite should install the separate [Lark](../lark/) plugin instead. This plugin talks only to `mcp.feishu.cn`. + +## MCP + +```json +{ + "mcpServers": { + "feishu": { + "type": "http", + "url": "https://mcp.feishu.cn/mcp" + } + } +} +``` + +Auth is MCP OAuth (Bearer). Cursor discovers the authorization server when the plugin connects and prompts for Feishu login. Feishu supports Dynamic Client Registration, so there is no API token, client ID, client secret, or custom header to configure. + +## Before you connect + +You need a Feishu account. Unauthenticated requests to the server are rejected until that login completes. + +## What agents can do + +| Category | Capabilities | +| --- | --- | +| Docs | Search, create, fetch, and update docs; doc comments; list docs | +| IM | Search groups, list group members, get and search messages, read a thread, and check read status | +| People and files | Look up the signed-in user, search users, and fetch files | + +The China server advertises the same tool surface as international Lark, including `fetch-file-v2`, `get-user`, `search-user`, `list-docs-v2`, `search-groups`, `get-group-members`, `get-thread-messages`, and `get-read-status`, plus doc search/create/fetch/update, doc comments, and message get/search. The `offline_access` scope is advertised so the connection can refresh. The hosted runtime is the source of truth for tool names and schemas. + +## Notes + +- Tool calls run as the Feishu user who authorizes the connection and cannot exceed that user's permissions. +- This plugin points only at Feishu's official hosted endpoint. It does not wrap the local `@larksuiteoapi/lark-mcp` stdio server, and it does not take an app id, app secret, user access token, or `X-Lark-MCP-*` header. +- Feishu hosts the server itself. OAuth uses the authorization server at `https://accounts.feishu.cn/mcp` and dynamic client registration at `https://open.feishu.cn/open-apis/app/v1/dcr`. +- International Lark Suite is a separate plugin (`lark`) pointing at `https://mcp.larksuite.com/mcp`. +- Revoke access at any time from your Feishu account. + +## Docs + +- Feishu MCP introduction: https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/mcp_integration/mcp_introduction +- Server URL: https://mcp.feishu.cn/mcp + +Logo is the official Lark/Feishu bird mark, from the `larksuite` GitHub organization (Lark Technologies Pte. Ltd.). Feishu uses the same bird as Lark. + +## License + +MIT diff --git a/plugins-main/third_party/feishu/assets/logo.png b/plugins-main/third_party/feishu/assets/logo.png new file mode 100644 index 0000000..9c83d51 Binary files /dev/null and b/plugins-main/third_party/feishu/assets/logo.png differ diff --git a/plugins-main/third_party/feishu/mcp.json b/plugins-main/third_party/feishu/mcp.json new file mode 100644 index 0000000..37fc2f7 --- /dev/null +++ b/plugins-main/third_party/feishu/mcp.json @@ -0,0 +1,8 @@ +{ + "mcpServers": { + "feishu": { + "type": "http", + "url": "https://mcp.feishu.cn/mcp" + } + } +} diff --git a/plugins-main/third_party/framer/.cursor-plugin/plugin.json b/plugins-main/third_party/framer/.cursor-plugin/plugin.json new file mode 100644 index 0000000..2a815b2 --- /dev/null +++ b/plugins-main/third_party/framer/.cursor-plugin/plugin.json @@ -0,0 +1,34 @@ +{ + "name": "framer", + "displayName": "Framer", + "version": "1.0.0", + "minClientVersions": { + "cursor": "3.13.0" + }, + "description": "Design, build, and edit your Framer sites, pages, and CMS content.", + "author": { + "name": "Cursor", + "email": "plugins@cursor.com" + }, + "homepage": "https://www.framer.com", + "repository": "https://github.com/cursor/plugins", + "license": "MIT", + "logo": "assets/logo.png", + "keywords": [ + "framer", + "website", + "design", + "cms", + "no-code", + "mcp" + ], + "category": "integrations", + "tags": [ + "framer", + "design", + "website", + "cms", + "mcp" + ], + "mcpServers": "./mcp.json" +} diff --git a/plugins-main/third_party/framer/CHANGELOG.md b/plugins-main/third_party/framer/CHANGELOG.md new file mode 100644 index 0000000..04b028e --- /dev/null +++ b/plugins-main/third_party/framer/CHANGELOG.md @@ -0,0 +1,9 @@ +# Changelog + +All notable changes to this plugin will be documented here. + +## 1.0.0 — initial release + +- Added the `framer` MCP server pointing at Framer's hosted Streamable HTTP endpoint (`https://mcp.framer.com/mcp`), with `"placement": "server"` so Grok Bot connects through Cursor's hosted path. +- Auth uses MCP OAuth with Framer account login, Dynamic Client Registration, and PKCE — no API token, client secret, or custom header to configure. +- Logo: Framer's official black logo mark, from `https://misc.framerstatic.com/logo-black.svg` (Framer B.V.). diff --git a/plugins-main/third_party/framer/LICENSE b/plugins-main/third_party/framer/LICENSE new file mode 100644 index 0000000..ca2bba7 --- /dev/null +++ b/plugins-main/third_party/framer/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/plugins-main/third_party/framer/README.md b/plugins-main/third_party/framer/README.md new file mode 100644 index 0000000..b963dc2 --- /dev/null +++ b/plugins-main/third_party/framer/README.md @@ -0,0 +1,56 @@ +# Framer + +Cursor plugin that connects agents to [Framer](https://www.framer.com) through Framer's official remote [Model Context Protocol](https://modelcontextprotocol.io/) server. + +Give the agent a Framer project URL and ask for what you want, such as a new section on a page, a layout or copy change, or an update to your CMS content. + +Framer's own plugin repository: https://github.com/framer/agent-plugins + +## Install + +1. Open **Cursor Settings → Plugins**. +2. Search for **Framer**. +3. Click **Install**, then complete the Framer sign-in prompt. + +Or run `/add-plugin framer` in chat. + +## MCP + +```json +{ + "mcpServers": { + "framer": { + "type": "http", + "url": "https://mcp.framer.com/mcp", + "placement": "server" + } + } +} +``` + +Auth is MCP OAuth (Bearer). Cursor discovers the authorization server when the plugin connects and prompts for Framer login. Framer supports Dynamic Client Registration with PKCE, so there is no API token, client ID, client secret, or custom header to configure. + +## Before you connect + +You need a Framer account with access to the projects you want the agent to work on. Unauthenticated requests to the server are rejected until that login completes. + +## Notes + +- Tool calls run as the Framer user who authorizes the connection and cannot exceed that user's permissions. +- The agent can change and publish your sites. Review changes in the Framer editor before publishing. +- What the agent reads from or changes in your projects goes through Framer's servers, under the [Framer Privacy Statement](https://www.framer.com/legal/privacy-statement/). +- OAuth metadata is discovered at connect time (protected resource `https://mcp.framer.com/.well-known/oauth-protected-resource/mcp`, authorization server `https://api.framer.com/auth/oauth`, scope `mcp:project`). +- Framer's client registration accepts `http://localhost` and `https` return addresses only. `"placement": "server"` makes Grok Bot connect through Cursor's hosted `https` callback. +- The hosted runtime is the source of truth for tool names and schemas; tools are listed after sign-in. + +## Docs + +- Framer: https://www.framer.com +- Framer agent plugins: https://github.com/framer/agent-plugins +- Server URL: https://mcp.framer.com/mcp + +Logo is Framer's official black logo mark, from `https://misc.framerstatic.com/logo-black.svg` (Framer B.V.). + +## License + +MIT diff --git a/plugins-main/third_party/framer/assets/logo.png b/plugins-main/third_party/framer/assets/logo.png new file mode 100644 index 0000000..cdcbf1b Binary files /dev/null and b/plugins-main/third_party/framer/assets/logo.png differ diff --git a/plugins-main/third_party/framer/mcp.json b/plugins-main/third_party/framer/mcp.json new file mode 100644 index 0000000..6bb11c4 --- /dev/null +++ b/plugins-main/third_party/framer/mcp.json @@ -0,0 +1,9 @@ +{ + "mcpServers": { + "framer": { + "type": "http", + "url": "https://mcp.framer.com/mcp", + "placement": "server" + } + } +} diff --git a/plugins-main/third_party/google-cloud-bigquery/.cursor-plugin/plugin.json b/plugins-main/third_party/google-cloud-bigquery/.cursor-plugin/plugin.json index 37ffa28..afae3a1 100644 --- a/plugins-main/third_party/google-cloud-bigquery/.cursor-plugin/plugin.json +++ b/plugins-main/third_party/google-cloud-bigquery/.cursor-plugin/plugin.json @@ -1,9 +1,9 @@ { "name": "google-cloud-bigquery", "displayName": "Google Cloud BigQuery", - "version": "1.0.0", + "version": "1.1.0", "minClientVersions": { - "cursor": "3.13.0" + "cursor": "3.19.0" }, "description": "Explore datasets and tables and run SQL queries.", "author": { @@ -32,5 +32,26 @@ "sql", "mcp" ], + "variables": { + "type": "object", + "additionalProperties": false, + "required": [ + "CLIENT_ID", + "CLIENT_SECRET" + ], + "properties": { + "CLIENT_ID": { + "type": "string", + "title": "Client ID", + "description": "A Google OAuth client your team created. Every team member signs in under it." + }, + "CLIENT_SECRET": { + "type": "string", + "title": "Client secret", + "writeOnly": true, + "format": "password" + } + } + }, "mcpServers": "./mcp.json" } diff --git a/plugins-main/third_party/google-cloud-bigquery/CHANGELOG.md b/plugins-main/third_party/google-cloud-bigquery/CHANGELOG.md index 1789565..f0d43b0 100644 --- a/plugins-main/third_party/google-cloud-bigquery/CHANGELOG.md +++ b/plugins-main/third_party/google-cloud-bigquery/CHANGELOG.md @@ -2,6 +2,10 @@ All notable changes to this plugin will be documented here. +## 1.1.0 + +- Added required `CLIENT_ID` and `CLIENT_SECRET` team variables. A team admin sets one Google OAuth client that every member signs in under, and the plugin no longer uses Cursor's own client. Existing installs need these set before the next connect. Requires Cursor 3.19.0 or later. + ## 1.0.0 — initial release - Added the `google-cloud-bigquery` MCP server pointing at Google Cloud BigQuery's hosted Streamable HTTP endpoint (`https://bigquery.googleapis.com/mcp`). diff --git a/plugins-main/third_party/google-cloud-bigquery/README.md b/plugins-main/third_party/google-cloud-bigquery/README.md index bedfbfe..c6102bb 100644 --- a/plugins-main/third_party/google-cloud-bigquery/README.md +++ b/plugins-main/third_party/google-cloud-bigquery/README.md @@ -19,13 +19,26 @@ Or run `/add-plugin google-cloud-bigquery` in chat. "mcpServers": { "google-cloud-bigquery": { "type": "http", - "url": "https://bigquery.googleapis.com/mcp" + "url": "https://bigquery.googleapis.com/mcp", + "auth": { + "CLIENT_ID": "${CLIENT_ID}", + "CLIENT_SECRET": "${CLIENT_SECRET}" + } } } } ``` -Auth is OAuth. Cursor prompts for Google Cloud BigQuery sign-in when the plugin connects — there is no client ID or personal access token to configure. +Auth is OAuth. Cursor prompts for Google Cloud BigQuery sign-in when the plugin connects. It signs in with a Google OAuth client your team provides; see below. + +## Set up your team's OAuth client + +A team admin provides one Google OAuth client, and every member signs in under it, so consent and audit show the team's own app. The Client ID and Client secret are required. + +1. In the Google Cloud console, create an OAuth client for a **Web application** and add Cursor's OAuth callback URL as an authorized redirect URI. Add the `https://www.googleapis.com/auth/bigquery` scope to the project's OAuth consent screen. +2. In the Cursor dashboard, open the team's plugin settings for **Google Cloud BigQuery** and enter the **Client ID** and **Client secret**. + +Members then sign in to BigQuery under that client. The secret is stored encrypted and stays on Cursor's backend; it is never sent to members' machines. Changing the client signs members out, and they reconnect once. ## Before you connect diff --git a/plugins-main/third_party/google-cloud-bigquery/mcp.json b/plugins-main/third_party/google-cloud-bigquery/mcp.json index 4068482..72e3884 100644 --- a/plugins-main/third_party/google-cloud-bigquery/mcp.json +++ b/plugins-main/third_party/google-cloud-bigquery/mcp.json @@ -2,7 +2,11 @@ "mcpServers": { "google-cloud-bigquery": { "type": "http", - "url": "https://bigquery.googleapis.com/mcp" + "url": "https://bigquery.googleapis.com/mcp", + "auth": { + "CLIENT_ID": "${CLIENT_ID}", + "CLIENT_SECRET": "${CLIENT_SECRET}" + } } } } diff --git a/plugins-main/third_party/lark/.cursor-plugin/plugin.json b/plugins-main/third_party/lark/.cursor-plugin/plugin.json new file mode 100644 index 0000000..4b583c2 --- /dev/null +++ b/plugins-main/third_party/lark/.cursor-plugin/plugin.json @@ -0,0 +1,33 @@ +{ + "name": "lark", + "displayName": "Lark", + "version": "1.0.0", + "minClientVersions": { + "cursor": "3.13.0" + }, + "description": "Search, create, and update Lark Suite docs, and read Lark messages and groups.", + "author": { + "name": "Cursor", + "email": "plugins@cursor.com" + }, + "homepage": "https://open.larksuite.com/document/uAjLw4CM/ukTMukTMukTM/mcp_integration/mcp_introduction", + "repository": "https://github.com/cursor/plugins", + "license": "MIT", + "logo": "assets/logo.png", + "keywords": [ + "lark", + "lark suite", + "docs", + "im", + "messages", + "mcp" + ], + "category": "integrations", + "tags": [ + "lark", + "docs", + "messaging", + "mcp" + ], + "mcpServers": "./mcp.json" +} diff --git a/plugins-main/third_party/lark/CHANGELOG.md b/plugins-main/third_party/lark/CHANGELOG.md new file mode 100644 index 0000000..312ee0f --- /dev/null +++ b/plugins-main/third_party/lark/CHANGELOG.md @@ -0,0 +1,9 @@ +# Changelog + +All notable changes to this plugin will be documented here. + +## 1.0.0 — initial release + +- Added the `lark` MCP server pointing at Lark's hosted Streamable HTTP endpoint (`https://mcp.larksuite.com/mcp`). +- Auth uses MCP OAuth with Lark user login and Dynamic Client Registration — no API token, client secret, or custom header to configure. +- Logo: Lark's official bird mark, from the `larksuite` GitHub organization (Lark Technologies Pte. Ltd.). diff --git a/plugins-main/third_party/lark/LICENSE b/plugins-main/third_party/lark/LICENSE new file mode 100644 index 0000000..ca2bba7 --- /dev/null +++ b/plugins-main/third_party/lark/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/plugins-main/third_party/lark/README.md b/plugins-main/third_party/lark/README.md new file mode 100644 index 0000000..016e010 --- /dev/null +++ b/plugins-main/third_party/lark/README.md @@ -0,0 +1,65 @@ +# Lark + +Cursor plugin that connects agents to [Lark](https://www.larksuite.com) (Lark Suite, the international product) through Lark's official remote [Model Context Protocol](https://modelcontextprotocol.io/) server. + +Search, create, fetch, and update Lark Docs, work with doc comments and files, and read Lark IM groups and messages in the signed-in Lark account. + +Official MCP introduction: https://open.larksuite.com/document/uAjLw4CM/ukTMukTMukTM/mcp_integration/mcp_introduction + +## Install + +1. Open **Cursor Settings → Plugins**. +2. Search for **Lark**. +3. Click **Install**, then complete the Lark sign-in prompt. + +Or run `/add-plugin lark` in chat. + +Accounts on China-region Feishu should install the separate [Feishu](../feishu/) plugin instead. This plugin talks only to `mcp.larksuite.com`. + +## MCP + +```json +{ + "mcpServers": { + "lark": { + "type": "http", + "url": "https://mcp.larksuite.com/mcp" + } + } +} +``` + +Auth is MCP OAuth (Bearer). Cursor discovers the authorization server when the plugin connects and prompts for Lark login. Lark supports Dynamic Client Registration, so there is no API token, client ID, client secret, or custom header to configure. + +## Before you connect + +You need a Lark Suite account. Unauthenticated requests to the server are rejected until that login completes. + +## What agents can do + +| Category | Capabilities | +| --- | --- | +| Docs | Search, create, fetch, and update docs; doc comments; list docs | +| IM | Search groups, list group members, get and search messages, read a thread, and check read status | +| People and files | Look up the signed-in user, search users, and fetch files | + +Advertised tools include `fetch-file-v2`, `get-user`, `search-user`, `list-docs-v2`, `search-groups`, `get-group-members`, `get-thread-messages`, and `get-read-status`, plus doc search/create/fetch/update, doc comments, and message get/search. The `offline_access` scope is advertised so the connection can refresh. The hosted runtime is the source of truth for tool names and schemas. + +## Notes + +- Tool calls run as the Lark user who authorizes the connection and cannot exceed that user's permissions. +- This plugin points only at Lark's official hosted endpoint. It does not wrap the local `@larksuiteoapi/lark-mcp` stdio server, and it does not take an app id, app secret, user access token, or `X-Lark-MCP-*` header. +- Lark hosts the server itself. OAuth metadata is discovered at connect time (protected resource `https://mcp.larksuite.com/.well-known/oauth-protected-resource/mcp`, authorization server `https://accounts.larksuite.com/mcp`, dynamic client registration `https://open.larksuite.com/open-apis/app/v1/dcr`). +- China-region Feishu is a separate plugin (`feishu`) pointing at `https://mcp.feishu.cn/mcp`. +- Revoke access at any time from your Lark account. + +## Docs + +- Lark MCP introduction: https://open.larksuite.com/document/uAjLw4CM/ukTMukTMukTM/mcp_integration/mcp_introduction +- Server URL: https://mcp.larksuite.com/mcp + +Logo is Lark's official bird mark, from the `larksuite` GitHub organization (Lark Technologies Pte. Ltd.). + +## License + +MIT diff --git a/plugins-main/third_party/lark/assets/logo.png b/plugins-main/third_party/lark/assets/logo.png new file mode 100644 index 0000000..9c83d51 Binary files /dev/null and b/plugins-main/third_party/lark/assets/logo.png differ diff --git a/plugins-main/third_party/lark/mcp.json b/plugins-main/third_party/lark/mcp.json new file mode 100644 index 0000000..085b2c8 --- /dev/null +++ b/plugins-main/third_party/lark/mcp.json @@ -0,0 +1,8 @@ +{ + "mcpServers": { + "lark": { + "type": "http", + "url": "https://mcp.larksuite.com/mcp" + } + } +}