MCP.Market

Nyxmix MCP server

by Open-Cosmic-Software·io.github.Open-Cosmic-Software/nyxmix·v0.1.0

Agent-first multitrack audio editor: edit sessions live with a human watching.

B74/100grade B
What users say
No reviews yet
Be the first
Safety scan
B74/100

full report

Adoption
Growing

0 stars37 downloads/wk

Reviews

Write one

Nobody has reviewed Nyxmix yet.

If you have run it, two minutes of your experience saves the next person an afternoon.

Nyxmix tools (48, 6 write)

write = sends, deletes, buys or posts

Read from the package source without running it. The installed server may list more.

  • analyze

    Measure audio: EBU R128 loudness (integrated LUFS, LRA, true peak), sample peak/RMS/clipping/DC, silent stretches, spectral band balance, optional RMS envelope.

  • apply_lv2_pluginwrite action

    Run a native LV2 or VST3 effect plugin over an asset on the server (destructive, like process_audio): creates a new asset and, by default, swaps it into every clip using the original (one undo step; undo restores the original). Length is kept; mono assets stay mono (stereo plugins get a dual-mono feed and are folded back), stereo assets stay stereo (mono plugins run per channel). Plugin latency is

  • apply_user_preset

    Add a saved preset's effects to a track (or the master). replace:true clears the chain first. One undo step.

  • archive_url

    Get a download URL for a .nyxmix archive of the session (project, lossless audio, transcripts, versions, and the custom plugins it uses) — for backups or moving the session to another NyxMix server, where POST /api/projects/import restores it.

  • auto_duck

    Lower a music/bed track automatically wherever the voice tracks are speaking. Writes volume automation on the music track (replacing its existing volume automation) — one undoable step; the human can fine-tune the points afterwards. Returns the detected speech regions.

  • batch_processwrite action

    Run one destructive process (see process_audio kinds, e.g. loudness, denoise, voiceDenoise, declip) on several files — by default every file used on the timeline. Each result is swapped into its clips when the length stays the same. Returns per-file results.

  • check_delivery

    Check the mix against a delivery spec and get pass/fail per criterion with a concrete fix for each failure. Standards: ${Object.entries(STANDARDS).map(([k, v]) =>

  • convert_sample_rate

    Change the session sample rate (44100, 48000, 88200, 96000): every file is resampled with SoX (high quality); clip times and the arrangement stay the same. Not undoable — save_version first if unsure.

  • create_projectwrite action

    Create an empty session.

  • cut_transcriptwrite action

    Remove spoken words from the edit by text — like deleting them in a document. Give EITHER text (an exact phrase from get_transcript; case and punctuation are ignored; if it occurs more than once you must pass occurrence = 1-based index or "all") OR ranges [{start,end}] in timeline seconds (cut exactly as given) OR words [{start,end,trackId?}] copied from get_transcript format "words". Word cuts ge

  • describe_capabilities

    Effect types with parameter ranges, destructive processes, and export formats.

  • detect_scene_changes

    Find shot changes / hard cuts in the video (ffmpeg scene score). Returns timeline times — handy for cutting or crossfading audio exactly on picture cuts, or dropping markers there. threshold 0–1 (default 0.35; lower finds softer changes).

  • edit

    Apply several operations atomically (all or nothing, one undo step). Ops: …. Each op tool documents its args. Pass ifRev to fail instead of clobbering concurrent human edits.

  • export_cd

    Export a CD image (Audition: CD Layout): 44.1 kHz/16-bit dithered WAV plus a CUE sheet. Every labelled marker starts a CD track (titles from labels, min 4 s apart, up to 99). Burn the .cue with any burning program.

  • generate_audiowrite action

    Create audio in the bin (Audition's Generate menu): kind "speech" (text → voice, local TTS; voices: …; speed 0.5–2), "tone" (frequency, waveform sine/square/triangle/sawtooth), "noise" (white/pink/brown — e.g. to fill a cut with room-like noise), "silence". level in dBFS (default -18), duration in seconds. place:{trackId?, start} also puts it on the timeline (new track if no trackId). Useful for p

  • get_activity

    Recent edits with author (human or agent) — use it to see what the human changed.

  • get_image

    Render a waveform or spectrogram PNG of the mix, an asset or a clip, so you can look at the audio.

  • get_pitch

    Fundamental-frequency (pitch) track of an asset, measured with YIN every 10 ms on a mono mix. Returns a summary (medianHz, minHz/maxHz after a 5-frame median so single octave slips do not count, p10Hz/p90Hz, voicedFraction, meanConfidence) and the track as [t, hz|null, confidence] decimated to maxPoints (default 120; median of the voiced frames per point). Use it to check a voice (typical speaking

  • get_project

    Read the session: tracks, clips (with times), effects, assets, markers. format "summary" (default) is compact text; "json" is the full document.

  • get_transcript

    Read the TIMELINE transcript: words from every clip on unmuted tracks, mapped to timeline seconds (so it reflects all edits; re-read after cutting, because later times shift). format "text" (default): one line per phrase, "[start–end] words…" (with "Track:" when several tracks speak), filler words shown as ‹um›, low-confidence words suffixed with ~. format "words": JSON {words:[{start,end,word,pro

  • get_video

    The session's reference video: name, duration, size, fps, offset (timeline seconds where frame 0 sits) and the soundtrack asset id. Timeline time = offset + video time.

  • import_audio

    Add an audio file to the session bin from a public URL or base64 data. Any common format; converted losslessly to 32-bit float at the project rate. Returns the asset (id, duration). Then place it with clip.add.

  • import_video

    Attach a reference video to the session (one per session; a new one replaces the old) so audio can be cut to picture. Give a public URL or base64 data. NyxMix makes a browser proxy and a filmstrip, and extracts the soundtrack into the bin as an asset (audioAssetId). place:true also adds a "Video sound" track with the soundtrack clip at the video offset. Slow for long videos (it transcodes).

  • install_faust_plugin

    Install a real-time effect written in Faust (https://faust.grame.fr), compiled to WebAssembly on the server. Example: import("stdfaust.lib"); cutoff = hslider("cutoff [unit:Hz]", 2000, 50, 18000, 1); process = par(i, 2, fi.lowpass(4, cutoff)); Every hslider/vslider/nentry/checkbox/button becomes a parameter named after its label in camelCase (e.g. "Wet Dry" → wetDry) with the Faust min/max/init. A

  • install_plugin

    Install a custom real-time effect: manifest {id, label, description, params:{name:{minimum,maximum,default,unit}}} plus code = an AudioWorklet module that calls registerProcessor("plugin-<id>", Class) with one k-rate AudioParam per param. It is test-rendered before it is accepted, then usable everywhere as effect type "plugin:<id>" (preview and export). Only works if the operator enabled plugins.

  • list_lv2_plugins

    Search the native effect plugins installed on the server — LV2 and VST3 (LSP, x42, Calf, ZAM, Dragonfly, DISTRHO, MDA, …: EQs, compressors, limiters, gates, reverbs, delays, filters, distortion, modulation, stereo tools). They run server-side as destructive processes via apply_lv2_plugin. Filter by free text (all words must match name/brand/category/uri) and/or category; with no filters returns ca

  • list_plugins

    Installed effect plugins (use them with effect.add type "plugin:<id>") and whether installing is enabled here.

  • list_projects

    List editing sessions.

  • list_proposals

    Proposals for a session with their status (open, accepted, rejected) and who decided.

  • list_user_presets

    Presets people and agents have saved (built-in ones are applied with preset_apply).

  • lv2_plugin_info

    Controls of one LV2 or VST3 plugin (by uri or #index from list_lv2_plugins): symbol, label, range, unit, default, toggles and enumerations. Pass values by symbol in apply_lv2_plugin.controls; anything not passed keeps its default.

  • noise_reduction

    Noise-print noise reduction (like Audition's Capture Noise Print + Noise Reduction). Best for steady noise: hiss, fan, air-con, hum, room tone. Give start/end of a stretch that contains ONLY the noise (room tone before someone speaks, ≥ 0.1 s, ideally 0.5–2 s): the print is learned from it, stored on the asset, and applied to the whole asset in one call. Without start/end the stored print of this

  • pitch_curve

    Manual pitch correction: shift a voice by a curve of points {time (asset/source seconds), cents} — linear between points, 0 outside, so put 0-cent points around the part you fix. E.g. a note 30 cents flat from 12.40–12.90 s: [{time:12.3,cents:0},{time:12.4,cents:30},{time:12.9,cents:30},{time:13.0,cents:0}]. Use get_pitch first to see where the voice is off. Formants are kept (WORLD vocoder); only

  • process_audio

    Destructive processing of an asset into a new asset. Kinds: ${Object.entries(PROCESSES).map(([k, v]) =>

  • propose_edits

    Suggest a batch of edits WITHOUT applying them. The human hears a preview and accepts or rejects it in the UI. Use this for anything subjective or destructive-feeling (big cuts, re-ordering, heavy processing choices) or when the human asked to review first. Same op format as `edit`. label = one line the human reads; rationale = why (short). Returns the proposal; check its status later with list_pr

  • redo

    Redo.

  • remix_music

    Make a music clip fit a target length by jumping between musically similar beats (like Audition's Remix) instead of stretching: tempo and pitch stay untouched. Result is ordinary clips with crossfades at the jumps (one undo step), so a human can adjust them. Typical use: fit a bed to an episode or a 30 s ad. Returns the achieved length (within about a beat of the target).

  • remove_filler_wordswrite action

    Find filler words in the timeline transcript. By default the list follows each recording's detected language (${Object.entries(FILLERS_BY_LANG).map(([k, v]) =>

  • render

    Export the mix. Returns a download URL plus measured loudness. bounce:true instead adds the mixdown to the bin as a new asset.

  • save_preset

    Save the effect chain of a track (or the master, without trackId) as a named preset that works in every session — e.g. after dialling in a voice sound the human likes.

  • save_version

    Save a named snapshot of the session (e.g. before a risky pass) that the human can return to.

  • set_video_offset

    Slide the video against the timeline: offset = timeline seconds where the video starts. Does not move audio clips (move the soundtrack clip with clip.move if they should stay in sync).

  • spectral_edit

    Audition-style spectral editing of an asset on a time × frequency region. The region is ONE of: a box (start, end, optional lowHz/highHz); a lasso polygon ([[t, hz], …], for shapes that follow a sweep or a slanted chirp); or brush strokes ({points:[[t, hz], …], radiusMs, radiusSemitones}, for painting along a whistle, a harmonic or onto single clicks). action "attenuate" scales the region by gainD

  • spectral_image

    Look at an asset's spectrogram rendered by NyxMix's own STFT, with an exact pixel → (time, Hz) mapping (returned as text next to the image) so you can read off rectangles for spectral_edit. Log-frequency axis (bottom = minHz, top = maxHz), no axis decorations. With clipId and no start/end, shows the clip's source window. …

  • stretch_clip

    Time-stretch one clip to an exact length (duration in seconds) or by a ratio, keeping its pitch (Rubber Band, high quality) — e.g. fit a music bed to 30.0 s. Creates a new file and points the clip at it; one undo step.

  • transcribe

    Speech-to-text with word-level timestamps (Whisper, runs locally). Transcribes one asset, or (without assetId) every asset used on the timeline that has no transcript yet. Results are cached per asset, so calling again is cheap; force:true re-runs. Same-length processed copies (denoise etc.) reuse their source's transcript. Takes roughly 0.1–0.3× the audio length; the first run also downloads the

  • undo

    Undo the last edit (by anyone).

  • video_frame

    Look at the picture: returns the video frame at a timeline time as a JPEG image (e.g. to check who is on screen, or find where a shot changes before cutting the audio there).

Public scan report

scanner v0.1.10 · 2026-10-28 · same rubric, same numbers if you re-run it

1 medium
  • Code scan58 source files scanned20/25
  • –Live reliabilityno gateway calls yet and no remote to proben/a
  • –Tool poisoningtools not inspected (local package is not executed); not countedn/a
  • Auth qualitystatic API keys via environment variables6/15
  • Maintenancelast push 10 days ago15/15
  • Maintainer identityregistry namespace matches repository owner7/10

Findings (1)

  • mediumPath built from user input without normalizationfs.traversal
    server/index.js: …ams.id).name; try { name = JSON.parse(readFileSync(path.join(store.rendersDir(req.params.id), req.params.file.replace(/\.[a-z0-9…
Overall 74/100. Components that don't apply are left out of the denominator. Any critical finding is an F.RubricAppeal a findingJSON

How Nyxmix compares

Against every graded AI and agents MCP server, from our own scans and uptime checks. Updated after each scan run.

Safety score
74/100
higher than 43% of 4,460 AI and agents servers
Tools
48
the typical AI and agents server has 6
Tools that change things
13%
typical: 0%. Fewer write tools means less an agent can break
Downloads a week
37
more than 28% of 1,538 AI and agents servers with a package

What its tools let an agent do: 32 read · 6 create · 4 change · 2 delete · 4 run or deploy

Install Nyxmix in Claude Code, Cursor or VS Code

Runs npx -y nyxmix on your machine. Read the scan report first; the gateway never runs local packages.

claude mcp add nyxmix -- npx -y nyxmix
Add to Cursor

What the publisher says

From the Nyxmix repository's README, as published. We do not edit it. Read it on GitHub

NyxMix

The open-source alternative to Adobe Audition, built for people and AI agents together.

Multitrack editing, mixing, restoration, spectral repair, loudness mastering and podcast production in your browser. Free, MIT-licensed, no subscription and no account. Everything you can do in the UI, an agent can do through MCP or REST, and you watch it happen live, see who did what, and can undo any of it.

Checked feature by feature against Audition's official reference: of 65 Audition

features, 50 have an equivalent, 14 go further, 1 is partial, none are missing,

and every row is backed by an automated test (full comparison).

Audio output is verified against EBU R128 / ITU-R BS.1770 (48/48 conformance tests).

npx nyxmix   # then open http://127.0.0.1:3950

Screenshots

The demo session was made by an agent with examples/agent-demo.mjs, using nothing but MCP.

Run it

npx nyxmix                               # http://127.0.0.1:3950, sessions in ~/.nyxmix
npx nyxmix --token secret                # require "Authorization: Bearer secret" (the UI asks once)
npx nyxmix --port 4000 --data ./sessions

Requirements: Node 22+ and ffmpeg 6+ on your PATH (with rubberband, libmp3lame, libopus, which the usual ffmpeg builds have).

From a checkout:

npm install
npm start                      # same server, data in ./data
npm test                       # integration tests (they boot their own servers)
node examples/agent-demo.mjs   # an agent producing a podcast episode over MCP

Optional extras

Everything below is optional; NyxMix works without it and tells you clearly when a feature needs one. Python features use a .venv next to the package if there is one, otherwise python3 on your PATH.

Shortened. The full README is on GitHub.

Nothing above is checked by us. What we check is on the safety report.

Nyxmix: common questions

Is Nyxmix MCP server safe?
Mostly: it is graded B (74/100). Read the Nyxmix safety report
How do I install Nyxmix?
It runs on your machine. Copy the Claude Code, Cursor, VS Code or Claude Desktop config from the install section.
Does Nyxmix need an API key?
Yes. The registry entry asks for NYXMIX_TOKEN.
Is Nyxmix maintained?
The last commit was 17 days ago (2026-10-18). The latest release is v0.1.0.
What can I use instead of Nyxmix?
Servers from other publishers that do the same job: Watch Skill MCP server, WaveSpeed MCP server and Godot MCP server.
How does Nyxmix compare with other AI and agents MCP servers?
safety score 74/100 (higher than 43% of 4,460 AI and agents servers); tools 48 (the typical AI and agents server has 6); tools that change things 13% (typical: 0%. Fewer write tools means less an agent can break). Full comparison.

Alternatives to Nyxmix

Same job from other publishers: the closest match first, then the best rated.

  • Watch Skill
    Watch video and live sessions, keep timestamped evidence, and verify an agent's own work.
    B
  • WaveSpeed
    Run any model on the live WaveSpeed catalog: image, video, audio, 3D.
    A
  • Godot MCP
    Agent-driven Godot playtesting: editor control, input injection, game-time stepping, live state.
    A
  • CHAP Coordinator
    Auditable records of human decisions over AI agent work. Approvals, edits, overrides, escalations.
    A
  • Openflowkit
    Architecture diagrams for your agent: draw on the live OpenFlowKit canvas or edit diagram files.
    A