@audiolabtools/mcp-server 0.4.0 → 0.4.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +4 -4
- package/hosted-server.mjs +4 -4
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -35,8 +35,8 @@ Every tool takes **one audio source**: a public `url` **or** a local `path`:
|
|
|
35
35
|
|
|
36
36
|
- `{ url: "https://…" }`: a public https URL the API fetches server-side.
|
|
37
37
|
- `{ path: "./mix.wav" }`: a file on the machine running this server. Files up to **4 MB**
|
|
38
|
-
are sent inline; larger files (up to **
|
|
39
|
-
|
|
38
|
+
are sent inline; larger files (up to **150 MB**) upload over a signed URL, are analysed, and
|
|
39
|
+
are swept from storage within the hour. *(Local `path` works only in this stdio server, not the
|
|
40
40
|
remote `/mcp` endpoint.)*
|
|
41
41
|
|
|
42
42
|
| Tool | Returns |
|
|
@@ -45,7 +45,7 @@ Every tool takes **one audio source**: a public `url` **or** a local `path`:
|
|
|
45
45
|
| `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 |
|
|
46
46
|
| `analyze_timeseries` | Short-term LUFS over time + downsampled waveform peaks (`waveformPoints?`) |
|
|
47
47
|
| `get_spectrum` | FFT magnitude data + 7-band energies |
|
|
48
|
-
| `analyze_voice` | Voice QA: speech/silence ratio, speaking rate, SNR, noise floor,
|
|
48
|
+
| `analyze_voice` | Voice QA: speech/silence ratio, speaking rate, SNR, noise floor, pause energy, sibilance & clipping risk |
|
|
49
49
|
| `get_speech_segments` | Voiced regions with start/end + per-segment RMS (auto-trim, chapters) |
|
|
50
50
|
| `index_signal` | Content-type guess, tags, clipping/silence regions, brightness & dynamics buckets |
|
|
51
51
|
| `analyze_profile` | One named question, `voice`, `master`, `provenance`, `dataset`, `environment`, `broadcast` or `loop`, answered with only the lenses it needs. These seven need a paid plan; the free tier gets the `basic` profile, keyed by stable lens id. Add `series:true` for the curves, per-block lanes and per-phrase values. Carries a `note` when the profile’s voice lenses land on non-speech material. Full catalogue: <https://audiolab.tools/lenses> |
|
|
@@ -79,7 +79,7 @@ machine, don't use a hosted analyser.
|
|
|
79
79
|
|
|
80
80
|
## Limits
|
|
81
81
|
|
|
82
|
-
- Local files: up to **
|
|
82
|
+
- Local files: up to **150 MB** (host bigger ones at a public URL).
|
|
83
83
|
- 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.
|
|
84
84
|
- One file per call (agents loop for many); one-shot (no streaming/realtime).
|
|
85
85
|
- Rate and monthly limits are enforced by the API, per key.
|
package/hosted-server.mjs
CHANGED
|
@@ -44,14 +44,14 @@ const PKG_VERSION = (() => {
|
|
|
44
44
|
})();
|
|
45
45
|
|
|
46
46
|
// Vercel serverless caps a raw request body at ~4.5 MB, so small files POST directly and
|
|
47
|
-
// larger ones go through the signed-URL storage flow. The bucket policy caps at
|
|
47
|
+
// larger ones go through the signed-URL storage flow. The bucket policy caps at 150 MB.
|
|
48
48
|
const RAW_MAX = 4 * 1024 * 1024;
|
|
49
49
|
// Dit bestand is het ENIGE dat npm meestuurt, dus het mag niets buiten zijn eigen map
|
|
50
50
|
// importeren. `MAX_STORAGE_BYTES` uit ../lib/limits.mjs stond hier even, en daarmee
|
|
51
51
|
// crashte het gepubliceerde pakket bij de eerste import: die map wordt niet meegeleverd.
|
|
52
52
|
// De waarde staat daarom weer hier, en de zelfcheck hieronder houdt hem tegen limits.mjs aan
|
|
53
53
|
// zolang die bereikbaar is, dus in de monorepo faalt drift alsnog.
|
|
54
|
-
const STORAGE_MAX =
|
|
54
|
+
const STORAGE_MAX = 150 * 1024 * 1024;
|
|
55
55
|
|
|
56
56
|
// Read env at CALL time (not module load) so the key can be injected by the MCP host
|
|
57
57
|
// and so the missing-key guard is testable.
|
|
@@ -209,7 +209,7 @@ const wrap = (fn) => async (input) => {
|
|
|
209
209
|
const sourceShape = (local) => local
|
|
210
210
|
? {
|
|
211
211
|
url: z.string().url().optional().describe('Public https URL to the audio file. Provide exactly one of url or path.'),
|
|
212
|
-
path: z.string().optional().describe('Path to a LOCAL audio file on this machine, analysed without hosting it publicly (files up to 4 MB are sent inline; larger ones up to
|
|
212
|
+
path: z.string().optional().describe('Path to a LOCAL audio file on this machine, analysed without hosting it publicly (files up to 4 MB are sent inline; larger ones up to 150 MB upload over a signed URL). Provide exactly one of url or path.'),
|
|
213
213
|
}
|
|
214
214
|
: { url: z.string().url().describe('Public https URL to the audio file.') };
|
|
215
215
|
|
|
@@ -246,7 +246,7 @@ export function buildServer({ apiKey, local = false } = {}) {
|
|
|
246
246
|
|
|
247
247
|
tool('analyze_voice', {
|
|
248
248
|
title: 'Analyze voice quality (VoiceLab)',
|
|
249
|
-
description: 'Speech-quality QA for a voice recording: speech/silence ratio, speaking-rate label, signal-to-noise, noise floor,
|
|
249
|
+
description: 'Speech-quality QA for a voice recording: speech/silence ratio, speaking-rate label, signal-to-noise, noise floor, pause energy, sibilance risk, clipping severity. Gates a voice take.' + srcDoc,
|
|
250
250
|
inputSchema: src,
|
|
251
251
|
}, wrap((i) => analyzeSource('voicelab/qa', i, {}, apiKey, local)));
|
|
252
252
|
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@audiolabtools/mcp-server",
|
|
3
|
-
"version": "0.4.
|
|
3
|
+
"version": "0.4.2",
|
|
4
4
|
"mcpName": "tools.audiolab/audiolab",
|
|
5
5
|
"description": "MCP server for AudioLab, loudness (EBU R128 / BS.1770-4), true-peak, voice-quality, and signal analysis for AI agents (Claude, Cursor, any MCP client), via the AudioLab hosted API. No local audio engine required.",
|
|
6
6
|
"type": "module",
|