{
  "markdown": "# `@audiodn/mcp`\n\nModel Context Protocol server for AudioDN.\n\nExposes the AudioDN REST API as MCP tools so AI agents (Cursor, Claude Desktop,\nClaude Code, VS Code, Codex, etc.) can configure audio hosting on a user's\nbehalf, plus offline, read-only **knowledge tools** grounded in the canonical\nAudioDN OpenAPI spec and documentation so agents look up the correct endpoints\ninstead of guessing.\n\n## Install in Cursor\n\nOne-click install (hosted endpoint, zero setup — knowledge/doc tools work\nimmediately):\n\n[![Add AudioDN to Cursor](https://cursor.com/deeplink/mcp-install-dark.svg)](cursor://anysphere.cursor-deeplink/mcp/install?name=audiodn&config=eyJ1cmwiOiJodHRwczovL21jcC5hdWRpb2RlbGl2ZXJ5Lm5ldC9tY3AiLCJoZWFkZXJzIjp7IkF1dGhvcml6YXRpb24iOiJCZWFyZXIgJHtlbnY6QUROX0FQSV9LRVl9In19)\n\nTo enable the live API tools, set `ADN_API_KEY` (an `adn_...` key from the\ndashboard) in your environment before launching Cursor; the hosted endpoint\npicks it up from the `Authorization` header. Prefer a local stdio server? Use\nthis button instead:\n\n[![Add AudioDN (npx) to Cursor](https://cursor.com/deeplink/mcp-install-dark.svg)](cursor://anysphere.cursor-deeplink/mcp/install?name=audiodn&config=eyJjb21tYW5kIjoibnB4IiwiYXJncyI6WyIteSIsIkBhdWRpb2RuL21jcCJdLCJlbnYiOnsiQUROX0FQSV9LRVkiOiJhZG5fWU9VUl9BUElfS0VZIn19)\n\nBoth correspond to the [`mcp.json`](mcp.json) shipped with this plugin. See\n[Cursor's MCP docs](https://cursor.com/docs/context/mcp) for manual setup.\n\n## Install\n\n```bash\nnpm install -g @audiodn/mcp\n# or run on demand\nnpx @audiodn/mcp\n```\n\n## Configure\n\nSet a server-side AudioDN API key (mint one in the dashboard at\n<https://account.audiodeliverynetwork.com> under Settings → API Keys).\n\n```bash\nexport ADN_API_KEY=\"adn_...\"\n# Optional overrides:\n# export ADN_API_BASE_URL=\"https://api.audiodelivery.net\"  # default\n# export ADN_MCP_ALLOW_DELETE=1     # enable destructive delete tools (off by default)\n# export ADN_MCP_LIVE_DOCS=1        # refresh bundled docs from the public site at startup\n# export ADN_MCP_TIMEOUT_MS=30000   # per-request timeout\n```\n\n### Environment variables\n\n| Variable | Required | Default | Purpose |\n| --- | --- | --- | --- |\n| `ADN_API_KEY` | Yes | – | Server-side, full-access API key used for all live-API tools. |\n| `ADN_API_BASE_URL` | No | `https://api.audiodelivery.net` | Override the API host. |\n| `ADN_MCP_ALLOW_DELETE` | No | off | Set to `1` to expose the destructive `adn_delete_*` tools. |\n| `ADN_MCP_LIVE_DOCS` | No | off | Set to `1` to refresh bundled docs from the public site (falls back to the bundle offline). |\n| `ADN_MCP_TIMEOUT_MS` | No | `30000` | Per-request timeout in milliseconds. |\n\n## Safety model\n\n- Reads and knowledge tools are annotated read-only and always available.\n- Create/update tools run with the API key but are annotated so MCP clients can\n  prompt for approval; the client is the human-in-the-loop layer.\n- The two **delete** tools (`adn_delete_creator`, `adn_delete_collection`) are\n  hidden and refuse to run unless the server is started with\n  `ADN_MCP_ALLOW_DELETE=1`. Set it once to opt in.\n\n## Hosted (remote) endpoint\n\nBesides the local `npx` stdio server above, AudioDN runs the same tool set as a\n**hosted Streamable HTTP endpoint** on Cloudflare Workers, so clients that\nsupport remote MCP servers can connect without installing anything.\n\n- **URL:** `https://mcp.audiodelivery.net/mcp` — the MCP endpoint. The root\n  `/` serves a human landing page in a browser (and JSON for tooling), and\n  `/health` returns machine-readable server info.\n- **Auth — bring your own key:** the endpoint is public and stores no secrets.\n  Knowledge/doc tools work with **no key**. To enable the live API tools, send\n  your AudioDN API key on every request as either header:\n\n```\nAuthorization: Bearer adn_...\n# or\nX-ADN-API-Key: adn_...\n```\n\n- **Deletes** are never exposed on the hosted endpoint, regardless of key.\n\nExample client configuration (clients that support a remote/HTTP MCP URL):\n\n```json\n{\n  \"mcpServers\": {\n    \"audiodn\": {\n      \"url\": \"https://mcp.audiodelivery.net/mcp\",\n      \"headers\": { \"Authorization\": \"Bearer adn_...\" }\n    }\n  }\n}\n```\n\nThe hosted Worker lives in `worker/` and is deployed with Wrangler\n(`npm run deploy`); it is not part of the published npm package.\n\n## Use with Cursor\n\nSettings → Tools & Integrations → MCP (or edit `~/.cursor/mcp.json`):\n\n```json\n{\n  \"mcpServers\": {\n    \"audiodn\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"@audiodn/mcp\"],\n      \"env\": { \"ADN_API_KEY\": \"adn_...\" }\n    }\n  }\n}\n```\n\n## Use with Claude Desktop\n\nEdit `~/Library/Application Support/Claude/claude_desktop_config.json`\n(or the equivalent on your OS), then restart the app:\n\n```json\n{\n  \"mcpServers\": {\n    \"audiodn\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"@audiodn/mcp\"],\n      \"env\": { \"ADN_API_KEY\": \"adn_...\" }\n    }\n  }\n}\n```\n\n## Use with Claude Code\n\n```bash\nclaude mcp add audiodn --env ADN_API_KEY=adn_... -- npx -y @audiodn/mcp\n```\n\n## Use with VS Code (Copilot) / Codex / Windsurf\n\nAny client that speaks MCP over stdio uses the same command. For VS Code, add to\n`.vscode/mcp.json`:\n\n```json\n{\n  \"servers\": {\n    \"audiodn\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"@audiodn/mcp\"],\n      \"env\": { \"ADN_API_KEY\": \"adn_...\" }\n    }\n  }\n}\n```\n\nFor Codex CLI (`~/.codex/config.toml`):\n\n```toml\n[mcp_servers.audiodn]\ncommand = \"npx\"\nargs = [\"-y\", \"@audiodn/mcp\"]\nenv = { ADN_API_KEY = \"adn_...\" }\n```\n\n## Tools\n\n### Knowledge tools (read-only, offline, no API key needed)\n\n| Tool | Description |\n| --- | --- |\n| `adn_about` | Server version, bundled OpenAPI version, docs source, API base. |\n| `adn_search_docs` | Keyword search over bundled docs + OpenAPI summaries. |\n| `adn_list_operations` | List all REST operations (operationId, method, path). |\n| `adn_get_operation` | Full OpenAPI definition for one operationId. |\n| `adn_get_guide` | Canonical guide (authentication, upload, processing, playback, webhooks, variant-types, security, compatibility). |\n| `adn_list_variant_types` | The seven variant types and which are API-creatable. |\n\n### Live API tools\n\n| Tool | Description | Annotation |\n| --- | --- | --- |\n| `adn_list_creators` / `adn_get_creator` | Read creators | read-only |\n| `adn_create_creator` / `adn_update_creator` | Create/update creator | write |\n| `adn_delete_creator` | Delete creator | destructive (gated) |\n| `adn_list_collections` / `adn_get_collection` | Read collections | read-only |\n| `adn_create_collection` / `adn_update_collection` | Create/update collection | write |\n| `adn_delete_collection` | Delete collection + its tracks | destructive (gated) |\n| `adn_list_tracks` / `adn_get_track` | Read tracks; `adn_get_track` polls readiness | read-only |\n| `adn_create_upload_session` / `adn_get_upload_session` | Manage upload sessions | write / read-only |\n| `adn_create_track_in_upload_session` | Register a track, get `track_upload.upload_url` | write |\n| `adn_create_play_session` / `adn_get_play_session` | Mint/read play sessions (scope: collection, track) | write / read-only |\n| `adn_list_variants` | List org delivery variants | read-only |\n\n## Resources\n\nThe server also exposes canonical docs as MCP resources for clients that attach\ncontext directly: `audiodn://openapi.json`, `audiodn://llms-full.txt`, and\n`audiodn://guide/{topic}` for each guide.\n\n## Example flow\n\nAn agent helping a user host a podcast might call:\n\n1. `adn_get_guide({ topic: \"upload\" })` — learn the canonical multi-step flow.\n2. `adn_create_collection({ title: \"My Podcast\" })`\n3. `adn_create_upload_session({ collection_id })`\n4. `adn_create_track_in_upload_session({ upload_session_id, file_name: \"ep1.mp3\" })`\n5. Your code `PUT`s the audio bytes to `track_upload.upload_url`.\n6. Poll `adn_get_track({ track_id })` until `track_status_id === \"ready\"`.\n7. `adn_create_play_session({ scope: \"track\", track_id })` — returns a signed\n   playback URL that can be embedded directly.\n\n## Build from source\n\n```bash\nnpm install\nnpm run build\nnpm test           # vitest\nnpm run smoke      # build + spawn the real binary over stdio\nnode dist/index.js\n```\n\n## Deploy the hosted endpoint\n\nThe Cloudflare Worker in `worker/` serves the same tools over Streamable HTTP.\n\n```bash\nnpx wrangler login\nnpm run dev:worker        # local: http://localhost:8787/mcp and /health\nnpm run deploy            # publish -> https://mcp.audiodelivery.net (custom domain)\ncurl https://mcp.audiodelivery.net/health\n```\n\nThe custom domain `mcp.audiodelivery.net` is provisioned by Cloudflare from the\n`routes` entry in `wrangler.toml` (the `audiodelivery.net` zone must be on the\nsame Cloudflare account).\n\nTo list on the official MCP registry (registry name `net.audiodelivery/mcp`,\nwhich must match `mcpName` in `package.json`): verify the domain once with\n`mcp-publisher login dns --domain audiodelivery.net` (add the printed TXT\nrecord), confirm `remotes[0].url` in `server.json` points at the deployed URL,\nthen `mcp-publisher publish`.\n\n## Keeping docs fresh\n\nBundled snapshots live in `assets/snapshots/`. Refresh them from the public site\nwith `npm run sync`; `prepublishOnly` verifies they are consistent before a\nrelease.\n\n## Reference\n\n- API docs: <https://audiodeliverynetwork.com/docs/api>\n- OpenAPI spec: <https://audiodeliverynetwork.com/openapi.json>\n- For-AI-agents guide: <https://audiodeliverynetwork.com/for-ai-agents>\n",
  "bytes": 9355,
  "sha": "e66bbc831f7294e73912e720dfd3602f7451dabe0be41a833ff13986201a5d5b",
  "repo_slug": "audiodn/mcp",
  "fonte": "repo",
  "truncated": false,
  "api": "https://agentalog.com/api/listings/mcp_net_audiodelivery_mcp_baf3e485/readme"
}