Server data from the Official MCP Registry
Licensed soundtracks and sound effects matched to your video. Commercial use OK.
Licensed soundtracks and sound effects matched to your video. Commercial use OK.
Valid MCP server (1 strong, 2 medium validity signals). No known CVEs in dependencies. Package registry verified. Imported from the Official MCP Registry.
4 files analyzed · 1 issue found
Security scores are indicators to help you make informed decisions, not guarantees. Always review permissions before connecting any MCP server.
This plugin requests these system permissions. Most are normal for its category.
Set these up before or after installing:
Environment variable: SONILO_API_KEY
Environment variable: SONILO_API_URL
Environment variable: SONILO_MCP_BASE_PATH
Environment variable: TIME_OUT_SECONDS
Add this to your MCP configuration file:
{
"mcpServers": {
"io-github-sonilo-ai-sonilo-mcp": {
"env": {
"SONILO_API_KEY": "your-sonilo-api-key-here",
"SONILO_API_URL": "your-sonilo-api-url-here",
"TIME_OUT_SECONDS": "your-time-out-seconds-here",
"SONILO_MCP_BASE_PATH": "your-sonilo-mcp-base-path-here"
},
"args": [
"sonilo-mcp"
],
"command": "uvx"
}
}
}From the project's GitHub README.
An MCP (Model Context Protocol) server that exposes Sonilo's licensed music and sound-effects API to MCP-compatible clients (Claude Code, Claude Desktop, Codex).
The flagship tool is video_to_music: hand it your finished video and it composes an original soundtrack matched to the cut — the music follows the pacing, emotion, and edits because the model saw them. Length matches the video automatically. Every track is licensed and safe for commercial use (terms apply). text_to_music is also available for fixed-length tracks with no video to match.
For sound design, video_to_sfx watches your video and generates matching sound effects, returning both the SFX audio and the finished video with the effects mixed in. text_to_sfx generates a standalone effect from a description.
▶ Example result — an AI-generated trailer with its soundtrack composed by video_to_music from the assembled cut. For recipes covering any AI-video pipeline (stitch → grade → add music → mux), see the Sonilo video-to-music cookbook.
claude mcp add sonilo --env SONILO_API_KEY=sks_... -- uvx sonilo-mcp
Get your API key from the Sonilo dashboard, then start a session and ask, e.g. "Make background music that matches this video: ~/Desktop/promo.mp4."
segments let you script effects to specific time ranges ([{start, end, prompt}]).wav, mp3, aac, or flac.The play_audio tool requires PortAudio at runtime (for sounddevice). On macOS/Linux, install via:
brew install portaudiosudo apt-get install libportaudio2uvx sonilo-mcp and pip install will pull the Python bindings, but the system PortAudio library must be installed separately. The other tools (text_to_music, video_to_music, text_to_sfx, video_to_sfx, get_sfx_task, get_account_services, get_usage) work without PortAudio.
Get your API key from the Sonilo dashboard.
Install the uv package manager (provides uvx):
curl -LsSf https://astral.sh/uv/install.sh | sh
See the uv repo for other install methods.
Go to Claude > Settings > Developer > Edit Config > claude_desktop_config.json to include the following:
{
"mcpServers": {
"sonilo": {
"command": "uvx",
"args": ["sonilo-mcp"],
"env": {
"SONILO_API_KEY": "sks_...",
"SONILO_API_URL": "https://api.sonilo.com",
"TIME_OUT_SECONDS": "600"
}
}
}
}
Restart Claude Desktop. You should see the Sonilo tools available in the tool menu.
Get your API key from the Sonilo dashboard.
Install the uv package manager (provides uvx):
curl -LsSf https://astral.sh/uv/install.sh | sh
**Go to Codex > Settings > MCP servers to fill out the following:

Or you can add the server** to ~/.codex/config.toml:
[mcp_servers.sonilo]
command = "uvx"
args = ["sonilo-mcp"]
[mcp_servers.sonilo.env]
SONILO_API_KEY = "sk_..."
SONILO_API_URL = "https://api.sonilo.com"
TIME_OUT_SECONDS = "600"
/mcp to confirm sonilo is connected and its tools are listed.Once the server is connected, just ask your assistant in natural language. For example:
~/Desktop/promo.mp4."https://example.com/clip.mp4 with a calm, ambient style."~/Desktop/trailer.mp4 — add a soundtrack that matches the cut."The assistant will call the matching tool (text_to_music, video_to_music, text_to_sfx, video_to_sfx, get_sfx_task, get_account_services, get_usage, or play_audio) and save generated audio to your configured output directory.
| Variable | Default | Description |
|---|---|---|
SONILO_API_KEY | (required) | Bearer token. |
SONILO_API_URL | https://api.sonilo.com | Public API base URL. |
SONILO_MCP_BASE_PATH | ~/Desktop | Default output directory and base for relative input paths. Also the confinement boundary (see below). |
SONILO_MCP_ALLOW_ANY_PATH | false | Set to true to let tools read/write files outside SONILO_MCP_BASE_PATH. |
TIME_OUT_SECONDS | 600 | Generation timeout, in seconds. Aligned with the backend's read timeout. |
By default, the file tools (video_to_music input, play_audio, and any
output_directory) are confined to SONILO_MCP_BASE_PATH. Paths that
resolve outside it (after symlink resolution) are rejected. This limits the
blast radius if a client is tricked into reading or exfiltrating arbitrary
files. To opt out — e.g. to read a video from elsewhere on disk — set
SONILO_MCP_ALLOW_ANY_PATH=true.
| Tool | Description | Cost |
|---|---|---|
text_to_music(prompt, duration, output_directory?) | Generate music from a text prompt. | ✅ |
video_to_music(video_path? | video_url?, prompt?, output_directory?) | Generate music matched to a video. Max duration 360s (6 min); subject to the account's upload-size cap (typically 300 MB). | ✅ |
text_to_sfx(prompt, duration, audio_format?, output_directory?) | Generate a sound effect from text. Duration 1–180s; formats wav/mp3/aac/flac (default aac). | ✅ |
video_to_sfx(video_path? | video_url?, prompt?, segments?, audio_format?, output_directory?) | Generate SFX for a video; saves the SFX audio and the finished video with effects mixed in. Max video duration 180s (3 min). | ✅ |
get_sfx_task(task_id, output_directory?) | Check an SFX task and download its result — recovery for timed-out SFX calls. | ❌ |
get_account_services() | List available services and limits. | ❌ |
get_usage(days=30) | Show usage summary + per-day breakdown. | ❌ |
play_audio(input_file_path) | Play a local audio file. | ❌ |
Tools marked ✅ make API calls that incur charges on your Sonilo account.
Optional: if
ffprobe(part of FFmpeg) is installed,video_to_musicchecks a video's duration locally and rejects anything over 360s before uploading.video_to_sfxperforms the same local check with its 180s cap. Without it, the same limits are still enforced by the backend.
The music tools stream their result and finish in one call. The SFX tools submit a task, then poll it until it completes — text_to_sfx and video_to_sfx do this for you and return the saved file paths, so you normally never see the task.
If a call times out, the generation keeps running (and is already charged). The error message carries the task id, and get_sfx_task("<id>") retrieves the result once it's ready. The task id is also printed to stderr the moment a task is submitted, so it survives even a cancelled call. get_sfx_task is safe to call repeatedly: if the file is already on disk it reports that instead of downloading a second copy.
Music is saved as .m4a (AAC in MP4 container). File names use the title returned by the backend (slugified), or a sonilo-<timestamp>.m4a fallback. When multiple parallel streams are returned, a -<index> suffix is appended.
Sound effects are saved in the requested audio_format — wav, mp3, flac, or aac (the default, written as .m4a). video_to_sfx additionally saves the finished video as .mp4 alongside the audio.
File names come from the prompt (slugified, truncated to 80 characters). When there is no prompt to name a file after — video_to_sfx without one, or any file recovered via get_sfx_task — the name is sfx-<first 8 chars of the task id> instead. Existing files are never overwritten: a -1, -2, … suffix is added instead.
| Message | What to do |
|---|---|
Invalid SONILO_API_KEY | Verify the key at https://platform.sonilo.com/dashboard/api-keys. |
Insufficient minutes / Credit limit exceeded | Top up at https://platform.sonilo.com/dashboard/billing. |
Rate limit exceeded | Check get_account_services for your rpm/concurrency limits. |
Generation timed out (music) | Raise TIME_OUT_SECONDS. Check get_usage to confirm whether the backend completed and charged. |
Timed out … waiting for task <id> (SFX) | The generation is still running. Call get_sfx_task("<id>") to retrieve the result — nothing is lost. |
Task not found | The task id doesn't exist (or belongs to a music task, which isn't pollable). Check the id. |
Be the first to review this server!
by Modelcontextprotocol · Developer Tools
Read, search, and manipulate Git repositories programmatically
by Toleno · Developer Tools
Toleno Network MCP Server — Manage your Toleno mining account with Claude AI using natural language.
by mcp-marketplace · Developer Tools
Create, build, and publish Python MCP servers to PyPI — conversationally.