Freebeat Mcp
MCP server for Freebeat creative workflows.
Use it from MCP clients such as Claude Desktop and Cursor through npx freebeat-mcp.
It currently supports audio and image upload, effect template discovery, AI effect generation, AI music video generation, and async task polling.
Features
- Local audio upload or source URL import
- Image upload for workflows that accept reference images
- Supported effect template listing
- AI effect generation
- AI music video generation
- Generic task polling and result retrieval
Installation
Run the server through npm without a separate install step:
npx -y freebeat-mcpPrerequisites
- Get your API key from freebeat.ai .
- Use an MCP client such as Claude Desktop or Cursor.
Configuration
Claude Desktop
{
"mcpServers": {
"freebeat": {
"command": "npx",
"args": ["-y", "freebeat-mcp"],
"env": {
"FREEBEAT_API_KEY": "your-api-key-here"
}
}
}
}Cursor
{
"mcpServers": {
"freebeat": {
"command": "npx",
"args": ["-y", "freebeat-mcp"],
"env": {
"FREEBEAT_API_KEY": "your-api-key-here"
}
}
}
}Environment Variables
| Variable | Required | Description |
|---|---|---|
FREEBEAT_API_KEY | Yes | API authentication key |
This package depends on Freebeat online services. Available source platforms, effect templates, and generation capabilities may change with backend updates.
Tools
upload_audio
Upload a local audio file or import from a music platform URL.
Currently supported platforms:
- SoundCloud
- YouTube
- Suno
- Udio
- TikTok
- Stable Audio
- Riffusion
Provide exactly one of file_path or url.
Returns a music_id that can be used by either generate_music_video or generate_effect.
upload_image
Upload one or two images and receive image_urls.
For MV generation, pass the returned image_urls into generate_music_video.reference_image_urls.
For effect generation, the default recommendation is still list_effects.image_url, but you can also upload one image and pass image_urls[0] into generate_effect.reference_image_urls.
list_effects
List supported effects with:
effect_iddisplay_nameimage_urlpreview_video_urldefault_music_iddefault_music_nameaspect_ratio
For effect generation, pass:
effect_idintogenerate_effect.effect_iddefault_music_idintogenerate_effect.music_idimage_urlas the default single entry ingenerate_effect.reference_image_urls
You can use the built-in effect image directly, or replace it with a single uploaded image URL from upload_image.
generate_effect
Start an async effect generation task.
Recommended flow:
list_effects- optional
upload_audioif you want to replace the effect’s default music - optional
upload_imageif you want to replace the effect’s default image generate_effectget_task_statusget_task_resultonly after status iscompleted
Parameters:
effect_idrequiredmusic_idrequired, usuallydefault_music_idfromlist_effects, or amusic_idfromupload_audioif you want to replace itpromptrequired, trimmed length must be1to2000watermarkoptional, defaultfalsereference_image_urlsrequired and must contain exactly one image URL; recommended default islist_effects.image_url, but you can also useupload_image.image_urls[0]
Returns a task envelope with:
task_idtask_typecurrentlyeffect_generationstatus
generate_music_video
Start an async MV generation task from a music_id returned by upload_audio.
Recommended flow:
upload_audio- optional
upload_image generate_music_videoget_task_statusget_task_resultonly after status iscompleted
Parameters:
music_idrequired, fromupload_audiopromptrequired, trimmed length must be1to2000mv_typeoptional, defaultabstractstyleoptionalaspect_ratiooptional, default16:9resolutionoptional, default720watermarkoptional, defaultfalsestart_msoptionalend_msoptionalreference_image_urlsoptional
Returns a task envelope with:
task_idtask_typecurrentlymusic_video_generationstatus
get_task_status
Poll a Freebeat async task until it reaches a terminal status. Current MCP endpoints return lowercase status values such as pending, completed, and failed; older backends may still return uppercase variants.
Continue polling while the status is still in progress. Only call get_task_result after the status is completed.
Returns a stable task envelope including:
task_idtask_typestatuserror_messageoptional, present when backend reports a failed taskerror_codeoptional, present when backend reports a failed taskmessageoptional, present when status iscompletedorfailed
get_task_result
Retrieve the output for a completed task. Only call this after get_task_status returns completed. The response uses a stable envelope with task_id, task_type, status, and result.
If the task is not completed yet, this tool returns error code TASK_NOT_COMPLETED.
If the task has failed, this tool surfaces the backend failure as an error.
For current supported completed MV tasks, result is an object containing:
video_urlcover_url
Completed effect generation results use the same result object fields:
video_urlcover_url