# A music MCP server your agent can keep editing

> Shawarma is a music MCP server: your agent makes songs, changes only the part you ask for, and exports MP3 or WAV. One address, set up in a minute.

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

1. **The doors open** strings, bass
2. **The fight** strings, drums, bass, brass

[Open this song in Shawarma](https://shawarma.studio/open?example=made-mcp-boss)

## Made by an agent

- Written by the agent: 100 BPM, plucks and a beat, from write_song on Free: [Make it yours](https://shawarma.studio/open?example=made-mcp-written)

## Set it up in your agent

The address for every agent is https://shawarma.studio/mcp. Replace shk_… with a key from Development, in your account menu.

### Claude Code

Run this once in your terminal.

```
claude mcp add --transport http shawarma https://shawarma.studio/mcp \
  --header "Authorization: Bearer shk_…"
```

### Codex

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_…"
```

### Cursor

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_…" }
    }
  }
}
```

### Claude.ai

No key to copy: you sign in to Shawarma.

1. Open Settings, then Connectors.
2. Choose Add custom connector and paste the address above.
3. Choose Connect, sign in to Shawarma and choose Allow.

### ChatGPT

No key to copy: you sign in to Shawarma.

1. Open Settings, then Apps and connectors. Under Advanced settings, turn on developer mode (custom connectors need it).
2. Choose Create, paste the address above and choose OAuth.
3. Sign in to Shawarma and choose Allow.

## The tools your agent gets

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 |

[The developers page: keys, the web API and more](https://shawarma.studio/developers)

## Then ask for *changes*

Once your song plays, type what it needs. It changes while it plays, and you keep only what you like.

- You make background music for my game’s boss fight
- You make the drums heavier
- You restore version 1
- You export it as a WAV
- You list the darbuka sounds

## Why a music MCP server

- Edits, not new rolls: Every song is code. "Busier drums" changes the drums and nothing else, and every version is kept.
- One address: The same server works in Claude, ChatGPT, Codex and Cursor. Claude.ai and ChatGPT sign in, the others use a key.
- Real files: 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.

**See the code of “Boss Hall”**

```
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
)
```

## Questions

**What is a music MCP server?**

MCP is the way AI agents use outside tools. A music MCP server gives your agent tools to make songs, change them and export audio, so it can make music when you ask.

**Which agents work with it?**

Claude Code, Codex and Cursor with a key, and Claude.ai and ChatGPT by signing in. Any agent that speaks MCP over HTTP can use the same address.

**Is there an MCP server for audio files?**

Yes. Shawarma’s export_audio tool renders a song as an MP3 or WAV file and gives your agent a download link (Pro).

**Do I need Pro?**

No. On Free, your agent writes the music code itself, and Shawarma checks, saves, plays and shares it. With Pro, Shawarma’s composer writes from your words and you can export audio.

**Who owns the songs?**

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.

The sounds that ask for a credit: [Sound credits on the Terms page](https://shawarma.studio/terms#sound-credits).

## Try a song before you connect

A boss fight is already typed in. Press the button, or say what you need.

Free. No sign-up for your first song.

Have an account? [Continue with Google](https://shawarma.studio/auth/google)

By continuing you agree to the [Terms](https://shawarma.studio/terms) and the [Privacy policy](https://shawarma.studio/privacy).

---

The page: https://shawarma.studio/guides/music-mcp-server
