@runapi.ai/suno-mcp 0.1.1 → 0.1.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -1,40 +1,52 @@
1
- # @runapi.ai/suno-mcp
1
+ <h1 align="center">Suno MCP Server</h1>
2
2
 
3
- RunAPI MCP server for the **Suno** model line. Create tasks,
4
- poll their status, and check pricing through a single RunAPI API key.
3
+ <p align="center">
4
+ <strong>Create Suno AI tasks through RunAPI — 6 endpoints, 6 models — then poll status and check pricing. One MCP server, one API key.</strong>
5
+ </p>
5
6
 
6
- ## Tools
7
+ <p align="center">
8
+ <sub>Works with Claude Code, Codex, Cursor, Windsurf, VS Code, Roo Code, and any MCP-compatible host.</sub>
9
+ </p>
7
10
 
8
- - `cover_audio` — create a Suno task (cover audio) and (optionally) poll until it reaches a terminal status. Returns the task id, status, output URLs, and a price snapshot. Models: `suno-v4`, `suno-v4.5`, `suno-v4.5-all`, `suno-v4.5-plus`, `suno-v5`, `suno-v5.5`.
9
- - `create_mashup` — create a Suno task (create mashup) and (optionally) poll until it reaches a terminal status. Returns the task id, status, output URLs, and a price snapshot. Models: `suno-v4`, `suno-v4.5`, `suno-v4.5-all`, `suno-v4.5-plus`, `suno-v5`, `suno-v5.5`.
10
- - `extend_music` — create a Suno task (extend music) and (optionally) poll until it reaches a terminal status. Returns the task id, status, output URLs, and a price snapshot. Models: `suno-v4`, `suno-v4.5`, `suno-v4.5-all`, `suno-v4.5-plus`, `suno-v5`, `suno-v5.5`.
11
- - `text_to_music` — create a Suno task (text to music) and (optionally) poll until it reaches a terminal status. Returns the task id, status, output URLs, and a price snapshot. Models: `suno-v4`, `suno-v4.5`, `suno-v4.5-all`, `suno-v4.5-plus`, `suno-v5`, `suno-v5.5`.
12
- - `text_to_sound` — create a Suno task (text to sound) and (optionally) poll until it reaches a terminal status. Returns the task id, status, output URLs, and a price snapshot. Models: `suno-v4`, `suno-v4.5`, `suno-v4.5-all`, `suno-v4.5-plus`, `suno-v5`, `suno-v5.5`.
13
- - `get_task` — fetch the current status and latest payload for a task.
14
- - `check_pricing` — look up pricing for a model in this line.
11
+ <p align="center">
12
+ <a href="https://www.npmjs.com/package/@runapi.ai/suno-mcp"><img src="https://img.shields.io/npm/v/%40runapi.ai/suno-mcp?style=flat-square&color=blue" alt="npm version"></a>
13
+ <a href="LICENSE"><img src="https://img.shields.io/badge/License-Apache_2.0-blue?style=flat-square" alt="Apache-2.0 license"></a>
14
+ <img src="https://img.shields.io/badge/Type-MCP_Server-blue?style=flat-square" alt="MCP Server">
15
+ <img src="https://img.shields.io/badge/Models-6-green?style=flat-square" alt="6 models">
16
+ </p>
15
17
 
16
- ## Configuration
18
+ <p align="center">
19
+ <a href="#quick-start">Quick Start</a> |
20
+ <a href="#tools">Tools</a> |
21
+ <a href="#models">Models</a> |
22
+ <a href="#examples">Examples</a> |
23
+ <a href="#configuration">Configuration</a>
24
+ </p>
17
25
 
18
- Set a RunAPI API key via the `RUNAPI_API_KEY` environment variable, or write
19
- it to `~/.config/runapi/config.json`:
26
+ ---
20
27
 
21
- ```bash
22
- mkdir -p ~/.config/runapi
23
- echo '{"api_key":"YOUR_KEY"}' > ~/.config/runapi/config.json
24
- ```
28
+ ## What Is This?
29
+
30
+ `@runapi.ai/suno-mcp` is a focused MCP server for the **Suno** model line on RunAPI.
31
+ It lets an MCP-compatible assistant create Suno tasks, poll their status, and check current pricing — all through a single RunAPI API key.
32
+
33
+ `check_pricing` works without a key. Task creation and status polling require `RUNAPI_API_KEY`.
34
+ This package is a pure client; it does not run a local generation backend.
25
35
 
26
- Get an API key at https://runapi.ai. Pricing is listed at
27
- https://runapi.ai/pricing.
36
+ ---
28
37
 
29
- ## Usage
38
+ ## Quick Start
30
39
 
31
- Run the server over stdio:
40
+ Add it to Claude Code:
32
41
 
33
42
  ```bash
34
- npx -y @runapi.ai/suno-mcp
43
+ claude mcp add suno -s user -- npx -y @runapi.ai/suno-mcp
35
44
  ```
36
45
 
37
- Add it to an MCP client (see `examples/` for per-client configs):
46
+ - `-s user`: global, available in all of your projects.
47
+ - `-s project`: team-shared, written to `.mcp.json` in the current repo so it can be committed.
48
+
49
+ For other hosts, or for manual configuration, use this JSON:
38
50
 
39
51
  ```json
40
52
  {
@@ -48,6 +60,92 @@ Add it to an MCP client (see `examples/` for per-client configs):
48
60
  }
49
61
  ```
50
62
 
63
+ Create an API key at [runapi.ai](https://runapi.ai) and expose it as `RUNAPI_API_KEY`.
64
+ See `examples/` for ready-made config files for Claude, Cursor, Windsurf, VS Code, and Roo.
65
+
66
+ ---
67
+
68
+ ## Tools
69
+
70
+ | Tool | Auth | Purpose |
71
+ |---|---|---|
72
+ | `cover_audio` | Yes | Create a Suno task (cover audio) and optionally poll until it reaches a terminal status. Returns the task id, status, output URLs, and a price snapshot. |
73
+ | `create_mashup` | Yes | Create a Suno task (create mashup) and optionally poll until it reaches a terminal status. Returns the task id, status, output URLs, and a price snapshot. |
74
+ | `extend_music` | Yes | Create a Suno task (extend music) and optionally poll until it reaches a terminal status. Returns the task id, status, output URLs, and a price snapshot. |
75
+ | `generate_lyrics` | Yes | Create a Suno task (generate lyrics) and optionally poll until it reaches a terminal status. Returns the task id, status, output URLs, and a price snapshot. |
76
+ | `text_to_music` | Yes | Create a Suno task (text to music) and optionally poll until it reaches a terminal status. Returns the task id, status, output URLs, and a price snapshot. |
77
+ | `text_to_sound` | Yes | Create a Suno task (text to sound) and optionally poll until it reaches a terminal status. Returns the task id, status, output URLs, and a price snapshot. |
78
+ | `get_task` | Yes | Fetch the current status and latest payload for an existing task. |
79
+ | `check_pricing` | No | Look up the current price for a Suno model and endpoint. |
80
+
81
+ ---
82
+
83
+ ## Models
84
+
85
+ Suno covers 6 models across 6 endpoints. Each tool accepts the models listed for it:
86
+
87
+ | Tool | Models |
88
+ |---|---|
89
+ | `cover_audio` | `suno-v4`, `suno-v4.5`, `suno-v4.5-all`, `suno-v4.5-plus`, `suno-v5`, `suno-v5.5` |
90
+ | `create_mashup` | `suno-v4`, `suno-v4.5`, `suno-v4.5-all`, `suno-v4.5-plus`, `suno-v5`, `suno-v5.5` |
91
+ | `extend_music` | `suno-v4`, `suno-v4.5`, `suno-v4.5-all`, `suno-v4.5-plus`, `suno-v5`, `suno-v5.5` |
92
+ | `generate_lyrics` | _no model parameter_ |
93
+ | `text_to_music` | `suno-v4`, `suno-v4.5`, `suno-v4.5-all`, `suno-v4.5-plus`, `suno-v5`, `suno-v5.5` |
94
+ | `text_to_sound` | `suno-v5`, `suno-v5.5` |
95
+
96
+ Call `check_pricing` for the current price of any model. Model availability can change between releases.
97
+
98
+ ---
99
+
100
+ ## Examples
101
+
102
+ Ask your assistant in natural language; it uses the tools to confirm pricing and run the task.
103
+
104
+ ### Create a task
105
+
106
+ ```text
107
+ Run a Suno cover audio task with RunAPI.
108
+ ```
109
+
110
+ The assistant calls `check_pricing` to confirm the cost, then `cover_audio`, and returns the task id, status, and output URLs.
111
+
112
+ ### Submit without waiting
113
+
114
+ ```text
115
+ Create the task but don't wait for it to finish.
116
+ ```
117
+
118
+ The assistant calls the create tool with `wait: false` and returns the task id. Check on it later with `get_task`.
119
+
120
+ ### Check pricing
121
+
122
+ ```text
123
+ What does Suno cost?
124
+ ```
125
+
126
+ The assistant calls `check_pricing` and shows the current snapshot, or links to [runapi.ai/pricing](https://runapi.ai/pricing).
127
+
128
+ ---
129
+
130
+ ## Configuration
131
+
132
+ The server reads the API key in this order:
133
+
134
+ 1. `RUNAPI_API_KEY` environment variable
135
+ 2. `~/.config/runapi/config.json`
136
+
137
+ Example config file:
138
+
139
+ ```json
140
+ {
141
+ "apiKey": "your_runapi_key"
142
+ }
143
+ ```
144
+
145
+ Do not commit real API keys. Get one at [runapi.ai](https://runapi.ai); pricing is listed at [runapi.ai/pricing](https://runapi.ai/pricing).
146
+
147
+ ---
148
+
51
149
  ## License
52
150
 
53
- Apache-2.0
151
+ Licensed under the [Apache License, Version 2.0](LICENSE).
@@ -19,6 +19,47 @@
19
19
  "suno-v5",
20
20
  "suno-v5.5"
21
21
  ],
22
+ "rules": [
23
+ {
24
+ "when": {
25
+ "vocal_mode": "auto_lyrics"
26
+ },
27
+ "required": [
28
+ "prompt"
29
+ ],
30
+ "forbidden": [
31
+ "lyrics",
32
+ "style",
33
+ "title"
34
+ ]
35
+ },
36
+ {
37
+ "when": {
38
+ "vocal_mode": "exact_lyrics"
39
+ },
40
+ "required": [
41
+ "lyrics",
42
+ "style",
43
+ "title"
44
+ ],
45
+ "forbidden": [
46
+ "prompt"
47
+ ]
48
+ },
49
+ {
50
+ "when": {
51
+ "vocal_mode": "instrumental"
52
+ },
53
+ "required": [
54
+ "style",
55
+ "title"
56
+ ],
57
+ "forbidden": [
58
+ "prompt",
59
+ "lyrics"
60
+ ]
61
+ }
62
+ ],
22
63
  "fields_by_model": {
23
64
  "suno-v4": {
24
65
  "model": {
@@ -26,47 +67,6 @@
26
67
  "required": true,
27
68
  "description": "Model slug."
28
69
  },
29
- "rules": [
30
- {
31
- "when": {
32
- "vocal_mode": "auto_lyrics"
33
- },
34
- "required": [
35
- "prompt"
36
- ],
37
- "forbidden": [
38
- "lyrics",
39
- "style",
40
- "title"
41
- ]
42
- },
43
- {
44
- "when": {
45
- "vocal_mode": "exact_lyrics"
46
- },
47
- "required": [
48
- "lyrics",
49
- "style",
50
- "title"
51
- ],
52
- "forbidden": [
53
- "prompt"
54
- ]
55
- },
56
- {
57
- "when": {
58
- "vocal_mode": "instrumental"
59
- },
60
- "required": [
61
- "style",
62
- "title"
63
- ],
64
- "forbidden": [
65
- "prompt",
66
- "lyrics"
67
- ]
68
- }
69
- ],
70
70
  "style": {
71
71
  "type": "string",
72
72
  "description": "Music style."
@@ -145,47 +145,6 @@
145
145
  "required": true,
146
146
  "description": "Model slug."
147
147
  },
148
- "rules": [
149
- {
150
- "when": {
151
- "vocal_mode": "auto_lyrics"
152
- },
153
- "required": [
154
- "prompt"
155
- ],
156
- "forbidden": [
157
- "lyrics",
158
- "style",
159
- "title"
160
- ]
161
- },
162
- {
163
- "when": {
164
- "vocal_mode": "exact_lyrics"
165
- },
166
- "required": [
167
- "lyrics",
168
- "style",
169
- "title"
170
- ],
171
- "forbidden": [
172
- "prompt"
173
- ]
174
- },
175
- {
176
- "when": {
177
- "vocal_mode": "instrumental"
178
- },
179
- "required": [
180
- "style",
181
- "title"
182
- ],
183
- "forbidden": [
184
- "prompt",
185
- "lyrics"
186
- ]
187
- }
188
- ],
189
148
  "style": {
190
149
  "type": "string",
191
150
  "description": "Music style."
@@ -264,47 +223,6 @@
264
223
  "required": true,
265
224
  "description": "Model slug."
266
225
  },
267
- "rules": [
268
- {
269
- "when": {
270
- "vocal_mode": "auto_lyrics"
271
- },
272
- "required": [
273
- "prompt"
274
- ],
275
- "forbidden": [
276
- "lyrics",
277
- "style",
278
- "title"
279
- ]
280
- },
281
- {
282
- "when": {
283
- "vocal_mode": "exact_lyrics"
284
- },
285
- "required": [
286
- "lyrics",
287
- "style",
288
- "title"
289
- ],
290
- "forbidden": [
291
- "prompt"
292
- ]
293
- },
294
- {
295
- "when": {
296
- "vocal_mode": "instrumental"
297
- },
298
- "required": [
299
- "style",
300
- "title"
301
- ],
302
- "forbidden": [
303
- "prompt",
304
- "lyrics"
305
- ]
306
- }
307
- ],
308
226
  "style": {
309
227
  "type": "string",
310
228
  "description": "Music style."
@@ -383,47 +301,6 @@
383
301
  "required": true,
384
302
  "description": "Model slug."
385
303
  },
386
- "rules": [
387
- {
388
- "when": {
389
- "vocal_mode": "auto_lyrics"
390
- },
391
- "required": [
392
- "prompt"
393
- ],
394
- "forbidden": [
395
- "lyrics",
396
- "style",
397
- "title"
398
- ]
399
- },
400
- {
401
- "when": {
402
- "vocal_mode": "exact_lyrics"
403
- },
404
- "required": [
405
- "lyrics",
406
- "style",
407
- "title"
408
- ],
409
- "forbidden": [
410
- "prompt"
411
- ]
412
- },
413
- {
414
- "when": {
415
- "vocal_mode": "instrumental"
416
- },
417
- "required": [
418
- "style",
419
- "title"
420
- ],
421
- "forbidden": [
422
- "prompt",
423
- "lyrics"
424
- ]
425
- }
426
- ],
427
304
  "style": {
428
305
  "type": "string",
429
306
  "description": "Music style."
@@ -502,47 +379,6 @@
502
379
  "required": true,
503
380
  "description": "Model slug."
504
381
  },
505
- "rules": [
506
- {
507
- "when": {
508
- "vocal_mode": "auto_lyrics"
509
- },
510
- "required": [
511
- "prompt"
512
- ],
513
- "forbidden": [
514
- "lyrics",
515
- "style",
516
- "title"
517
- ]
518
- },
519
- {
520
- "when": {
521
- "vocal_mode": "exact_lyrics"
522
- },
523
- "required": [
524
- "lyrics",
525
- "style",
526
- "title"
527
- ],
528
- "forbidden": [
529
- "prompt"
530
- ]
531
- },
532
- {
533
- "when": {
534
- "vocal_mode": "instrumental"
535
- },
536
- "required": [
537
- "style",
538
- "title"
539
- ],
540
- "forbidden": [
541
- "prompt",
542
- "lyrics"
543
- ]
544
- }
545
- ],
546
382
  "style": {
547
383
  "type": "string",
548
384
  "description": "Music style."
@@ -621,47 +457,6 @@
621
457
  "required": true,
622
458
  "description": "Model slug."
623
459
  },
624
- "rules": [
625
- {
626
- "when": {
627
- "vocal_mode": "auto_lyrics"
628
- },
629
- "required": [
630
- "prompt"
631
- ],
632
- "forbidden": [
633
- "lyrics",
634
- "style",
635
- "title"
636
- ]
637
- },
638
- {
639
- "when": {
640
- "vocal_mode": "exact_lyrics"
641
- },
642
- "required": [
643
- "lyrics",
644
- "style",
645
- "title"
646
- ],
647
- "forbidden": [
648
- "prompt"
649
- ]
650
- },
651
- {
652
- "when": {
653
- "vocal_mode": "instrumental"
654
- },
655
- "required": [
656
- "style",
657
- "title"
658
- ],
659
- "forbidden": [
660
- "prompt",
661
- "lyrics"
662
- ]
663
- }
664
- ],
665
460
  "style": {
666
461
  "type": "string",
667
462
  "description": "Music style."
@@ -747,6 +542,47 @@
747
542
  "suno-v5",
748
543
  "suno-v5.5"
749
544
  ],
545
+ "rules": [
546
+ {
547
+ "when": {
548
+ "vocal_mode": "auto_lyrics"
549
+ },
550
+ "required": [
551
+ "prompt"
552
+ ],
553
+ "forbidden": [
554
+ "lyrics",
555
+ "style",
556
+ "title"
557
+ ]
558
+ },
559
+ {
560
+ "when": {
561
+ "vocal_mode": "exact_lyrics"
562
+ },
563
+ "required": [
564
+ "lyrics",
565
+ "style",
566
+ "title"
567
+ ],
568
+ "forbidden": [
569
+ "prompt"
570
+ ]
571
+ },
572
+ {
573
+ "when": {
574
+ "vocal_mode": "instrumental"
575
+ },
576
+ "required": [
577
+ "style",
578
+ "title"
579
+ ],
580
+ "forbidden": [
581
+ "prompt",
582
+ "lyrics"
583
+ ]
584
+ }
585
+ ],
750
586
  "fields_by_model": {
751
587
  "suno-v4": {
752
588
  "model": {
@@ -754,47 +590,6 @@
754
590
  "required": true,
755
591
  "description": "Model slug."
756
592
  },
757
- "rules": [
758
- {
759
- "when": {
760
- "vocal_mode": "auto_lyrics"
761
- },
762
- "required": [
763
- "prompt"
764
- ],
765
- "forbidden": [
766
- "lyrics",
767
- "style",
768
- "title"
769
- ]
770
- },
771
- {
772
- "when": {
773
- "vocal_mode": "exact_lyrics"
774
- },
775
- "required": [
776
- "lyrics",
777
- "style",
778
- "title"
779
- ],
780
- "forbidden": [
781
- "prompt"
782
- ]
783
- },
784
- {
785
- "when": {
786
- "vocal_mode": "instrumental"
787
- },
788
- "required": [
789
- "style",
790
- "title"
791
- ],
792
- "forbidden": [
793
- "prompt",
794
- "lyrics"
795
- ]
796
- }
797
- ],
798
593
  "style": {
799
594
  "type": "string",
800
595
  "description": "Music style."
@@ -869,47 +664,6 @@
869
664
  "required": true,
870
665
  "description": "Model slug."
871
666
  },
872
- "rules": [
873
- {
874
- "when": {
875
- "vocal_mode": "auto_lyrics"
876
- },
877
- "required": [
878
- "prompt"
879
- ],
880
- "forbidden": [
881
- "lyrics",
882
- "style",
883
- "title"
884
- ]
885
- },
886
- {
887
- "when": {
888
- "vocal_mode": "exact_lyrics"
889
- },
890
- "required": [
891
- "lyrics",
892
- "style",
893
- "title"
894
- ],
895
- "forbidden": [
896
- "prompt"
897
- ]
898
- },
899
- {
900
- "when": {
901
- "vocal_mode": "instrumental"
902
- },
903
- "required": [
904
- "style",
905
- "title"
906
- ],
907
- "forbidden": [
908
- "prompt",
909
- "lyrics"
910
- ]
911
- }
912
- ],
913
667
  "style": {
914
668
  "type": "string",
915
669
  "description": "Music style."
@@ -984,47 +738,6 @@
984
738
  "required": true,
985
739
  "description": "Model slug."
986
740
  },
987
- "rules": [
988
- {
989
- "when": {
990
- "vocal_mode": "auto_lyrics"
991
- },
992
- "required": [
993
- "prompt"
994
- ],
995
- "forbidden": [
996
- "lyrics",
997
- "style",
998
- "title"
999
- ]
1000
- },
1001
- {
1002
- "when": {
1003
- "vocal_mode": "exact_lyrics"
1004
- },
1005
- "required": [
1006
- "lyrics",
1007
- "style",
1008
- "title"
1009
- ],
1010
- "forbidden": [
1011
- "prompt"
1012
- ]
1013
- },
1014
- {
1015
- "when": {
1016
- "vocal_mode": "instrumental"
1017
- },
1018
- "required": [
1019
- "style",
1020
- "title"
1021
- ],
1022
- "forbidden": [
1023
- "prompt",
1024
- "lyrics"
1025
- ]
1026
- }
1027
- ],
1028
741
  "style": {
1029
742
  "type": "string",
1030
743
  "description": "Music style."
@@ -1099,47 +812,6 @@
1099
812
  "required": true,
1100
813
  "description": "Model slug."
1101
814
  },
1102
- "rules": [
1103
- {
1104
- "when": {
1105
- "vocal_mode": "auto_lyrics"
1106
- },
1107
- "required": [
1108
- "prompt"
1109
- ],
1110
- "forbidden": [
1111
- "lyrics",
1112
- "style",
1113
- "title"
1114
- ]
1115
- },
1116
- {
1117
- "when": {
1118
- "vocal_mode": "exact_lyrics"
1119
- },
1120
- "required": [
1121
- "lyrics",
1122
- "style",
1123
- "title"
1124
- ],
1125
- "forbidden": [
1126
- "prompt"
1127
- ]
1128
- },
1129
- {
1130
- "when": {
1131
- "vocal_mode": "instrumental"
1132
- },
1133
- "required": [
1134
- "style",
1135
- "title"
1136
- ],
1137
- "forbidden": [
1138
- "prompt",
1139
- "lyrics"
1140
- ]
1141
- }
1142
- ],
1143
815
  "style": {
1144
816
  "type": "string",
1145
817
  "description": "Music style."
@@ -1214,47 +886,6 @@
1214
886
  "required": true,
1215
887
  "description": "Model slug."
1216
888
  },
1217
- "rules": [
1218
- {
1219
- "when": {
1220
- "vocal_mode": "auto_lyrics"
1221
- },
1222
- "required": [
1223
- "prompt"
1224
- ],
1225
- "forbidden": [
1226
- "lyrics",
1227
- "style",
1228
- "title"
1229
- ]
1230
- },
1231
- {
1232
- "when": {
1233
- "vocal_mode": "exact_lyrics"
1234
- },
1235
- "required": [
1236
- "lyrics",
1237
- "style",
1238
- "title"
1239
- ],
1240
- "forbidden": [
1241
- "prompt"
1242
- ]
1243
- },
1244
- {
1245
- "when": {
1246
- "vocal_mode": "instrumental"
1247
- },
1248
- "required": [
1249
- "style",
1250
- "title"
1251
- ],
1252
- "forbidden": [
1253
- "prompt",
1254
- "lyrics"
1255
- ]
1256
- }
1257
- ],
1258
889
  "style": {
1259
890
  "type": "string",
1260
891
  "description": "Music style."
@@ -1329,47 +960,6 @@
1329
960
  "required": true,
1330
961
  "description": "Model slug."
1331
962
  },
1332
- "rules": [
1333
- {
1334
- "when": {
1335
- "vocal_mode": "auto_lyrics"
1336
- },
1337
- "required": [
1338
- "prompt"
1339
- ],
1340
- "forbidden": [
1341
- "lyrics",
1342
- "style",
1343
- "title"
1344
- ]
1345
- },
1346
- {
1347
- "when": {
1348
- "vocal_mode": "exact_lyrics"
1349
- },
1350
- "required": [
1351
- "lyrics",
1352
- "style",
1353
- "title"
1354
- ],
1355
- "forbidden": [
1356
- "prompt"
1357
- ]
1358
- },
1359
- {
1360
- "when": {
1361
- "vocal_mode": "instrumental"
1362
- },
1363
- "required": [
1364
- "style",
1365
- "title"
1366
- ],
1367
- "forbidden": [
1368
- "prompt",
1369
- "lyrics"
1370
- ]
1371
- }
1372
- ],
1373
963
  "style": {
1374
964
  "type": "string",
1375
965
  "description": "Music style."
@@ -2052,6 +1642,47 @@
2052
1642
  "suno-v5",
2053
1643
  "suno-v5.5"
2054
1644
  ],
1645
+ "rules": [
1646
+ {
1647
+ "when": {
1648
+ "vocal_mode": "auto_lyrics"
1649
+ },
1650
+ "required": [
1651
+ "prompt"
1652
+ ],
1653
+ "forbidden": [
1654
+ "lyrics",
1655
+ "style",
1656
+ "title"
1657
+ ]
1658
+ },
1659
+ {
1660
+ "when": {
1661
+ "vocal_mode": "exact_lyrics"
1662
+ },
1663
+ "required": [
1664
+ "lyrics",
1665
+ "style",
1666
+ "title"
1667
+ ],
1668
+ "forbidden": [
1669
+ "prompt"
1670
+ ]
1671
+ },
1672
+ {
1673
+ "when": {
1674
+ "vocal_mode": "instrumental"
1675
+ },
1676
+ "required": [
1677
+ "style",
1678
+ "title"
1679
+ ],
1680
+ "forbidden": [
1681
+ "prompt",
1682
+ "lyrics"
1683
+ ]
1684
+ }
1685
+ ],
2055
1686
  "fields_by_model": {
2056
1687
  "suno-v4": {
2057
1688
  "model": {
@@ -2059,47 +1690,6 @@
2059
1690
  "required": true,
2060
1691
  "description": "Model slug."
2061
1692
  },
2062
- "rules": [
2063
- {
2064
- "when": {
2065
- "vocal_mode": "auto_lyrics"
2066
- },
2067
- "required": [
2068
- "prompt"
2069
- ],
2070
- "forbidden": [
2071
- "lyrics",
2072
- "style",
2073
- "title"
2074
- ]
2075
- },
2076
- {
2077
- "when": {
2078
- "vocal_mode": "exact_lyrics"
2079
- },
2080
- "required": [
2081
- "lyrics",
2082
- "style",
2083
- "title"
2084
- ],
2085
- "forbidden": [
2086
- "prompt"
2087
- ]
2088
- },
2089
- {
2090
- "when": {
2091
- "vocal_mode": "instrumental"
2092
- },
2093
- "required": [
2094
- "style",
2095
- "title"
2096
- ],
2097
- "forbidden": [
2098
- "prompt",
2099
- "lyrics"
2100
- ]
2101
- }
2102
- ],
2103
1693
  "style": {
2104
1694
  "type": "string",
2105
1695
  "description": "Music style."
@@ -2181,47 +1771,6 @@
2181
1771
  "required": true,
2182
1772
  "description": "Model slug."
2183
1773
  },
2184
- "rules": [
2185
- {
2186
- "when": {
2187
- "vocal_mode": "auto_lyrics"
2188
- },
2189
- "required": [
2190
- "prompt"
2191
- ],
2192
- "forbidden": [
2193
- "lyrics",
2194
- "style",
2195
- "title"
2196
- ]
2197
- },
2198
- {
2199
- "when": {
2200
- "vocal_mode": "exact_lyrics"
2201
- },
2202
- "required": [
2203
- "lyrics",
2204
- "style",
2205
- "title"
2206
- ],
2207
- "forbidden": [
2208
- "prompt"
2209
- ]
2210
- },
2211
- {
2212
- "when": {
2213
- "vocal_mode": "instrumental"
2214
- },
2215
- "required": [
2216
- "style",
2217
- "title"
2218
- ],
2219
- "forbidden": [
2220
- "prompt",
2221
- "lyrics"
2222
- ]
2223
- }
2224
- ],
2225
1774
  "style": {
2226
1775
  "type": "string",
2227
1776
  "description": "Music style."
@@ -2303,47 +1852,6 @@
2303
1852
  "required": true,
2304
1853
  "description": "Model slug."
2305
1854
  },
2306
- "rules": [
2307
- {
2308
- "when": {
2309
- "vocal_mode": "auto_lyrics"
2310
- },
2311
- "required": [
2312
- "prompt"
2313
- ],
2314
- "forbidden": [
2315
- "lyrics",
2316
- "style",
2317
- "title"
2318
- ]
2319
- },
2320
- {
2321
- "when": {
2322
- "vocal_mode": "exact_lyrics"
2323
- },
2324
- "required": [
2325
- "lyrics",
2326
- "style",
2327
- "title"
2328
- ],
2329
- "forbidden": [
2330
- "prompt"
2331
- ]
2332
- },
2333
- {
2334
- "when": {
2335
- "vocal_mode": "instrumental"
2336
- },
2337
- "required": [
2338
- "style",
2339
- "title"
2340
- ],
2341
- "forbidden": [
2342
- "prompt",
2343
- "lyrics"
2344
- ]
2345
- }
2346
- ],
2347
1855
  "style": {
2348
1856
  "type": "string",
2349
1857
  "description": "Music style."
@@ -2425,47 +1933,6 @@
2425
1933
  "required": true,
2426
1934
  "description": "Model slug."
2427
1935
  },
2428
- "rules": [
2429
- {
2430
- "when": {
2431
- "vocal_mode": "auto_lyrics"
2432
- },
2433
- "required": [
2434
- "prompt"
2435
- ],
2436
- "forbidden": [
2437
- "lyrics",
2438
- "style",
2439
- "title"
2440
- ]
2441
- },
2442
- {
2443
- "when": {
2444
- "vocal_mode": "exact_lyrics"
2445
- },
2446
- "required": [
2447
- "lyrics",
2448
- "style",
2449
- "title"
2450
- ],
2451
- "forbidden": [
2452
- "prompt"
2453
- ]
2454
- },
2455
- {
2456
- "when": {
2457
- "vocal_mode": "instrumental"
2458
- },
2459
- "required": [
2460
- "style",
2461
- "title"
2462
- ],
2463
- "forbidden": [
2464
- "prompt",
2465
- "lyrics"
2466
- ]
2467
- }
2468
- ],
2469
1936
  "style": {
2470
1937
  "type": "string",
2471
1938
  "description": "Music style."
@@ -2547,47 +2014,6 @@
2547
2014
  "required": true,
2548
2015
  "description": "Model slug."
2549
2016
  },
2550
- "rules": [
2551
- {
2552
- "when": {
2553
- "vocal_mode": "auto_lyrics"
2554
- },
2555
- "required": [
2556
- "prompt"
2557
- ],
2558
- "forbidden": [
2559
- "lyrics",
2560
- "style",
2561
- "title"
2562
- ]
2563
- },
2564
- {
2565
- "when": {
2566
- "vocal_mode": "exact_lyrics"
2567
- },
2568
- "required": [
2569
- "lyrics",
2570
- "style",
2571
- "title"
2572
- ],
2573
- "forbidden": [
2574
- "prompt"
2575
- ]
2576
- },
2577
- {
2578
- "when": {
2579
- "vocal_mode": "instrumental"
2580
- },
2581
- "required": [
2582
- "style",
2583
- "title"
2584
- ],
2585
- "forbidden": [
2586
- "prompt",
2587
- "lyrics"
2588
- ]
2589
- }
2590
- ],
2591
2017
  "style": {
2592
2018
  "type": "string",
2593
2019
  "description": "Music style."
@@ -2669,47 +2095,6 @@
2669
2095
  "required": true,
2670
2096
  "description": "Model slug."
2671
2097
  },
2672
- "rules": [
2673
- {
2674
- "when": {
2675
- "vocal_mode": "auto_lyrics"
2676
- },
2677
- "required": [
2678
- "prompt"
2679
- ],
2680
- "forbidden": [
2681
- "lyrics",
2682
- "style",
2683
- "title"
2684
- ]
2685
- },
2686
- {
2687
- "when": {
2688
- "vocal_mode": "exact_lyrics"
2689
- },
2690
- "required": [
2691
- "lyrics",
2692
- "style",
2693
- "title"
2694
- ],
2695
- "forbidden": [
2696
- "prompt"
2697
- ]
2698
- },
2699
- {
2700
- "when": {
2701
- "vocal_mode": "instrumental"
2702
- },
2703
- "required": [
2704
- "style",
2705
- "title"
2706
- ],
2707
- "forbidden": [
2708
- "prompt",
2709
- "lyrics"
2710
- ]
2711
- }
2712
- ],
2713
2098
  "style": {
2714
2099
  "type": "string",
2715
2100
  "description": "Music style."
@@ -1,5 +1,5 @@
1
1
  export declare const META: {
2
2
  readonly name: "@runapi.ai/suno-mcp";
3
- readonly version: "0.1.1";
3
+ readonly version: "0.1.3";
4
4
  readonly lineSlug: "suno";
5
5
  };
package/dist/src/meta.js CHANGED
@@ -1,6 +1,6 @@
1
1
  export const META = {
2
2
  name: "@runapi.ai/suno-mcp",
3
- version: "0.1.1",
3
+ version: "0.1.3",
4
4
  lineSlug: "suno"
5
5
  };
6
6
  //# sourceMappingURL=meta.js.map
@@ -2,7 +2,6 @@ import { z } from "zod";
2
2
  import { createModelServer, findModelForAction, findModels, friendlyError, jsonText, priceForModel, RunApiClient, taskStatus } from "@runapi.ai/mcp-core";
3
3
  import { readContract, readPricing } from "./data.js";
4
4
  import { META } from "./meta.js";
5
- const RESERVED_FIELDS = new Set(["model", "rules"]);
6
5
  function lineService(contract) {
7
6
  return Object.keys(contract.actions)[0]?.split("/")[0] ?? META.lineSlug;
8
7
  }
@@ -22,34 +21,8 @@ function lineModels(contract) {
22
21
  }
23
22
  return [...seen];
24
23
  }
25
- // No-model endpoints (models: []) carry their fields under the "_" roster.
26
- function rostersForAction(action) {
27
- return action.models.length > 0 ? action.models : ["_"];
28
- }
29
- function fieldsForAction(action) {
30
- const fields = {};
31
- for (const model of rostersForAction(action)) {
32
- const roster = action.fields_by_model[model] ?? {};
33
- for (const [name, field] of Object.entries(roster)) {
34
- if (RESERVED_FIELDS.has(name)) {
35
- continue;
36
- }
37
- if (!(name in fields)) {
38
- fields[name] = field;
39
- }
40
- }
41
- }
42
- return fields;
43
- }
44
24
  function rulesForAction(action) {
45
- for (const model of rostersForAction(action)) {
46
- const roster = action.fields_by_model[model] ?? {};
47
- const rules = roster.rules;
48
- if (Array.isArray(rules) && rules.length > 0) {
49
- return rules;
50
- }
51
- }
52
- return [];
25
+ return action.rules ?? [];
53
26
  }
54
27
  function buildTools(contract) {
55
28
  const tools = [];
@@ -62,8 +35,7 @@ function buildTools(contract) {
62
35
  description: `Create a ${action.model} task on RunAPI (${endpoint.replace(/_/g, " ")}). Returns a task id, status, and output URLs.`,
63
36
  service,
64
37
  action: endpoint,
65
- models: action.models,
66
- inputSchema: fieldsForAction(action)
38
+ models: action.models
67
39
  });
68
40
  inputRules[endpoint] = rulesForAction(action);
69
41
  }
@@ -1 +1 @@
1
- {"version":3,"file":"server.js","sourceRoot":"","sources":["../../src/server.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"server.js","sourceRoot":"","sources":["../../src/server.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@runapi.ai/suno-mcp",
3
- "version": "0.1.1",
4
- "description": "RunAPI MCP server for one model line: create tasks, poll status, and check pricing with one API key.",
3
+ "version": "0.1.3",
4
+ "description": "Suno MCP server for RunAPI create Suno AI tasks (cover audio, create mashup, extend music), poll status, and check pricing across 6 models with one API key.",
5
5
  "type": "module",
6
6
  "main": "dist/src/index.js",
7
7
  "bin": {
@@ -27,7 +27,21 @@
27
27
  "runapi",
28
28
  "mcp",
29
29
  "model-context-protocol",
30
- "ai"
30
+ "ai",
31
+ "suno",
32
+ "suno-mcp",
33
+ "suno-ai",
34
+ "suno-api",
35
+ "music-generation",
36
+ "ai-music",
37
+ "audio-generation",
38
+ "ai-audio",
39
+ "cover-audio",
40
+ "create-mashup",
41
+ "extend-music",
42
+ "generate-lyrics",
43
+ "text-to-music",
44
+ "text-to-sound"
31
45
  ],
32
46
  "author": "RunAPI",
33
47
  "license": "Apache-2.0",
@@ -44,7 +58,7 @@
44
58
  },
45
59
  "dependencies": {
46
60
  "@modelcontextprotocol/sdk": "^1.29.0",
47
- "@runapi.ai/mcp-core": "0.1.0",
61
+ "@runapi.ai/mcp-core": "0.1.2",
48
62
  "zod": "^3.25.76"
49
63
  },
50
64
  "devDependencies": {
package/server.json CHANGED
@@ -6,12 +6,12 @@
6
6
  "url": "https://github.com/runapi-ai/suno-mcp",
7
7
  "source": "github"
8
8
  },
9
- "version": "0.1.1",
9
+ "version": "0.1.3",
10
10
  "packages": [
11
11
  {
12
12
  "registryType": "npm",
13
13
  "identifier": "@runapi.ai/suno-mcp",
14
- "version": "0.1.1",
14
+ "version": "0.1.3",
15
15
  "transport": {
16
16
  "type": "stdio"
17
17
  },