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, Open RPC image/video generation, model discovery, 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
- Supported image and video model discovery
- AI image generation and single-image editing
- AI text-to-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
list_models
List supported Open RPC models for either image or video.
Recommended flow:
list_modelswithtype: "image"beforegenerate_imageoredit_imagelist_modelswithtype: "video"beforegenerate_video- optional
get_model_helpfor model-specific examples and constraints
Each model entry includes:
model_idmodel, the API model key when one is availabledisplay_namecommandsconstraints
get_model_help
Show detailed usage guidance for one Open RPC model.
Parameters:
modelrequired, using either a numericmodel_idor API model key fromlist_models
Use this before video generation to confirm required duration, resolution, supported aspect_ratio, and whether generate_audio is supported.
generate_image
Create an async Open RPC image generation batch.
Recommended flow:
list_modelswithtype: "image"- optional
get_model_help generate_imageget_task_statuswith the returnedbatch_id
Parameters:
modelrequired, fromlist_modelspromptrequired, trimmed length must be1to2000sizeoptionalresolutionoptionalqualityoptionalcountoptional, default1
For GPT-Image 2 (model_id 108), the MCP server sends quality: "medium" and resolution: "1024x1024" by default when omitted. If resolution is omitted but size is provided, that size is also sent as resolution for compatibility.
edit_image
Create an async Open RPC single-image edit batch.
Recommended flow:
upload_imageor provide an existing image URLlist_modelswithtype: "image"- optional
get_model_help edit_imageget_task_statuswith the returnedbatch_id
Parameters:
modelrequired, fromlist_modelsimagerequired, a single image URLpromptrequired, trimmed length must be1to2000resolutionoptionalqualityoptionalcountoptional, default1
generate_video
Create an async Open RPC text-to-video batch.
Recommended flow:
list_modelswithtype: "video"get_model_helpgenerate_videoget_task_statuswith the returnedbatch_id
Parameters:
modelrequired, fromlist_modelspromptrequired, trimmed length must be1to2000durationrequired when the selected model declares supported durationsresolutionrequired when the selected model declares supported resolutionsaspect_ratiooptional, validated when the selected model declares supported ratiosgenerate_audiooptional, only accepted for models that support generated audio
Video model constraints are validated locally before a request is sent.
get_task_status
Poll a Freebeat async task or Open RPC batch 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.
For legacy MV/effect tasks, continue polling while the status is still in progress. Only call get_task_result after the status is completed.
For Open RPC image/video batches, pass the returned batch_id as task_id. You can also pass serial_no to query a single batch item. Completed batch items include result URLs directly in get_task_status, so get_task_result is not used for Open RPC batches.
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 iscompletedorfaileditemsoptional, present for Open RPC batches and containingimage_url,video_url, oredit_imageswhen available
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