gamma-mcp
Gamma MCP Server
MCP server for Gamma.app - AI-powered presentation, document, and website generation.
Features
Generate from scratch - Create presentations, documents, social posts, or webpages from text
Create from template - Adapt existing Gamma templates with new content
List themes - Browse available themes for styling
List folders - Browse workspace folders for organization
Poll generation status - Check when async generation completes
Installation
npm install @purple-horizons/gamma-mcpOr clone and build:
git clone https://github.com/Purple-Horizons/gamma-mcp.git
cd gamma-mcp
npm install
npm run buildConfiguration
Environment Variable
Set your Gamma API key:
export GAMMA_API_KEY=sk-gamma-xxxxxxxxGet your API key from Gamma Account Settings (requires Pro, Ultra, Teams, or Business plan).
Claude Desktop / OpenClaw
Add to your MCP config:
{
"mcpServers": {
"gamma": {
"command": "node",
"args": ["/path/to/gamma-mcp/dist/index.js"],
"env": {
"GAMMA_API_KEY": "sk-gamma-xxxxxxxx"
}
}
}
}mcporter
Add to ~/.config/mcporter/mcporter.json:
{
"servers": {
"gamma": {
"command": "node",
"args": ["/path/to/gamma-mcp/dist/index.js"],
"env": {
"GAMMA_API_KEY": "sk-gamma-xxxxxxxx"
}
}
}
}Tools
gamma_generate
Generate a new gamma from text input.
Parameters:
inputText(required) - Content to generate from (text + image URLs)textMode(required) -generate|condense|preserveformat-presentation|document|social|webpagethemeId- Theme ID (fromgamma_list_themes)numCards- Number of slides (1-60 for Pro, 1-75 for Ultra)cardSplit-auto|inputTextBreaksadditionalInstructions- Extra generation guidancefolderIds- Array of folder IDs to save toexportAs-pdf|pptxtextAmount-brief|medium|detailed|extensivetextTone- Tone description (e.g., "professional, inspiring")textAudience- Target audiencetextLanguage- Language code (default: "en")imageSource-aiGenerated|pictographic|pexels|giphy|webAllImages|webFreeToUse|webFreeToUseCommercially|placeholder|noImagesimageModel- AI model for images (e.g., "flux-1-pro", "imagen-4-pro")imageStyle- Image style descriptiondimensions- Card dimensions (format-dependent)
Returns: { generationId: "..." }
gamma_get_generation
Check generation status.
Parameters:
generationId(required) - ID from gamma_generate
Returns:
{
"status": "pending" | "completed",
"generationId": "...",
"gammaUrl": "https://gamma.app/docs/...",
"credits": { "deducted": 150, "remaining": 3000 }
}gamma_create_from_template
Create a gamma based on an existing template.
Parameters:
gammaId(required) - Template gamma IDprompt(required) - Instructions and contentthemeId- Override themefolderIds- Destination foldersexportAs-pdf|pptximageModel- AI model for new imagesimageStyle- Style for new images
Returns: { generationId: "..." }
gamma_list_themes
List available themes.
Parameters:
query- Search by namelimit- Max results (default 50)after- Pagination cursor
Returns:
{
"data": [{ "id": "...", "name": "...", "type": "standard|custom" }],
"hasMore": false,
"nextCursor": null
}gamma_list_folders
List workspace folders.
Parameters:
query- Search by namelimit- Max results (default 50)after- Pagination cursor
Returns:
{
"data": [{ "id": "...", "name": "..." }],
"hasMore": false,
"nextCursor": null
}Usage Example
// 1. Generate a presentation
const gen = await gamma_generate({
inputText: "5 ways AI is transforming healthcare",
textMode: "generate",
format: "presentation",
numCards: 10,
imageSource: "aiGenerated",
imageStyle: "modern, professional photography"
});
// 2. Poll for completion
let status;
do {
await sleep(5000);
status = await gamma_get_generation({ generationId: gen.generationId });
} while (status.status === "pending");
// 3. Use the result
console.log(status.gammaUrl); // https://gamma.app/docs/xxxxxCredits
Gamma uses a credit-based system:
~3-4 credits per card
~2-120 credits per image (depends on model)
Check your remaining credits in the generation response.
License
MIT