diff --git a/.cursor-plugin/marketplace.json b/.cursor-plugin/marketplace.json index e9a3da04..7c5f2c56 100644 --- a/.cursor-plugin/marketplace.json +++ b/.cursor-plugin/marketplace.json @@ -117,6 +117,11 @@ "name": "zoominfo", "source": "third_party/zoominfo", "description": "Connect Cursor to ZoomInfo — company and contact search, enrichment, buyer intent signals, scoops, and account research — via ZoomInfo's official remote MCP server." + }, + { + "name": "zoom", + "source": "third_party/zoom", + "description": "Zoom MCP integration — search meetings and recordings, pull summaries and transcripts, and work with Zoom Docs." } ] } diff --git a/third_party/zoom/.cursor-plugin/plugin.json b/third_party/zoom/.cursor-plugin/plugin.json new file mode 100644 index 00000000..b845c75b --- /dev/null +++ b/third_party/zoom/.cursor-plugin/plugin.json @@ -0,0 +1,48 @@ +{ + "name": "zoom", + "displayName": "Zoom", + "version": "1.0.0", + "description": "Zoom MCP integration — search meetings and recordings, pull summaries and transcripts, and work with Zoom Docs.", + "author": { + "name": "Cursor", + "email": "plugins@cursor.com" + }, + "homepage": "https://developers.zoom.us/docs/mcp/", + "repository": "https://github.com/cursor/plugins", + "license": "MIT", + "logo": "assets/logo.png", + "keywords": [ + "zoom", + "mcp", + "meetings", + "recordings", + "transcripts", + "docs" + ], + "category": "integrations", + "tags": [ + "mcp", + "meetings", + "productivity" + ], + "variables": { + "type": "object", + "properties": { + "CLIENT_ID": { + "type": "string", + "title": "Zoom Client ID", + "description": "OAuth Client ID from your Zoom App Marketplace General app → Basic Information → App Credentials." + }, + "CLIENT_SECRET": { + "type": "string", + "title": "Zoom Client Secret", + "description": "OAuth Client Secret from the same Zoom General app." + } + }, + "required": [ + "CLIENT_ID", + "CLIENT_SECRET" + ] + }, + "mcpServers": "./mcp.json" +} diff --git a/third_party/zoom/CHANGELOG.md b/third_party/zoom/CHANGELOG.md new file mode 100644 index 00000000..6fe3efdb --- /dev/null +++ b/third_party/zoom/CHANGELOG.md @@ -0,0 +1,9 @@ +# Changelog + +All notable changes to this plugin will be documented here. + +## 1.0.0 — initial release + +- Logo: Zoom's official 180×180 apple-touch icon. +- Added the `zoom` MCP server pointing at `https://mcp.zoom.us/mcp/zoom/streamable`. +- Declared `CLIENT_ID` and `CLIENT_SECRET` plugin variables and forwarded them through MCP auth, since Zoom requires manual OAuth client registration. diff --git a/third_party/zoom/LICENSE b/third_party/zoom/LICENSE new file mode 100644 index 00000000..ca2bba77 --- /dev/null +++ b/third_party/zoom/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/zoom/README.md b/third_party/zoom/README.md new file mode 100644 index 00000000..4497b200 --- /dev/null +++ b/third_party/zoom/README.md @@ -0,0 +1,65 @@ +# Zoom + +Cursor plugin that connects agents to [Zoom](https://zoom.us) through Zoom's official hosted [Model Context Protocol](https://modelcontextprotocol.io/) servers. + +Search meetings and recordings, pull summaries and transcripts, and work with Zoom Docs from chat. + +## Install + +1. Open **Cursor Settings → Plugins**. +2. Search for **Zoom**. +3. Click **Install**, then set the client ID and secret (below) and complete the Zoom sign-in prompt. + +Or run `/add-plugin zoom` in chat. + +## MCP + +```json +{ + "mcpServers": { + "zoom": { + "type": "http", + "url": "https://mcp.zoom.us/mcp/zoom/streamable", + "auth": { + "CLIENT_ID": "${CLIENT_ID}", + "CLIENT_SECRET": "${CLIENT_SECRET}" + } + } + } +} +``` + +## Setup + +Zoom's MCP servers only support manual client registration — Dynamic Client Registration and Client ID Metadata Documents are not accepted — so an administrator has to register Cursor as a Zoom app before anyone can connect. + +1. A Zoom admin or developer logs into the [Zoom App Marketplace](https://marketplace.zoom.us) and creates a **General app** under **Develop → Build app**. +2. Add the scopes listed for each tool in [Zoom's MCP server docs](https://developers.zoom.us/docs/mcp/servers/). Meeting search and recordings need `ai_companion:read:search` for cross-Zoom search. +3. Under **Basic Information → OAuth Information**, register both redirect URIs: + - Desktop: `http://localhost:8787/callback` + - Web and Cloud Agents: `https://www.cursor.com/agents/mcp/oauth/callback` +4. In **Dashboard → Plugins → Configure**, set **Zoom Client ID** and **Zoom Client Secret** from that app's **App Credentials**. +5. Complete the Zoom OAuth login when Cursor prompts. + +Each member needs a license for the Zoom products they want to reach. On a team marketplace an admin sets the client ID and secret once for everyone; each member still completes their own Zoom OAuth login, so tool calls run with that member's Zoom permissions. + +## Other Zoom MCP servers + +Zoom splits tools across product-specific servers. This plugin ships the main `zoom` server, which covers meeting search, cross-Zoom search, recordings, summaries, meeting assets, and the main-server Zoom Docs tools. To reach the others, add them to `mcp.json` with the same `auth` block: + +| Server | URL | +| --- | --- | +| Zoom Docs | `https://mcp.zoom.us/mcp/docs/streamable` | +| Whiteboard | `https://mcp.zoom.us/mcp/whiteboard/streamable` | +| Team Chat | `https://mcp.zoom.us/mcp/team_chat/streamable` | + +Zoom also exposes SSE variants at the same paths with `/sse` instead of `/streamable`. + +## Docs + +- Zoom MCP overview: https://developers.zoom.us/docs/mcp/servers/ +- Connecting MCP clients: https://developers.zoom.us/docs/mcp/servers/connect-to-zoom-mcp-servers/ + +## License + +MIT diff --git a/third_party/zoom/assets/logo.png b/third_party/zoom/assets/logo.png new file mode 100644 index 00000000..975c2bb5 Binary files /dev/null and b/third_party/zoom/assets/logo.png differ diff --git a/third_party/zoom/mcp.json b/third_party/zoom/mcp.json new file mode 100644 index 00000000..a630263a --- /dev/null +++ b/third_party/zoom/mcp.json @@ -0,0 +1,12 @@ +{ + "mcpServers": { + "zoom": { + "type": "http", + "url": "https://mcp.zoom.us/mcp/zoom/streamable", + "auth": { + "CLIENT_ID": "${CLIENT_ID}", + "CLIENT_SECRET": "${CLIENT_SECRET}" + } + } + } +}