flyworks mcp
Fast and free zeroshot lipsync MCP server
Fast and free zeroshot lipsync MCP server
The Flyworks MCP is a Model Context Protocol (MCP) server that provides a convenient interface for interacting with the Flyworks API. It facilitates fast and free lipsync video creation for a wide range of digital avatars, including realistic and cartoon styles.
Input avatar video (footage):
Audio clip with TTS saying 我是一个飞影数字人。Welcome to Flyworks MCP server demo. This tool enables fast and free lipsync video creation for a wide range of digital avatars, including realistic and cartoon styles.
:
Generated lipsync video:
httpx
, mcp[cli]
Clone this repository:
git clone https://github.com/yourusername/flyworks-mcp.git
cd flyworks-mcp
Install dependencies:
pip install httpx "mcp[cli]>=1.6.0"
Or using uv
:
uv pip install httpx "mcp[cli]>=1.6.0"
To avoid timeout issues during server startup, we recommend pre-installing all dependencies:
pip install pygments pydantic-core httpx "mcp[cli]>=1.6.0"
Set your Flyworks API token as an environment variable:
# Linux/macOS
export FLYWORKS_API_TOKEN="your_token_here"
# Windows (Command Prompt)
set FLYWORKS_API_TOKEN=your_token_here
# Windows (PowerShell)
$env:FLYWORKS_API_TOKEN="your_token_here"
Alternatively, you can create a .env
file.
Note: We offer free trial access to our tool with the token
2aeda3bcefac46a3
. However, please be aware that the daily quota for this free access is limited. Additionally, the generated videos will be watermarked and restricted to a duration of 45 seconds. For full access, please contact us at [email protected] to acquire your token.
Run the server.py
file directly:
python server.py
Go to Claude > Settings > Developer > Edit Config > claude_desktop_config.json
to include the following:
{
"mcpServers": {
"flyworks": {
"command": "uvx",
"args": [
"flyworks-mcp",
"-y"
],
"env": {
"FLYWORKS_API_TOKEN": "your_api_token_here",
"FLYWORKS_API_BASE_URL": "https://hfw-api.hifly.cc/api/v2/hifly",
"FLYWORKS_MCP_BASE_PATH": "/path/to/your/output/directory"
}
}
}
}
Go to Cursor -> Preferences -> Cursor Settings -> MCP -> Add new global MCP Server
to add above config.
Make sure to replace your_api_token_here
with your actual API token, and update the FLYWORKS_MCP_BASE_PATH
to a valid directory on your system where output files will be saved.
Please confirm its absolute path by running this command in your terminal:
which uvx
Once you obtain the absolute path (e.g., /usr/local/bin/uvx), update your configuration to use that path (e.g., "command": "/usr/local/bin/uvx").
create_lipsync_video_by_audio
)Create a lipsync video with audio input. Animates a digital human avatar to speak in sync with the provided audio.
Parameters:
- avatar
: Digital human avatar ID. Either this or avatar creation parameters must be provided.
- avatar_video_url
: URL of a video to create the avatar from.
- avatar_image_url
: URL of an image to create the avatar from.
- avatar_video_file
: Local path to a video file to create the avatar from.
- avatar_image_file
: Local path to an image file to create the avatar from.
- audio_url
: Remote URL of the audio file. One of audio_url or audio_file must be provided.
- audio_file
: Local path to the audio file. One of audio_url or audio_file must be provided.
- title
: Optional title for the created video.
- async_mode
: If true, returns task_id immediately. If false, waits for completion and downloads the video. Default is true.
- output_path
: Where to save the downloaded video if async_mode is false. Default is "output.mp4".
Notes: - For avatar creation, provide exactly ONE of avatar_video_url, avatar_image_url, avatar_video_file, or avatar_image_file. - If avatar ID is directly provided, these parameters will be ignored.
Returns: - If async_mode is true: task_id for checking status later and created_avatar (if a new avatar was created) - If async_mode is false: downloaded video path, task result, and created_avatar (if applicable)
create_lipsync_video_by_text
)Create a lipsync video with text input. Generates audio from the text and animates a digital human avatar to speak it.
Parameters:
- avatar
: Digital human avatar ID. Either this or avatar creation parameters must be provided.
avatar_video_url
: URL of a video to create the avatar from.avatar_image_url
: URL of an image to create the avatar from.avatar_video_file
: Local path to a video file to create the avatar from.avatar_image_file
: Local path to an image file to create the avatar from.text
: Text content to be spoken by the avatar. Required.voice
: Voice ID to use for text-to-speech. If not provided, a random voice will be selected automatically.title
: Optional title for the created video.async_mode
: If true, returns task_id immediately. If false, waits for completion and downloads the video. Default is true.output_path
: Where to save the downloaded video if async_mode is false. Default is "output.mp4".Notes: - For avatar creation, provide exactly ONE of avatar_video_url, avatar_image_url, avatar_video_file, or avatar_image_file. - If avatar ID is directly provided, these parameters will be ignored.
Returns: - If async_mode is true: task_id for checking status later, selected voice ID, and created_avatar (if applicable) - If async_mode is false: downloaded video path, task result, selected voice ID, and created_avatar (if applicable)
For tasks run in async mode, you can check their status using the Flyworks API's /creation/task
endpoint with the task_id returned by the tool.
[
{
"description": " Create lipsync video by audio input. The tool will animate a digital human avatar to speak in sync with the provided audio. Parameters: - avatar: Digital human avatar ID. Either this or avatar creation parameters must be provided. - avatar_video_url: URL of a video to create the avatar from. - avatar_image_url: URL of an image to create the avatar from. - avatar_video_file: Local path to a video file to create the avatar from. - avatar_image_file: Local path to an image file to create the avatar from. - audio_url: Remote URL of the audio file. One of audio_url or audio_file must be provided. - audio_file: Local path to the audio file. One of audio_url or audio_file must be provided. - title: Optional title for the created video. - async_mode: If true, returns task_id immediately. If false, waits for completion and downloads the video. Default is false. - output_path: Where to save the downloaded video if async_mode is false. Default is output.mp4. Avatar creation: Provide exactly ONE of avatar_video_url, avatar_image_url, avatar_video_file, or avatar_image_file to create a new avatar. If avatar ID is directly provided, these parameters will be ignored. Audio file should be mp3, m4a, or wav format, within 20MB, and between 1 second and 3 minutes. Returns: - If async_mode is true: task_id for checking status later - If async_mode is false: downloaded video path and task result ",
"name": "create_lipsync_video_by_audio",
"parameters": {
"additionalProperties": false,
"properties": {
"async_mode": {
"default": false,
"title": "Async Mode",
"type": "boolean"
},
"audio_file": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Audio File"
},
"audio_url": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Audio Url"
},
"avatar": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Avatar"
},
"avatar_image_file": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Avatar Image File"
},
"avatar_image_url": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Avatar Image Url"
},
"avatar_video_file": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Avatar Video File"
},
"avatar_video_url": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Avatar Video Url"
},
"output_path": {
"default": "./output/output.mp4",
"title": "Output Path",
"type": "string"
},
"title": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Title"
}
},
"required": null,
"type": "object"
}
},
{
"description": " Create lipsync video by text input. The tool will generate audio from the text and animate a digital human avatar to speak it. Parameters: - avatar: Digital human avatar ID. Either this or avatar creation parameters must be provided. - avatar_video_url: URL of a video to create the avatar from. - avatar_image_url: URL of an image to create the avatar from. - avatar_video_file: Local path to a video file to create the avatar from. - avatar_image_file: Local path to an image file to create the avatar from. - text: Text content to be spoken by the avatar. Required. - voice: Voice ID to use for text-to-speech. If not provided, a random voice will be selected. - title: Optional title for the created video. - async_mode: If true, returns task_id immediately. If false, waits for completion and downloads the video. Default is false. - output_path: Where to save the downloaded video if async_mode is false. Default is output.mp4. Avatar creation: Provide exactly ONE of avatar_video_url, avatar_image_url, avatar_video_file, or avatar_image_file to create a new avatar. If avatar ID is directly provided, these parameters will be ignored. Text should be between 1 and 500 characters. Returns: - If async_mode is true: task_id for checking status later, selected voice ID - If async_mode is false: downloaded video path, task result, and selected voice ID ",
"name": "create_lipsync_video_by_text",
"parameters": {
"additionalProperties": false,
"properties": {
"async_mode": {
"default": false,
"title": "Async Mode",
"type": "boolean"
},
"avatar": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Avatar"
},
"avatar_image_file": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Avatar Image File"
},
"avatar_image_url": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Avatar Image Url"
},
"avatar_video_file": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Avatar Video File"
},
"avatar_video_url": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Avatar Video Url"
},
"output_path": {
"default": "./output/output.mp4",
"title": "Output Path",
"type": "string"
},
"text": {
"default": "",
"title": "Text",
"type": "string"
},
"title": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Title"
},
"voice": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Voice"
}
},
"required": null,
"type": "object"
}
}
]