Claude Code
Run this once in your terminal.
claude mcp add --transport http shawarma https://shawarma.studio/mcp \
--header "Authorization: Bearer shk_…"Shawarma is the music MCP server whose songs your agent can keep editing.
Add one address, https://shawarma.studio/mcp, to Claude, ChatGPT, Codex or Cursor. Your agent can then make a song from words, change only the part you ask for, and export an MP3 or WAV.
Boss Hall
140 BPM, low strings and war drums, from make_song
The address for every agent is https://shawarma.studio/mcp. Replace shk_… with a key from Development, in your account menu.
Run this once in your terminal.
claude mcp add --transport http shawarma https://shawarma.studio/mcp \
--header "Authorization: Bearer shk_…"Add this to ~/.codex/config.toml, then put the key in your shell profile.
[mcp_servers.shawarma]
url = "https://shawarma.studio/mcp"
bearer_token_env_var = "SHAWARMA_API_KEY"
# in ~/.zshrc or ~/.bashrc
export SHAWARMA_API_KEY="shk_…"Add this to ~/.cursor/mcp.json (or .cursor/mcp.json in a project). Cursor uses a key: it has no sign-in to Shawarma.
{
"mcpServers": {
"shawarma": {
"url": "https://shawarma.studio/mcp",
"headers": { "Authorization": "Bearer shk_…" }
}
}
}No key to copy: you sign in to Shawarma.
No key to copy: you sign in to Shawarma.
The same tools are a plain web API for your own code.
| Tool | What it does | Plan |
|---|---|---|
make_song | A new song from words: style, mood, length. | Pro, from your AI allowance |
change_song | Changes only what was asked and saves a new version. | Pro, from your AI allowance |
get_song / list_songs | Title, code, versions and links. | Free |
restore_version | Goes back to an earlier version. | Free |
share_song | A public link that plays without signing in. | Free |
export_audio | An MP3 or WAV file of the song. | Pro |
list_sounds | Drum kits, instruments, darbuka and riq, maqam scales. | Free |
write_song | Your agent writes the music code; Shawarma checks it and saves it. | Free |
check_code / guide | Finds mistakes in music code, and a short guide for the agent. | Free |
get_job | Follows a long request (composing, audio) until it is ready. | Free |
Once your song plays, type what it needs. It changes while it plays, and you keep only what you like.
Every song is code. "Busier drums" changes the drums and nothing else, and every version is kept.
The same server works in Claude, ChatGPT, Codex and Cursor. Claude.ai and ChatGPT sign in, the others use a key.
Export MP3 or WAV on Pro, or share a link that plays. You own what you make and can use it in your videos and games. Some built-in sounds ask for a credit; the list is on the Terms page.
setcpm(35) // 140 BPM, C minor, make_song("boss fight, game background")
const strings = note("<[c3,g3,eb4] [ab2,eb3,c4] [bb2,f3,d4] [g2,d3,b3]>") .s("gm_string_ensemble_1") .gain(.3)
const drums = s("bd ~ ~ bd ~ ~ bd ~, ~ ~ ~ ~ sd ~ ~ ~, ~ ~ ~ ~ ~ ~ [lt lt] [mt ht]") .gain(.44)
const bass = note("<[c2 c2 ~ c2] [ab1 ab1 ~ ab1] [bb1 bb1 ~ bb1] [g1 g1 ~ b1]>") .s("sawtooth") .lpf(500) .gain(.28)
const brass = note("<[c5 ~ ~ g4] [ab4 ~ ~ ~] [bb4 ~ d5 ~] [b4 ~ ~ ~]>") .s("gm_trumpet") .gain(.18)
arrange(
[2, stack(strings, bass)], // the doors open
[8, stack(strings, drums, bass, brass)], // the fight
)The sounds that ask for a credit: Sound credits on the Terms page.
A boss fight is already typed in. Press the button, or say what you need.
Free. No sign-up for your first song.
By continuing you agree to the Terms and the Privacy policy.