gamma-mcp-server
Enables GitHub Copilot to generate Gamma content such as presentations and documents from code or prompts.
Integrates with Google Gemini to create presentations, documents, webpages, and social posts via Gamma.
Allows OpenAI Codex assistants to generate Gamma presentations, documents, webpages, and social posts.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@gamma-mcp-serverCreate a presentation about the benefits of remote work"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Gamma MCP Server
A Model Context Protocol (MCP) server that integrates Gamma.app with AI assistants. Create presentations, documents, webpages, and social posts directly from your AI conversations.
Works with: Claude Code, Claude Desktop, OpenCode, GitHub Copilot CLI, Google Gemini CLI, and any other MCP-compatible AI assistant.
Features
Generate Content: Create professional presentations, documents, webpages, and social posts from text prompts
Theme Support: Browse and apply visual themes to your content
Folder Organization: Save generated content to specific folders
Template Remix: Create variations of existing Gamma templates
Email Sharing: Share generated content directly via email
Related MCP server: Gamma MCP Server
Quick Start
1. Clone and Install
git clone https://github.com/Arkava-AI/gamma-mcp-server.git
cd gamma-mcp-server
npm install
npm run build2. Get Your Gamma API Key
Log in to gamma.app
Go to Settings > API (or Settings > Members > API tab)
Click Create API key
Copy the key (format:
sk-gamma-xxxxxxxx)
Note: Requires Gamma Pro, Ultra, Team, or Business account.
3. Configure Your AI Assistant
Choose your AI assistant below for setup instructions.
Claude Desktop (macOS / Windows / Linux)
Config File
OS | Path |
macOS |
|
Linux |
|
Windows |
|
Add to the mcpServers object:
{
"mcpServers": {
"gamma": {
"command": "node",
"args": ["/absolute/path/to/gamma-mcp-server/dist/index.js"],
"env": {
"GAMMA_API_KEY": "sk-gamma-your-api-key-here"
}
}
}
}Restart Claude Desktop
Restart Claude Desktop to load the new MCP server. You should see "gamma" in your MCP servers list.
Claude Code
Claude Code uses the same MCP configuration as Claude Desktop. If you've already configured Claude Desktop, you're all set.
For project-level configuration, create a .claude/settings.json file in your project directory with the same mcpServers structure shown above. This allows different projects to use different MCP server configurations.
OpenCode
Config File
Scope | Path |
Global (user) |
|
Project |
|
JSON Structure
{
"mcp": {
"gamma": {
"type": "local",
"command": ["node", "/absolute/path/to/gamma-mcp-server/dist/index.js"],
"enabled": true,
"environment": {
"GAMMA_API_KEY": "sk-gamma-your-api-key-here"
}
}
}
}Note: OpenCode uses a different config format from Claude Desktop —
mcp(notmcpServers),typefield required ("local"or"remote"),commandis an array, and env vars go underenvironment.
Restart OpenCode after editing the config to load the server.
GitHub Copilot CLI
Config File
~/.copilot/mcp-config.json
JSON Structure
{
"mcpServers": {
"gamma": {
"type": "local",
"command": "node",
"args": ["/absolute/path/to/gamma-mcp-server/dist/index.js"],
"env": {
"GAMMA_API_KEY": "sk-gamma-your-api-key-here"
},
"tools": ["*"]
}
}
}Note: Requires the GitHub Copilot CLI (
gh copilot) — not the same as OpenAI Codex.
OpenAI Codex
Config File
~/.codex/config.toml(TOML format, not JSON)
TOML Structure
[mcp_servers.gamma]
command = "node"
args = ["/absolute/path/to/gamma-mcp-server/dist/index.js"]
enabled = true
[mcp_servers.gamma.env]
GAMMA_API_KEY = "sk-gamma-your-api-key-here"Note: Codex uses TOML format, not JSON. The
envsection is a separate table under[mcp_servers.gamma.env].
Google Gemini CLI
Config File
Scope | Path |
User |
|
Project |
|
JSON Structure
{
"mcpServers": {
"gamma": {
"command": "node",
"args": ["/absolute/path/to/gamma-mcp-server/dist/index.js"],
"cwd": "/absolute/path/to/gamma-mcp-server",
"env": {
"GAMMA_API_KEY": "sk-gamma-your-api-key-here"
},
"timeout": 30000
}
}
}Restart Gemini CLI after editing the config to load the server.
Available Tools
Tool | Description |
| Create presentations, documents, webpages, or social posts |
| Check generation progress (with optional polling) |
| Remix existing Gamma templates |
| Browse available visual themes |
| List your Gamma folders |
| Share content via email |
| Verify server and API are reachable |
| Archive a Gamma from your workspace |
gamma_generate
Create new content using Gamma's AI.
Formats & Sizes:
presentation: fluid, 16x9, 4x3document: fluid, pageless, letter, a4social: 1x1, 4x5, 9x16webpage: fluid
Example prompts in your AI assistant:
"Create a 5-slide presentation about sustainable energy"
"Generate a document explaining our Q1 results"
"Make a social media post announcing our new product"
gamma_get_status
Check if a generation has completed. Set waitForCompletion: true to automatically poll until done.
gamma_from_template
Remix an existing Gamma with new content or variable substitutions.
{
"templateId": "gamma_xyz789",
"prompt": "Update for Q1 2025",
"variables": { "company_name": "Acme Corp" }
}Multi-Machine Setup
This repository is designed for easy deployment across multiple machines:
# On each machine:
git clone https://github.com/Arkava-AI/gamma-mcp-server.git
cd gamma-mcp-server
npm install && npm run build
# Then configure your AI assistant with the local pathTo update on any machine:
git pull
npm install
npm run build
# Restart your AI assistantEnvironment Variables
Variable | Default | Description |
| (required) | Your Gamma API key ( |
|
| Override for self-hosted Gamma instances |
|
| Milliseconds between status polls (default 2s) |
|
| Max polling attempts before timeout (default 150 × 2s = 5 min) |
Development
# Run in development mode with auto-reload
npm run dev
# Build for production
npm run build
# Run linting
npm run lint
# Format code
npm run format
# Type check
npm run typecheck
# Test with MCP Inspector
npm run inspectProject Structure
gamma-mcp-server/
├── src/
│ ├── index.ts # Main entry point
│ ├── constants.ts # Configuration constants
│ ├── types.ts # TypeScript interfaces
│ ├── schemas/ # Zod validation schemas
│ ├── services/ # API client and formatters
│ └── tools/ # MCP tool implementations
├── dist/ # Compiled JavaScript (generated)
├── package.json
├── tsconfig.json
└── eslint.config.jsAPI Credits
Gamma uses a credit-based system for API usage. Credits are consumed per generation. Monitor your usage in the Gamma dashboard and enable auto-recharge if needed.
Troubleshooting
Error | Solution |
"GAMMA_API_KEY environment variable is required" | Ensure |
"Invalid API key" | Keys should start with |
"Rate limit exceeded" | Wait a few minutes. Contact Gamma support for higher limits. |
"Insufficient credits" | Top up credits or enable auto-recharge in Gamma settings. |
Requirements
Node.js 18+
Gamma Pro/Ultra/Team/Business account (for API access)
MCP-compatible AI assistant (Claude Code, Claude Desktop, OpenCode, GitHub Copilot CLI, Gemini CLI, etc.)
Maintainer
Arkava Ltd — engage@arkava.ai
License
MIT License - see LICENSE for details.
Links
Available Tools
8 toolsgamma_archiveArchive GammaADestructiveIdempotent
Archive a Gamma (presentation, document, webpage, or social post) from your workspace.
Archived content is removed from your active workspace but retained for recovery. Use this to declutter your Gamma dashboard.
| Name | Required | Description | Default |
|---|---|---|---|
| gammaId | Yes | The ID of the Gamma to archive | |
| response_format | No | Output format: 'markdown' for human-readable or 'json' for structured data | markdown |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Description aligns with annotations: destructiveHint=true (removes from workspace), idempotentHint=true (archiving again likely harmless). Adds context about recoverability, enhancing transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences cover purpose, effect, and use case. No wasted words; front-loaded with action.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Adequate for a simple archive operation with clear annotations. No missing context about behavior, parameters, or output.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema covers 100% of parameters with descriptions. Description does not add information beyond schema, so baseline score applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states the verb 'Archive' and the resource 'Gamma' with specific types (presentation, document, etc.). Distinct from sibling tools like gamma_generate or gamma_get_status.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Describes the effect ('removed from active workspace but retained for recovery') and use case ('declutter your dashboard'). Does not explicitly state when not to use, but context is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
gamma_from_templateCreate from TemplateA
Create new content by remixing an existing Gamma template.
This tool uses Gamma's Remix feature to create a new version of existing content with customizations. Useful for creating variations of proven templates.
PARAMETERS:
templateId (required): ID of the existing Gamma to use as template
prompt: Additional instructions for customization
variables: Key-value pairs for dynamic content substitution
folderId: Folder to save the result
waitForCompletion: If true, waits for completion
RETURNS: Same as gamma_generate
EXAMPLE: { templateId: "gamma_xyz789", prompt: "Update for Q1 2025 results", variables: { "company_name": "Acme Corp", "quarter": "Q1 2025" } }
| Name | Required | Description | Default |
|---|---|---|---|
| prompt | No | Additional instructions for customizing the template content. | |
| folderId | No | Folder ID to save the remixed version to. | |
| variables | No | Key-value pairs to substitute in the template. Use for dynamic content like names, dates, or custom values. | |
| templateId | Yes | The ID of an existing Gamma to use as template. Find this in the Gamma URL or use gamma_list_folders to browse. | |
| response_format | No | Output format: 'markdown' for human-readable or 'json' for structured data | markdown |
| waitForCompletion | No | If true, poll until generation completes and return the final URL. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate readOnlyHint=false (modification) and destructiveHint=false. The description adds behavioral context by explaining the 'Remix feature' and mentioning the waitForCompletion parameter, which reveals polling behavior. No contradictions with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with a summary, parameter list, returns note, and example. It is concise but could be slightly more compact. The front-loading of the purpose is effective.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has 6 parameters (1 required), nested objects, and no output schema, the description is adequate but lacks details about the return value when waitForCompletion is false. The returns note 'Same as gamma_generate' is vague without knowing gamma_generate's output.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents parameters. The description lists parameters with names and an example, but adds little extra meaning beyond the schema. The example provides context for usage, but doesn't deeply enhance semantic understanding.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Create new content by remixing an existing Gamma template.' It uses a specific verb ('Create') and resource ('content by remixing template'), and distinguishes from sibling tool gamma_generate by specifying 'remix' versus likely create-from-scratch.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides some context ('Useful for creating variations of proven templates') but lacks explicit guidance on when to use this tool versus gamma_generate or other siblings. No when-not-to-use or alternative tools are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
gamma_generateGenerate Gamma ContentA
Create a new presentation, document, webpage, or social post using Gamma's AI.
This tool generates professional content from any text input - a one-line prompt, messy notes, or polished content. Gamma's AI will structure, design, and style your content automatically.
SUPPORTED FORMATS:
presentation: Slide decks (sizes: fluid, 16x9, 4x3)
document: Reports, articles, essays (sizes: fluid, pageless, letter, a4)
webpage: Websites with header/footer support (size: fluid)
social: Social media posts (sizes: 1x1, 4x5, 9x16)
PARAMETERS:
prompt (required): Your content or instructions. Can be brief ("Company overview presentation") or detailed with bullet points.
format (required): One of presentation, document, webpage, social
cards: Number of slides/sections (1-60, default: AI-determined)
size: Aspect ratio appropriate for the format
themeId: Visual theme ID (use gamma_list_themes to see options)
language: Target language code (en, es, fr, de, zh, ja, etc.)
imageStyle: auto, photographic, generated, clipart, none
cardDensity: auto, high, low
waitForCompletion: If true, waits up to 5 min for generation to complete
RETURNS:
generationId: ID for tracking/status checks
status: pending, completed, or failed
url: Link to view content (when completed)
title: Generated or custom title
EXAMPLES:
Quick presentation: { prompt: "5 slide pitch deck for AI startup", format: "presentation" }
Detailed document: { prompt: "Technical documentation for REST API...", format: "document", cards: 10 }
Styled content: { prompt: "Company culture overview", format: "presentation", themeId: "theme_123", waitForCompletion: true }
CREDITS: Each generation consumes Gamma API credits based on complexity.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate a non-read-only, non-destructive action. The description adds valuable behavioral context: generation consumes credits, waitForCompletion behavior, default AI-determined card count, and return status. No contradiction with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with sections for formats, parameters, returns, and examples. It is front-loaded with the primary action. While comprehensive, it remains clear and easy to scan, though it could be slightly tighter.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema, the description covers return fields (generationId, status, url, title). It addresses formats, sizes, parameters, and credits. It misses error handling or authentication details but is sufficient for proper invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema is empty (0 parameters, 100% coverage), so the description carries the full burden. It thoroughly explains all parameters, including required ones, options, defaults, and examples, which is far beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool creates new presentations, documents, webpages, or social posts. It specifies the verb 'create' and lists supported resources, distinguishing it from sibling tools like gamma_from_template and gamma_list_themes.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context on when to use the tool (creating new content from text) and references gamma_list_themes for theme selection. It lacks explicit exclusions or alternatives for some siblings, but examples and parameter descriptions give adequate guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
gamma_get_statusGet Generation StatusARead-onlyIdempotent
Check the status of a Gamma generation.
Use this tool to check if a previously started generation has completed. Generations typically take 30 seconds to 2 minutes depending on complexity.
PARAMETERS:
generationId (required): The ID returned from gamma_generate
waitForCompletion: If true, polls until complete (max 5 minutes)
RETURNS:
status: pending, completed, or failed
url: Link to view content (when completed)
title: Content title
creditsUsed: Credits consumed
EXAMPLE: { generationId: "gen_abc123", waitForCompletion: true }
| Name | Required | Description | Default |
|---|---|---|---|
| generationId | Yes | The generation ID returned from gamma_generate | |
| response_format | No | Output format: 'markdown' for human-readable or 'json' for structured data | markdown |
| waitForCompletion | No | If true, poll until generation completes (up to 5 minutes). If false, return current status immediately. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already provide read-only, idempotent, non-destructive hints. Description adds polling behavior and return values, enhancing transparency beyond annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Well-structured with purpose, usage, parameters, returns, example. Every sentence contributes, no fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Comprehensive for a status-checking tool: covers all parameters, behavior, return values, and example. No gaps given absence of output schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% so baseline is 3. Description adds context on polling mechanism and example usage, adding value over schema alone.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states 'Check the status of a Gamma generation' with specific verb and resource, distinguishes from siblings like gamma_generate by focusing on status polling.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly says 'Use this tool to check if a previously started generation has completed', providing clear context. Could mention when not to use, but example and sibling differentiation suffice.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
gamma_healthHealth CheckARead-onlyIdempotent
Check if the Gamma MCP server and API are reachable and working.
Use this to verify your configuration is correct before running other tools. Returns whether the API key is valid, the API is reachable, and the account status.
Useful for:
Confirming the server is running after startup
Troubleshooting connection issues
Verifying your GAMMA_API_KEY is valid
| Name | Required | Description | Default |
|---|---|---|---|
| response_format | No | Output format: 'markdown' for human-readable or 'json' for structured data | markdown |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, and idempotentHint=true. The description adds details about what the tool checks (API key, reachability, account status) and its output, which is fully transparent and consistent with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is highly concise: one sentence stating purpose, one sentence giving usage advice, and a bullet list of use cases. Every sentence adds value with no redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (one optional parameter, no output schema), the description fully covers what the tool does, when to use it, and what it returns. Annotations provide safety context, and the description compensates for lack of output schema by stating return fields.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%: the only parameter 'response_format' is fully documented with enum values, default, and description. The tool description adds no additional information about the parameter, so baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description explicitly states the tool checks if the Gamma MCP server and API are reachable and working, and specifies it returns API key validity, reachability, and account status. This clearly distinguishes it from sibling tools like gamma_generate or gamma_list_themes.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit guidance: 'Use this to verify your configuration is correct before running other tools.' It also lists specific use cases like confirming server startup, troubleshooting connections, and verifying API key validity.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
gamma_list_foldersList Gamma FoldersARead-onlyIdempotent
List your Gamma folders for organizing content.
Folders help organize generated content. Use the returned folder IDs with gamma_generate's folderId parameter to save content to specific folders.
PARAMETERS:
limit: Max folders to return (1-100, default 20)
offset: Skip this many folders for pagination
RETURNS:
items: Array of folders with id, name, itemCount
total: Total number of folders
hasMore: Whether more folders are available
nextOffset: Offset for next page
EXAMPLE: { limit: 20, response_format: "json" }
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum items to return (1-100, default 20) | |
| offset | No | Number of items to skip for pagination | |
| response_format | No | Output format: 'markdown' for human-readable or 'json' for structured data | markdown |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover readOnly, idempotent, etc. The description adds value by detailing the return structure (items, total, hasMore, nextOffset) and the example, which clarifies behavior. No contradictions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Well-structured with clear sections (what, why, PARAMETERS, RETURNS, EXAMPLE). Front-loaded and no unnecessary words. Could be slightly more concise by integrating the example.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple list tool with good annotations and schema coverage, the description adequately covers purpose, integration hint, and return format. Complete for its complexity level.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema covers all three parameters (100% coverage), so baseline is 3. The description's PARAMETERS section omits response_format but mentions it in the example, adding minor value. Redundant for limit and offset.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool lists Gamma folders and mentions their use for organizing content. It differentiates from siblings like gamma_list_themes by focusing on folders. Not a perfect 5 because it doesn't explicitly contrast with other list tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explains that folder IDs can be used with gamma_generate, providing context for use. However, it lacks explicit guidance on when not to use this tool or alternatives beyond that hint.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
gamma_list_themesList Gamma ThemesARead-onlyIdempotent
List available visual themes for Gamma content.
Themes control the visual styling of generated content including colors, fonts, and layouts. Use the returned theme IDs with gamma_generate's themeId parameter.
PARAMETERS:
limit: Max themes to return (1-100, default 20)
offset: Skip this many themes for pagination
RETURNS:
items: Array of themes with id, name, description
total: Total number of themes available
hasMore: Whether more themes are available
nextOffset: Offset for next page
EXAMPLE: { limit: 10, response_format: "markdown" }
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum items to return (1-100, default 20) | |
| offset | No | Number of items to skip for pagination | |
| response_format | No | Output format: 'markdown' for human-readable or 'json' for structured data | markdown |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnlyHint=true, idempotentHint=true, and destructiveHint=false. The description adds value by detailing the return structure (items with id, name, description, total, hasMore, nextOffset) and the optional response_format parameter, providing full transparency beyond annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with sections for explanation, parameters, returns, and example. It is front-loaded with the main purpose and avoids unnecessary repetition. However, it could be slightly more concise (e.g., combining parameter descriptions).
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema, the description thoroughly explains the return values (items, total, hasMore, nextOffset) and ties the tool into the broader workflow with gamma_generate. All parameters are documented, and the example aids understanding. No gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% (all parameters have descriptions), so baseline is 3. The description adds an example that shows how parameters work together (e.g., { limit: 10, response_format: 'markdown' }), which provides concrete usage context that the schema alone does not.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool lists available visual themes for Gamma content, and explains how themes control visual styling. It distinguishes itself from siblings by specifically mentioning it returns theme IDs used with gamma_generate.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit guidance to use returned theme IDs with gamma_generate's themeId parameter, implying this tool should be used before generating content. It lacks explicit when-not-to-use or alternative tool comparisons, but the context is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.
8 tool updates
v1.0.0- First observed
gamma_archive - First observed
gamma_from_template - First observed
gamma_generate - First observed
gamma_get_status - First observed
gamma_health - First observed
gamma_list_folders - First observed
gamma_list_themes - First observed
gamma_share_email
TDQS
Each tool serves a distinct purpose: creating from prompt or template, checking status, listing themes/folders, sharing, health check, and archiving. No overlap detected.
All tools follow the consistent pattern 'gamma_verb_noun' using snake_case, e.g., gamma_generate, gamma_list_themes, gamma_share_email.
With 8 tools, the surface is well-scoped for a Gamma content generation server, covering creation, status, discovery, sharing, and archiving without bloat.
Core lifecycle is covered (create, check, archive, share), but missing a tool to list existing generations or browse created content, which is a minor gap.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
Create presentations, docs, sheets and meeting notes from chat. Hosted link, editor, PPTX & PDF.
Generate AI images, videos, music, SFX & speech in any AI assistant. Results appear inline in chat.
- dropOAuthio.neuronik
Publish web pages straight from your AI assistant and share them with a link.
- mcpOAuthai.fathom.api
Give your AI assistant real meeting context via Fathom so every output grounded in your work
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceEnables AI-powered generation of presentations, documents, and webpages through the Gamma API. Supports theme selection, folder management, and automatic export to PowerPoint or PDF formats.16MIT
- FlicenseNot gradedqualityNot gradedmaintenanceEnables AI assistants to generate presentations, documents, and webpages through the Gamma.app API with support for custom themes, tones, audiences, and image generation.16-
- AlicenseAqualityCmaintenanceEnables generating presentations, documents, webpages, and social posts via Gamma's API with full parameter surface including templates, folders, headers/footers, and email sharing.6MIT
- AlicenseNot gradedqualityDmaintenanceEnables generating AI-powered presentations via the Gamma API directly from MCP clients like Claude for Desktop.16MIT
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/Arkava-AI/gamma-mcp-server'
If you have feedback or need assistance with the MCP directory API, please join our Discord server