Skip to main content

MCP server for Sonilo AI music generation API

Project description

Sonilo MCP Server

An MCP (Model Context Protocol) server that exposes Sonilo's AI music generation API to MCP-compatible clients (Claude Desktop, Cursor, etc.).

Install

uvx sonilo-mcp

Or install with pip:

pip install sonilo-mcp

Audio Playback Dependencies

The play_audio tool requires PortAudio at runtime (for sounddevice). On macOS/Linux, install via:

  • macOS: brew install portaudio
  • Debian/Ubuntu: sudo apt-get install libportaudio2

uvx 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, get_account_services, get_usage) work without PortAudio.

Configuration

Claude Desktop

Edit ~/Library/Application Support/Claude/claude_desktop_config.json (macOS) or %APPDATA%\Claude\claude_desktop_config.json (Windows):

{
  "mcpServers": {
    "sonilo": {
      "command": "uvx",
      "args": ["sonilo-mcp"],
      "env": {
        "SONILO_API_KEY": "sk_live_..."
      }
    }
  }
}

Get your API key at https://platform.sonilo.com/dashboard/api-keys.

Codex

Add the server to ~/.codex/config.toml:

[mcp_servers.sonilo]
command = "uvx"
args = ["sonilo-mcp"]

[mcp_servers.sonilo.env]
SONILO_API_KEY = "sk_live_..."

Restart Codex (or start a new session) to load it, then run /mcp to confirm sonilo is connected and its tools are listed.

Environment Variables

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 300 Generation timeout.

File access & confinement

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.

Tools

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.
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.

Output Format

Generated audio is saved as .m4a (AAC in MP4 container — this is what the backend currently emits). 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.

Common Errors

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 Raise TIME_OUT_SECONDS. Check get_usage to confirm whether the backend completed and charged.

Development

python -m venv .venv
source .venv/bin/activate
pip install -e ".[dev]"
pytest

License

MIT

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

sonilo_mcp-0.1.0.tar.gz (18.7 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

sonilo_mcp-0.1.0-py3-none-any.whl (11.9 kB view details)

Uploaded Python 3

File details

Details for the file sonilo_mcp-0.1.0.tar.gz.

File metadata

  • Download URL: sonilo_mcp-0.1.0.tar.gz
  • Upload date:
  • Size: 18.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for sonilo_mcp-0.1.0.tar.gz
Algorithm Hash digest
SHA256 7ffc437354ccf4f73f9440b276aec527a6adb7e7b0ef57be0d2fdb2a9c3d6ac4
MD5 9d344095ba61eaa504eda5d2d0665192
BLAKE2b-256 caa0e3dcbac195122af4fe1ad9a19455bbe6e126c8aedaf3f4a257ca04f474f1

See more details on using hashes here.

File details

Details for the file sonilo_mcp-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: sonilo_mcp-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 11.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for sonilo_mcp-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 e164e5bddaaf675630ecbd0777f09fb5e286b0cb98b0a262755468e83853b508
MD5 c1a612304063f299a51e5924e52ccd73
BLAKE2b-256 ff093b908559d5eeb9882cbc6d3ec6619b913fa4dc1609c825237242280f4d1c

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page