mixcloud-mcp-server
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| MIXCLOUD_TOKEN | No | Access token; written for you by exchange_code. | |
| MIXCLOUD_ENV_FILE | No | Token store: loaded at startup, written by exchange_code. | $XDG_CONFIG_HOME/mixcloud-mcp-server/.env (~/.config/…) |
| MIXCLOUD_CLIENT_ID | No | OAuth app id, needed once for authorisation. | |
| MIXCLOUD_UPLOAD_DIR | No | The only directory uploads may read files from. | $XDG_DATA_HOME/mixcloud-mcp-server/uploads (~/.local/share/…) |
| MIXCLOUD_CLIENT_SECRET | No | OAuth secret, needed once for authorisation. |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": false
} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| searchC | Search Mixcloud. type: 'cloudcast' (shows), 'user' or 'tag'. |
| get_objectB | Fetch any object by key or Mixcloud URL: show '/spartacus/party-time/', user '/spartacus/', tag '/genres/funk/', city '/genres/city:athens/'. metadata=True adds the list of available connections. authenticated=True sends the token so objects gain extra fields (e.g. 'following'). |
| get_showB | Get a show by key, e.g. '/spartacus/party-time/'. |
| get_userB | Get a user profile by key, e.g. '/spartacus/'. |
| get_tagC | Get a tag/genre ('funk'), a city ('athens'), or both ('funk' + 'athens'). |
| list_connectionB | List a connection of an object, e.g. key='/spartacus/' with connection 'followers' | 'following' | 'favorites' | 'cloudcasts' | 'listens'. Use key='/me/' with authenticated=True for the token owner's own lists. since/until: Unix timestamp or 'YYYY-MM-DD HH:MM:SS' (UTC), for dated lists. |
| user_showsC | List a user's shows. key: '/spartacus/'. |
| browseC | Site-wide lists: popular, hot or new shows. |
| genre_showsB | Shows of a tag/genre. Looks the list up in the tag's own connections (metadata=1), so list_name must be one the tag offers; the error lists them. |
| embed_htmlC | Embed code (HTML) for a show's player widget. color: 6-digit hex, no '#'. |
| oembedC | oEmbed data for a Mixcloud show URL (https://www.mixcloud.com/...). |
| meC | The authorized user's own profile (/me/). |
| follow_userB | Follow a user ('/spartacus/'); undo=True unfollows. |
| favorite_showB | Favorite a show ('/spartacus/party-time/'); undo=True removes it from favorites. |
| repost_showB | Repost a show; undo=True removes the repost. |
| listen_laterC | Add a show to Listen Later; undo=True removes it. |
| upload_showA | Upload a show. Files must be inside the upload directory (relative paths resolve there). mp3 up to 4 GB, picture up to 10 MB, description up to 1000 chars, up to 5 tags. sections: [{'chapter': 'Intro', 'start_time': 0}, {'artist': 'A', 'song': 'S', 'start_time': 10}]. unlisted defaults to True (private link only) for safety; set unlisted=False to publish publicly. publish_date (UTC, 2030-11-21T14:05:00Z), disable_comments, hide_stats and hosts (max 2 usernames) are Pro-only. |
| edit_showA | Edit one of your shows (key '/me-user/my-upload/'). Omitted fields stay unchanged, EXCEPT tags, sections and hosts, which are replaced wholesale: re-send the existing ones when adding. hosts=[] removes all hosts. visibility: 'unlisted' (private link), 'publish' (make public, also for drafts) or 'unpublish' (move to drafts); only one per request. |
| auth_urlA | Step 1 of OAuth: URL the user must open in a browser to allow access. Without redirect_uri, Mixcloud shows the code on screen; with it, the code arrives as ?code=... on that URL. Then call exchange_code(code). |
| exchange_codeA | Step 2 of OAuth: exchange the code for an access token. The token is kept in this server (and saved to the env file); it is not shown to you. |
| check_tokenA | Check that the current token works (calls /me/). |
| clear_tokenA | Forget the token in this server (and optionally delete it from the env file). This does not revoke it on Mixcloud: the API docs describe no revoke endpoint, the user revokes access on Mixcloud's side. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 22 tools
There is meaningful overlap between generic tools and specific ones: get_object vs get_show/get_user/get_tag, list_connection vs user_shows/genre_shows/browse, and me vs get_user/check_token. The detailed descriptions help clarify intended use, but an agent could still reasonably hesitate between several read/list tools.
Most names use snake_case, but the conventions are mixed: verb_noun (get_show, list_connection, follow_user), noun_verb or noun_phrase (user_shows, genre_shows, embed_html), and bare nouns/actions (search, browse, me, oembed, auth_url). It remains readable, but the pattern is not predictable.
With 22 tools, the server is on the heavy side for the Mixcloud API surface. Several tools are generic duplicates of more specific ones, so the count feels slightly inflated rather than perfectly scoped.
The surface covers search, reads, social actions, upload/edit lifecycle, and OAuth reasonably well. Minor gaps exist, such as no explicit delete_show and no comment-related tools, but core workflows are supported.