Slidespeak
OfficialEnables interaction with Slidespeak, providing tools for working with presentation slides, likely including creation, modification, and analysis of slide content.
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., "@Slidespeakcreate a quarterly sales report presentation"
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.
slidespeak-mcp
An MCP Server that allows you to create PowerPoint presentations. Powered by SlideSpeak, you can now create presentations using the SlideSpeak MCP. Automate reports, presentations an other slide decks. Start today!
Usage with Claude Desktop
To use this with Claude Desktop, add the following to your claude_desktop_config.json:
Remote MCP
This is the easiest way to run the MCP. This approach requires you to have Node.js installed on your system.
(Download Node.js for free here)
{
"mcpServers": {
"slidespeak": {
"command": "npx",
"args": [
"mcp-remote",
"https://mcp.slidespeak.co/mcp",
"--header",
"Authorization: Bearer YOUR-SLIDESPEAK-API-KEY-HERE"
],
"timeout": 300000
}
}
}Docker
This will allow you to run the MCP Server on your own computer. This approach requires Docker to be installed on your system.
(Download Docker Desktop for free here)
{
"mcpServers": {
"slidespeak": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"-e",
"SLIDESPEAK_API_KEY",
"slidespeak/slidespeak-mcp:latest"
],
"env": {
"SLIDESPEAK_API_KEY": "YOUR-SLIDESPEAK-API-KEY-HERE"
}
}
}
}Related MCP server: PPT-MCP
Getting an API key
Visit this page in order to get an API key for Slidespeak: https://slidespeak.co/slidespeak-api/
Development of SlideSpeak MCP
The following information is related to development of the SlideSpeak MCP. These steps are not needed to use the MCP.
Building the Docker Image
This is for local testing, if you want to publish a new docker container check out the "Making a new version" section below.
docker build . -t slidespeak/slidespeak-mcp:TAG-HEREDevelopment
Install uv
curl -LsSf https://astral.sh/uv/install.sh | shCreate virtual environment and activate it
uv venv source .venv/bin/activate
Install dependencies
uv pip install -r requirements.txtUsing the server directly without Docker
Add the following to your claude_desktop_config.json:
{
"mcpServers": {
"slidespeak": {
"command": "/path/to/.local/bin/uv",
"args": [
"--directory",
"/path/to/slidespeak-mcp",
"run",
"slidespeak.py"
],
"env": {
"SLIDESPEAK_API_KEY": "API-KEY-HERE"
}
}
}
}Making a new release
Version naming should be in the format of MAJOR.MINOR.PATCH (e.g., 1.0.0).
The version needs to be updated in the following files:
pyproject.toml -> version
slidespeak.py -> USER_AGENT
Make a new release in GitHub and tag it with the version number. This will trigger a GitHub Action. The release will be automatically built and pushed to Docker Hub.
Available Tools
7 toolsdownload_presentationA
Get the download URL for a generated presentation.
Use the request_id returned by getTaskStatus (from a completed generation task)
to get a temporary download link.
| Name | Required | Description | Default |
|---|---|---|---|
| request_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided; description notes the link is temporary but lacks details on failure modes, authorization, or other behavioral traits. Adequate but minimal.
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 sentences, no unnecessary words, front-loaded with purpose and follow-up usage instruction.
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?
Simple tool with one parameter and no output schema; covers primary use case and temporary nature. Could briefly mention error handling but sufficient.
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?
Only parameter request_id has no schema description (0% coverage); description adds value by specifying it comes from get_task_status, clarifying expected input.
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 retrieves a download URL for a generated presentation, using specific verb 'Get' and resource 'download URL'. It distinguishes itself from sibling generation 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?
Explicitly instructs to use request_id from get_task_status after task completion, providing clear when-to-use context and referencing sibling tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
generate_powerpointA
Generate a PowerPoint presentation from text content using specified template.
Returns a task_id that can be used with getTaskStatus to check progress.
When the task completes, the result will contain a presentation_id and request_id.
Use the request_id with the downloadPresentation tool to get the download URL.
IMPORTANT: This tool returns immediately with a task_id. You MUST then call
getTaskStatus with the task_id to poll for completion. Keep polling every few
seconds until the status is SUCCESS or FAILED.
Parameters:
Required:
- plain_text (str): The topic to generate a presentation about
- length (int): The number of slides
- template (str): Template name or ID
Optional:
- document_uuids (list[str]): UUIDs of uploaded documents to use
- language (str): Language code (default: 'ORIGINAL')
- fetch_images (bool): Include stock images (default: True)
- use_document_images (bool): Include images from documents (default: False)
- tone (str): Text tone - 'default', 'casual', 'professional', 'funny', 'educational', 'sales_pitch' (default: 'default')
- verbosity (str): Text length - 'concise', 'standard', 'text-heavy' (default: 'standard')
- custom_user_instructions (str): Custom generation instructions
- include_cover (bool): Include cover slide (default: True)
- include_table_of_contents (bool): Include TOC slides (default: True)
- add_speaker_notes (bool): Add speaker notes (default: False)
- use_general_knowledge (bool): Expand with related info (default: False)
- use_wording_from_document (bool): Use document wording (default: False)
- response_format (str): 'powerpoint' or 'pdf' (default: 'powerpoint')
- use_branding_logo (bool): Include brand logo (default: False)
- use_branding_fonts (bool): Apply brand fonts (default: False)
- use_branding_color (bool): Apply brand colors (default: False)
- branding_logo (str): Custom logo URL
- branding_fonts (dict): The object of brand fonts to be used in the slides
| Name | Required | Description | Default |
|---|---|---|---|
| plain_text | Yes | ||
| length | Yes | ||
| template | Yes | ||
| document_uuids | No | ||
| language | No | ORIGINAL | |
| fetch_images | No | ||
| use_document_images | No | ||
| tone | No | default | |
| verbosity | No | standard | |
| custom_user_instructions | No | ||
| include_cover | No | ||
| include_table_of_contents | No | ||
| add_speaker_notes | No | ||
| use_general_knowledge | No | ||
| use_wording_from_document | No | ||
| response_format | No | powerpoint | |
| use_branding_logo | No | ||
| use_branding_fonts | No | ||
| use_branding_color | No | ||
| branding_logo | No | ||
| branding_fonts | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description fully discloses the async behavior (returns task_id, requires polling). It also explains the resulting structure. However, it does not discuss error scenarios, rate limits, or authentication needs, which would elevate transparency further.
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 front-loads essential usage information and follows with a well-organized parameter list. While the parameter list is verbose, it is necessary given the tool's complexity and lack of schema descriptions. It could be slightly more concise.
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 complexity (21 parameters, async pattern), the description covers purpose, workflow, parameter roles, and related tools. It lacks error handling details or explicit comparison with generate_slide_by_slide, but is largely complete for typical use.
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?
Since schema coverage is 0%, the description provides comprehensive parameter details including types, defaults, and explainer comments (e.g., 'plain_text: The topic to generate a presentation about'). This adds meaningful context beyond a bare 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 generates a PowerPoint from text using a template, and distinguishes itself from siblings like download_presentation and get_task_status by explaining the async workflow and subsequent steps.
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 explicitly instructs the agent to poll getTaskStatus for completion and to use downloadPresentation with the request_id. It mentions alternatives like download_presentation, but does not fully contrast with generate_slide_by_slide. Overall, the async usage pattern is clearly defined.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
generate_slide_by_slideA
Generate a PowerPoint presentation using Slide-by-Slide input.
Returns a task_id that can be used with getTaskStatus to check progress.
IMPORTANT: This tool returns immediately with a task_id. You MUST then call
getTaskStatus with the task_id to poll for completion. Keep polling every few
seconds until the status is SUCCESS or FAILED.
Parameters
- template (string): The name of the template or the ID of a custom template.
- language (string, optional): Language code like 'ENGLISH' or 'ORIGINAL'.
- fetch_images (bool, optional): Include stock images (default: True).
- slides (list[dict]): A list of slides, each defined as a dictionary with the following keys:
- title (string): The title of the slide.
- layout (string): The layout type for the slide. See available layout options below.
- item_amount (integer): Number of items for the slide (must match the layout constraints).
- content (string): The content that will be used for the slide.
Available Layouts
- items: 1-5 items
- steps: 3-5 items
- summary: 1-5 items
- comparison: exactly 2 items
- big-number: 1-5 items
- milestone: 3-5 items
- pestel: exactly 6 items
- swot: exactly 4 items
- pyramid: 1-5 items
- timeline: 3-5 items
- funnel: 3-5 items
- quote: 1 item
- cycle: 3-5 items
- thanks: 0 items
Returns
- A string with the task_id and instructions to poll for status.
| Name | Required | Description | Default |
|---|---|---|---|
| template | Yes | ||
| slides | Yes | ||
| language | No | ||
| fetch_images | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Discloses asynchronous behavior (returns task_id immediately) and polling requirement, no contradictions with annotations (none provided).
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, bulleted parameters, and layout list; every sentence is informative and necessary.
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?
Covers all essential aspects: async workflow, parameter details, layout options with item constraints, and return value; no gaps given complexity.
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?
Adds extensive meaning beyond the skeletal schema: explains template as name or ID, language codes, fetch_images default, and slide structure with layout constraints and item amounts.
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?
Clearly states it generates a PowerPoint presentation using Slide-by-Slide input, distinguishes from sibling tools like generate_powerpoint and links to getTaskStatus for async workflow.
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 instructs the agent to poll with getTaskStatus after calling, including the importance of waiting for SUCCESS or FAILED status.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_available_templatesA
Get all available presentation templates.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden but only states the high-level action. It does not disclose behavioral traits such as read-only nature, output structure, or any limits, leaving the agent to infer basic retrieval behavior.
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 a single, front-loaded sentence with no unnecessary words. It is maximally concise while conveying the core purpose.
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?
Despite the tool's simplicity, the description omits what the output looks like (e.g., list of template IDs/names) and any additional context about the templates. With no output schema, the description should compensate, but it does not.
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 has zero parameters, so schema description coverage is 100%. The description adds no parameter information, which is acceptable given no parameters exist. Baseline for zero parameters is 4.
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 verb 'Get' and the resource 'available presentation templates', with no ambiguity. It distinguishes itself from sibling tools, which are for downloading, generating, or uploading, not listing templates.
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?
No explicit when-to-use or alternative guidance is provided. The usage is implied as a preliminary step before generating or downloading a presentation, but the description does not state this context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_meA
Get details about the current API key (user_name and remaining credits).
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses the returned fields (user_name and remaining credits) and implies a read-only, safe operation. No annotations exist, so it carries full burden, but it lacks details about possible failures or rate limiting.
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?
Single sentence, no wasted words, clearly front-loaded with purpose and output details.
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, parameterless tool with no nested objects or enums, the description fully covers its purpose and output. No output schema but description compensates.
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?
Input schema has 0 parameters, so description adds no param info. With schema coverage at 100%, baseline is 4; no extra credit needed.
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 verb 'Get', resource 'current API key', and outputs 'user_name and remaining credits'. It's distinct from sibling tools which deal with presentations and templates.
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?
No explicit guidance on when to use vs alternatives, but the specific purpose implies it's for querying API key details. Siblings are very different, so confusion is unlikely.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_task_statusA
Get the current task status and result by task ID.
When the task completes, the result will contain a request_id.
Use the request_id with the downloadPresentation tool to get the download URL.
Possible statuses:
- PENDING: Task is queued
- SENT: Task has been sent for processing
- PROCESSING: Task is being processed
- SUCCESS: Task completed — result contains presentation_id and request_id
- FAILED: Task failed — result contains error details
If status is PENDING, SENT, or PROCESSING, poll again in a few seconds.
| Name | Required | Description | Default |
|---|---|---|---|
| task_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It explains the possible statuses, the result structure (request_id, presentation_id, error details), and implies it is a read-only polling operation. No contradictions or missing critical behaviors are apparent.
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 concise and well-structured. It opens with the main purpose, then adds usage guidance and a list of statuses. Every sentence adds value, and the list is formatted for easy parsing.
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 a single required parameter, no output schema, and the tool being part of a workflow with a sibling download tool, the description sufficiently covers how to use the tool and what to expect. The status explanations and next-step instructions make it complete for the agent's decision-making.
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 only parameter, 'task_id', is described in the schema title but with 0% schema description coverage. The description states 'by task ID', which conveys the parameter's purpose. However, it does not explain where the task_id originates or expects additional context. Still, it is adequate for a single parameter.
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 tool name 'get_task_status' is clear, and the description states: 'Get the current task status and result by task ID.' It also lists possible statuses, which adds clarity. The tool is distinct from siblings like download_presentation or generate_powerpoint, making its purpose unambiguous.
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 explicitly provides guidance on when to poll and what to do with the result: 'If status is PENDING, SENT, or PROCESSING, poll again... When the task completes, the result will contain a request_id. Use the request_id with the downloadPresentation tool.' This gives clear instructions for proper usage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
upload_documentB
Upload a document file and return the task_id for processing.
Supported file types: .pptx, .ppt, .docx, .doc, .xlsx, .pdf
| Name | Required | Description | Default |
|---|---|---|---|
| file_path | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, and the description only states it returns a task_id, implying asynchronous processing. It lacks details on side effects, authentication requirements, rate limits, or what happens to the file after upload.
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 extremely concise, with only two sentences that convey essential information without any extraneous content. Every sentence is necessary.
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 and only one parameter, the description is adequate but incomplete. It mentions the return of a task_id but does not explain how to interpret it or what the task does. It also lacks guidance on file size limits or error handling.
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 has 0% description coverage, so the description's mention of supported file types adds some value. However, it does not explain the file_path parameter semantics (e.g., path format, existence checks), leaving the agent to infer from the name 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?
The description clearly states that the tool uploads a document file and returns a task_id for processing, which differentiates it from sibling tools like download_presentation or generate_powerpoint. However, it could be more specific about what 'processing' entails.
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?
Supported file types are listed, implying when the tool can be used, but there is no explicit guidance on when to use this tool versus alternatives like generate_powerpoint or direct file operations. No exclusions or prerequisites are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
TDQS
Each tool serves a distinct purpose: generation (two methods), file upload, status polling, download, templates, and user info. No overlap or ambiguity.
All tool names follow a consistent verb_noun snake_case pattern, making them predictable and easy for an agent to navigate.
Seven tools is well-scoped for a presentation generation service, covering the core workflow without unnecessary bloat or deficiency.
The surface covers the full generation lifecycle (create, poll, download) plus templates and user info. Missing a list/delete past presentations, but core functionality is solid.
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
Generate professional PowerPoint presentations from text, YouTube videos, or structured JSON data.…
Generate, edit, merge, translate and PDF-convert PowerPoint (.pptx) over MCP. 8 tools.
Generate polished PowerPoint presentations from text prompts, YouTube videos, or structured outlin…
Create narrated presentations from HTML, poll build status, list them, read one back as text.
Related MCP Servers
- AlicenseAqualityDmaintenanceCreates and manipulates PowerPoint presentations with capabilities for adding various slide types, generating images, and incorporating tables and charts through natural language commands.11144MIT
- AlicenseAqualityDmaintenanceEnables creating, analyzing, and managing PowerPoint presentations using pure Node.js. Supports generating professional presentations with custom templates, reading existing files, and performing content analysis through natural language commands.4425Apache 2.0
- AlicenseNot gradedqualityCmaintenanceCreates professional PowerPoint presentations from Markdown or JSON with intelligent layout recommendations, rich content support including tables and images, and automatic template selection based on content analysis.7Apache 2.0
- AlicenseNot gradedqualityBmaintenanceGenerate executive-ready presentations via API. 32 slide types, 24 chart types, 15 themes, finance vertical with DCF/comp tables/waterfalls. Renders PPTX from JSON IR or natural language prompts.6MIT
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/SlideSpeak/slidespeak-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server