Skip to main content

SoundCloud MCP

PyPI version License: MIT Python 3.10+ MCP

MCP server for uploading and managing tracks on SoundCloud using the official API.

Use it from Cursor or Claude Desktop to upload MP3s, update metadata, and manage your catalog — pairs naturally with suno-mcp for generate → upload workflows.

Features

  • Official SoundCloud API — OAuth 2.1 + PKCE, no browser scraping for uploads
  • Upload tracks — MP3, WAV, FLAC with title, description, tags, artwork
  • Manage library — list, get, update, delete tracks
  • Token refresh — automatic OAuth token renewal

Requirements

Register your SoundCloud app

Field What to enter
App name SoundCloud MCP (or anything descriptive)
Description Personal MCP server for uploading AI-generated music to my SoundCloud account
Website https://github.com/David-J-Shibley/soundcloud-mcp (optional)
Redirect URI http://127.0.0.1:8765/callback (must match exactly)

The Website field is optional — it is not used for OAuth. The Redirect URI must match character-for-character.

Quick Start

Install from PyPI

pip install soundcloud-mcp
cp .env.example .env
# Edit .env with client_id and client_secret from soundcloud.com/you/apps
soundcloud-mcp-auth

Install from source

git clone https://github.com/David-J-Shibley/soundcloud-mcp.git
cd soundcloud-mcp
python3 -m venv .venv
source .venv/bin/activate
pip install -e .
cp .env.example .env

Authenticate (one time)

soundcloud-mcp-auth

Tokens are saved to ~/.soundcloud-mcp/tokens.json.

If the browser page is blank/white, your redirect URI doesn't match — see Troubleshooting.

Cursor

Add to ~/.cursor/mcp.json:

{
  "mcpServers": {
    "soundcloud": {
      "command": "/absolute/path/to/soundcloud-mcp/.venv/bin/python",
      "args": ["-m", "soundcloud_mcp"],
      "cwd": "/absolute/path/to/soundcloud-mcp",
      "env": {
        "DYLD_LIBRARY_PATH": "/opt/homebrew/opt/expat/lib"
      }
    }
  }
}

Put credentials in .env in the project directory (recommended) — cwd lets the server load them automatically.

Claude Desktop

Add to ~/Library/Application Support/Claude/claude_desktop_config.json:

{
  "mcpServers": {
    "soundcloud": {
      "command": "/absolute/path/to/soundcloud-mcp/.venv/bin/python",
      "args": ["-m", "soundcloud_mcp"],
      "cwd": "/absolute/path/to/soundcloud-mcp"
    }
  }
}

Tools

Tool Description
soundcloud_get_me Your SoundCloud profile
soundcloud_list_my_tracks List your uploaded tracks
soundcloud_get_track Track details by ID
soundcloud_upload_track Upload MP3/WAV/FLAC with metadata
soundcloud_update_track Edit title, description, tags, artwork
soundcloud_delete_track Remove a track

Example workflow (Suno → SoundCloud)

  1. Generate a song with suno-mcp
  2. Download the MP3 with suno_download_song
  3. Upload with soundcloud-mcp:
Upload ~/Downloads/suno/my-song.mp3 to SoundCloud as "My New Track" with tags "electronic ai-generated"

Configuration

Variable Default Description
SOUNDCLOUD_CLIENT_ID From soundcloud.com/you/apps
SOUNDCLOUD_CLIENT_SECRET From soundcloud.com/you/apps
SOUNDCLOUD_REDIRECT_URI http://127.0.0.1:8765/callback Must match app settings
SOUNDCLOUD_TOKEN_FILE ~/.soundcloud-mcp/tokens.json OAuth token storage

Troubleshooting

Blank/white OAuth page — Redirect URI mismatch. In soundcloud.com/you/apps, set exactly:

http://127.0.0.1:8765/callback

Use 127.0.0.1 not localhost, http:// not https://, no trailing slash.

Not authenticated — Run soundcloud-mcp-auth again.

Manual loginsoundcloud-mcp-auth --no-browser prints the URL to paste into your browser.

Disclaimer

Unofficial project, not affiliated with SoundCloud. Use in accordance with SoundCloud's API Terms of Use.

Contributing

Issues and pull requests welcome on GitHub.

See PUBLISHING.md for PyPI release instructions.

License

MIT — see LICENSE.

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

soundcloud_mcp-0.1.0.tar.gz (12.4 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

soundcloud_mcp-0.1.0-py3-none-any.whl (12.6 kB view details)

Uploaded Python 3

File details

Details for the file soundcloud_mcp-0.1.0.tar.gz.

File metadata

  • Download URL: soundcloud_mcp-0.1.0.tar.gz
  • Upload date:
  • Size: 12.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for soundcloud_mcp-0.1.0.tar.gz
Algorithm Hash digest
SHA256 6ccdfa4c483eaaf3d42376591028e30308aae1a857b98894f6715987c0894a0f
MD5 7a61342fe543b422d30c88e8d286d424
BLAKE2b-256 020263d4bc60744dd25c005d2050448606b5e10e1cd5b5a808f3984d720a890e

See more details on using hashes here.

Provenance

The following attestation bundles were made for soundcloud_mcp-0.1.0.tar.gz:

Publisher: publish.yml on David-J-Shibley/soundcloud-mcp

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file soundcloud_mcp-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: soundcloud_mcp-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 12.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for soundcloud_mcp-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 65c85a57173110512d1837869ec30d032cde02cd54b8e15f2181a3053b6297d7
MD5 213dc2f64087e77cde7f6a9bd2059399
BLAKE2b-256 4fd634787f825253cbde4ac93145c18d6d45e9a5dc59e9703f64b8d8bac2d9a3

See more details on using hashes here.

Provenance

The following attestation bundles were made for soundcloud_mcp-0.1.0-py3-none-any.whl:

Publisher: publish.yml on David-J-Shibley/soundcloud-mcp

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page