synthesia-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| SYNTHESIA_API_KEY | Yes | Your Synthesia API key. Required. | |
| SYNTHESIA_MCP_CONFIG | No | Optional path to a config JSON file for custom avatars/voices and defaults. Defaults to ~/.synthesia-mcp/config.json. |
Capabilities
Features and capabilities supported by this server
| Capability | Details |
|---|---|
| tools | {
"listChanged": true
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| list_avatarsA | List Synthesia avatars available for video creation: stock avatars from a bundled catalog snapshot, plus any custom/personal avatars registered in the local server config. Returns avatar IDs to use as the |
| list_voicesA | List Synthesia text-to-speech voices: stock voices from a bundled catalog snapshot plus custom voices registered in the local server config. Returns voice IDs for the |
| list_templatesA | List Synthesia video templates (created in STUDIO) with their IDs and variable names. Templates are the way to produce rich, designed videos via the API — use create_video_from_template with a templateId from this list. Paginated: pass the returned nextOffset as offset to fetch more. |
| get_templateA | Retrieve a single Synthesia template by ID, including its full variable list. Call this before create_video_from_template to see exactly which templateData keys are expected (variable names are case-sensitive). |
| create_videoA | Create a Synthesia avatar video from one or more scenes (avatar + background + script each). Rendering is asynchronous: this returns a videoId immediately; check progress later with get_video. DEFAULTS TO A FREE DRAFT (watermarked test render); pass render_mode='final' only when the user explicitly wants to spend quota on a final render. For visually rich layouts (on-screen text, images), prefer create_video_from_template with a STUDIO-designed template. |
| create_video_from_templateA | Create a Synthesia video from a STUDIO template by substituting its variables (templateData). The server fetches the template first and validates every templateData key against its declared variables — variable names are case-sensitive. Text values are HTML-entity-escaped automatically (Synthesia requirement); media variables accept an uploaded asset ID or a URL. DEFAULTS TO A FREE DRAFT (watermarked); pass render_mode='final' only on explicit approval. Returns a videoId immediately; check progress with get_video. |
| get_videoA | Retrieve a Synthesia video by ID: render status (in_progress / complete / error / rejected), and once complete, a time-limited download URL, duration, and thumbnail. Use this to check on videos created with create_video or create_video_from_template. Renders take minutes — do not call this in a tight loop. |
| list_videosA | List videos in the Synthesia account (created via API or STUDIO), newest context first. Paginated: pass the returned nextOffset as offset to fetch more. |
| update_videoB | Update a video's title, description, visibility, or call-to-action button. The main use is flipping visibility to 'public' to activate the Synthesia share page for a finished video. |
| delete_videoA | PERMANENTLY delete a video from the Synthesia account. Destructive and double-gated: the call is refused unless confirm=true is passed. Only set confirm=true after the user has explicitly confirmed deletion of this specific video. |
| upload_assetA | Upload an image or video to Synthesia and get back an asset ID, usable as a scene background in create_video or as a media variable value in create_video_from_template. Accepted types: image/jpeg, image/png, image/svg+xml, video/mp4, video/webm (GIF and WebP are rejected by Synthesia). Provide a local filePath or a url. TIP: backgrounds and media variables also accept URLs directly — uploading is only needed for non-public files or when a stable asset ID is preferred. For media variables, match the aspect ratio of the element being replaced to avoid stretching. |
| upload_script_audioA | Upload pre-recorded narration audio (mp3 / audio/mpeg only) to use INSTEAD of text-to-speech: pass the returned ID as scriptAudioId (with scriptLanguage) in a create_video scene. NOTE: Synthesia processes uploaded script audio asynchronously — if video creation fails right after uploading with an error about the asset, wait a moment and retry; processing must complete before the audio is usable. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
Latest Blog Posts
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/keithazz/synthesia-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server