{
  "markdown": "<!-- Built by scripts/build-public-mcp-repo.mjs in the AudioLab monorepo.\n     Edit mcp/README.md there, not this copy. -->\n\n# @audiolabtools/mcp-server\n\nMCP ([Model Context Protocol](https://modelcontextprotocol.io)) server that gives any\nMCP-capable AI — Claude Desktop, Claude Code, Cursor, and others — nine audio-analysis\ntools, backed by the hosted **AudioLab** API. It is a thin HTTP client: **no local audio\nengine, no ffmpeg, nothing to compile.** It can analyse a **public URL** or a **local file**\non your machine.\n\n## Install\n\nPoint your MCP client at the package via `npx` (nothing to install globally):\n\n```json\n{\n  \"mcpServers\": {\n    \"audiolab\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"@audiolabtools/mcp-server\"],\n      \"env\": { \"AUDIOLAB_API_KEY\": \"al_live_yourkey\" }\n    }\n  }\n}\n```\n\nGet a key: sign in at **https://audiolab.tools/account** and generate one (free tier available).\n\n## Requirements\n\n- **Node ≥ 18** — uses the built-in global `fetch` + `AbortSignal.timeout`.\n- An `AUDIOLAB_API_KEY`. No ffmpeg, no native dependencies.\n\n## Tools\n\nEvery tool takes **one audio source** — a public `url` **or** a local `path`:\n\n- `{ url: \"https://…\" }` — a public https URL the API fetches server-side.\n- `{ path: \"./mix.wav\" }` — a file on the machine running this server. Files up to **4 MB**\n  are sent inline; larger files (up to **50 MB**) upload over a one-shot signed URL, are\n  analysed, and are then deleted. *(Local `path` works only in this stdio server, not the\n  remote `/mcp` endpoint.)*\n\n| Tool | Returns |\n|---|---|\n| `analyze_loudness` | Integrated LUFS (EBU R128 / BS.1770-4), true-peak (dBTP), LRA, crest factor, stereo correlation, mono compatibility, tonal balance |\n| `check_target` | Pass/fail vs a delivery target (`spotify` / `apple-music` / `youtube` / `tidal` / `amazon-music` / `podcast` / `ebu-broadcast` / `atsc-broadcast`, or `target:\"custom\"` + `lufs`+`tp`), with per-metric deltas and an ffmpeg loudnorm fix command |\n| `analyze_timeseries` | Short-term LUFS over time + downsampled waveform peaks (`waveformPoints?`) |\n| `get_spectrum` | FFT magnitude data + 7-band energies + dominant band |\n| `analyze_voice` | Voice QA: speech/silence ratio, speaking rate, SNR, noise floor, room echo, sibilance & clipping risk |\n| `get_speech_segments` | Voiced regions with start/end + per-segment RMS (auto-trim, chapters) |\n| `index_signal` | Content-type guess, tags, clipping/silence regions, brightness & dynamics buckets |\n| `compare_loudness` | A/B on two sources (`urlA`/`pathA` + `urlB`/`pathB`), returns both results |\n| `analyze_batch` | One route over up to 20 sources in a single call (`urls` and/or `paths`), per-item ok/data/error. For folder QA, library indexing, or checking a whole release against a target. Each item meters as one call |\n\nExample asks to your AI:\n\n- *“Analyze the loudness of https://example.com/track.wav”* → `analyze_loudness` with `url`\n- *“Run loudness on ./master.wav”* → `analyze_loudness` with `path`\n- *“Does ./mix.mp3 pass Spotify?”* → `check_target` with `path` + `target:\"spotify\"`\n\n## Configuration (env)\n\n| Var | Default | Purpose |\n|---|---|---|\n| `AUDIOLAB_API_KEY` | — (required) | Your API key. |\n| `AUDIOLAB_API_BASE` | `https://audiolab.tools/v1` | Override the API base (must be `https://`). |\n| `AUDIOLAB_TIMEOUT_MS` | `330000` | Per-request timeout in milliseconds (long files and batches stream server-side and can legitimately take minutes). |\n\n## Privacy\n\nAnalysis happens on the AudioLab API, so the audio **does reach `audiolab.tools`** — a `url`\nis fetched server-side, and a local `path` is sent to the API (small files inline; larger\nfiles via a private one-shot signed upload that is deleted right after analysis). The API\nreturns **numbers only** and does not retain your audio (see https://audiolab.tools/privacy).\nThis package has no telemetry and writes nothing to disk. If audio must never leave the\nmachine, don't use a hosted analyser.\n\n## Limits\n\n- Local files: up to **50 MB** (host bigger ones at a public URL).\n- Duration: loudness routes (`analyze_loudness`, `check_target`, `analyze_timeseries`, `get_spectrum`) handle **long files** (podcast episodes, full sets — up to ~3 h) via server-side streaming; voice/signal routes are limited to ~7 minutes.\n- One file per call (agents loop for many); one-shot (no streaming/realtime).\n- Rate and monthly limits are enforced by the API, per key.\n\n## Smoke test\n\n```sh\nnode hosted-server.mjs --selftest   # verifies the 9 tools + guards; no network\n```\n\n## License\n\nMIT © Nathan Renting\n",
  "bytes": 4556,
  "sha": "5cefa75b5a6b682a31340c78029dd32d65bc2ed66905a41178c0d162d20b439e",
  "repo_slug": "audio-launch/audiolab-mcp-server",
  "fonte": "repo",
  "truncated": false,
  "api": "https://agentalog.com/api/listings/mcp_tools_audiolab_audiolab_1f8e34cf/readme"
}