Skip to main content
Glama

Suno by Ace Data Cloud

简体中文安装与首用指南

PyPI version PyPI downloads Python 3.10+ License: MIT MCP

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

suno_generate_music

Generate AI music from a text prompt using Suno's Inspiration Mode.

suno_generate_custom_music

Generate AI music with full control over lyrics, title, and style (Custom Mode).

suno_extend_music

Extend an existing song from a specific timestamp with new lyrics.

suno_cover_music

Create a cover or remix version of an existing song in a different style.

suno_concat_music

Concatenate extended song segments into a single complete audio file.

suno_generate_with_persona

Generate music using a saved artist persona for consistent vocal style.

suno_remaster_music

Remaster an existing song; v5/v5.5 require a variation category.

suno_stems_music

Separate a song into individual stems (vocals and instruments).

suno_replace_section

Replace a specific time range in a song with new generated content.

suno_upload_extend

Extend an uploaded audio (your own music) with new AI-generated content.

suno_upload_cover

Create an AI cover of an uploaded audio (your own music).

suno_mashup_music

Blend exactly two songs using a required creative-direction prompt.

suno_all_stems_music

Return two distinct 12-stem candidate sets, labeled stem_set 1 and 2 in task results.

suno_generate_lyrics

Generate song lyrics from a text prompt.

suno_get_mp4

Get an MP4 video version of a generated song.

suno_get_timing

Get timing and subtitle data for a generated song.

suno_check_audio_availability

Synchronously check for positive evidence that an audio ID is available on the current channel.

suno_extract_vocals

Extract a required vocal interval shorter than 30 seconds.

suno_get_wav

Get the lossless WAV format of a generated song.

suno_get_mp3

Get the compressed MP3 format of a generated song.

suno_get_midi

Get MIDI data extracted from a generated song.

suno_create_persona

Create a new artist persona from an existing audio's vocal style; API pricing applies.

suno_list_personas

List saved personas for a user without a usage charge.

suno_delete_persona

Permanently delete a saved persona without a usage charge.

suno_create_custom_model

Create a reusable custom music model from 6 to 24 authorized audio URLs.

suno_get_custom_model

Retrieve one custom music model by ID.

suno_list_custom_models

List custom music models for the current Suno application.

suno_generate_with_custom_model

Generate a song using a ready custom music model.

suno_delete_custom_model

Archive a custom music model so it can no longer be used.

suno_optimize_style

Optimize a music style description for better generation results.

suno_mashup_lyrics

Generate mashup lyrics by combining two sets of lyrics.

suno_upload_audio

Upload external audio in standard or enhanced mode for subsequent operations.

suno_get_task

Query the status and result of a music generation task.

suno_get_tasks_batch

Query multiple music generation tasks at once.

suno_list_models

List all available Suno models and their capabilities.

suno_list_actions

List all available Suno API actions and corresponding tools.

suno_get_lyric_format_guide

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 mcp-suno and pass ACEDATACLOUD_API_TOKEN to that process.

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 suno

In 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 suno

Codex keeps user MCP settings in ~/.codex/config.toml and can show the server in /mcp. Official Codex MCP guide.

API token: hosted server

  1. Open Ace Data Cloud → Applications. Sign in, or register an account first.

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

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

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

  5. 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 HTTP Authorization header needs the Bearer prefix. A platform-... account-management token cannot replace a generation API key.

Copy an application API key or open Manage Keys

Create a separately named key with optional restrictions

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

For 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

  1. https://suno.mcp.acedata.cloud/health returning {"status":"ok"} checks reachability only, not authentication.

  2. Use the client's MCP server list to confirm Suno tools appear. suno_list_models and suno_list_actions return static reference data; they confirm tool loading, not that your downstream API credential or balance works.

  3. When ready, ask the client to call suno_generate_music with a short prompt. Save the returned task ID, then call suno_get_task until 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_music to create a short upbeat acoustic birthday song. Give me the task ID, check it with suno_get_task, and share the final audio only after the task completes.

For custom lyrics:

Use suno_generate_custom_music with 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:

  1. Keep the returned persona_id from voice creation.

  2. Call suno_upload_audio with the original song's public audio_url, mode: "standard" and that persona_id to associate the source with the voice. persona_id cannot be used with mode: "enhanced".

  3. Call suno_upload_cover with the upload's returned data.audio_id and the same persona_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

api_error with message the account may have been offline

The audio API reports that the account may have been offline.

suno_processing_unavailable

Music processing is unavailable.

suno_model_unavailable

The selected model is unavailable for this operation.

suno_processing_failed

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

chirp-v6

V6

API-defined

Current v6 model

chirp-v6-wild

V6 Wild

API-defined

v6 Wild model

chirp-v6-mini

V6 Mini

API-defined

v6 Mini model

chirp-v5-5

V5.5

8 minutes

Previous model name

chirp-v5

V5

8 minutes

High quality

chirp-v4-5-plus

V4.5+

8 minutes

Enhanced quality

chirp-v4-5

V4.5

4 minutes

Vocal gender control

chirp-v4

V4

150 seconds

Stable

chirp-v3-5

V3.5

120 seconds

Fast

chirp-v3-0

V3

120 seconds

Legacy

Vocal Gender Control (v4.5+ only):

  • f - Female vocals

  • m - Male vocals

Configuration

Environment Variables

Variable

Description

Default

ACEDATACLOUD_API_TOKEN

Local stdio token; hosted requests provide it via OAuth or Bearer header

Required for local stdio

ACEDATACLOUD_API_BASE_URL

API base URL

https://api.acedata.cloud

ACEDATACLOUD_OAUTH_CLIENT_ID

OAuth client ID (hosted mode)

—

ACEDATACLOUD_PLATFORM_BASE_URL

Platform base URL

https://platform.acedata.cloud

SUNO_DEFAULT_MODEL

Default model for generation

chirp-v5-5

SUNO_REQUEST_TIMEOUT

Request timeout in seconds

1800

LOG_LEVEL

Logging level

INFO

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 integration

Code Quality

# Format code
ruff format .

# Lint code
ruff check .

# Type check
mypy core tools

Build & 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.md

API Reference

This server wraps the AceDataCloud Suno API:

Contributing

Contributions are welcome! Please:

  1. Fork the repository

  2. Create a feature branch (git checkout -b feature/amazing)

  3. Commit your changes (git commit -m 'Add amazing feature')

  4. Push to the branch (git push origin feature/amazing)

  5. Open a Pull Request

Documentation

Documentation

License

MIT License - see LICENSE for details.


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

  • suno_extract_stem: extract a selected stem and complementary remainder.

  • suno_generate_sound: create one-shot or loop sound 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.

  1. Create a project, then retrieve and retain its complete state and latest version_id.

  2. Save complete state, upload material, or add tracks using the current version.

  3. For generation, supply a source audio ID and a completed project render audio ID. Source ranges use seconds; project timeline ranges use beats.

  4. Poll accepted task IDs with suno_get_task until finished_at is set and inspect response.success. Generating candidates does not modify the project.

  5. 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 tools
suno_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

    B3.3/5.0

    Scored across 48 tools

    Disambiguation3/5

    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.

    Naming Consistency4/5

    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.

    Tool Count2/5

    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.

    Completeness4/5

    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

    ActivityNo data
    ResponsivenessOutdated data

    Related MCP Connectors

    Related MCP Servers