vcv-rack-mcp
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@vcv-rack-mcpcreate a simple synth patch with an oscillator and envelope"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
vcv-rack-mcp
MCP server for VCV Rack 2 built around one insight: .vcv patch files are plain JSON, so an LLM can compose modular synth patches by emitting structured data — no GUI automation, ever.
Status: v0.1.0 — Webapp and Core complete. Patch generation, catalog, validation, OSC bridge, webapp dashboard, Playwright E2E tests, and agentic workflow all working. Manual gates P2 (round-trip in Rack) and P3 (OSC e2e) still need a human with Rack open.
Quick Start
git clone https://github.com/sandraschi/vcv-rack-mcp
cd vcv-rack-mcp
uv sync
uv run -m vcv_rack_mcpRelated MCP server: synthlab-mcp
Tools
Tool | What it does |
| Create, edit, validate, list, get, open_in_rack, rack_cycle, import patches |
| Search catalog, get module details, verify installed, library link, sideload, suggest rack |
| OSC address map, performance sheet for live tweaking |
| ctx.sample loop: brief → generate → validate → retry (max 3) |
| Prefab UI cards |
Architecture
vcv-rack-mcp (port 10916, stdio / HTTP /mcp)
├── catalog/modules.yaml — 49 modules, 50/50 generative/performance
├── depot/ — .vcv patches + SQLite metadata + sidecar .md
└──→ osc-mcp (port 10767) — vcv_manager consumes address mapsWhat's Real vs What Needs Human
Feature | Status | Gate |
Catalog (49 modules) | Done, validated | P1 |
Patch generation | Done, deterministic | P2 (needs Rack round-trip) |
Validation (3 checks) | Done with tests | P2 |
OSC address map | Done | P3 (needs osc-mcp e2e) |
Agentic workflow | Done | P4 |
Webapp | Done, with Playwright E2E tests | P5 |
Tauri wrapper | Future | P5 |
Ports
Backend: 10916 (FastMCP + FastAPI)
Frontend: 10917 (Vite React, active)
OSC control: delegates to osc-mcp port 10767
Available Tools
7 toolshub_statusA
Show hub status: catalog size, depot health, Rack path.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It discloses that the tool 'shows' status, implying read-only behavior, but does not mention side effects, authorization needs, or data freshness. Basic transparency is present but could be richer.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence, front-loaded with the tool's purpose ('Show hub status'). Every word contributes meaning, with no redundancy or filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has no parameters and includes an output schema, the description adequately covers its purpose. However, it does not mention any preconditions, permissions, or whether the status is live or cached, which would add completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, so baseline is 4. The description adds value by listing the specific status fields, confirming what the output will contain. No parameter documentation is needed beyond this.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Show' and the resource 'hub status', listing specific components (catalog size, depot health, Rack path). It distinguishes from sibling tools like show_catalog_card and show_patch_card, which focus on individual cards, by providing an overall status summary.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies the tool is used to view hub status but provides no explicit guidance on when to use it versus alternatives, nor does it mention conditions or exclusions. Lack of usage context reduces clarity for selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
show_catalog_cardC
Show a rich in-chat card for the module catalog.
Return Format
ToolResult with PrefabApp content.
| Name | Required | Description | Default |
|---|---|---|---|
| persona_tag | No | ||
| function_tag | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must fully disclose behavior. It merely states the action and return format ('ToolResult with PrefabApp content'), omitting details like read-only nature, permissions, or side effects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is short and contains no redundant words, but the brevity sacrifices necessary detail. It is appropriately structured but incomplete.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has two undocumented optional parameters, no annotations, and only a vague output schema reference, the description fails to provide adequate context for an agent to use the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, and the description does not mention or explain the two parameters (persona_tag, function_tag). No meaning is added beyond the schema's structural definition.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function: showing a rich in-chat card for the module catalog. It uses a specific verb and resource, and distinguishes it from sibling tools like show_patch_card.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives. Sibling tools are listed but not contrasted, and no context for appropriate usage is provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
show_patch_cardC
Show a rich in-chat card for a patch.
Return Format
ToolResult with PrefabApp content.
| Name | Required | Description | Default |
|---|---|---|---|
| patch_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It states core function but doesn't disclose error handling, data loading, or whether it is read-only. Minimal for a tool with no annotation coverage.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences: first defines purpose, second notes return format. Efficient but the return format line ('ToolResult with PrefabApp content') could be clearer.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (1 parameter) and existence of an output schema (not shown), the description is adequate but lacks details on what the card contains or prerequisites.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, and the description does not explain the 'patch_id' parameter. It adds no meaning beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Show a rich in-chat card for a patch' using a specific verb and resource. It distinguishes from siblings like 'show_catalog_card' by naming, but lacks explicit differentiation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives like 'show_catalog_card' or 'vcv_patch'. The description only states function, not context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
vcv_agentic_workflowB
SEP-1577 sampling loop: brief -> catalog selection -> generate -> validate -> retry (max 3).
Uses ctx.sample when available for autonomous iteration. Falls back to structured result with recovery_options for hosts without sampling.
Return Format
{"success": bool, "patch_id": str, "iterations": int, "report": list}
Examples
vcv_agentic_workflow(brief="slow ambient drone, two detuned voices, filtered noise swells, big reverb")
| Name | Required | Description | Default |
|---|---|---|---|
| ctx | No | ||
| brief | Yes | ||
| persona | No | generative | |
| max_iterations | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Behaviors are well-documented: iterative loop with max 3 retries, conditional use of ctx.sample, and fallback to structured results. The return format is given. Without annotations, the description carries full burden and does so adequately.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Description is concise with bullet points and structured sections. Front-loaded with the loop steps. Slightly under-explains parameters but overall efficient. Could be slightly more structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with 4 parameters and no annotations, the description covers the workflow and return type. However, it omits explanations for optional parameters (persona, max_iterations) and the ctx parameter, which are part of the context. The example is helpful but incomplete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%; the description does not explain any parameter beyond the example showing 'brief'. Parameter semantics for ctx, persona, and max_iterations are left to the schema, which only provides names and defaults. The example is minimal.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly defines the tool as a multi-step sampling loop (brief to catalog to generate to validate to retry). The return format and example make the purpose explicit. It distinguishes from sibling tools, which are single-purpose (status, catalog, live, patch), by being an agentic workflow that combines steps.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance on when to use this tool versus alternatives (e.g., vcv_patch for direct manipulation). The description mentions fallback behavior for hosts without sampling, but does not provide usage context or prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
vcv_catalogC
Module catalog portmanteau — search, get_module, verify_installed, library_link, sideload, suggest_rack.
Return Format
{"success": bool, "operation": str, ...operation-specific keys}
Examples
vcv_catalog(operation="search", function_tag="osc") vcv_catalog(operation="get_module", plugin_slug="Fundamental", model_slug="VCO") vcv_catalog(operation="suggest_rack", persona_tag="generative", intent="ambient drone")
| Name | Required | Description | Default |
|---|---|---|---|
| url | No | ||
| limit | No | ||
| query | No | ||
| intent | No | ||
| operation | Yes | ||
| model_slug | No | ||
| persona_tag | No | ||
| plugin_slug | No | ||
| function_tag | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, and the description does not disclose behavioral traits such as mutability, side effects, or required permissions. Operations like 'sideload' may have destructive effects, but this is not mentioned.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is short and includes a return format and examples, which are helpful. However, the opening phrase 'Module catalog portmanteau' is unconventional and unclear. It is concise but sacrifices clarity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (9 parameters, multiple operations), the description lacks essential details. Without parameter documentation or behavioral cues, an agent cannot reliably use all features correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, and the description does not explain parameter meanings beyond example usage. Parameters like 'function_tag', 'plugin_slug', etc., are used in examples but not defined.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description lists multiple operations (search, get_module, etc.) indicating a multi-purpose catalog tool. It distinguishes from siblings like hub_status or show_catalog_card, which are more specific. However, the term 'portmanteau' is vague and the operations are not defined individually.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance on when to use this tool versus siblings. Examples show usage patterns but do not clarify when to choose one operation over another or when to use vcv_catalog vs other tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
vcv_liveD
Live performance portmanteau — address_map, performance_sheet.
Return Format
{"success": bool, "operation": str, ...}
Examples
vcv_live(operation="address_map", patch_id="ambient-drone") vcv_live(operation="performance_sheet", patch_id="ambient-drone")
| Name | Required | Description | Default |
|---|---|---|---|
| patch_id | No | ||
| operation | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, and the description only mentions the return format but does not disclose side effects, destructive behavior, permissions, or other behavioral traits. Without annotations, the description carries full burden but fails to provide any transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is short but inefficient: it uses a cryptic term 'portmanteau' and includes a return format and examples that, while helpful, are not structured to immediately convey the tool's core function.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the lack of annotations, rich input schema, and no structured output schema (only free-text examples), the description is woefully incomplete. It fails to explain the two operations, the purpose of patch_id, and the full return value.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, and the description does not explain the parameters `operation` and `patch_id`. The examples show valid values but do not clarify what each operation does or what `patch_id` represents.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description mentions 'Live performance portmanteau — address_map, performance_sheet' and provides examples, indicating it performs two specific operations. However, the term 'portmanteau' is vague and doesn't clearly state the tool's overall purpose as a verb-resource combination.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus siblings like vcv_patch or vcv_catalog. The description does not indicate prerequisites, appropriate contexts, or which operation to choose when.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
vcv_patchC
Patch authorship portmanteau — create, edit, validate, list, get, open_in_rack, rack_cycle, import.
Return Format
{"success": bool, "operation": str, ...operation-specific keys}
Examples
vcv_patch(operation="create", name="Ambient Drone", persona="generative", description="slow detuned drone") vcv_patch(operation="validate", patch_id="ambient-drone") vcv_patch(operation="list", persona="generative")
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | ||
| path | No | ||
| limit | No | ||
| reason | No | ||
| persona | No | generative | |
| patch_id | No | ||
| operation | Yes | ||
| description | No | ||
| instruction | No | ||
| module_hints | No | ||
| pending_sideload | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must disclose behavioral traits. It mentions a return format with success and operation-specific keys but does not explain side effects, required permissions, rate limits, or which operations are mutating vs. read-only.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is relatively short but unstructured. The opening line is cryptic ('Patch authorship portmanteau'). The return format and examples are useful and front-loaded, but some content (e.g., the list of operations after a dash) could be clearer.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 11 parameters and multiple operations, the description lacks detail on parameter constraints, which operations require which parameters, and error handling. An output schema exists but is not described explicitly. The examples help but are insufficient for full coverage.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, placing full burden on the description. Examples illustrate usage of operation, name, patch_id, persona, and description, but 7 of 11 parameters are not described at all (path, limit, reason, instruction, module_hints, pending_sideload). The description adds minimal meaning beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description lists multiple operations (create, edit, validate, list, get, open_in_rack, rack_cycle, import) under the umbrella 'patch authorship portmanteau', indicating the tool handles various patch management tasks. Examples clarify usage. However, it doesn't provide a single concise purpose statement that distinguishes it from sibling tools like vcv_agentic_workflow.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus siblings such as hub_status, vcv_catalog, or vcv_live. The description only enumerates operations without explaining context, prerequisites, or scenarios.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
7 tool updates
v0.1.0- First observed
hub_status - First observed
show_catalog_card - First observed
show_patch_card - First observed
vcv_agentic_workflow - First observed
vcv_catalog - First observed
vcv_live - First observed
vcv_patch
TDQS
Scored across 7 tools
Most tools have distinct purposes, but the vcv_* portmanteau tools (vcv_catalog, vcv_live, vcv_patch, vcv_agentic_workflow) could cause some confusion as they share a prefix and bundle multiple operations. However, descriptions clarify their domains.
Naming conventions are mixed: snake_case for hub_status and show_* tools, but vcv_* prefix with underscores. The pattern is not uniform, though the vcv_ prefix provides some consistency for the main tools.
Seven tools is well-scoped for a VCV Rack assistant. Each tool covers a distinct area (system status, catalog, patches, live performance, generative workflow), and none feel extraneous.
The tool surface covers core operations: system monitoring, catalog browsing/search/installation, patch management (CRUD), a generative workflow, and live performance. Minor gaps like detailed module parameter control are acceptable for the scope.
Maintenance
Related MCP Connectors
Find best-fit tools for any problem, vetted for prompt-injection risk before your agent trusts them
CVE lookups (NVD) and dependency-manifest audits (OSV) for AI agents. No API keys.
CVE lookups (NVD) and dependency-manifest audits (OSV) for AI agents. No API keys.
Find, compare, and audit software for AI agents. Scored registry of tools and MCP servers.
Related MCP Servers
- FlicenseNot gradedqualityDmaintenanceEnables LLMs to control synthesizer parameters in real-time by translating natural language commands into OSC messages sent to a JUCE synthesizer application.-
- AlicenseAqualityDmaintenanceEnables AI-powered music composition and synthesis by generating Pure Data patches, VCV Rack modules, and MIDI controller mappings through natural language.10104MIT
- AlicenseNot gradedqualityDmaintenanceEnables LLMs to control Ableton Live via OSC and the Model Context Protocol, supporting commands like setting up tracks and routing.MIT
- AlicenseNot gradedqualityDmaintenanceEnables natural language control of OSC (OpenSoundControl) messages, allowing users to generate, interpret, validate, and debug OSC messages through an LLM interface for parametric control of multimedia devices.3MIT