Initial commit: Suno MCP server with 24 tools, proxy support, and opencode skill

This commit is contained in:
OpenCode
2026-07-13 11:31:28 +07:00
commit 10548187f4
32 changed files with 4031 additions and 0 deletions
+16
View File
@@ -0,0 +1,16 @@
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"suno": {
"type": "local",
"command": [
"node",
"/home/user/moder/mcp/suno-server/dist/index.js"
],
"env": {
"SUNO_API_KEY": "YOUR_SUNO_API_KEY_HERE"
},
"enabled": true
}
}
}
+186
View File
@@ -0,0 +1,186 @@
---
name: suno
description: Используй когда пользователь просит создать музыку, текст песни, кавер, ремикс, мэшап, видео, или работать с Suno AI Music API. Покрывает генерацию музыки, тексты, разделение вокала/стемов, Persona, стили и конвертацию.
---
# Suno Music API Skill
Этот skill описывает MCP-сервер для работы с [Suno API](https://sunoapi.org) через opencode.
## Лимиты и цены
- **Rate limit**: 20 запросов на 10 секунд.
- **Стоимость кредита**: $0.005 USD.
- **Кредиты не истекают**.
- Сгенерированные файлы хранятся **15 дней**.
## Прокси
Если сервис недоступен из вашей сети, MCP сервер поддерживает прокси через переменные окружения (в порядке приоритета):
```
SUNO_HTTP_PROXY=http://user:pass@proxy:8080
HTTPS_PROXY=http://proxy:8080
HTTP_PROXY=http://proxy:8080
```
## Основные сценарии
### 1. Сгенерировать песню с нуля
```
suno_generate_music
prompt: "Мелодичный инди-фолк с акустической гитарой, мягким вокалом, ностальгическое настроение"
customMode: false
instrumental: false
model: "V4_5ALL"
```
Вернёт `taskId`. Затем нужно подождать и вызвать:
```
suno_get_task_status
taskId: "..."
```
Результат: 2 трека с `audio_url`, `title`, `tags`, `duration`, `prompt`.
### 2. Сгенерировать песню в кастомном режиме
```
suno_generate_music
prompt: "[Verse] Ночной город, огни витрин..."
customMode: true
instrumental: false
style: "Synthwave, cinematic, 80s"
title: "Neon Rain"
model: "V4_5"
```
В `customMode: true` поля `style` и `title` обязательны. Если `instrumental: false` — ещё и `prompt` (он станет точным текстом песни).
### 3. Получить текст песни
```
suno_generate_lyrics
prompt: "Песня о путешествии, вдохновляющая, indie pop"
```
Полученный текст можно передать в `suno_generate_music(prompt=текст, customMode=true)`.
### 4. Разделить вокал и музыку
```
suno_separate_vocals
taskId: "<taskId генерации>"
audioId: "<id трека>"
```
Для продвинутого разделения по инструментам:
```
suno_separate_stems
taskId: "<taskId>"
audioId: "<id трека>"
```
### 5. Сделать кавер существующего аудио
```
suno_upload_and_cover
uploadUrl: "https://example.com/my-song.mp3"
customMode: true
instrumental: false
style: "Jazz"
title: "Jazz Version"
prompt: "[Verse] Smooth jazz arrangement..."
model: "V4_5ALL"
```
### 6. Создать персону из трека
```
suno_generate_persona
taskId: "<taskId>"
audioId: "<id трека>"
```
Бесплатно. Возвращает `personaId`, который потом можно использовать в `suno_generate_music` (`personaId` + `personaModel: style_persona`) для единого стиля.
### 7. Узнать промпт по готовому треку
```
suno_get_task_status
taskId: "<taskId генерации>"
```
В ответе будут поля `prompt`, `title`, `tags` для каждого трека.
## Полный список инструментов
| Инструмент | Назначение | Кредиты |
|---|---|:---:|
| `suno_generate_music` | Генерация музыки | 12 |
| `suno_generate_lyrics` | Генерация текста | 0.4 |
| `suno_generate_sounds` | Звуки/амбиенты/лупы | 2.5 |
| `suno_extend_music` | Продлить трек | 12 |
| `suno_replace_section` | Заменить фрагмент трека | 5 |
| `suno_add_vocals` | Добавить вокал на инструментал | 12 |
| `suno_add_instrumental` | Добавить инструментал к вокалу | 12 |
| `suno_upload_and_cover` | Загрузить аудио и сделать кавер | 12 |
| `suno_upload_and_extend` | Загрузить аудио и продлить | 12 |
| `suno_generate_mashup` | Мэшап из двух аудио | 12 |
| `suno_separate_vocals` | Вокал + минус | 10 |
| `suno_separate_stems` | Разделение по инструментам | 20 |
| `suno_create_video` | Видео из трека | 2 |
| `suno_create_cover` | Обложка трека | 0 |
| `suno_convert_to_wav` | Конвертация в WAV | 0.4 |
| `suno_boost_style` | Улучшить описание стиля | 0.4 |
| `suno_generate_persona` | Создать персону из трека | 0 |
| `suno_get_task_status` | Статус и метаданные трека | 0 |
| `suno_get_timestamped_lyrics` | Текст с таймкодами | 0.5 |
| `suno_get_lyrics_details` | Детали генерации текста | 0 |
| `suno_get_wav_details` | Детали конвертации WAV | 0 |
| `suno_get_vocal_separation_details` | Детали разделения | 0 |
| `suno_get_video_details` | Детали видео | 0 |
| `suno_get_credits` | Остаток кредитов | 0 |
## Выбор модели
| Модель | Длина | Когда использовать |
|---|---|---|
| `V4` | до 4 мин | Лучшее качество звука |
| `V4_5` | до 8 мин | Умные промпты, быстрее |
| `V4_5PLUS` | до 8 мин | Более насыщенный звук |
| `V4_5ALL` | до 8 мин | Лучшая структура песни |
| `V5` | до 8 мин | Высокая музыкальность, скорость |
| `V5_5` | до 8 мин | Персонализированные голоса |
## Лимиты символов в `customMode`
| Поле | V4 | V4_5 / V4_5PLUS / V4_5ALL / V5 / V5_5 |
|---|---|---|
| `prompt` | 3000 | 5000 |
| `style` | 200 | 1000 |
| `title` | 80 | 100 |
В `customMode: false` только `prompt`, максимум 500 символов.
## Рекомендации по промптам
- Опиши жанр, настроение, инструменты, темп, энергию.
- Для вокальных треков в `customMode` пиши текст в формате `[Verse] ... [Chorus] ...`.
- Избегай противоречивых описаний.
- Для повторяемого стиля используй `suno_generate_persona`.
## Обработка ошибок
| Код | Причина |
|---|---|
| 400 | Неверные параметры |
| 401 | Неверный API ключ |
| 429 | Недостаточно кредитов |
| 430 | Слишком частые запросы |
| 455 | Технические работы |
Если async-задача не завершилась за 15 минут, сервер вернёт таймаут — используй `suno_get_task_status` позже.