From 0c43e29ee8e8c79207e5303d2a41ba1c701cf2cf Mon Sep 17 00:00:00 2001 From: Minu Palaniappan Date: Wed, 9 Sep 2026 17:59:19 -0700 Subject: [PATCH] feat(third_party): add Gamma plugin --- .cursor-plugin/marketplace.json | 7 ++- README.md | 1 + third_party/gamma/.cursor-plugin/plugin.json | 35 +++++++++++ third_party/gamma/CHANGELOG.md | 9 +++ third_party/gamma/LICENSE | 21 +++++++ third_party/gamma/README.md | 60 +++++++++++++++++++ third_party/gamma/assets/logo.png | Bin 0 -> 18847 bytes third_party/gamma/mcp.json | 8 +++ 8 files changed, 139 insertions(+), 2 deletions(-) create mode 100644 third_party/gamma/.cursor-plugin/plugin.json create mode 100644 third_party/gamma/CHANGELOG.md create mode 100644 third_party/gamma/LICENSE create mode 100644 third_party/gamma/README.md create mode 100644 third_party/gamma/assets/logo.png create mode 100644 third_party/gamma/mcp.json diff --git a/.cursor-plugin/marketplace.json b/.cursor-plugin/marketplace.json index 9cb30e8b9..655a6b133 100644 --- a/.cursor-plugin/marketplace.json +++ b/.cursor-plugin/marketplace.json @@ -347,8 +347,11 @@ "name": "hunter", "source": "third_party/hunter", "description": "Find and verify emails, discover companies, and save leads." + }, + { + "name": "gamma", + "source": "third_party/gamma", + "description": "Generate presentations, documents, and webpages." } ] } - - diff --git a/README.md b/README.md index 32103e163..d2b9333ca 100644 --- a/README.md +++ b/README.md @@ -71,6 +71,7 @@ Official Cursor plugins for popular developer tools, frameworks, and SaaS produc | `x-ads` | [X Ads](third_party/x-ads/) | Cursor | Integrations | Manage ad campaigns, create ads, track conversions, and pull performance stats. | | `attio` | [Attio](third_party/attio/) | Cursor | Integrations | Search and update CRM records, lists, notes, and tasks. | | `hunter` | [Hunter](third_party/hunter/) | Cursor | Integrations | Find and verify emails, discover companies, and save leads. | +| `gamma` | [Gamma](third_party/gamma/) | Cursor | Integrations | Generate presentations, documents, and webpages. | 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/gamma/.cursor-plugin/plugin.json b/third_party/gamma/.cursor-plugin/plugin.json new file mode 100644 index 000000000..9f1a0275c --- /dev/null +++ b/third_party/gamma/.cursor-plugin/plugin.json @@ -0,0 +1,35 @@ +{ + "name": "gamma", + "displayName": "Gamma", + "version": "1.0.0", + "minClientVersions": { + "cursor": "3.13.0" + }, + "description": "Generate presentations, documents, and webpages.", + "author": { + "name": "Cursor", + "email": "plugins@cursor.com" + }, + "homepage": "https://developers.gamma.app/mcp/gamma-mcp-server.md", + "repository": "https://github.com/cursor/plugins", + "license": "MIT", + "logo": "assets/logo.png", + "keywords": [ + "gamma", + "presentations", + "slides", + "documents", + "webpages", + "design", + "export", + "mcp" + ], + "category": "integrations", + "tags": [ + "gamma", + "presentations", + "productivity", + "mcp" + ], + "mcpServers": "./mcp.json" +} diff --git a/third_party/gamma/CHANGELOG.md b/third_party/gamma/CHANGELOG.md new file mode 100644 index 000000000..4af93ece5 --- /dev/null +++ b/third_party/gamma/CHANGELOG.md @@ -0,0 +1,9 @@ +# Changelog + +All notable changes to this plugin will be documented here. + +## 1.0.0 — initial release + +- Added the `gamma` MCP server pointing at Gamma's hosted Streamable HTTP endpoint (`https://mcp.gamma.app/mcp`). +- Auth uses OAuth with Gamma user login — no API key or client ID to configure. +- Logo: Gamma's official mark, from the `gamma-app` GitHub organization. diff --git a/third_party/gamma/LICENSE b/third_party/gamma/LICENSE new file mode 100644 index 000000000..ca2bba771 --- /dev/null +++ b/third_party/gamma/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/gamma/README.md b/third_party/gamma/README.md new file mode 100644 index 000000000..57a079154 --- /dev/null +++ b/third_party/gamma/README.md @@ -0,0 +1,60 @@ +# Gamma + +Cursor plugin that connects agents to [Gamma](https://developers.gamma.app/mcp/gamma-mcp-server.md) through Gamma's official remote [Model Context Protocol](https://modelcontextprotocol.io/) server. + +Generate presentations, documents, and webpages. + +## Install + +1. Open **Cursor Settings → Plugins**. +2. Search for **Gamma**. +3. Click **Install**, then complete the Gamma sign-in prompt. + +Or run `/add-plugin gamma` in chat. + +## MCP + +```json +{ + "mcpServers": { + "gamma": { + "type": "http", + "url": "https://mcp.gamma.app/mcp" + } + } +} +``` + +Auth is OAuth. Cursor prompts for Gamma sign-in when the plugin connects — there is no client ID or personal access token to configure. + +## Before you connect + +You need a Gamma account. Generations consume credits from that account. + +## What agents can do + +| Category | Capabilities | +| --- | --- | +| Generate | Presentations, documents, webpages, and social posts from a prompt, outline, or template | +| Export | PDF, PPTX, and PNG exports | +| Browse | List and read existing Gammas, themes, and folders | +| Analytics | Views and comments on existing Gammas | + +The hosted runtime is the source of truth for tool names and schemas. + +## Notes + +- Generation is asynchronous: tools return a generation id that the agent polls until complete. +- Auth is OAuth 2.0 with Dynamic Client Registration. + +## Docs + +- Gamma MCP server: https://developers.gamma.app/mcp/gamma-mcp-server.md +- Tools reference: https://developers.gamma.app/mcp/mcp-tools-reference.md +- Server URL: https://mcp.gamma.app/mcp + +Logo is Gamma's official mark, from the `gamma-app` GitHub organization. + +## License + +MIT diff --git a/third_party/gamma/assets/logo.png b/third_party/gamma/assets/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..7fa47a5f22cea2047b2ba1cf22d72bce4bd4faa9 GIT binary patch literal 18847 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 muGVWXiSj0c0?k}QE&YG(nua0b66#w30000