@audiodn/mcp
AudioDN MCP server lets AI agents manage AudioDN audio hosting through live API tools and ground answers in canonical offline docs/OpenAPI.
Manage creators: list, get, create, and update creator sub-accounts.
Manage collections: list, get, create, and update collections with title, metadata, creator, and player fields.
Work with tracks: list tracks in a collection and get track details by ID.
Manage uploads: create/get upload sessions and register tracks in a session to obtain short-lived signed upload URLs.
Manage playback: create/get play sessions with signed URLs for collection or track scope and selected variants.
Inspect variants: list organization variant configurations and variant types.
Use knowledge tools: about, search docs, list API operations, get one operation, get guides, and list variant types.
Run locally via stdio (knowledge tools no key; live tools need ADN_API_KEY) or hosted via OAuth/legacy API key.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@@audiodn/mcp create a new collection for my podcast episodes"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
@audiodn/mcp
Model Context Protocol server for AudioDN.
Exposes the AudioDN REST API as MCP tools so AI agents (Cursor, Claude Desktop, Claude Code, VS Code, Codex, etc.) can configure audio hosting on a user's behalf, plus offline, read-only knowledge tools grounded in the canonical AudioDN OpenAPI spec and documentation so agents look up the correct endpoints instead of guessing.
Install in Cursor
One-click install (hosted endpoint — sign in with your AudioDN account via OAuth when the client connects):
Prefer a local stdio server with an API Access key? Use this button instead:
Both correspond to the mcp.json shipped with this plugin. See
Cursor's MCP docs for manual setup.
Related MCP server: Magic Master MCP
Install
npm install -g @audiodn/mcp
# or run on demand
npx @audiodn/mcpConfigure
Hosted (recommended for account login)
Point a remote-capable MCP client at https://mcp.audiodelivery.net/mcp with
no Authorization header. The client runs the MCP OAuth flow: you sign in at
account.audiodeliverynetwork.com, pick an organization, and Allow. That mints
a revocable API Access key (visible under Settings → API Keys as MCP · …).
Delete that key to disconnect.
Legacy configs that still send Authorization: Bearer <API Access key> or
X-ADN-API-Key continue to work.
Local stdio
Knowledge/doc tools work with no key. For live API tools, set a server-side AudioDN API Access key (mint one in the dashboard at https://account.audiodeliverynetwork.com under Settings → API Keys).
export ADN_API_KEY="adn_..."
# Optional overrides:
# export ADN_API_BASE_URL="https://api.audiodelivery.net" # default
# export ADN_MCP_LIVE_DOCS=1 # refresh bundled docs from the public site at startup
# export ADN_MCP_TIMEOUT_MS=30000 # per-request timeoutEnvironment variables (stdio)
Variable | Required | Default | Purpose |
| No | – | Server-side API Access key for live-API tools. Knowledge tools work without it. |
| No |
| Override the API host. |
| No | off | Set to |
| No |
| Per-request timeout in milliseconds. |
Safety model
Reads and knowledge tools are annotated read-only.
Create/update tools are annotated so MCP clients can prompt for approval; the client is the human-in-the-loop layer.
Delete tools (
adn_delete_creator,adn_delete_collection,adn_delete_track) are available whenever live API tools are authenticated. They setdestructiveHint: trueso clients should confirm before running them.
Hosted (remote) endpoint
Besides the local npx stdio server above, AudioDN runs the same tool set as a
hosted Streamable HTTP endpoint on Cloudflare Workers.
URL:
https://mcp.audiodelivery.net/mcp— the MCP endpoint. The root/serves a human landing page in a browser (and JSON for tooling), and/healthreturns machine-readable server info.Auth — OAuth account login: compatible clients discover
/.well-known/oauth-protected-resourceand complete authorization code + PKCE against this host. Unauthenticated/mcprequests return401with aWWW-Authenticatechallenge. Knowledge and live tools (including deletes) require authentication on the hosted endpoint.Auth — legacy API key: send your AudioDN API Access key on every request:
Authorization: Bearer adn_...
# or
X-ADN-API-Key: adn_...Example client configuration (OAuth — no pasted key):
{
"mcpServers": {
"audiodn": {
"url": "https://mcp.audiodelivery.net/mcp"
}
}
}The hosted Worker lives in worker/ and is deployed with Wrangler
(npm run deploy); it is not part of the published npm package.
Worker secrets (not committed): MCP_JWT_SECRET, MCP_GRANT_ENCRYPTION_KEY,
MCP_INTERNAL_HMAC, plus a KV namespace bound as MCP_OAUTH.
Use with Cursor
Settings → Tools & Integrations → MCP (or edit ~/.cursor/mcp.json):
Hosted (OAuth):
{
"mcpServers": {
"audiodn": {
"url": "https://mcp.audiodelivery.net/mcp"
}
}
}Local stdio:
{
"mcpServers": {
"audiodn": {
"command": "npx",
"args": ["-y", "@audiodn/mcp"],
"env": { "ADN_API_KEY": "adn_..." }
}
}
}Use with Claude Desktop
Edit ~/Library/Application Support/Claude/claude_desktop_config.json
(or the equivalent on your OS), then restart the app:
{
"mcpServers": {
"audiodn": {
"command": "npx",
"args": ["-y", "@audiodn/mcp"],
"env": { "ADN_API_KEY": "adn_..." }
}
}
}Use with Claude Code
claude mcp add audiodn --env ADN_API_KEY=adn_... -- npx -y @audiodn/mcpUse with VS Code (Copilot) / Codex / Windsurf
Any client that speaks MCP over stdio uses the same command. For VS Code, add to
.vscode/mcp.json:
{
"servers": {
"audiodn": {
"command": "npx",
"args": ["-y", "@audiodn/mcp"],
"env": { "ADN_API_KEY": "adn_..." }
}
}
}For Codex CLI (~/.codex/config.toml):
[mcp_servers.audiodn]
command = "npx"
args = ["-y", "@audiodn/mcp"]
env = { ADN_API_KEY = "adn_..." }Tools
Knowledge tools (read-only, offline)
Tool | Description |
| Server version, bundled OpenAPI version, docs source, API base. |
| Keyword search over bundled docs + OpenAPI summaries. |
| List all REST operations (operationId, method, path). |
| Full OpenAPI definition for one operationId. |
| Canonical guide (authentication, upload, processing, playback, webhooks, output-types / variant-types, security, compatibility). |
| The seven output types and which are API-creatable ( |
On the hosted endpoint these require authentication (OAuth or legacy API
key). On stdio they work without ADN_API_KEY.
Live API tools
Tool | Description | Annotation |
| Read/update org (id derived from API key when omitted) | read-only / write |
| Mint player / uploader / share key (returned once) | write |
| Read creators | read-only |
| Create/update creator | write |
| Delete creator | destructive |
| Read collections | read-only |
| Create/update collection | write |
| Delete collection + its tracks | destructive |
| Mint a fresh collection cover upload URL | write |
| Read tracks. | read-only |
| Exact name lookup for collection, creator, or track. Ambiguous names return candidates and do not create | read-only |
| Uncached snapshot: | read-only |
| Short wait (default 12s) for playback, one output, settle, or cover. | read-only |
| One-shot track create ( | write |
| Update track metadata / player fields | write |
| Soft-delete one track | destructive |
| Mint a fresh track cover upload URL | write |
| Manage upload sessions (optional nested | write / read-only |
| Register a track, get | write |
| Mint/read play sessions (output indexes via | write / read-only |
| Signed URLs for a track inside a play session | read-only |
| Signed download URL for one output index (downloadable sessions) | read-only |
| List/get org output presets (legacy: | read-only |
| Add a track-specific transcode/preview output (legacy: | write |
Resources
The server also exposes canonical docs as MCP resources for clients that attach
context directly: audiodn://openapi.json, audiodn://llms-full.txt, and
audiodn://guide/{topic} for each guide.
Example flow
An agent helping a user host a podcast might call:
adn_get_guide({ topic: "upload" })— learn the canonical multi-step flow.adn_create_collection({ title: "My Podcast" })adn_create_upload_session({ collection_id })— or pass nestedtrack: { file_name }to create the first track in the same call.adn_create_track_in_upload_session({ upload_session_id, file_name: "ep1.mp3" })(skip if you already nestedtrackabove).Your code
PUTs the audio bytes totrack_upload.upload_url. Create does not upload.adn_wait_for_processing({ target: "track_playback", track_id }).pendingwithUPLOAD_NOT_ACCEPTEDmeans the PUT has not landed.pendingwithOUTPUT_PROCESSINGorPROCESSING_TIMEOUTmeans workers are still running — call the same tool again with the same ids.incompletecan still be playable. To wait for one file (waveform, preview), usetarget: "track_output"andoutput_index.adn_list_output_presets()— pick real output indexes (e.g.hq,lq).adn_create_play_session({ scope: "track", track_id, variants: ["hq"] })— returns aplay_session_id(for the ADN Player) plus signed file URLs onfirst_track(for a custom player).
Build from source
npm install
npm run build
npm test # vitest
npm run smoke # build + spawn the real binary over stdio
node dist/index.jsLocal development (API + MCP)
Run the AudioDN API and this MCP worker on different ports, then exercise OAuth
and tools with the manual scripts under manual/:
# Terminal 1 — AudioDN API (audiodn-mono)
npm run dev:api # http://127.0.0.1:8787
# Terminal 2 — MCP worker (this repo)
cp .dev.vars.example .dev.vars # set ADN_API_KEY to a dashboard API Access key
npm run dev:local # http://127.0.0.1:8788 (ADN_API_BASE_URL → local API)
npm run manual:auth # browser consent → writes manual/.env
npm run manual # find, create, processing-wait, dry-run, deleteADN_API_BASE_URL in .dev.vars (or the stdio environment) is the switch for
which AudioDN API the MCP server calls. Production wrangler.toml keeps the
public API default.
Deploy the hosted endpoint
The Cloudflare Worker in worker/ serves the same tools over Streamable HTTP.
npx wrangler login
# Create KV + secrets once:
# wrangler kv namespace create MCP_OAUTH
# wrangler secret put MCP_JWT_SECRET
# wrangler secret put MCP_GRANT_ENCRYPTION_KEY
# wrangler secret put MCP_INTERNAL_HMAC
npm run dev:worker # default wrangler port (avoid colliding with local API)
npm run dev:local # port 8788 + .dev.vars for local API/OAuth
npm run deploy # publish -> https://mcp.audiodelivery.net (custom domain)
curl https://mcp.audiodelivery.net/healthThe custom domain mcp.audiodelivery.net is provisioned by Cloudflare from the
routes entry in wrangler.toml (the audiodelivery.net zone must be on the
same Cloudflare account).
To list on the official MCP registry (registry name net.audiodelivery/mcp,
which must match mcpName in package.json): verify the domain once with
mcp-publisher login dns --domain audiodelivery.net (add the printed TXT
record), confirm remotes[0].url in server.json points at the deployed URL,
then mcp-publisher publish.
Keeping docs fresh
Bundled snapshots live in assets/snapshots/. Refresh them from the public site
with npm run sync; prepublishOnly verifies they are consistent before a
release.
Reference
OpenAPI spec: https://audiodeliverynetwork.com/openapi.json
For-AI-agents guide: https://audiodeliverynetwork.com/for-ai-agents
Available Tools
22 toolsadn_aboutARead-onlyIdempotentInspect
Report the MCP server version, the bundled OpenAPI version, the docs source (bundled snapshot vs live), and the canonical API base URL. Use this to confirm how fresh the grounded documentation is.
Inputs: no named parameters.
adn_create_collectionBInspect
Create a new collection (a logical container for tracks, like an album, podcast feed, or course module).
Inputs: title (required), metadata, creator_id, player_color, +2 more.
adn_create_creatorAInspect
Create a new creator (a sub-account used to classify collections and tracks and track per-creator usage). organization_index is your own external identifier for the creator. Provisions a dedicated storage folder linked via folder_id.
Inputs: organization_index (required), metadata.
adn_create_play_sessionAInspect
Mint a play session that returns signed, time-gated playback URLs. Scope is "collection" or "track", and exactly one of collection_id / track_id must be provided. (Playlist scope is reserved for a future release and is not supported yet.)
Inputs: scope (required), track_id, variants, collection_id.
adn_create_track_in_upload_sessionAInspect
Register a new track inside an existing upload session. Returns track_id plus a per-track signed upload target at track_upload.upload_url (use track_upload.method, which is PUT) that you upload the audio bytes to. A cover image target is returned at track_cover_upload. Call once per file. The upload URL is short-lived — do not store or cache it.
Inputs: file_name (required), upload_session_id (required), metadata, organization_index.
adn_create_upload_sessionAInspect
Create an upload session for a collection. Returns an upload_session_id used to register tracks. This does NOT return an upload URL by itself — call adn_create_track_in_upload_session next.
Inputs: collection_id (required), metadata, creator_id, organization_index.
adn_get_collectionARead-onlyIdempotentInspect
Get details about a specific collection by ID.
Inputs: collection_id (required).
adn_get_creatorARead-onlyIdempotentInspect
Get details about a specific creator by ID.
Inputs: creator_id (required).
adn_get_guideARead-onlyIdempotentInspect
Get a concise, canonical guide for a core AudioDN concept. Topics: authentication, upload, processing, playback, webhooks, variant-types, security, compatibility.
Inputs: topic (required).
adn_get_operationARead-onlyIdempotentInspect
Get the full OpenAPI definition for a single operation by operationId (method, path, parameters, request body, responses). Use adn_list_operations to find operationIds.
Inputs: operationId (required).
adn_get_play_sessionBRead-onlyIdempotentInspect
Get details about an existing play session.
Inputs: play_session_id (required).
adn_get_trackARead-onlyIdempotentInspect
Get details about a specific track by ID. Use this to poll processing readiness: a track is playable only when track.track_status_id === "ready". Other terminal statuses (incomplete, error, init_error) indicate a problem; initialized/processing/fallback are transitional. Do not build playback until a track is ready.
Inputs: track_id (required).
adn_get_upload_sessionARead-onlyIdempotentInspect
Get details about an existing upload session by ID (authorized by the session ID itself).
Inputs: upload_session_id (required).
adn_list_collectionsARead-onlyIdempotentInspect
List collections on the authenticated AudioDN organization. Use this to discover existing collections before creating a new one.
Inputs: limit, offset.
adn_list_creatorsARead-onlyIdempotentInspect
List creators on the authenticated AudioDN organization. A creator is a sub-account (artist, podcaster, contributor) used to classify collections and tracks.
Inputs: limit, offset.
adn_list_operationsARead-onlyIdempotentInspect
List every AudioDN REST API operation from the bundled OpenAPI spec (operationId, method, path, summary). Use this to discover the exact, canonical endpoints instead of guessing.
Inputs: no named parameters.
adn_list_tracksARead-onlyIdempotentInspect
List tracks in a collection.
Inputs: collection_id (required), limit, offset.
adn_list_variantsARead-onlyIdempotentInspect
List variant configurations on the authenticated organization. These are org-configured delivery "index" values (e.g. hq, lq, preview, waveform) used in play sessions and signed URLs — distinct from the underlying variant type. See adn_list_variant_types for the type catalog.
Inputs: limit, offset.
adn_list_variant_typesARead-onlyIdempotentInspect
List the AudioDN variant types (transcode, preview, levels, waveform_video, waveform_image, original, cover) with descriptions and whether each can be created via the REST API. Use this to distinguish variant types from org delivery "index" values (see adn_list_variants).
Inputs: no named parameters.
adn_search_docsARead-onlyIdempotentInspect
Search the bundled AudioDN documentation (llms-full.txt, OpenAPI operation summaries, and guides) for a keyword or phrase. Returns ranked snippets. Use this before writing integration code to ground answers in canonical docs.
Inputs: query (required), limit.
adn_update_collectionCIdempotentInspect
Update an existing collection.
Inputs: collection_id (required), title, metadata, creator_id, +3 more.
adn_update_creatorBIdempotentInspect
Update an existing creator.
Inputs: creator_id (required), metadata, organization_index.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 22 tools
Tools are largely distinct, but adn_list_variants vs adn_list_variant_types could be confused, and the doc/meta tools (search_docs, get_guide, list_operations) overlap somewhat in purpose. Descriptions mitigate ambiguity, but an agent might still misselect in edge cases.
The adn_ prefix plus verb_noun pattern (list_creators, get_creator, create_collection) is consistent across almost all tools. The only deviation is adn_about, which lacks a verb, making the pattern slightly irregular.
At 22 tools, the set is on the heavier side but well-scoped for a full audio delivery API. The inclusion of 5 meta/doc tools (about, search_docs, list_operations, get_operation, get_guide) inflates the count without adding core resource operations, though they serve a legitimate integration-support purpose.
Core lifecycle coverage exists for creators, collections, upload sessions, and play sessions, but notable operations are missing: no delete for creators/collections, no update/delete for tracks, and no list for upload or play sessions. This creates dead ends in management workflows.
Maintenance
Related MCP Connectors
214 tools for AI agents over one MCP endpoint: image, video, audio, 3D, data, storage, mail, GPUs.
OCR, transcription, file extraction, and image generation for AI agents via MCP.
Audio for your agent: transcribe, speak, translate, summarise, plus sound effects and music.
The Listenetic MCP server is a remote, cloud-hosted server that enables AI assistants like ChatGPT and Claude to convert articles, documents, websites, and videos into high-quality AI-generated audio. It provides multi-format support for text and binary files, natural-sounding text-to-audio conversion using AI, and specialized processing for SSML, markup, markdown, and various media formats through three core tools: listentic_supported_mimetypes, listentic_add_content_text, and listentic_add_content_binary.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceA comprehensive audio MCP server that enables AI agents to generate speech, transcribe audio, clone voices, analyze speech quality, design soundscapes, and manage audio assets through a standardized interface.2MIT
- AlicenseAqualityCmaintenanceEnables AI agents to master audio tracks to target LUFS/True Peak levels, remove Suno/Udio AI fingerprints, and retrieve mastering passports via a hosted MCP server.1143 npm3MIT
- AlicenseNot gradedqualityBmaintenanceEnables AI agents to submit and manage durable long-form audio transcription jobs, and read or export structured transcripts via MCP tools.1MIT
- AlicenseAqualityCmaintenanceEnables AI agents to perform local audio tasks such as speech synthesis, voice cloning, music and sound effect generation, and audio editing through MCP, with GPU models loaded on demand and released after idle.6MIT