Comfyui MCP vs Reaper MCP
A side-by-side look at the Comfyui MCP and Reaper MCP MCP servers: transport, auth, tools, quality signals, and the config to install either one in Claude, Cursor, Windsurf or VS Code.
Verdict: choose Comfyui MCP for multimedia process work as a local process; choose Reaper MCP for multimedia process as a local process. You can also run both side by side in one mcpServers block.
Which MCP server should you choose?
Choose Comfyui MCP when
- You need dedicated capabilities in the Multimedia Process domain.
- You prefer a local stdio subprocess transport.
- You want tools like
queue, get_system_stats, visualize_workflow.
Choose Reaper MCP when
- You need dedicated capabilities in the Multimedia Process domain.
- You prefer a local stdio subprocess transport.
- Its auth model fits you: No auth required.
- You want tools like
item_split_at_transients, item_split_at_positions, take_set_pitch.
Feature & specification comparison
Rows where the two servers differ are marked.
| Spec | ||
|---|---|---|
| Category | Multimedia Process | Multimedia Process |
| Quality signal | 64/100 · Good | 65/100 · Great |
| Install command | Confirmed | Confirmed |
| Transport | Local subprocess (stdio) | Local subprocess (stdio) |
| Auth | Not declared | No auth required |
| Pricing | Not declared | Free |
| Required env vars | None listed | None listed |
| Verified owner | Community listing | Community listing |
| GitHub stars | 855 | 105 |
| Directory activity | 2 views 0 installs 0 upvotes | 5 views 0 installs 0 upvotes |
| Tools | 13 | 174 |
| Full listing | View Comfyui MCP | View Reaper MCP |
Tools & capabilities
Comfyui MCP tools 13
queueOne action-parameterized tool for the execution queue: `list` (running + pending), `status` (one job by prompt ID), `get_workflow` (a pending job's full payload), `move`/`edit` (requeue a pending job front/back, patched or replaced, with a new prompt ID), `cancel` (interrupt the running job — escal…get_system_statsGet system info — GPU, VRAM, Python version, OSvisualize_workflowOne action-parameterized tool for rendering and converting a workflow you pass in: `render` (Mermaid flowchart, nodes grouped by category), `render_hierarchical` (the same graph sectioned — overview, one section in detail, a listing, or an AI-oriented summary), `mermaid` (a Mermaid diagram back to…create_workflowOne action-parameterized tool for authoring: `create` (from templates: `txt2img`, `img2img`, `upscale`, `inpaint`, `controlnet`, `ip_adapter`, `ace_step_15`, `stable_audio_3`), `modify` (operations: `set_input`, `add_node`, `remove_node`, `connect`, `insert_between`), `validate` (dry-run — missing…get_workflowOne action-parameterized tool for READING a saved workflow file: `list` (the user library, subfolders included), `get` (one workflow's JSON by filename), `analyze` (a structured summary instead of raw JSON), `query` (filter/traverse/aggregate a big graph without dumping it), `strip` (**de-virtualiz…save_workflowOne action-parameterized tool for WRITING to the library: `save` (store a workflow — overwrites a same-filename file), `lock` (record a provenance lock: SHA-256 per model, git commit per node pack), `verify_lock` (report drift against that lock)upload_imageCopy a local image into ComfyUI's `input/` directory for img2img, inpaint, or ControlNetdownload_modelFind and fetch model weights, and track the transfers. `action`: `download` (from a URL, into the correct ComfyUI subdirectory), `status`, `cancel`, `search` (HuggingFace), `search_civitai`, `search_creators`, `download_civitai`, `resolve_missinglist_local_modelsWhat is installed, and where ComfyUI looks. `action`: `list` (installed models by type: checkpoints, loras, vae, upscale_models, controlnet, embeddings, clip, unet, diffusion_models, text_encoders), `remove` (**deletes a model file**), `embeddings`, `list_paths`, `add_path`, `remove_path` (the last…clear_vramFree GPU VRAM by unloading cached models — calls ComfyUI's `/free` endpoint, reports before/after statssearch_custom_nodesSearch the ComfyUI Registry for node packs by keyword (`action: "search"`), or get one pack's full details (`action: "details"`)comfy_cliSearch actual loaded node classes through official `comfy nodes search` (action:"search_nodes")- +1 more on the listing page
Reaper MCP tools 174
item_split_at_transientsSlice an audio item at every detected transient. Uses REAPER's native transient detection (action 40310). Sensitivity is controlled by REAPER's project settings (Options → Preferences → Project → Item handling → Transient detection sensitivity), not by this tool — set it once in REAPER and it applies to every call. Args: item_index: Global 0-based item index of the source audio item. Returns: chops_created: number of new items created from the split. chops_total: total items now spanning the original time range. chops: list of `{item_index, position, length, offset_in_original_sec}` in playback order. The AI uses these indices to repitch / duplicate / reverse individual chops.item_split_at_positionsSlice an item at a list of absolute project-time positions. For grid-based or hand-picked chopping where transient detection isn't right. Pass positions in seconds; positions outside the item's range are silently ignored. Args: item_index: Global 0-based item index. positions: JSON array of absolute project-time positions (seconds). Example: `"[1.5, 2.0, 2.5, 3.0]"`. Returns the resulting chops in playback order with their indices, positions, lengths, and offset relative to the original item start.take_set_pitchPitch-shift a take by N semitones (no time change). The core of "tune a chop to a chord tone". Pass positive values to shift up, negative for down. Range is roughly -60 to +60 (REAPER clamps extremes). Half-semitone values work (`0.5`, `-1.25`, etc.) for fine-tuning. Pitch quality depends on REAPER's per-take pitch shift mode setting (Item Properties → Take pitch shift mode). For vocals, "Élastique Pro Soloist" preserves formants well. Set it once in REAPER's project defaults and it applies to every chop. Args: item_index: Global 0-based item index. semitones: Pitch shift in semitones. Float. Default 0 (no change). take_index: 0-based take index, or -1 for the active take.take_set_playrateTime-stretch a take by changing its playrate. With `preserve_pitch=True` (default), audio plays slower/faster without changing pitch — useful for fitting a chop to a beat grid. With `preserve_pitch=False`, this becomes a vinyl-style speed change (faster = higher pitch). After changing the rate, the item's visible length in the timeline does NOT auto-resize. Call `item_set_length` afterwards to match. Args: item_index: Global 0-based item index. rate: Playback rate. 1.0 = normal, 0.5 = half speed, 2.0 = double. Range 0.05 to 16.0. preserve_pitch: Time-stretch without pitch change. Default True.take_set_reversedReverse an item's audio. Uses REAPER's "Item: Reverse items as new take" action — the new reversed take becomes the active one, the original take is kept (item now has 2 takes). To revert, switch back to the original take via `item_take_set_active`. Useful for: reverse-cymbal-into-downbeat fills, breath-in vocal FX, glitchy chop reversals (Skrillex / Flume style). Args: item_index: Global 0-based item index.item_duplicateCopy an item N times at fixed spacing. Each copy is a full clone — same source, same take properties (pitch, playrate, FX, fades). Used for the Porter Robinson 1/16 stutter, EDM build-up risers, percussive vocal repeats. With default spacing (0), copies are placed back-to-back at the original item's length. For tight stutters, pass a small spacing like `60/bpm/4` for 1/16-note repeats at the project's tempo. Args: item_index: Global 0-based source item index. count: Number of copies to make. Range 1-100. spacing_sec: Time between copy starts in seconds. 0 = use item length (back-to-back). Default 0. Returns the new clones with their `item_index` so the AI can manipulate them (pitch, fade, etc.) directly.analyze_chop_setInspect a list of chops and classify each by duration. Pure-Python helper that calls `item_get_info` for each index and returns enriched per-chop info plus summary stats. Helps the AI pick which chops to use for which musical role without doing audio content analysis. Duration classes: hit — < 150 ms (drum hit, consonant burst) staccato — 150-400 ms (short syllable, good for stutters) syllable — 400 ms-1 s (full syllable / word) sustain — > 1 s (phrase / vowel held) Args: item_indices: JSON array of item indices. Up to 200 chops.arrange_chops_to_chord_tones[NICHE] Retune each chop to a chord tone. ⚠️ WARNING: This is NOT how professional vocal chops are made. Per-slice chord-tone retuning smears vocal formants and sounds unnatural. `chop_pipeline` uses uniform transpose instead, which is the correct default for EDM vocal chops. This tool is kept for stylized experimental use (e.g., glitch / granular / heavily-processed chop effects where the pitched-up- demon-voice sound is the desired character). DO NOT use it as your default chop workflow. Walks the chops in playback order. For each chop, determines which chord it falls within (based on its time position) and picks a chord tone according to `layout`. Applies the pitch shift via `take_set_pitch`. Args: item_indices: JSON array of chop item indices (in playback order). Typically the `chops` list returned by `item_split_at_transients`. chord_progression: Chord names separated by commas, pipes, or dashes-with-spaces. E.g., `"Cm7, Fm7, Bb7, Eb"` or `"Am - F - C - G"`. beats_per_chord: How many beats each chord lasts. Default 4 (one bar per chord at 4/4). bpm: Project tempo. Pass 0 to fetch from REAPER (extra round-trip). layout: How to pick a chord tone for each chop: - `follow` — cycle root → 3rd → 5th → root → 3rd → 5th - `ascending` — climb chord tones across each chord - `porter` — root → 5th → octave → 5th → root (Porter Robinson) - `root` — every chop = root of current chord source_root: Note name the source vocal is "in". Pitch shifts are computed relative to this. Default `"C"`. If you don't know, leave as `C`; the result will still be musical relative to the chord changes, just not in absolute key.chop_pipelineEnd-to-end vocal-chop arrangement (redesigned for pro workflow). Produces a contiguous, key-matched, professionally-structured chop arrangement on a new track. Follows researched EDM vocal-chop rules: • CHOPS ARE CONTIGUOUS — every slot filled wall-to-wall, no silence gaps. Slot length is determined by the grid. • PITCH IS UNIFORM — the whole chop set is transposed ONCE to match the track key (source_key → target_key). No per-slice chord-tone retuning; that destroys formants and sounds bad. • LAYER STACKS ARE SEPARATE TRACKS — octave/fifth layers are duplicate child tracks at reduced volume (not overlays that smear the lead). • BAR-LEVEL VARIATION — each bar pulls a different permutation of source slices, so the arrangement doesn't just loop. REQUIREMENT for clean pitch: set REAPER's per-item pitch-shift mode to "élastique Pro Soloist Monophonic" (Project Settings → Media Item Defaults, or per-take in Item Properties). Raw pitch shift without formant preservation destroys vocal character. The tool does not auto-set this (requires REAPER user config). Modes: • `slice-preserve` (default): slice source at a 1/16 (or 1/8 / 1/32 per style) grid, reorder slices across bars for variation, apply ONE uniform pitch shift to all chops. • `melody`: pick a central vowel offset in the source, write a chord-tone melody across bars (root/3rd/5th of each chord), capped at ±5 semitones from source. Requires `chord_progression`. Approximates the "one vowel + sampler + MIDI melody" workflow (Flume / Simpler / Quick Sampler). Args: vocal_item_index: Global 0-based index of the vocal item. chord_progression: Chord list (required for `melody` mode, optional for `slice-preserve`). E.g. `"Fm, Ab, Bb, Fm"`. bpm: Project tempo. 0 = fetch from REAPER. bars: Length in bars. Default 4, max 32. style: One of `future_bass`, `chillstep`, `porter`, `trap`, `mura_masa`, `odesza`. Drives grid / stutter / layers. target_track_name: Name for the new track. mute_original: Mute the source vocal's track. Default True. source_key: Vocal's original musical key. Accepts `Am`, `A minor`, `A`, `Ebm`, etc. Default `C`. target_key: Track key to transpose TO. Empty = use root of first chord in `chord_progression`, or source_key if no progression given. mode: `slice-preserve` (default) or `melody`. See above. seed: Random seed for bar permutations. 0 = nondeterministic.stack_chop_layersFor each chop, create overlay copies at parallel pitch intervals. The classic "future bass / Porter Robinson" harmonized chop stack: each chop becomes a 3-voice cluster — original (root) + 5th (`+7`) + octave (`+12`). Each layer is a clone placed at the EXACT same position as the source on the SAME track, with `take_set_pitch` applied. This means layers play simultaneously with the original. Args: item_indices: JSON array of chop indices to stack. Up to 50. intervals_semitones: JSON array of pitch shifts to add. Default `"[7, 12]"` = perfect 5th + octave (the classic stack). For unison-only set to `"[]"` (no extra layers). Note: stacking creates many overlapping items. Best applied to a SUBSET of chops (e.g., the standout chops in your sequence) rather than every chop, or REAPER's mixer will get crowded.wipe_all_midiWipe all MIDI items and reset composition state. Tracks can compose again after. Only deletes items whose active take is MIDI — audio items on the same tracks are left untouched. On a full wipe (tracks omitted), also clears all markers and regions. Args: tracks: JSON array of track indices e.g. "[0,1,2]", or empty for all.reset_compositionUnlock compose_arrangement without deleting MIDI. Use wipe_all_midi to also delete.- +162 more on the listing page
Ready-to-paste client configs
Paste either block (or both) into your client config, e.g. claude_desktop_config.json or ~/.cursor/mcp.json. We only show a config when the install command is confirmed.
Comfyui MCP
{
"mcpServers": {
"comfyui-mcp-2": {
"command": "npx",
"args": [
"-y",
"comfyui-mcp@latest"
]
}
}
}
Reaper MCP
{
"mcpServers": {
"xdarkzx-reaper-mcp": {
"command": "uvx",
"args": [
"xdarkzx-reaper-mcp"
]
}
}
}
Frequently asked questions
Comfyui MCP is categorized under Multimedia Process and uses a local stdio subprocess. Reaper MCP belongs to Multimedia Process and uses a local stdio subprocess. Pick Comfyui MCP for multimedia process work and Reaper MCP for multimedia process.
Copy the mcpServers block from the config section on this page into your client's config (for example claude_desktop_config.json or ~/.cursor/mcp.json), then fully restart the client.
Comfyui MCP has no declared pricing — check the project's own site. Reaper MCP is listed as free. Auth: no auth required. If a server needs environment variables such as API keys, define them under the env key in your client's MCP config.
Yes. MCP clients support multiple servers: add comfyui-mcp-2 and xdarkzx-reaper-mcp as separate keys in the same mcpServers object, and your assistant will call tools from either one.
On AllMCPs, Comfyui MCP has a quality signal of 64/100 (Good) with 2 views, 0 installs and 855 GitHub stars. Reaper MCP has 65/100 (Great) with 5 views, 0 installs and 105 GitHub stars.