@quillmeetings/gamma-mcp
v1.0.2
Published
MCP server for Gamma.app - create presentations, documents, and more through AI
Maintainers
Readme
@quillmeetings/gamma-mcp
A Model Context Protocol (MCP) server for Gamma.app. Create presentations, documents, social posts, and webpages through natural language.
Features
- 6 tools for content generation and management
- Two ways to create presentations: from a topic (AI-generated) or from your exact text
- Create from templates
- Export to PDF or PowerPoint
- Full control over themes, styling, and sharing
Prerequisites
You need a Gamma Pro, Ultra, Teams, or Business subscription to use the API. Check Gamma's pricing page for details.
Getting Your API Key
- Log in to Gamma.app
- Go to Settings → API (or visit your account settings)
- Generate a new API key
- Copy the key (it starts with
sk-gamma-)
Installation
npm install -g @quillmeetings/gamma-mcpSetup with Claude Code
Option 1: Quick Setup
claude mcp add gamma -- npx @quillmeetings/gamma-mcpThen add your API key to the MCP settings.
Option 2: Manual Configuration
Add to your Claude Code MCP config file (~/.claude/config.json):
{
"mcpServers": {
"gamma": {
"command": "npx",
"args": ["@quillmeetings/gamma-mcp"],
"env": {
"GAMMA_API_KEY": "sk-gamma-your-api-key-here"
}
}
}
}Restart Claude Code
The MCP server loads on startup, so restart Claude Code to pick up the new configuration.
Available Tools
generate_from_template
Create a new gamma from an existing template. This is the primary tool for most use cases.
Required:
gamma_id- Template ID (see "How to Find Template IDs" below)prompt- Content and instructions for filling the template
Optional:
theme_id- Override the template's themefolder_ids- Destination folder(s)export_as- Export to "pdf" or "pptx"image_model- AI image generation modelimage_style- Artistic style for AI imagesworkspace_access- Team visibility (noAccess, view, comment, edit, fullAccess)external_access- External visibility (noAccess, view, comment, edit)email_recipients- Email addresses to share withemail_access- Permission level for email recipients
generate_presentation
Generate a presentation from a short topic or description. Gamma's AI will expand your input into a full presentation with additional content, sections, and details. Use this when you want Gamma to create content for you.
Required:
topic- Short topic or description (e.g., "Sustainable energy for investors")
Optional:
format- Output: presentation, document, social, webpagetheme_id- Visual themenum_cards- Number of slides (1-75, default 10)additional_instructions- Extra guidance for AI (e.g., "make it professional")folder_ids- Destination foldersexport_as- pdf or pptxtext_tone,text_audience,text_language- Text optionsimage_model,image_style- Image options
create_presentation_from_exact_text
Create a presentation using your exact provided text. Gamma will preserve your content without expanding or rewriting it. Use this when you've already written the content and just want it formatted into slides.
Required:
content- Your exact text (use\n---\nto separate slides)
Optional:
format- Output: presentation, document, social, webpagetheme_id- Visual themenum_cards- Number of slides (1-75)card_split- "auto" or "inputTextBreaks" to respect your\n---\nmarkersadditional_instructions- Extra formatting instructionsfolder_ids- Destination foldersexport_as- pdf or pptxtext_language- Content languageimage_model,image_style- Image options
get_generation_status
Poll for generation completion and get results.
Required:
generation_id- ID returned from generate calls
Returns: status, gammaUrl, pdfUrl/pptxUrl (if exported), credits used/remaining
list_themes
List available themes for styling.
Optional:
query- Search by namelimit- Items per page (max 50)after- Pagination cursor
list_folders
List available folders for organization.
Optional:
query- Search by namelimit- Items per page (max 50)after- Pagination cursor
Example Usage
Once configured, you can ask Claude things like:
Generate from a topic (AI creates content):
"Create a 10-slide presentation about sustainable energy for investors"
"Generate a social media post about our product launch"
Create from your exact text (preserves your content):
"Create a presentation with exactly this text: [your written content]"
"Turn this document into slides, keeping my exact wording"
From template:
"Create a presentation using my Q4 report template (gamma_id: abc123) with this content: [your content]"
Managing content:
"List my available themes so I can pick one for my presentation"
"Check the status of generation xyz789"
How to Find Template IDs
The Gamma API doesn't have an endpoint to list templates. To get a template's gamma_id:
- Open Gamma.app in your browser
- Navigate to the template you want to use
- Click the ... menu → Settings (or look at the URL)
- Copy the gamma ID (it's the alphanumeric string in the URL, e.g.,
abc123xyz)
Alternatively, the ID is in the URL when viewing a gamma: https://gamma.app/docs/Your-Title-abc123xyz → the ID is abc123xyz.
Understanding the Async Pattern
Gamma uses an asynchronous generation pattern:
- Call
generate_presentation,create_presentation_from_exact_text, orgenerate_from_template→ get agenerationId - Poll
get_generation_statusevery ~5 seconds with thegenerationId - When
statusis"completed", you'll get thegammaUrl(and export URLs if requested)
Credits
Gamma uses a credit-based system:
- ~3-4 credits per card
- Image generation costs vary by model (2-120 credits per image)
- Check your remaining credits in the generation status response
Development
# Clone the repo
git clone https://github.com/quillmeetings/gamma-mcp.git
cd gamma-mcp
# Install dependencies
npm install
# Build
npm run build
# Link locally for testing
npm run relink
# Run tests
npm run test:runArchitecture
src/
├── index.ts # Entry point, MCP server setup
├── client.ts # Gamma API client with retry logic
├── types.ts # Type definitions
└── tools/
├── index.ts # Tool registration and utilities
└── generations.ts # All generation toolsLicense
Copyright (c) 2024 Quill Notes, Inc. All rights reserved. See LICENSE for details.
