SlideMaster
Convert topics or existing files into professional presentation videos with automated slides and narration.
What it can do
- Generate Outline: Use this when the user wants to plan a presentation. Generates slide titles and descriptions from a topic. Automatically creates a project and returns project_id — no need to call cr
- Create Project: Use this to create a new empty project. Returns the project_id needed for all subsequent operations.
- Upload Init: Use this to upload an existing PPTX or PDF file. Returns a pre-signed upload URL and project_id.
What data it sees
Do you need an account
No: the server works without sign-in
Convert topics or existing files into professional presentation videos with automated slides and narration. Streamline content creation by generating outlines, scripts, and high-quality text-to-speech audio in a single workflow. Manage the entire production pipeline from initial rendering to final video export for polished results.
How to connect
How to connect SlideMaster to Claude
The server address to paste into Claude settings:
https://mcp--slidemaster.run.tools
- Open Claude (claude.ai or the desktop app).
- Go to Settings → Connectors.
- Click Add custom connector.
- Paste the server address copied below into Remote MCP server URL and click Add.
- In a chat, click + → Connectors and switch the new connector on.
Custom connectors are available on Free, Pro, Max, Team and Enterprise plans (Free is limited to one). On Team and Enterprise an organization Owner adds the connector first under Organization settings → Connectors.
Authorization
After you click Add, a sign-in window for the service opens. Sign in with your own account and approve access. Claude never sees your password.
How to connect SlideMaster to ChatGPT
The server address to paste into ChatGPT settings:
https://mcp--slidemaster.run.tools
- Open ChatGPT in a browser (chatgpt.com). A Plus, Pro, Business, Enterprise or Edu plan is required.
- Turn on developer mode once: Settings → Apps → Advanced settings → Developer mode.
- Open Settings → Connectors and click Create.
- Fill in the form: Name (anything), Description (one line about what the service does), MCP server URL (copy it below).
- Under Authentication choose OAuth if the service requires sign-in, otherwise None. Click Create.
- In a new chat open + → Apps/Connectors and enable the connector.
OpenAI has renamed this section before (Connectors → Apps/Plugins). If the label differs, search settings for "developer mode". On Business/Enterprise workspaces an admin must allow custom connectors first.
Authorization
On first use ChatGPT opens the service's sign-in window. Sign in and approve access.
How to connect SlideMaster to Cursor
The server address to paste into Cursor settings:
https://mcp--slidemaster.run.tools
Fastest: click Open in Cursor below and confirm the prompt.
Manually:
- In Cursor open Settings → Cursor Settings → MCP and click Add new global MCP server.
- Paste the JSON copied below into
~/.cursor/mcp.json(per project:.cursor/mcp.jsonin the repo root). - Save the file. The server appears in the MCP list; authorize it there if asked.
Authorization
If the service needs sign-in, an authorize button appears next to the server in the MCP list.
Server tool list (32)
Raw names from tools/list. Only developers need these.
| generate_outline | Use this when the user wants to plan a presentation. Generates slide titles and descriptions from a topic. Automatically creates a project and returns project_id — no need to call create_project separately. |
| create_project | Use this to create a new empty project. Returns the project_id needed for all subsequent operations. |
| upload_init | Use this to upload an existing PPTX or PDF file. Returns a pre-signed upload URL and project_id. |
| upload_complete | Use this after the file has been uploaded to the pre-signed URL. Triggers server-side processing. |
| analyze_style_image | Upload a style reference image to analyze its visual style (colors, fonts, layout). Returns a style_guide object that can be passed to render_slides to apply this style to all slides. IMPORTANT: image_url must be a publicly accessible URL (e.g. hosted on Imgur, Cloudinary, or any public CDN). Base64 is NOT supported. If the user has a local image, they need to upload it to a public host first. |
| render_slides | Use this to generate AI slide images for a project. Each slide gets a background image from the AI model. Optionally pass a style_guide (from analyze_style_image) to apply a consistent visual style. Each slide needs: title (displayed heading), description (visual scene description for AI image generation — write in English for best results, e.g. "Modern office with data charts on screen, blue gradient background"). Example slides array: [{"title": "Introduction", "description": "Clean title slide with modern gradient background, large centered text"}, {"title": "Key Findings", "description": "Professional slide with data visualization, bar charts and icons"}] Costs: 42 credits/slide (1K), 140 credits/slide (2K), 250 credits/slide (4K). Poll check_status after calling. |
| generate_script | Use this to generate a narration script for a single slide using AI. |
| batch_generate_scripts | Use this to generate narration scripts for all slides in a project in one batch. |
| generate_tts | Use this to generate text-to-speech audio. Pass project_id for all slides or slide_id for one slide. Provider comparison: - **gemini**: Best quality for zh-TW/en/ja, natural intonation, recommended default. Voices: Zephyr, Puck, Charon, Kore, etc. - **cosyvoice**: Supports voice cloning (custom voice). Good for zh-TW/zh-CN. Use when user has a cloned voice. - **azure**: Widest language coverage (40+ languages). Good for multilingual projects. Voices: zh-TW-HsiaoChenNeural, en-US-JennyNeural, etc. Cost: 16 credits/slide regardless of provider. |
| generate_video | Use this as the final step to compile slides + audio into an MP4 video. Poll check_status afterward. |
| list_projects | Use this when the user wants to see their existing projects. Returns a paginated project list. |
| get_project | Use this to retrieve detailed metadata and status for a specific project. |
| update_project | Use this to update project settings like title, description, TTS provider, voice, or language. |
| delete_project | Use this to permanently delete a project and all its slides, audio, and video. Do not use for archiving. |
| list_slides | Use this to list all slides in a project with their titles, scripts, and render status. |
| update_slide | Use this to edit a slide's title or narration script text. |
| delete_slide | Use this to permanently remove a single slide from a project. |
| check_status | Use this to poll processing progress after triggering render, TTS, or video generation. Status values: - "processing": Slides are being rendered (poll every 5-10 seconds) - "parsed": Slides are rendered and ready. Check scripts/audio progress in the response. - "generating_video": Video is being compiled (poll every 5-10 seconds) - "video_completed": Video is ready — call export_project for download URLs - "video_failed": Video generation failed — call generate_video to retry The response includes a next_suggestion field telling you what to do next. |
| export_project | Use this to get download URLs for all generated assets: slides, audio, and video files. |
| export_pdf | Export all rendered slides as a single PDF file (16:9 landscape, one slide per page). Returns { pdf_url, page_count, title, summary }. IMPORTANT: Give the user the pdf_url value — it is a signed download link that expires. Do NOT construct GCS URLs manually. |
| export_pptx | Export all rendered slides as a single PPTX (PowerPoint) file. Returns { pptx_url, page_count, title, summary }. IMPORTANT: Give the user the pptx_url value — it is a signed download link that expires. |
| export_evercam | Export project as an EverCam offline HTML5 playable package (ZIP). Requires video to be generated first. This is async — call evercam_status to poll progress. |
| evercam_status | Poll EverCam export progress. Returns status (processing/completed/failed/not_started) and download_url when completed. |
| list_voices | Browse available TTS voices. Use this before generate_tts to help the user pick a voice. Providers: gemini (best quality, zh-TW/en/ja), cosyvoice (voice cloning, zh-TW/zh-CN), azure (40+ languages, widest coverage). |
| get_credit_balance | Check remaining API credits before starting expensive operations. Call this before large projects (>10 slides) to avoid mid-job failures. Quick reference: 2,000 credits ≈ 14 slides at 2K resolution (slides only, no TTS/video). Per-slide costs: 1K=42, 2K=140, 4K=250 credits. TTS=16/slide, Video=80/project. Full 25-slide course with video ≈ 3,980 credits (render 3,500 + TTS 400 + video 80). |
| get_credit_transactions | View recent credit transaction history (purchases, consumption, monthly resets, refunds). Use this when the user asks about their billing history or wants to know what consumed their credits. |
| estimate_cost | Estimate credit cost BEFORE running expensive operations. Returns per-operation breakdown, total, current balance, and whether you have enough. Always call this before render_slides or topic_to_video on large projects. YouTube cost is dynamic: min 30 credits, actual = max(30, video_duration_minutes x 2). The estimate returns the minimum (30) since duration is unknown before analysis. |
| get_project_context | Get a complete snapshot of a project in one call: metadata, all slides with script/audio status, progress summary, and what to do next. Call this after any long-running operation to orient yourself before deciding the next action. |
| topic_to_video | Use this for one-click presentation creation from a topic. Default: slides only. Set include_scripts=true for narration, include_video=true for full MP4. Poll check_status afterward. |
| get_preferences | Get saved user preferences (style, voice, language, etc). Call this at the START of every conversation to auto-apply the user's past choices. Returns null fields if no preferences saved yet. |
| save_preferences | Save user preferences for future sessions. Call this when the user explicitly states a preference (e.g. 'I prefer playful style', 'always use Azure voice'). Only send fields that should be updated — existing fields are preserved. |
| youtube_to_outline | Analyze a YouTube video and generate a structured course outline. Extracts the transcript (or uses video analysis as fallback) and reorganizes it into a teaching outline. Cost: min 30 credits, actual = max(30, ceil(video_duration_minutes) x 2). A 5-min video costs 30 credits, a 60-min video costs 120 credits. Response includes credits_used and balance_after. |