SunoMCP
This MCP server lets you generate and manipulate AI music, lyrics, audio media, personas, custom models, and project workflows through the Ace Data Cloud Suno API.
Generate music from prompts or custom lyrics/style, including instrumental, inspiration from reference audio, sound effects, and custom-model generation.
Extend, cover/remix, remaster, concatenate, replace song sections, mash up two tracks, sample/underpaint/overpaint, add/extract stems, extract vocals, and adjust playback speed.
Generate and optimize lyrics, mash up lyrics, and get lyric-format guidance.
Convert audio to MP4, WAV, MP3, MIDI; retrieve timing/subtitle data; check audio availability.
Create, list, and delete personas/voices; create, get, list, and archive custom music models.
Upload external audio and use it for extensions/covers; manage studio projects including create, retrieve, save, upload, add/generate/replace/commit/remove tracks, and render.
Query task status individually or in batches; list models and available actions.
Allows for the extraction of MIDI data from generated songs for use in music production and digital audio workstations.
Enables AI music generation, including creating songs from text prompts, custom lyrics management, song extensions, and audio stem separation.
This server has a remotely hosted endpoint. Open its connector listing for connection details, authentication requirements, and setup instructions:
Suno by Ace Data Cloud
A Model Context Protocol (MCP) server for AI music generation using Suno through the AceDataCloud API.
Generate AI music, lyrics, and manage audio projects directly from Claude, VS Code, or any MCP-compatible client.
Use Suno in Glama
Find the Ace-provided Suno source listing or remote connector. Follow the Glama installation, API Token and first-use guide. Public discovery and a successful personal connection are separate checks; generation uses your Ace account balance.
Related MCP server: Suno MCP
Suno in goose
Use the independent Suno by Ace Data Cloud native goose plugin: install and API Token guide · 简体中文. It reuses this MCP server and does not imply goose Marketplace or default-provider inclusion.
Find the Suno integration in the official MCP Registry
Open Suno in the official MCP Registry, expand the matching io.github.AceDataCloud entry, and use its Packages or Remotes installation information in a client that consumes MCP catalogs. This is the Suno integration provided by Ace Data Cloud; it is not an endorsement by the model vendor. The Registry is a directory, not the app that runs a tool.
Search for mcp-suno (or io.github.AceDataCloud/mcp-suno) to locate the exact entry. The official Registry search currently matches server names; spaces in a display title do not create extra search aliases. If your client does not consume the catalog, use the client-specific connection instructions below and check Applications → General application for your token, service permissions, balance and current price. Keep the original task ID when checking asynchronous results.
Features
Music Generation - Create AI-generated songs from text prompts
Custom Lyrics & Style - Full control over lyrics, title, and music style
Song Extension - Continue existing songs from any timestamp
Cover/Remix - Create cover versions with different styles
Lyrics Generation - Generate structured lyrics from descriptions
Persona Management - Save and reuse voice styles
Custom Music Models - Create and reuse app-owned custom music models
Task Tracking - Monitor generation progress and retrieve results
Tool Reference
Tool | Description |
| Generate AI music from a text prompt using Suno's Inspiration Mode. |
| Generate AI music with full control over lyrics, title, and style (Custom Mode). |
| Extend an existing song from a specific timestamp with new lyrics. |
| Create a cover or remix version of an existing song in a different style. |
| Concatenate extended song segments into a single complete audio file. |
| Generate music using a saved artist persona for consistent vocal style. |
| Remaster an existing song; v5/v5.5 require a variation category. |
| Separate a song into individual stems (vocals and instruments). |
| Replace a specific time range in a song with new generated content. |
| Extend an uploaded audio (your own music) with new AI-generated content. |
| Create an AI cover of an uploaded audio (your own music). |
| Blend exactly two songs using a required creative-direction prompt. |
| Return two distinct 12-stem candidate sets, labeled |
| Generate song lyrics from a text prompt. |
| Get an MP4 video version of a generated song. |
| Get timing and subtitle data for a generated song. |
| Synchronously check for positive evidence that an audio ID is available on the current channel. |
| Extract a required vocal interval shorter than 30 seconds. |
| Get the lossless WAV format of a generated song. |
| Get the compressed MP3 format of a generated song. |
| Get MIDI data extracted from a generated song. |
| Create a new artist persona from an existing audio's vocal style; API pricing applies. |
| List saved personas for a user without a usage charge. |
| Permanently delete a saved persona without a usage charge. |
| Create a reusable custom music model from 6 to 24 authorized audio URLs. |
| Retrieve one custom music model by ID. |
| List custom music models for the current Suno application. |
| Generate a song using a ready custom music model. |
| Archive a custom music model so it can no longer be used. |
| Optimize a music style description for better generation results. |
| Generate mashup lyrics by combining two sets of lyrics. |
| Upload external audio in standard or enhanced mode for subsequent operations. |
| Query the status and result of a music generation task. |
| Query multiple music generation tasks at once. |
| List all available Suno models and their capabilities. |
| List all available Suno API actions and corresponding tools. |
| Get guidance on formatting lyrics for Suno music generation. |
Verify the connection before generating
First discover the server's tools, then call suno_list_models with no arguments. This returns local reference information without generating music; it does not validate the application key. Your client's Chat model may still be billed separately.
For an application-backed read-only check, enable only suno_list_custom_models and call it with limit=1. This uses the existing custom-model retrieve_batch operation; it does not create music or train a model. A successful items response, including an empty list for a new application, is the success criterion. The key must permit the custom-model lookup API. This confirms only that lookup's access, not permission to generate music or sufficient balance for a generation.
If the tool is missing, reconnect and refresh the tool list. For 401/403, check the copied key, application/service permissions, Allowed APIs, expiration and usage limits before creating another credential. For other errors retain the task/trace ID, never the key. Do not retry generation to test authentication. Review current pricing before a paid request.
Connect in minutes
The hosted server is https://suno.mcp.acedata.cloud/mcp. Choose one authentication route before following a client example:
Route | Use it when | What you provide |
Browser sign-in (OAuth) | Your MCP client supports remote OAuth; use DCR if the client requires automatic registration | The server URL; sign in to AceDataCloud and approve access in the browser. No key needs to be pasted into the MCP config. |
API token | Your client cannot complete the remote OAuth flow, or you need an explicit credential for an integration | An AceDataCloud API token in the client's Bearer header. Keep it in a user-level secret store or environment variable. |
Local stdio | You want the MCP process to run on your machine | Install |
The hosted server always receives a Bearer token: with OAuth, the client obtains and sends it after sign-in; with API-token setup, you supply it. DCR is client registration, not a separate AceDataCloud API key. After consent, the hosted service currently reuses or creates an API credential for your account; it may fail if the account cannot obtain one. Some clients offer a published client identity or manual client ID; those are client-specific alternatives, not a second API-token requirement. Browser sign-in does not remove the need for an AceDataCloud account. Music generation uses your AceDataCloud account and may incur usage charges. Review current Suno pricing and limits before generating.
Browser sign-in: hosted server
Use this path for clients with remote MCP OAuth support. Add only the URL first; do not also set an Authorization header. If a client cannot complete discovery or registration, use the API-token route below.
Claude and Claude Desktop chat
Use Claude's remote custom connector in Customize → Connectors → Add custom connector (or your organization's connector settings). Enter the hosted URL, choose sign-in, and select Register automatically for the OAuth client if Claude asks. Complete the AceDataCloud login and consent flow, then enable the connector in your conversation. Claude Desktop's claude_desktop_config.json is for local MCP processes; it is not where Claude's remote custom connectors are installed. Claude's connector guide.
Claude Code
claude mcp add --transport http --scope user suno https://suno.mcp.acedata.cloud/mcp
claude mcp login sunoIn Claude Code, /mcp shows the connection and available tools. For project scope, merge {"mcpServers":{"suno":{"type":"http","url":"https://suno.mcp.acedata.cloud/mcp"}}} into <project>/.mcp.json; keep existing entries when merging. Claude Code and Claude Desktop chat have separate MCP configuration. Claude Code MCP guide.
Cursor
In Cursor's MCP settings, add a remote server with the hosted URL and complete the OAuth prompt. For project scope, merge this into <project>/.cursor/mcp.json; for your own machines, use ~/.cursor/mcp.json:
{
"mcpServers": {
"suno": {
"url": "https://suno.mcp.acedata.cloud/mcp"
}
}
}The URL-only project config contains no token. Do not commit a project config if you later add a real token. Cursor MCP guide.
VS Code with GitHub Copilot
Run MCP: Add Server, choose HTTP, and enter the hosted URL. Save to the user profile for personal use or to a workspace config for a team; approve the server and complete sign-in when prompted. New workspace configs use <project>/.mcp.json; VS Code also reads its .vscode/mcp.json format. This is the VS Code format for a local workspace:
{
"servers": {
"suno": {
"type": "http",
"url": "https://suno.mcp.acedata.cloud/mcp"
}
}
}Run MCP: List Servers to check connection and tool loading. VS Code MCP setup and configuration reference.
Codex CLI or Codex app
codex mcp add suno --url https://suno.mcp.acedata.cloud/mcp
codex mcp login sunoCodex keeps user MCP settings in ~/.codex/config.toml and can show the server in /mcp. Official Codex MCP guide.
API token: hosted server
Open Ace Data Cloud → Applications. Sign in, or register an account first.
Find General application. If it has not been created, choose Initialize General Application. A general key can use the services available to your account; a dedicated application's key is limited to its service. Check the required service/model access and current pricing.
Copy the API Key from the application card, or open Keys / Manage Keys → Create to create a separate key for this integration. Give it a recognizable name so you can revoke or rotate it independently.
When creating a key, review Expiration Time, Set Usage Limitation, and Allowed APIs. Enable only the restrictions you need, allow the operations you will call, then click Create and copy the token from the key list. Task lookup does not grant permission to submit a generation. Confirm the application's balance can cover your first request; any trial allowance is whatever your account currently displays.
Copy only the token value, without quotation marks, spaces, or
Bearer. An API Key / API Token field expects this raw value; only a manually configured HTTPAuthorizationheader needs theBearerprefix. Aplatform-...account-management token cannot replace a generation API key.


Save the key in the client's credential store or the environment variable shown below. Never put it in a prompt, shared workflow, screenshot, or Git commit. If authentication fails, check the full copied value, application/service access, expiration, usage limit, and balance before creating another key.
Use this route when you need a fixed credential or your client does not complete OAuth. An invalid fixed header does not automatically fall back to browser sign-in.
For Claude Code, set the variable in the environment that starts Claude Code, then add the server. The shell expands the token when you add the server, so treat the saved user-level MCP config as a secret; use browser sign-in above if you do not want a key in client config:
export ACEDATACLOUD_API_TOKEN='YOUR_API_TOKEN'
claude mcp add --transport http --scope user suno https://suno.mcp.acedata.cloud/mcp \
--header "Authorization: Bearer $ACEDATACLOUD_API_TOKEN"For a shared project config, put only the variable reference in <project>/.mcp.json and keep the token in each user's environment. Unlike the CLI example above, Claude Code expands ${ACEDATACLOUD_API_TOKEN} when it reads .mcp.json. Merge this entry with existing servers:
{
"mcpServers": {
"suno": {
"type": "http",
"url": "https://suno.mcp.acedata.cloud/mcp",
"headers": {
"Authorization": "Bearer ${ACEDATACLOUD_API_TOKEN}"
}
}
}
}For Cursor, use its ${env:ACEDATACLOUD_API_TOKEN} syntax in a user-level ~/.cursor/mcp.json (or an uncommitted project config):
{
"mcpServers": {
"suno": {
"url": "https://suno.mcp.acedata.cloud/mcp",
"headers": {
"Authorization": "Bearer ${env:ACEDATACLOUD_API_TOKEN}"
}
}
}
}For VS Code, prefer a user-profile MCP config and a masked input instead of putting the token in the JSON. Merge these fields into the file opened by MCP: Open User Configuration:
{
"inputs": [
{"id": "acedata-suno-token", "type": "promptString", "description": "AceDataCloud API token", "password": true}
],
"servers": {
"suno": {
"type": "http",
"url": "https://suno.mcp.acedata.cloud/mcp",
"headers": {"Authorization": "Bearer ${input:acedata-suno-token}"}
}
}
}This interactive input is specific to VS Code's user/workspace format; do not copy it into .mcp.json for Agent Host. VS Code prompts once and stores the value securely for later use. VS Code configuration reference.
Other clients use different schemas. For Cline, open MCP Servers → Configure → Configure MCP Servers (Cline CLI: ~/.cline/data/settings/cline_mcp_settings.json) and use type: "streamableHttp" under mcpServers; Cline's guide has the full shape. For JetBrains AI Assistant, go to Settings → Tools → AI Assistant → Model Context Protocol (MCP) and add a remote server using the hosted URL; check its connection status and use the API-token route if your version does not complete OAuth. JetBrains' guide. For Zed, use context_servers with the hosted URL in its settings; omitting Authorization starts its OAuth flow. Zed's guide.
Local stdio server
Local mode needs an API token. Use it when your client only supports local processes or you want the MCP process on your machine; it still calls the AceDataCloud API and does not run Suno locally.
# Install once, then run the local stdio server
python -m pip install mcp-suno
export ACEDATACLOUD_API_TOKEN='YOUR_API_TOKEN'
mcp-sunoFor Claude Desktop's local MCP configuration, merge this into the file opened by its developer settings (~/Library/Application Support/Claude/claude_desktop_config.json on macOS). This is a local uvx process; it is separate from the remote custom connector above:
{
"mcpServers": {
"suno": {
"command": "uvx",
"args": ["mcp-suno"],
"env": {
"ACEDATACLOUD_API_TOKEN": "YOUR_API_TOKEN"
}
}
}
}Keep this user-level file private. On Windows, set $env:ACEDATACLOUD_API_TOKEN = 'YOUR_API_TOKEN' in the shell that starts local clients. uvx requires uv on PATH; mcp-suno requires the package installed in the environment from which the client launches it.
For self-hosted HTTP, run mcp-suno --transport http --port 8000 or build this repository's Dockerfile and run the resulting image. Clients must send their own Bearer tokens; expose the service only with suitable network and TLS controls.
Check the connection before generating
https://suno.mcp.acedata.cloud/healthreturning{"status":"ok"}checks reachability only, not authentication.Use the client's MCP server list to confirm Suno tools appear.
suno_list_modelsandsuno_list_actionsreturn static reference data; they confirm tool loading, not that your downstream API credential or balance works.When ready, ask the client to call
suno_generate_musicwith a short prompt. Save the returned task ID, then callsuno_get_taskuntil it completes. This is the first end-to-end API check and can be billed. Check the current Suno service limits and pricing before this step.
If you see 401, check whether the client completed OAuth or sent a valid token, and do not configure both paths at once. If OAuth redirects but fails, retry from the same client session; if the account cannot create or retrieve a credential, resolve that in AceDataCloud Platform. A tool list can load while an API call fails for balance, permissions, or service availability, so check the returned error rather than assuming the connection failed.
Use the tools
Tool names in the client include the suno_ prefix. Start with suno_list_models or suno_list_actions to confirm the connection. For generation, use suno_generate_music for a prompt or suno_generate_custom_music for your own lyrics and style. Advanced operations, media conversion, personas, and custom models are listed in the tool reference and exposed by the MCP server.
Generation and edits return a task ID, not a finished song. Query suno_get_task (or suno_get_tasks_batch for multiple IDs) until the task reports success and final media URLs. An intermediate audio URL may be only a preview; a failed task should stop polling. Do not repeat the generation call to check progress, because it may submit and bill another task.
Example request to your MCP client:
Use
suno_generate_musicto create a short upbeat acoustic birthday song. Give me the task ID, check it withsuno_get_task, and share the final audio only after the task completes.
For custom lyrics:
Use
suno_generate_custom_musicwith title “Storm”, style “energetic rock”, and these lyrics:[Verse] Thunder in the night [Chorus] We are the storm. Then follow the returned task ID to completion.
negative_tags excludes styles or genres in custom generation (custom=true) and in suno_replace_section. The API currently sets no fixed character limit for this field, but overly long content may still fail; keep the description concise.
Extensions (suno_extend_music, suno_upload_extend) require a positive continue_at in seconds; fractional boundaries such as 30.792 are preserved. Lyrics affect only new content after that boundary, not the original portion. Replacement requires 0 <= replace_section_start < replace_section_end. suno_samples_music selects an interval from one source audio: samples_start defaults to 0, and samples_end is required and must be greater than start. Interval ends must not exceed the source duration. duration (an integer from 10–360) is a target used only for generation; actual length depends on the model.
For suno_generate_inspo, supply 1–4 public reference audio URLs. Use instrumental=true for a no-lyrics request, or custom=true with lyric_prompt and empty lyric for automatic lyrics. The optional persona_id is a voice ID, not an audio ID; voice support with Inspo depends on the service channel. Extensions do not use an additional persona ID.
For suno_all_stems_music, wait for successful terminal completion of the full task. Playable URLs during processing do not mean every stem is complete.
For covers, extensions and stem separation, use the returned audio id as audio_id. A downloadable audio file does not guarantee that its ID remains available for further processing.
Manage saved personas
Call suno_list_personas with user_id to find an existing voice before creating another one; use optional limit (default 50) and offset (default 0) for pagination. Listing uses GET /suno/persona and is free. After confirming the exact persona to remove, call suno_delete_persona with persona_id and optional user_id for ownership verification. Deletion uses DELETE /suno/persona and is also free, but permanent; do not use it to test the connection.
Neither listing nor deletion needs an extra billing-exemption header. Normal API authentication and permissions still apply. suno_create_persona uses POST /suno/persona and remains subject to the API's pricing rules; check current pricing and spending approval before creation. The free list/delete policy does not make voice creation or music generation free.
Cover with a specified voice
Both suno_cover_music and suno_upload_cover accept persona_id for a specified-voice cover. A private voice created by suno_create_voice requires this sequence:
Keep the returned
persona_idfrom voice creation.Call
suno_upload_audiowith the original song's publicaudio_url,mode: "standard"and thatpersona_idto associate the source with the voice.persona_idcannot be used withmode: "enhanced".Call
suno_upload_coverwith the upload's returneddata.audio_idand the samepersona_id, then follow its task ID to completion.
Do not reuse an older audio ID that was not uploaded with that private voice. Voice creation, upload and cover must use the same service channel. No extra vocal_gender is needed; a gender preference is not a substitute for a voice ID.
Check audio availability before processing
Before a cover or extension, you can call suno_check_audio_availability with the audio UUID from a completed song's id, not the generation task_id:
{"audio_id":"33333333-3333-4333-8333-333333333333"}Pass these arguments to suno_check_audio_availability. It calls POST /suno/availability synchronously with an API token and currently costs no Credits. Do not poll its returned task_id as though it were a generation job.
A successful response has data.id and data.available=true: the current channel found positive evidence of availability at check time. This does not guarantee that a later cover, extension or other operation will succeed. If availability cannot be confirmed, the API returns an error such as HTTP 503 availability_unknown, never available=false. Do not interpret an error (including rate limits or upstream failures) as proof that the audio is unavailable. Retain returned support identifiers and do not blindly retry or submit a paid operation to resolve uncertainty. Invalid audio IDs return HTTP 400; the MCP tool rejects malformed UUIDs before calling the API.
Processing errors
The audio API documents these HTTP 500 errors:
Code | Meaning |
| The audio API reports that the account may have been offline. |
| Music processing is unavailable. |
| The selected model is unavailable for this operation. |
| Music processing returned no audio. |
Stop on terminal failure, retain any returned task_id and trace_id, and contact support with those IDs. Do not blindly resubmit, switch models, or treat an existing download URL as proof that another processing request will work.
Available Models
Model | Version | Max Duration | Features |
| V6 | API-defined | Current v6 model |
| V6 Wild | API-defined | v6 Wild model |
| V6 Mini | API-defined | v6 Mini model |
| V5.5 | 8 minutes | Previous model name |
| V5 | 8 minutes | High quality |
| V4.5+ | 8 minutes | Enhanced quality |
| V4.5 | 4 minutes | Vocal gender control |
| V4 | 150 seconds | Stable |
| V3.5 | 120 seconds | Fast |
| V3 | 120 seconds | Legacy |
Vocal Gender Control (v4.5+ only):
f- Female vocalsm- Male vocals
Configuration
Environment Variables
Variable | Description | Default |
| Local stdio token; hosted requests provide it via OAuth or Bearer header | Required for local stdio |
| API base URL |
|
| OAuth client ID (hosted mode) | — |
| Platform base URL |
|
| Default model for generation |
|
| Request timeout in seconds |
|
| Logging level |
|
Command Line Options
mcp-suno --help
Options:
--version Show version
--transport Transport mode: stdio (default) or http
--port Port for HTTP transport (default: 8000)Development
Setup Development Environment
# Clone repository
git clone https://github.com/AceDataCloud/SunoMCP.git
cd SunoMCP
# Create virtual environment
python -m venv .venv
source .venv/bin/activate # or `.venv\Scripts\activate` on Windows
# Install with dev dependencies
pip install -e ".[dev,test]"Run Tests
# Run unit tests
pytest
# Run with coverage
pytest --cov=core --cov=tools
# Run integration tests (requires API token)
pytest tests/test_integration.py -m integrationCode Quality
# Format code
ruff format .
# Lint code
ruff check .
# Type check
mypy core toolsBuild & Publish
# Install build dependencies
pip install -e ".[release]"
# Build package
python -m build
# Upload to PyPI
twine upload dist/*Project Structure
SunoMCP/
├── core/ # Core modules
│ ├── __init__.py
│ ├── client.py # HTTP client for Suno API
│ ├── config.py # Configuration management
│ ├── exceptions.py # Custom exceptions
│ ├── server.py # MCP server initialization
│ └── utils.py # Utility functions
├── tools/ # MCP tool definitions
│ ├── __init__.py
│ ├── audio_tools.py # Audio generation tools
│ ├── info_tools.py # Information tools
│ ├── lyrics_tools.py # Lyrics generation tools
│ ├── media_tools.py # Media conversion tools
│ ├── persona_tools.py # Persona management tools
│ ├── custom_model_tools.py # Custom music model tools
│ └── task_tools.py # Task query tools
├── tests/ # Test suite
│ ├── conftest.py
│ ├── test_client.py
│ ├── test_config.py
│ ├── test_integration.py
│ └── test_utils.py
├── deploy/ # Deployment configs
│ └── production/
│ ├── deployment.yaml
│ ├── ingress.yaml
│ └── service.yaml
├── .env.example # Environment template
├── .gitignore
├── CHANGELOG.md
├── Dockerfile # Docker image for HTTP mode
├── docker-compose.yaml # Docker Compose config
├── LICENSE
├── main.py # Entry point
├── pyproject.toml # Project configuration
└── README.mdAPI Reference
This server wraps the AceDataCloud Suno API:
Suno Audios API - Music generation
Suno Lyrics API - Lyrics generation
Suno Tasks API - Task queries
Suno Persona API - Persona management
Contributing
Contributions are welcome! Please:
Fork the repository
Create a feature branch (
git checkout -b feature/amazing)Commit your changes (
git commit -m 'Add amazing feature')Push to the branch (
git push origin feature/amazing)Open a Pull Request
Documentation
License
MIT License - see LICENSE for details.
Links
Made with love by AceDataCloud
Cline setup / Cline 图文接入
Suno by Ace Data Cloud — English guide · 完整中文图文步骤. The Cline marketplace submission is pending review as of 2026-10-18; the guide labels the manual fallback separately. / Cline 官方目录投稿仍待审核,手动接入不等于已上架。
Additional audio operations and controls
suno_add_stem: generate a selected voice/instrument stem with optional style, influence controls,variety, and explicitly opted-inmax_mode.suno_extract_stem: extract a selected stem and complementary remainder.suno_generate_sound: createone-shotorloopsound effects with optional BPM, musical key, and MP3 output selection.suno_adjust_speed: change playback speed from 0.25 to 4, optionally preserving pitch.
Prompt generation accepts variety; custom generation also accepts max_mode
and audio_weight. Enhanced max_mode has a higher API price and remains off
unless explicitly requested. Existing model defaults are unchanged.
suno_generate_with_custom_model accepts instrumental generation or lyric_prompt
in place of supplied lyrics, plus negative_tags, vocal_gender, weirdness,
style_influence, duration, and callback_url. Title and style are optional.
Studio projects (Beta)
suno_manage_project(request=..., idempotency_key=...) covers create, retrieve,
save, upload, add_track, generate_track, replace_section,
commit_candidate, remove_track, and render. Its action-specific schema
requires only the fields applicable to that operation.
Create a project, then retrieve and retain its complete state and latest
version_id.Save complete state, upload material, or add tracks using the current version.
For generation, supply a source audio ID and a completed project render audio ID. Source ranges use seconds; project timeline ranges use beats.
Poll accepted task IDs with
suno_get_taskuntilfinished_atis set and inspectresponse.success. Generating candidates does not modify the project.Choose a candidate and explicitly commit it to a track, then render with the latest version. Candidate playback alone does not prove a project is renderable.
Every write requires a caller-selected idempotency_key. Retry an uncertain
submission with the same key and identical request, or poll its original task ID;
never automatically generate a new key and resubmit a billable operation. On a
version conflict, retrieve the current project and re-plan the change.
suno_get_tasks_batch returns full JSON task records with polling guidance,
preserving model objects, project state/candidates, and media fields such as MIDI.
Available Tools
48 toolssuno_add_stemCInspect
Generate a selected instrument or voice stem for an existing audio. Poll suno_get_task.
Inputs: audio_id (required), stem_type (required), model, style, +9 more. Returns: result
suno_adjust_speedAInspect
Adjust audio playback speed, optionally preserving pitch. Poll the returned task ID.
Inputs: title (required), audio_id (required), speed_multiplier (required), keep_pitch, +1 more. Returns: result
suno_all_stems_musicAInspect
Separate a song into all individual stems (vocals, bass, drums, other instruments).
Splits the audio into multiple separate tracks for all components,
providing more granular stem separation than suno_stems_music. The service may
return two same-named sets of 12 stems without metadata that distinguishes the sets;
both sets are preserved so no audio is silently discarded.
Use this when:
- You need full multi-track stem separation
- You want individual instrument tracks for remixing
- You need bass, drums, and other instrument tracks separately
Returns:
Task ID and all stem separation results with individual track URLs.
Inputs: audio_id (required), callback_url. Returns: result
suno_archive_custom_modelAInspect
Archive a custom music model so it can no longer be used.
Archiving does not guarantee that model capacity is released.
Inputs: id (required). Returns: result
suno_check_audio_availabilityAInspect
Check current-channel audio availability synchronously; success only reports available=true, not a guarantee that later operations succeed. Unknown availability raises an error, never false. Requires an API token; currently costs no Credits.
Inputs: audio_id (required). Returns: result
suno_concat_musicAInspect
Concatenate extended song segments into a single complete audio file.
After extending a song multiple times with suno_extend_music, use this tool
to merge all the segments into one continuous audio file.
Use this when:
- You've extended a song one or more times
- You want a single audio file instead of multiple segments
- You're ready to finalize a long-form composition
Returns:
Task ID and the concatenated audio information with the full song.
Inputs: audio_id (required), callback_url. Returns: result
suno_cover_musicAInspect
Create a cover or remix version of an existing song in a different style.
This generates a new version of a song with a different arrangement, genre,
or mood while keeping the core melody and lyrics.
Use this when:
- You want to hear a song in a different genre
- You want an acoustic/unplugged version of an electronic song
- You want to remix a song with a different vibe
Returns:
Task ID and the cover audio information.
Inputs: audio_id (required), model, style, prompt, +3 more. Returns: result
suno_create_custom_modelAInspect
Create a reusable custom music model from authorized audio examples.
This is a paid, long-running operation. Call it only after the user confirms the source files and the 5.6-Credit list price.
Inputs: name (required), audio_urls (required), callback_url, idempotency_key. Returns: result
suno_create_personaAInspect
Create a new artist persona from an existing audio's vocal style.
This saves the vocal characteristics from a generated song so you can reuse
that same voice style in future generations. Great for maintaining consistency
across multiple songs.
Use this when:
- You generated a song and love the voice
- You want to create multiple songs with the same vocalist
- You're building an album with consistent vocal style
- You want to save a unique voice for future use
Creation follows the API's pricing rules; the free listing/deletion policy
does not apply. Check current pricing before creating a persona.
After creating a persona, use suno_generate_with_persona with the returned
persona_id to generate new songs with that voice.
Returns:
Persona ID that can be used with suno_generate_with_persona tool.
Inputs: name (required), audio_id (required), vocal_end, description, +2 more. Returns: result
suno_create_voiceAInspect
Create a custom voice persona from an external audio URL.
Creates a voice persona directly from a publicly accessible audio URL
(MP3 or WAV format). The audio must contain clear vocals from a single
speaker and be at least 10 seconds long.
This is different from suno_create_persona which creates a persona from
a previously generated Suno audio. Use this to create a persona from
your own voice recordings or external audio files.
Use this when:
- You have an external audio file with clear vocals
- You want to create a voice persona from your own recordings
- You want to use a specific real-world voice as a persona
Returns:
Persona ID that can be used with suno_generate_with_persona tool.
Inputs: audio_url (required), name, description. Returns: result
suno_delete_personaAInspect
Delete a saved artist persona.
Permanently removes a previously created persona. This action cannot be undone;
confirm the user's intent before deleting. This DELETE operation is free and
needs no extra billing-exemption header; normal authentication and permissions apply.
Use this when:
- You want to remove an unused voice persona
- You need to clean up old personas
- You want to delete a persona you no longer need
Returns:
Confirmation of the deletion.
Inputs: persona_id (required), user_id. Returns: result
suno_extend_musicAInspect
Extend an existing song from a specific timestamp with new lyrics.
This allows you to continue a previously generated song, adding new sections
like additional verses, a bridge, or an outro.
Use this when:
- A generated song is too short and you want to add more
- You want to add a bridge or outro to an existing song
- You're building a longer song piece by piece
After extending multiple times, use suno_concat_music to merge all segments.
Returns:
Task ID and the extended audio information.
Inputs: lyric (required), audio_id (required), continue_at (required), model, +2 more. Returns: result
suno_extract_stemCInspect
Extract a selected stem and its complementary remainder. Preserve both returned pairs.
Inputs: audio_id (required), stem_type (required), model, audio_format, +1 more. Returns: result
suno_extract_vocalsAInspect
Extract the vocal track from a generated song (stem separation).
Isolates the vocals from a song, removing instrumental background.
Useful for remixing, creating acapella versions, or persona creation.
Use this when:
- You want an isolated vocal track
- You need vocals for a remix or mashup
- You want to create a persona from specific vocal segments
Returns:
Task ID and extracted vocal audio information.
Inputs: audio_id (required), vocal_end (required), vocal_start (required), callback_url. Returns: result
suno_generate_custom_musicAInspect
Generate AI music with full control over lyrics, title, and style (Custom Mode).
This gives you complete creative control over the song. You provide the lyrics
with section markers, and Suno generates the melody and arrangement.
Use this when:
- You have specific lyrics you want to use
- You want precise control over the music style
- You need a specific song title
- You want to specify vocal gender (v4.5+ models)
- You want the API to auto-generate lyrics from a prompt (use lyric_prompt)
- You need a specific track length (use duration)
For quick generation without writing lyrics, use suno_generate_music instead.
Returns:
Task ID and generated audio information including URLs, title, lyrics, and duration.
Inputs: lyric, model, style, title, +12 more. Returns: result
suno_generate_inspoAInspect
Generate brand-new music inspired by 1 to 4 reference audios (Suno Inspo / 灵感创作).
Unlike a cover, inspo does not reproduce the source tracks - it draws stylistic
inspiration from them and composes a fresh song guided by your prompt and style tags.
Use this when:
- You have reference tracks whose vibe you want to riff on
- You want a new song "in the style of" some audio you provide
Returns:
Task ID and generated audio information including URLs, title, lyrics, and duration.
Inputs: audio_urls (required), lyric, model, style, +8 more. Returns: result
suno_generate_lyricsAInspect
Generate song lyrics from a text prompt.
Creates structured lyrics with proper song sections (Verse, Chorus, Bridge, etc.)
based on your description. The generated lyrics are formatted and ready to use
with suno_generate_custom_music.
Use this when:
- You need lyrics but don't want to write them yourself
- You want AI-generated lyrics for a specific theme or mood
- You need properly structured lyrics with section markers
The output includes section markers like [Verse], [Chorus], [Bridge] that
Suno's music generation understands.
Returns:
Generated lyrics with title, status, and formatted text with section markers.
Inputs: prompt (required), model. Returns: result
suno_generate_musicAInspect
Generate AI music from a text prompt using Suno's Inspiration Mode.
This is the simplest way to create music - just describe what you want and Suno
will automatically generate appropriate lyrics, melody, style, and arrangement.
Use this when:
- You want quick music generation with minimal input
- You don't have specific lyrics in mind
- You want Suno to be creative with the arrangement
For full control over lyrics and style, use suno_generate_custom_music instead.
Returns:
Task ID and generated audio information including URLs, title, lyrics, and duration.
Inputs: prompt (required), model, variety, callback_url, +2 more. Returns: result
suno_generate_soundCInspect
Create a one-shot or looping sound effect. Optional bpm and musical key guide the result.
Inputs: sound (required), sound_type (required), bpm, key, +3 more. Returns: result
suno_generate_with_custom_modelAInspect
Generate with a ready custom model, including instrumental or automatic lyrics.
Submission returns a task ID. Poll suno_get_task until finished_at is set and
inspect response.success. This operation never falls back to another model.
Inputs: id (required), lyric, style, title, +8 more. Returns: result
suno_generate_with_personaAInspect
Generate music using a saved artist persona for consistent vocal style.
This allows you to maintain a consistent voice/singing style across multiple
songs by using a previously saved persona.
Use this when:
- You want multiple songs with the same vocal style
- You're creating an album or series with consistent vocals
- You found a voice you like and want to reuse it
First create a persona with suno_create_persona, then use its ID here.
Returns:
Task ID and generated audio information with the persona's voice applied.
Inputs: prompt (required), audio_id (required), persona_id (required), model, +1 more. Returns: result
suno_generate_with_persona_voxAInspect
Generate music using a saved artist persona with VOX-specific consistency.
Similar to suno_generate_with_persona but uses the artist_consistency_vox action,
which is optimized for vocal consistency with a persona.
Use this when:
- You want multiple songs with the same vocal style using VOX mode
- You need stricter vocal consistency than suno_generate_with_persona provides
- You're creating content with a specific voice persona
First create a persona with suno_create_persona or suno_create_voice, then use its ID here.
Returns:
Task ID and generated audio information with the persona's voice applied.
Inputs: prompt (required), audio_id (required), persona_id (required), model, +1 more. Returns: result
suno_get_custom_modelAInspect
Retrieve a single custom music model by ID.
Inputs: id (required). Returns: result
suno_get_lyric_format_guideAInspect
Get guidance on formatting lyrics for Suno music generation.
Shows how to structure lyrics with section markers for best results.
Following this format helps Suno understand the song structure and
generate appropriate melodies for each section.
Returns:
Complete guide with section markers, examples, and tips.
Inputs: no named parameters. Returns: result
suno_get_midiAInspect
Get MIDI data extracted from a generated song.
Converts the song's melodic and rhythmic information into MIDI format,
which can be used in digital audio workstations (DAWs) for further editing.
Use this when:
- You want to edit the melody in a DAW
- You need note-level data from the song
- You want to recreate the song with different instruments
Returns:
Task ID and MIDI data information.
Inputs: audio_id (required), callback_url. Returns: result
suno_get_mp3AInspect
Get the MP3 format of a generated song.
Converts the song to MP3 format, which is compact and widely supported
across playback devices and platforms.
Use this when:
- You need a compressed and portable audio format
- You want to share songs easily across platforms
- You prefer smaller file sizes than WAV
Returns:
Task ID and MP3 audio information.
Inputs: audio_id (required), callback_url. Returns: result
suno_get_mp4AInspect
Get an MP4 video version of a generated song.
Converts a generated audio into an MP4 video file with visualizations.
Useful for sharing on social media or video platforms.
Use this when:
- You want a video version of a generated song
- You need to share the song on video platforms
- You want a visual representation of the audio
Returns:
Task ID and MP4 video information.
Inputs: audio_id (required). Returns: result
suno_get_taskAInspect
Query the status and result of a music generation task.
Use this to check if a generation is complete and retrieve the resulting
audio URLs, titles, lyrics, and other metadata.
Use this when:
- You want to check if a generation has completed
- You need to retrieve audio URLs from a previous generation
- You want to get the full details of a generated song
Task states:
- 'pending': Generation is still in progress — KEEP POLLING
- 'processing': Generation is being processed — KEEP POLLING
- 'complete': Generation finished successfully
- 'failed': Generation failed (check error message)
The API may omit its top-level state. The MCP normalizes response.success=true to
complete and response.success=false to failed; responses without a success field
remain pending.
Returns:
Task status and generated audio information including URLs, title, lyrics, and task timing metadata.
Inputs: task_id (required). Returns: result
suno_get_tasks_batchAInspect
Query multiple music generation tasks at once.
Efficiently check the status of multiple tasks in a single request.
More efficient than calling suno_get_task multiple times.
Use this when:
- You have multiple pending generations to check
- You want to get status of several songs at once
- You're tracking a batch of generations
The MCP treats response.success=true as complete and response.success=false as
failed when the API omits its top-level state.
Returns:
Status and audio information for all queried tasks.
Inputs: task_ids (required). Returns: result
suno_get_timingAInspect
Get timing and subtitle data for a generated song.
Returns word-level timing information that can be used for
synchronized lyrics display, karaoke, or subtitle generation.
Use this when:
- You need synchronized lyrics/subtitles
- You want to create karaoke-style displays
- You need word-level timing for video editing
Returns:
Timing data with word-level timestamps.
Inputs: audio_id (required). Returns: result
suno_get_wavAInspect
Get the lossless WAV format of a generated song.
Converts the song to high-quality uncompressed WAV format.
WAV files are larger but have no quality loss compared to MP3.
Use this when:
- You need a lossless audio format for production
- You want the highest quality audio output
- You need uncompressed audio for further processing
Returns:
Task ID and WAV audio information.
Inputs: audio_id (required), callback_url. Returns: result
suno_list_actionsAInspect
List all available Suno API actions and corresponding tools.
Reference guide for what each action does and which tool to use.
Helpful for understanding the full capabilities of the Suno MCP.
Returns:
Categorized list of all actions and their corresponding tools.
Inputs: no named parameters. Returns: result
suno_list_custom_modelsBInspect
List custom music models for the current Suno application.
Inputs: limit, offset, status. Returns: result
suno_list_modelsAInspect
List all available Suno models and their capabilities.
Shows all available model versions with their limits, features, and
recommended use cases. Use this to understand which model to choose
for your music generation.
Model comparison:
- chirp-v6: Current v6 model
- chirp-v6-wild: v6 Wild model
- chirp-v6-mini: v6 Mini model
- chirp-v5-5: Previous model name, retained for compatibility
- chirp-v5: High quality, 8-minute max duration
- chirp-v4-5-plus: High quality with 8-minute duration
- chirp-v4-5: Recommended balance of quality and speed, 4-minute duration
- chirp-v4: Good quality, 150 seconds max
- chirp-v3-5/v3: Legacy models, 120 seconds max
Returns:
Table of all models with their version, limits, and features.
Inputs: no named parameters. Returns: result
suno_list_personasAInspect
List all saved artist personas for a user.
Returns all personas previously created with suno_create_persona or
suno_create_voice for the given user. This GET operation is free and needs
no extra billing-exemption header; normal authentication and permissions apply.
Use this when:
- You want to see all available voice personas
- You need to find a persona ID to use in music generation
- You want to manage your saved vocal styles
Returns:
List of personas with their IDs, names, and descriptions.
Inputs: user_id (required), limit, offset. Returns: result
suno_manage_projectAInspect
Create, retrieve, save, upload, add/generate/replace tracks, commit, remove, or render a project.
Use the latest version_id for mutations. Seconds describe the source audio;
beats describe the project timeline. Generation only creates candidates;
commit_candidate explicitly adds one to the selected track. Preserve returned
project/version/operation/candidate IDs. Poll accepted task_id with suno_get_task
until finished_at is set, then inspect response.success. On timeout, retry the
SAME request/key or poll its original task; never automatically regenerate.
Inputs: request (required), idempotency_key. Returns: result
suno_mashup_lyricsAInspect
Generate mashup lyrics by combining two sets of lyrics.
Takes two different song lyrics and intelligently combines them into
a cohesive mashup. Great for creating unique lyrical combinations.
Use this when:
- You want to blend two songs' lyrics together
- You're creating a mashup or medley
- You want creative lyrical combinations from two sources
Returns:
Combined mashup lyrics ready for use in music generation.
Inputs: lyrics_a (required), lyrics_b (required). Returns: result
suno_mashup_musicAInspect
Create a musical mashup by blending multiple songs together.
Combines elements from multiple generated songs into a single cohesive
mashup track. Different from lyrics mashup - this blends the actual audio.
Use this when:
- You want to blend two or more songs together musically
- You're creating a DJ-style mashup
- You want to combine melodies from different songs
Returns:
Task ID and the mashup audio information.
Inputs: prompt (required), mashup_audio_ids (required), model, style, +3 more. Returns: result
suno_optimize_styleAInspect
Optimize a music style description for better generation results.
Takes a rough style description and refines it into an optimized style
prompt that Suno can better understand and produce higher quality music for.
Use this when:
- You have a vague style idea and want to refine it
- You want better style prompts for suno_generate_custom_music
- You need suggestions for style terms
Returns:
Optimized style description ready for use in music generation.
Inputs: prompt (required). Returns: result
suno_overpaintingAInspect
Add AI-generated vocals to uploaded instrumental audio.
Takes your uploaded instrumental track and adds AI-generated vocals
on top of it (overpainting = painting vocals over the music).
Use this when:
- You have an instrumental track and want to add vocals
- You want to give background music a singing voice
- You need to add vocal melody to existing music
Returns:
Task ID and the audio with vocals added.
Inputs: audio_id (required), model, callback_url, overpainting_end, +1 more. Returns: result
suno_remaster_musicAInspect
Remaster an existing song to improve audio quality.
Takes a previously generated song and applies audio remastering to enhance
clarity, dynamics, and overall sound quality.
Use this when:
- You want to improve the audio quality of a generated song
- You want a song generated with an older model to sound better
- You need a polished, production-ready version
Returns:
Task ID and the remastered audio information.
Inputs: audio_id (required), variation_category (required), model, callback_url. Returns: result
suno_replace_sectionAInspect
Replace a specific time range in a song with new generated content.
Re-generates a portion of a song between the specified start and end times,
keeping the rest of the song unchanged. Great for fixing sections you don't like.
Use this when:
- A specific section of a song needs improvement
- You want to change lyrics in the middle of a song
- You want to replace a verse or chorus with something different
Returns:
Task ID plus two complete songs by default, or two unmerged clips in candidates mode.
Inputs: audio_id (required), replace_section_end (required), replace_section_start (required), lyric, +5 more. Returns: result
suno_samples_musicAInspect
Add AI-generated samples to uploaded audio.
Takes your uploaded audio and adds AI-generated musical samples
within the specified time range.
Use this when:
- You want to add sample loops or motifs to existing music
- You need to enhance a track with additional musical elements
- You want to add AI-generated samples to a specific section
Returns:
Task ID and the audio with samples added.
Inputs: audio_id (required), model, samples_end, callback_url, +1 more. Returns: result
suno_stems_musicAInspect
Separate a song into individual stems (vocals and instruments).
Splits the audio into separate tracks for vocals and instrumentals,
useful for remixing, karaoke, or isolating specific parts.
Use this when:
- You want to separate vocals from instrumentals
- You need individual stem tracks for mixing
- You want to create a karaoke version
Returns:
Task ID and stem separation results with individual track URLs.
Inputs: audio_id (required), callback_url. Returns: result
suno_underpaintingAInspect
Add AI-generated accompaniment/instrumental background to uploaded audio.
Takes your uploaded vocal track and adds an AI-generated instrumental
accompaniment beneath it (underpainting = adding music under vocals).
Use this when:
- You have a vocal recording and want to add music behind it
- You want to give an acapella track a full musical arrangement
- You need to add instrumental backing to existing vocals
Returns:
Task ID and the audio with accompaniment added.
Inputs: audio_id (required), model, callback_url, underpainting_end, +1 more. Returns: result
suno_upload_audioAInspect
Upload external audio for use in subsequent operations.
Use standard mode for normal uploads. Use enhanced mode only when standard
upload cannot process authorized audio; it returns a task_id for suno_get_task.
Enhanced audio IDs support Cover, Samples, and Mashup.
Inputs: audio_url (required), mode, name, persona_id, +1 more. Returns: result
suno_upload_coverAInspect
Create an AI cover of an uploaded audio (your own music).
Similar to suno_cover_music but works with audio you uploaded via
suno_upload_audio. Re-arranges your music in a different style.
Use this when:
- You uploaded your own music and want a cover in a different style
- You want to hear your song re-interpreted by AI
Returns:
Task ID and the cover audio information.
Inputs: audio_id (required), model, style, persona_id, +2 more. Returns: result
suno_upload_extendAInspect
Extend an uploaded audio (your own music) with new AI-generated content.
Similar to suno_extend_music but works with audio you uploaded via
suno_upload_audio. Allows you to add new sections to your own music.
Use this when:
- You uploaded your own music and want to extend it
- You want to add AI-generated sections to your existing recordings
Returns:
Task ID and the extended audio information.
Inputs: lyric (required), audio_id (required), continue_at (required), model, +2 more. Returns: result
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 48 tools
Most tools have distinct purposes, but several near-duplicate families create selection ambiguity: generate_with_persona vs. generate_with_persona_vox, create_persona vs. create_voice, stems_music vs. all_stems_music vs. extract_vocals, and upload_* vs. regular extend/cover operations. The detailed descriptions help resolve these, but an agent still has to carefully distinguish similar variants.
The set overwhelmingly uses a predictable suno_ + snake_case convention with clear verb/resource naming such as suno_generate_music, suno_get_task, and suno_list_models. Minor deviations exist in names like suno_stems_music, suno_all_stems_music, suno_underpainting, and the broad suno_manage_project, but readability remains high.
At 48 tools, the server is substantially over the typical 3-15 range and sits near the 50-tool extreme. While the domain is broad, many tools are narrow variants that would be better grouped or exposed through parameters rather than as separate top-level tools.
The surface covers an unusually wide music-production lifecycle: generation, custom lyrics, personas, stems, covers, extensions, mashups, uploads, custom models, projects, task polling, and multiple export formats. Minor gaps remain, such as no obvious song history/list-generated-audio or delete-audio operation, but agents can largely work around these via task IDs.
Maintenance
Related MCP Connectors
AI music studio: song generation with vocals, covers, stems, voice conversion, mastering, editing.
Make songs, change one part's lyrics in the same voice, and reimagine songs in new styles.
Generate full songs with vocals, instrumentals and sound effects from text. One server for Suno, Google Lyria, Mureka, MiniMax, ACE-Step, YuE and ElevenLabs. Your agent can quote the credit cost before generating, start a song, wait for it to finish and return download links. Sign in with OAuth; optional daily credit caps; retries never charge twice.
AI songwriting studio: lyrics, Suno prompts, cover art, lyric and music videos, release planning.
Related MCP Servers
- AlicenseAqualityDmaintenanceEnables AI-powered music generation through natural language commands, supporting both inspiration mode (AI-generated lyrics and style) and custom mode (user-provided lyrics and parameters) to create songs with direct download links.43MIT
- AlicenseBqualityDmaintenanceEnables AI music generation through Suno, allowing users to create songs with custom lyrics or AI-generated content, wait for completion, and download MP3 files.7ISC
- AlicenseAqualityBmaintenanceAI music production with text-to-music generation, audio extension, remixing, and cover creation via AceDataCloud API.18449 PyPI2MIT
- AlicenseNot gradedqualityDmaintenanceEnables AI music generation via Suno AI, allowing users to generate tracks with prompts and styles, and download them as MP3.1MIT