Skip to main content
Glama
README.md
# MCP-Suno

MCP (Model Context Protocol) server for Suno music generation API.

## Features

- **Generate Lyrics**: Create lyrics based on a description or theme
- **Generate Music**: Create custom songs with lyrics, style tags, and model selection
- **Automatic Polling**: Built-in polling mechanism for async task completion

## Installation

1. Clone or download this repository
2. Install dependencies:

```bash
npm install
```

3. Set up your API key by creating a `.env` file:

```bash
cp .env.example .env
```

Edit `.env` and add your Suno API key:

```
SUNO_API_KEY=your_actual_api_key_here
```

## Building

```bash
npm run build
```

## Running

```bash
npm start
```

Or for development:

```bash
npm run dev
```

## MCP Configuration

Add this server to your MCP client configuration:

```json
{
  "mcpServers": {
    "suno": {
      "type": "stdio",
      "command": "node",
      "args": ["E:\\xxx\\xxx\\xxx\\suno-mcp-1313api\\dist\\index.js"],
      "env": {
        "SUNO_API_KEY": "your_api_key_here"
      }
      "timeout": 600,
    }
  }
}
```

## Available Tools

### generate_lyrics

Generate lyrics based on a description or theme.

**Parameters:**
- `prompt` (required): Description or theme for lyrics (e.g., "dance", "love song", "epic battle")

**Returns:**
- `task_id`: The task ID for tracking
- `title`: Generated song title
- `lyrics`: Full lyrics text
- `status`: Task completion status

**Example:**
```json
{
  "prompt": "a romantic sunset song about two lovers meeting"
}
```

### generate_music

Generate music with custom lyrics.

**Parameters:**
- `prompt` (required): The lyrics for the song in Suno format (with [Verse], [Chorus], [Bridge] tags)
- `title` (required): Title of the song
- `tags` (optional): Music style tags (e.g., "pop, upbeat, female vocals", "rock, energetic")
- `mv` (optional): Model version (default: "chirp-v4")

**Returns:**
- `task_id`: The task ID for tracking
- `songs`: Array of generated songs with:
  - `id`: Song ID
  - `title`: Song title
  - `tags`: Style tags
  - `audio_url`: MP3 audio file URL
  - `video_url`: MP4 video file URL
  - `image_url`: Cover image URL
  - `image_large_url`: Large cover image URL
  - `duration`: Song duration in seconds
  - `model_name`: Model used
  - `status`: Generation status
  - `lyrics`: Full lyrics text

**Example:**
```json
{
  "prompt": "[Verse]\nWalking down the street\nFeeling the beat\nMusic in my soul\nTaking control\n\n[Chorus]\nThis is my song\nSinging all night long\nFeel the rhythm\nMoving along",
  "title": "My Song",
  "tags": "pop, upbeat, electronic",
  "mv": "chirp-v4"
}
```

## API Endpoints

This MCP server uses the following API endpoints:

- **Submit Lyrics**: `POST https://1313api.top/suno/submit/lyrics`
- **Submit Music**: `POST https://1313api.top/suno/submit/music`
- **Fetch Task**: `GET https://1313api.top/suno/fetch/{task_id}`

## Polling Behavior

The server automatically polls for task completion with the following settings:
- **Max Attempts**: 60
- **Polling Interval**: 3 seconds
- **Total Timeout**: ~3 minutes

Tasks are polled until they reach `SUCCESS` or `FAILED` status, or timeout is reached.

## Error Handling

The server returns error messages in the following format:

```json
{
  "error": "Error message description"
}
```

Common errors:
- `SUNO_API_KEY environment variable is not set`: API key not configured
- `Failed to submit lyrics generation`: API request failed
- `Task failed`: Generation failed on the server
- `Task timeout`: Generation took too long

## License

MIT

TDQS

A3.9/5.0

Scored across 2 tools

Disambiguation5/5

generate_lyrics and generate_music have clearly distinct outputs: one returns text (lyrics), the other returns audio/video (music). Their names and descriptions make the separation unambiguous.

Naming Consistency5/5

Both tools follow the exact same 'generate_<noun>' pattern, using snake_case consistently. This creates a predictable and coherent naming convention.

Tool Count3/5

With only 2 tools, the server feels thin for a music generation service. While the tools cover core generation, the count is borderline and would benefit from additional management or status tools.

Completeness2/5

The server only offers generation, lacking any way to list, retrieve, or manage past generations. For a realistic workflow, agents need status checks or history access, making the surface significantly incomplete.

Maintenance

ActivityInactive
ResponsivenessNo issues