UE Audio MCP
Provides tools for MetaSounds DSP graph generation and export, Blueprint audio logic wiring, world setup, actor/camera staging, and project scanning via an MCP interface and UE5 C++ plugin.
Provides tools for interacting with Wwise through WAAPI, enabling AI agents to query, create, and manage Wwise project assets, sound banks, and audio structures.
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., "@UE Audio MCP Generate a footstep sound with MetaSounds and a Blueprint anim notify trigger"
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.
██╗ ██╗███████╗ █████╗ ██╗ ██╗██████╗ ██╗ ██████╗ ███╗ ███╗ ██████╗██████╗
██║ ██║██╔════╝ ██╔══██╗██║ ██║██╔══██╗██║██╔═══██╗ ████╗ ████║██╔════╝██╔══██╗
██║ ██║█████╗ ███████║██║ ██║██║ ██║██║██║ ██║ ██╔████╔██║██║ ██████╔╝
██║ ██║██╔══╝ ██╔══██║██║ ██║██║ ██║██║██║ ██║ ██║╚██╔╝██║██║ ██╔═══╝
╚██████╔╝███████╗ ██║ ██║╚██████╔╝██████╔╝██║╚██████╔╝ ██║ ╚═╝ ██║╚██████╗██║
╚═════╝ ╚══════╝ ╚═╝ ╚═╝ ╚═════╝ ╚═════╝ ╚═╝ ╚═════╝ ╚═╝ ╚═╝ ╚═════╝╚═╝
░░░░░░░░░░░░░░░░░░ AI Game Audio — Wwise + MetaSounds + Blueprints ░░░░░░░░░░░░░░░░░░░UE Audio MCP
AI-powered game audio toolkit — MetaSounds graph generation & export, project scanning, and Wwise/Blueprint knowledge base via MCP for Unreal Engine 5.7.
One MCP server. UE5 Plugin, three audio engines, five custom nodes for SID chip emulation. 81 tools. 195 engine-verified MetaSounds nodes. Optimised for Unreal Engine 5.7 and Wwise 2025.
"Create a footsteps sound setup for my character -- use MetaSounds noise and filter in the patch, Blueprint trigger on anim notify"
MCP generates the MetaSounds DSP graph (noise -> filter -> AD envelope) and outputs Blueprint wiring for the animation trigger.
Architecture
Claude / Cursor / Any MCP Client
|
| MCP Protocol (stdio)
v
+---------------------------+
| UE Audio MCP |
| 81 tools |
| 1042 catalogue rows |
+---------------------------+
|
+-------------+-------------------+
v v v
+----------------+ +------------+ +------------------+
| Wwise Tools | | MetaSounds | | Blueprint Tools |
| (WAAPI) | | Tools | | (TCP + Knowledge)|
| 21 tools | | 24 tools | | 16 tools |
+-------+--------+ +-----+------+ +--------+---------+
| | |
v v v
+----------------+ +---------------------------+
| Wwise App | | UE5 C++ Plugin |
| WAAPI :8080 | | TCP:9877 (48 commands) |
+----------------+ | MetaSounds Builder API |
| Blueprint Graph Scanner |
| Editor Menu Integration |
+---------------------------+The Three Layers
Layer | Engine | Role | Analogy |
Blueprint | UE5 | WHEN -- detects game events, sets parameters | Stage manager |
MetaSounds | UE5 | WHAT -- procedural DSP, synthesis | The instrument |
Wwise | Standalone | HOW -- mixing, buses, spatialization, delivery | The mixing desk |
Signal Flow
BLUEPRINT (WHEN) METASOUNDS (WHAT) WWISE (HOW)
---------------- ----------------- ------------
Player shoots -> Gunshot synthesis -> SFX bus, reverb
Player steps on grass -> Soft filtered step -> Distance attenuation
Weather changes to rain -> Layered rain + drops -> Ambient bus, RTPC mix
Vehicle accelerates -> Engine layer blend -> Vehicle bus, compression
C64 chiptune plays -> ReSID SID Chip node -> Music bus, stereo mixRelated MCP server: Monolith
Setup
# 1. MCP Server (Python)
git clone https://github.com/koshimazaki/UE-AUDIO-MCP.git
cd UE-AUDIO-MCP && pip install -e ".[dev]"
ue-audio-mcp// 2. MCP Client Config (Claude Code, Cursor, etc.)
{
"mcpServers": {
"ue-audio-mcp": { "command": "ue-audio-mcp", "transport": "stdio" }
}
}// 3. UE5 Plugin — copy to project Plugins/ folder, enable in plugin manager
ue5_plugin/UEAudioMCP/ → Editor module (TCP server, 48 commands)
ue5_plugin/SIDMetaSoundNodes/ → Runtime module (SID chip nodes)Works without Wwise or UE5 running -- knowledge base, templates, and offline mode always available.
Requirement | Version |
Unreal Engine | 5.7.2+ (MetaSounds Builder API, experimental since 5.4) |
Wwise | 2025.1.4+ (WAAPI enabled, WebSocket on localhost:8080) |
Python | 3.10+ |
What's Included
81 MCP tools -- Wwise (21), MetaSounds (24), Blueprint (16), World Setup (7), Actor/Camera (5), UE5 Core (4), orchestration (2), audit (2)
1042 seeded catalogue rows -- 195 MetaSounds nodes, 356 aliases, 66 WAAPI functions, 55 BP audio functions, 130 pin mappings, 26 engine plugin assets
73 templates -- 33 MetaSounds DSP + 34 Blueprint logic + 6 Wwise hierarchy (33/33 MS validated)
48 C++ TCP commands -- MetaSounds Builder API, Blueprint builder, world setup, actor/camera staging, graph scanning, asset queries
5 custom C++ nodes -- ReSID SID chip emulator (oscillator, envelope, filter, voice, full chip)
11 audio system patterns -- gunshot, footsteps, ambient, vehicle, weather, UI, SID synth...
Editor menu -- Scan Project, Export MetaSounds, Server Status from UE5 menu bar
Engine sync snapshots -- 897 MS nodes + 1173 audio BP functions exported from live UE5 editor
12 templates from shipped games: Lyra (random EQ, whizby, stereo balance, gameplay cues, anim notify audio) and StackOBot (array player, looped sound, EQ+delay).
See TOOLS_AND_COMMANDS.md for full tool listing, command reference, sound designer workflows, template catalogue, and knowledge base details. Run python scripts/db_inventory.py to reconcile source catalogue, SQLite, and engine export counts.
ReSID SIDKIT Edition -- C64 SID Chip in MetaSounds
5 custom C++ MetaSounds nodes wrapping a cycle-accurate MOS 6581/8580 SID chip emulator. The same reSID core running in the SIDKIT project, now available as native MetaSounds DSP nodes.
Node | Type | Description |
SID Oscillator | Audio | 24-bit accumulator, 8 waveforms (saw/tri/pulse/noise + combined) |
SID Envelope | Float | Non-linear exponential ADSR with authentic SID timing and delay bug |
SID Filter | Audio | Route any audio through the 6581's analog filter -- VICE VCR model |
SID Voice | Audio | Oscillator x Envelope convenience combo |
SID Chip | Audio | Complete 3-voice SID with filter, FM cross-modulation, per-voice outputs |
SIDMetaSoundNodes is a separate Runtime module -- ships in games without the MCP TCP server.
Agent Skills
Install UE Audio agent skills for Claude Code, Cursor, Windsurf, and 35+ other agents:
npx skills add koshimazaki/ue-audio-skillsSkill | What it does |
| TCP plugin control -- 48 commands for building MetaSounds graphs, scanning blueprints, world setup, actor/camera staging |
| MetaSounds DSP specialist -- 195 nodes, Builder API, signal flow patterns, graph templates |
| Blueprint audio logic -- game event detection, parameter wiring, asset scanning |
| Full pipeline orchestrator -- generates complete 3-layer audio systems from a single description |
Prior Art
Existing Tool | Audio? |
blender-mcp (16.9k stars) -- Controls Blender | No |
unreal-mcp (1,370 stars) -- Controls UE5 editor | No |
VibeComfy MCP -- 8,400+ ComfyUI nodes | No |
BilkentAudio/Wwise-MCP -- Wwise wrapper | Partial |
This project -- Complete 3-layer game audio + SID chip emulation | Yes |
Credits
All templates and knowledge curated from public sources: Epic Games documentation, and tutorials, Audiokinetic SDK reference, and community tutorials. ReSID emulation based on reSID by Dag Lem with SIDKIT extensions.
See CREDITS.md for full attribution to tutorial authors and data sources.
Key sources: Craig Owen (YAGER), Matt Spendlove, Nick Pfisterer, Eric Buchholz (TechAudioTools), Chris Payne, Epic Games official documentation.
Author
Built by Koshi Mazaki
Licence
MIT
Available Tools
81 toolsaudit_historyA
Query past session log events with optional filters.
Args: session_id: Filter by session ID event_type: Filter by type (tool_call, waapi_call, tcp_command, session_start, session_end) tool_name: Filter by tool name since: ISO date string — only events after this timestamp status_filter: Filter by result status (ok, error) limit: Max rows to return (default 50, max 500) summary_only: If true, return per-session aggregates instead of raw events
Inputs: limit, since, tool_name, event_type, +3 more. Returns: result
audit_session_statsB
Get overall session logging statistics.
Returns total sessions, event counts by type, error rate, and top 10 most-used tools.
Inputs: no named parameters. Returns: result
bp_add_bp_nodeA
Add a node to the active Blueprint's event graph.
Supports 4 node kinds:
CallFunction: Audio-allowlisted functions (SetFloatParameter, PlaySound2D, etc.)
CustomEvent: User-defined events
VariableGet: Read a Blueprint variable (must pre-exist)
VariableSet: Write a Blueprint variable (must pre-exist)
Args: node_id: Unique ID for this node (used in connect/set_pin calls) node_kind: One of: CallFunction, CustomEvent, VariableGet, VariableSet function_name: Required for CallFunction — the function to call event_name: Required for CustomEvent — the event name variable_name: Required for VariableGet/VariableSet — the variable name position_x: Editor X position position_y: Editor Y position
Inputs: node_id (required), node_kind (required), event_name, position_x, +3 more. Returns: result
bp_call_functionC
Execute a Blueprint function via the UE5 plugin.
Args: function_name: Blueprint function name to call args_json: JSON string of function arguments
Inputs: function_name (required), args_json. Returns: result
bp_compile_blueprintA
Compile the active Blueprint.
Returns compile status and any compiler messages. Must have called bp_open_blueprint first.
Inputs: no named parameters. Returns: result
bp_connect_bp_pinsA
Connect two pins between registered Blueprint nodes.
Both nodes must be registered (via bp_add_bp_node or bp_register_existing).
Args: from_node: Source node ID from_pin: Source output pin name to_node: Destination node ID to_pin: Destination input pin name
Inputs: to_pin (required), to_node (required), from_pin (required), from_node (required). Returns: result
bp_export_audioA
Export the audio-relevant subgraph from a Blueprint with full edge wiring.
Returns only audio nodes + their 1-hop neighbours, with pin data and connections between them. Useful for understanding how Blueprint events drive MetaSounds/Wwise parameters.
Requires the UE5 C++ plugin to be running.
Args: asset_path: Blueprint asset path (e.g. "/Game/Blueprints/BP_Character")
Inputs: asset_path (required). Returns: result
bp_list_assetsB
List project assets by class type via the UE5 plugin.
Queries the Asset Registry for all assets matching the given class under the specified path. Useful for discovering Blueprints, MetaSounds, SoundWaves, etc. before scanning.
Requires the UE5 C++ plugin to be running.
Args: class_filter: Asset class name — Blueprint, MetaSoundSource, SoundWave, etc. path: Path prefix to search under (default: /Game/) limit: Max results to return (default: 5000)
Inputs: path, limit, class_filter. Returns: result
bp_list_categoriesB
List Blueprint node categories with counts.
Args: source: Data source — "all", "curated", or "scraped"
Inputs: source. Returns: result
bp_list_node_pinsA
List all pins on a registered Blueprint node.
Returns pin name, direction, type, default value, and connection status.
Args: node_id: Registered node ID
Inputs: node_id (required). Returns: result
bp_node_infoA
Get full Blueprint node info including pin specs.
Prefers scraped data (richer pin info), falls back to curated.
Args: node_name: Exact node name (e.g. "PlaySound2D", "SpawnSoundAtLocation")
Inputs: node_name (required). Returns: result
bp_open_blueprintA
Open a Blueprint asset for editing via the UE5 plugin.
Must be called before adding nodes or connecting pins. Resets any previously registered node handles.
Args: asset_path: Blueprint asset path (e.g. "/Game/Blueprints/BP_Character")
Inputs: asset_path (required). Returns: result
bp_register_existingA
Register an existing Blueprint node by its GUID so it can be wired to.
Use bp_scan_blueprint with include_pins=true to find node GUIDs, then register them here before connecting pins.
Args: node_id: MCP handle ID you want to use for this node node_guid: The node's FGuid string from the Blueprint scan
Inputs: node_id (required), node_guid (required). Returns: result
bp_scan_blueprintB
Deep-scan a Blueprint asset to extract graph nodes, function calls, and audio relevance.
Inspects all graphs (event graphs, function graphs, macros) and classifies each node by type: CallFunction, Event, CustomEvent, VariableGet/Set, etc. Detects audio-relevant nodes (PlaySound, PostEvent, AudioComponent refs).
Requires the UE5 C++ plugin to be running.
Args: asset_path: Blueprint asset path (e.g. "/Game/Blueprints/BP_Character") audio_only: If True, only return audio-relevant nodes include_pins: If True, include full pin details per node
Inputs: asset_path (required), audio_only, include_pins. Returns: result
bp_searchA
Search Blueprint nodes by name or description.
Searches across curated and scraped Blueprint data.
Args: query: Search term (matched against name and description) category: Optional category filter source: Data source — "all", "curated", or "scraped"
Inputs: query (required), source, category. Returns: result
bp_set_bp_pinB
Set a default value on a Blueprint node's input pin.
Args: node_id: Registered node ID pin_name: Input pin name value: Default value as string
Inputs: value (required), node_id (required), pin_name (required). Returns: result
bp_sync_from_engineA
Sync Blueprint function catalogue from the running UE5 engine.
Calls list_blueprint_functions to enumerate all BlueprintCallable UFunctions with their parameter signatures directly from the engine. Optionally upserts results into the blueprint_nodes_scraped SQLite table.
Args: audio_only: Only fetch audio-relevant functions (default True) update_db: If True, upsert into the SQLite blueprint_nodes_scraped table filter: Optional substring filter on function or class name class_filter: Optional exact class name filter limit: Max functions to fetch (default 10000)
Returns: JSON summary: total functions, classes found, new vs updated counts.
Inputs: limit, filter, update_db, audio_only, +1 more. Returns: result
bp_wire_audio_paramA
High-level: wire a SetFloatParameter call into a Blueprint.
Opens the Blueprint, optionally registers a source node, adds a SetFloatParameter call, sets the parameter name, connects the source if provided, and compiles.
Args: asset_path: Blueprint asset path param_name: MetaSounds parameter name (e.g. "Speed", "Intensity") source_node_guid: Optional GUID of existing node to wire as value source source_pin: Output pin name on the source node for the float value
Inputs: asset_path (required), param_name (required), source_pin, source_node_guid. Returns: result
build_aaa_projectA
Build a complete AAA audio project: infrastructure + content for all categories.
Creates AAA Wwise infrastructure (buses, work units, switches, states), then generates 3-layer content (Wwise + MetaSounds + Blueprints) for each audio category, routes outputs to correct buses, and moves objects to dedicated work units.
Auto-detects connection state:
Full (Wwise + UE5): creates infrastructure, builds all content, routes + moves
Wwise-only: creates infrastructure, builds Wwise content, returns MS commands
Offline: returns complete manifest of what would be created (dry-run)
Args: categories: Comma-separated category filter (default: all). Available: player_footsteps, player_weapons, npc_footsteps, ambient_wind, weather, ui setup_params: JSON overrides for template_aaa_setup, e.g. {"include_reverbs": false}
Inputs: categories, setup_params. Returns: result
build_audio_systemA
Build a complete 3-layer audio system (Wwise + MetaSounds + Blueprints) from a pattern.
Auto-detects which backends are connected and degrades gracefully:
Full (Wwise + UE5): executes everything, returns created IDs
Wwise-only: executes Wwise, returns MetaSounds commands for later
Offline: returns all 3 layer specs as JSON (dry-run preview)
Available patterns: gunshot, footsteps, ambient, spatial, ui_sound, weather, preset_morph, macro_sequence, sfx_generator, vehicle_engine.
Args: pattern: Pattern name (e.g. "gunshot", "footsteps") name: Asset name prefix (defaults to pattern name) params_json: JSON overrides for all 3 layers, e.g. {"wwise": {"num_variations": 5}}
Inputs: pattern (required), name, params_json. Returns: result
execute_waapiB
Execute any WAAPI call directly (escape hatch).
Args: uri: WAAPI function URI (e.g. ak.wwise.core.object.getTypes) args_json: JSON string of arguments options_json: JSON string of options
Inputs: uri (required), args_json, options_json. Returns: result
find_actorA
Find actors in the current editor or PIE world.
Args: query: Optional label/name/path substring. class_filter: Optional class-name substring, e.g. "Character", "CameraActor". limit: Maximum actors to return, clamped by the plugin.
Inputs: limit, query, class_filter. Returns: result
focus_editor_cameraA
Frame an actor in the Unreal Editor viewport camera.
Args: actor: Actor label, object name, or full path returned by find_actor. active_viewport_only: When true, move only the active viewport camera.
Inputs: actor (required), active_viewport_only. Returns: result
import_sound_fileB
Import a .wav or .ogg sound file from disk into the UE5 Content folder.
Args: file_path: Absolute path to the audio file on disk dest_folder: Destination folder in Content (e.g. "/Game/Audio/SFX")
Inputs: file_path (required), dest_folder (required). Returns: result
ms_add_nodeB
Add a MetaSounds node to the current graph.
Args: node_type: Node type name (e.g. "Sine", "Wave Player (Mono)") node_id: Unique ID for this node instance position_x: Editor X position position_y: Editor Y position
Inputs: node_id (required), node_type (required), position_x, position_y. Returns: result
ms_add_variableA
Add a graph variable to the current MetaSounds builder (UE 5.7+).
Graph variables store state within a MetaSound graph, readable and writable by Get/Set Variable nodes.
Args: name: Variable name (must be unique within the graph) type: Data type (Float, Int32, Bool, Trigger, Audio, Time, String) default_value: Optional default value as string
Inputs: name (required), type (required), default_value. Returns: result
ms_add_variable_nodeA
Add a Get, Set, or GetDelayed variable node to the current graph.
Args: node_id: Unique ID for this node instance variable_name: Name of the graph variable to access mode: Access mode — "get" (read current), "set" (write), or "get_delayed" (read previous frame)
Inputs: node_id (required), variable_name (required), mode. Returns: result
ms_auditionB
Preview/audition the current MetaSounds graph in the editor.
Args: name: Optional asset name to audition (empty = current)
Inputs: name. Returns: result
ms_build_graphB
Validate a graph spec, convert to Builder commands, and send all to UE5.
This is the high-level tool that does everything: validate, convert, and execute the full command sequence via the UE5 plugin.
Args: graph_spec: JSON string of the MetaSounds graph specification
Inputs: graph_spec (required). Returns: result
ms_connect_pinsB
Connect two node pins in the current MetaSounds graph.
Args: from_node: Source node ID from_pin: Source output pin name to_node: Destination node ID to_pin: Destination input pin name
Inputs: to_pin (required), to_node (required), from_pin (required), from_node (required). Returns: result
ms_convert_to_presetA
Convert the current MetaSounds builder to a preset of a referenced asset.
The builder's graph becomes read-only, inheriting the referenced asset's topology. Only exposed input defaults can be overridden.
Args: referenced_asset: Content path of the source MetaSound (e.g. /Game/Audio/MySynth)
Inputs: referenced_asset (required). Returns: result
ms_create_sourceB
Create a new MetaSounds source builder in UE5.
Args: name: Name for the MetaSound asset asset_type: Asset type — Source, Patch, or Preset
Inputs: name (required), asset_type. Returns: result
ms_export_graphB
Export a complete MetaSounds graph from UE5 — nodes, pin types, defaults, variables, interfaces.
Returns the full graph data. Optionally converts to our reusable template format.
Args: asset_path: Content path of the MetaSound asset (e.g. /Game/Audio/MySound) convert_to_template: If True, also convert the export to template format
Inputs: asset_path (required), convert_to_template. Returns: result
ms_graph_from_templateB
Generate a complete graph spec from a template.
Templates are auto-discovered from the metasounds template directory.
Args: template_name: Template name (e.g. "gunshot", "footsteps") params: JSON string of template parameters (overrides defaults)
Returns: JSON with the complete graph specification ready for validation.
Inputs: template_name (required), params. Returns: result
ms_graph_to_commandsA
Convert a validated graph spec to Builder API command sequence.
The command sequence can be sent to the UE5 plugin (Phase 3) to construct the MetaSound asset via the Builder API.
Args: graph_spec: JSON string of a valid graph specification
Returns: JSON with ordered command list for the Builder API.
Inputs: graph_spec (required). Returns: result
ms_list_categoriesA
List all MetaSounds node categories with counts.
Returns: JSON with category names and node counts.
Inputs: no named parameters. Returns: result
ms_list_nodesB
List MetaSounds nodes, optionally filtered by category or tag.
Args: category: Filter by category (e.g. "Filters", "Generators") tag: Filter by tag (e.g. "underwater", "oscillator")
Returns: JSON with node list including name, category, description, and pin counts.
Inputs: tag, category. Returns: result
ms_macro_triggerA
Execute a named sequence of parameter changes and/or preset swaps.
Each step is a dict with:
"action": "set_default" or "convert_to_preset"
Plus action-specific fields (node_id/input/value or referenced_asset)
Useful for cinematic audio cues, dynamic music transitions, and scripted sound design sequences.
Args: name: Descriptive name for this macro sequence steps_json: JSON array of step dicts
Inputs: name (required), steps_json (required). Returns: result
ms_node_infoA
Get full details for a specific MetaSounds node.
Args: node_name: Exact node name (e.g. "Biquad Filter", "Wave Player (Mono)")
Returns: JSON with complete node definition including all pins and defaults.
Inputs: node_name (required). Returns: result
ms_open_in_editorA
Open the last built MetaSound asset in the UE5 MetaSounds editor.
Must call ms_save_asset first to create a .uasset on disk. Opens the graph editor showing all nodes and connections visually.
Inputs: no named parameters. Returns: result
ms_preset_morphA
Build a MetaSound Source that morphs between two parameter sets.
Creates a Source with a Morph input (0.0-1.0) that smoothly interpolates each parameter between set A (Morph=0) and set B (Morph=1). Uses Map Range nodes for each parameter and InterpTo for smooth transitions.
Args: name: Name for the morph MetaSound asset param_set_a_json: JSON object of param_name -> value at Morph=0 param_set_b_json: JSON object of param_name -> value at Morph=1 asset_path: Content path for the output asset
Inputs: name (required), param_set_a_json (required), param_set_b_json (required), asset_path. Returns: result
ms_preset_swapA
Create a preset variant from an existing MetaSound asset.
A preset shares the referenced asset's graph topology but overrides specific input defaults. Use this to create weapon/surface/character variants without duplicating the graph.
Args: preset_name: Name for the new preset asset referenced_asset: Content path of the source MetaSound to reference overrides_json: JSON object of input_name -> value overrides asset_path: Content path for the output asset
Inputs: preset_name (required), referenced_asset (required), asset_path, overrides_json. Returns: result
ms_save_assetC
Build the current MetaSounds graph to a UE5 asset.
Args: name: Asset name path: Content path (default /Game/Audio/Generated/)
Inputs: name (required), path. Returns: result
ms_search_nodesA
Semantic search for MetaSounds nodes by description or purpose.
Uses TF-IDF embeddings for meaning-based search with tag fallback. Examples: "underwater effect", "random variation", "smooth transition"
Args: query: Natural language search query
Returns: JSON with ranked results (name, score, category, description).
Inputs: query (required). Returns: result
ms_set_defaultB
Set a default value for a node input pin.
Args: node_id: Node instance ID input_name: Input pin name value: Default value (JSON-encoded for complex types)
Inputs: value (required), node_id (required), input_name (required). Returns: result
ms_stop_auditionB
Stop any currently playing MetaSounds audition preview.
Inputs: no named parameters. Returns: result
ms_sync_from_engineA
Sync MetaSounds node catalogue from the running UE5 engine.
Calls the list_metasound_nodes command to get ALL registered node classes with their complete pin specs directly from the engine registry. Updates the in-memory METASOUND_NODES dict and optionally the SQLite DB.
Args: update_db: If True, also upsert nodes into the SQLite knowledge DB filter: Optional substring filter for node class names limit: Max nodes to fetch (default 5000)
Returns: JSON summary: total nodes, new nodes added, existing nodes updated, categories.
Inputs: limit, filter, update_db. Returns: result
ms_validate_graphA
Validate a MetaSounds graph specification.
Checks node types exist, pin names are valid, type compatibility, required inputs are connected, no duplicate IDs.
Args: graph_spec: JSON string of the graph specification
Returns: JSON with validation result: errors list (empty = valid).
Inputs: graph_spec (required). Returns: result
place_anim_notifyB
Place an AnimNotify_PlaySound on an animation at a specific time.
This is the proper way to sync sounds to animation frames (e.g. footsteps at the exact moment each foot hits the ground).
Args: animation_path: Animation asset path (e.g. "/Game/Characters/Anims/Walk") time: Time in seconds where the notify fires sound: Optional SoundBase asset path to play notify_name: Name for the notify event (default "Footstep")
Inputs: time (required), animation_path (required), sound, notify_name. Returns: result
place_audio_volumeA
Place an AudioVolume actor — defines an ambient audio zone.
When the player enters this volume, reverb/interior settings activate. Use for rooms, caves, outdoor areas with different acoustic properties.
Args: location: World position as [x, y, z] extent: Half-size of the volume box as [x, y, z] (default [500,500,500]) name: Label for the volume actor reverb_effect: Optional ReverbEffect asset path priority: Volume priority (higher = takes precedence when overlapping)
Inputs: location (required), name, extent, priority, +1 more. Returns: result
place_bp_anim_notifyA
Place a Blueprint-based AnimNotify on an animation at a specific time.
Unlike place_anim_notify (which creates engine AnimNotify_PlaySound), this places BP AnimNotify classes that can do surface detection, line traces, and material-based sound selection — the Lyra footstep pattern.
Args: animation_path: Animation asset path (e.g. "/Game/Characters/Anims/Walk") time: Time in seconds where the notify fires notify_blueprint_path: Blueprint AnimNotify asset path (e.g. "/Game/Blueprints/AnimNotifies/BP_AnimNotify_FoleyEvent_Walk_L") notify_name: Name for the notify event (default "BPNotify")
Inputs: time (required), animation_path (required), notify_blueprint_path (required), notify_name. Returns: result
possess_pawnA
Possess a Pawn/Character with a runtime player controller.
Args: actor: Pawn/Character label, object name, or full path returned by find_actor. player_index: Local player/controller index. set_view_target_on_possess: Also set the possessed pawn as the camera target.
Inputs: actor (required), player_index, set_view_target_on_possess. Returns: result
set_actor_transformA
Move and/or rotate an actor in the current editor or PIE world.
Args: actor: Actor label, object name, or full path returned by find_actor. location: Optional world position as [x, y, z]. rotation: Optional rotation as [pitch, yaw, roll] in degrees. focus_camera: Also frame the actor in the active editor viewport.
Inputs: actor (required), location, rotation, focus_camera. Returns: result
set_physical_surfaceA
Set the surface type on a Physical Material (creates it if needed).
Surface types drive material-dependent sounds — e.g. footsteps on grass vs metal vs wood produce different sounds.
Args: material_path: Physical Material asset path (e.g. "/Game/Materials/PM_Grass") surface_type: Surface type name (e.g. "Grass", "Metal", "Wood", "SurfaceType1")
Inputs: surface_type (required), material_path (required). Returns: result
set_view_targetA
Set the runtime player camera view target to an actor.
This is intended for PIE/simulation. Use focus_editor_camera for the editor viewport.
Args: actor: Actor label, object name, or full path returned by find_actor. blend_time: Camera blend duration in seconds. player_index: Local player/controller index.
Inputs: actor (required), blend_time, player_index. Returns: result
spawn_audio_emitterA
Spawn a persistent AmbientSound actor at a world location.
Creates a spatial audio source that gets louder as the player approaches. Perfect for environmental sounds (campfire, waterfall, machinery).
Args: sound: SoundBase/MetaSound asset path (e.g. "/Game/Audio/Ambient/Fire") location: World position as [x, y, z] name: Label for the emitter actor auto_play: Whether to start playing immediately (default True)
Inputs: sound (required), location (required), name, auto_play. Returns: result
spawn_blueprint_actorA
Spawn an instance of a Blueprint actor into the editor level.
Use this to place a character/object in the scene so you can see it while wiring up audio. Great for demos and iterative sound design — spawn it, open its Blueprint, wire sounds, compile, hear it live.
Args: blueprint_path: Blueprint asset path (e.g. "/Game/Blueprints/BP_Creature") location: World position as [x, y, z] (default origin) rotation: Rotation as [pitch, yaw, roll] in degrees (default zero) label: Optional display label for the spawned actor
Inputs: blueprint_path (required), label, location, rotation. Returns: result
template_aaa_setupA
Create a complete AAA Wwise project structure (Bjorn Jacobson method).
Creates separate Work Units for merge-safe version control, structured bus hierarchy for clear signal routing, and switch/state groups for runtime control.
Naming convention: Type_Owner_Category_Action_Material_Variation Example: sfx_plyr_loc_walking_dirt_01
Everything goes into dedicated Work Units — nothing in Default Work Unit.
Args: bus_structure: JSON override for bus tree (default: AAA standard with AmbientMaster, NPCMaster, PlayerMaster, UIMaster, MusicMaster, Reverbs) actor_work_units: JSON array of Actor-Mixer Work Unit names (default: Player_Locomotion, Player_Weapons, NPC_Locomotion, NPC_Voice, Ambience, UI, Music) event_work_units: JSON array of Event Work Unit names (default: Player, NPC, Locomotion, Ambience, UI, Music) switch_groups: JSON dict of SwitchGroup name -> values array (default: Surface_Type, Footstep_Type) state_groups: JSON dict of StateGroup name -> values array (default: Weather, PlayerState, Zone) include_reverbs: Create Reverb AuxBuses (LargeRoom, SmallRoom, Cave, Outdoor)
Inputs: state_groups, bus_structure, switch_groups, include_reverbs, +2 more. Returns: result
template_ambientB
Create an RTPC-driven ambient blend system: GameParameter + BlendContainer + looped Sounds + Event.
Args: layer_names: JSON array of layer/sound names rtpc_parameter_name: Name for the RTPC GameParameter
Inputs: layer_names, rtpc_parameter_name. Returns: result
template_footstepsA
Create a surface-switched footstep system: SwitchGroup + SwitchContainer + per-surface RandomSeq + Event.
Args: surface_types: JSON array of surface type names with_switch_group: Create the SwitchGroup (set false if it already exists)
Inputs: surface_types, with_switch_group. Returns: result
template_gunshotB
Create a complete gunshot system: RandomSequenceContainer + Sound children + Event.
Args: weapon_name: Weapon name (used in object naming) num_variations: Number of sound variation slots to create pitch_randomization: Pitch randomization range in cents (stored as note)
Inputs: weapon_name, num_variations, pitch_randomization. Returns: result
template_ui_soundA
Create a non-spatial UI sound: ActorMixer(UI) + Sound + Event + bus routing.
Args: sound_name: Name for the UI sound bus_path: Output bus path (default: Master Audio Bus)
Inputs: bus_path, sound_name. Returns: result
template_weather_statesB
Create a state-driven weather ambient system: StateGroup + SwitchContainer + per-state Sounds + Event.
Args: weather_states: JSON array of weather state names
Inputs: weather_states. Returns: result
ue5_connectC
Connect to the UE5 audio plugin via TCP.
Args: host: Plugin host address (default 127.0.0.1) port: Plugin TCP port (default 9877)
Inputs: host, port. Returns: result
ue5_duplicate_assetB
Duplicate a UE5 asset from source to destination path.
Copies any asset (MetaSounds, Blueprints, SoundWaves, etc.) to a new location. Useful for cloning existing assets as starting points for modification.
Args: source_path: Source asset path (e.g. /Game/Audio/Foley/MetaSounds/MSS_FoleySound_Walk) dest_path: Destination asset path (e.g. /Game/Audio/Creatures/MSS_Creature_Walk)
Inputs: dest_path (required), source_path (required). Returns: result
ue5_get_infoB
Get UE5 engine info (version, project, features).
Inputs: no named parameters. Returns: result
ue5_statusB
Get combined status of Wwise and UE5 plugin connections.
Inputs: no named parameters. Returns: result
wwise_assign_switchB
Assign a child object to a switch/state value in a SwitchContainer.
Args: switch_container_path: Path to the SwitchContainer (for context only) child_path: GUID or path of the child to assign switch_value: GUID or path of the switch/state value
Inputs: child_path (required), switch_value (required), switch_container_path (required). Returns: result
wwise_connectB
Connect to Wwise via WAAPI.
Args: url: WebSocket URL (default ws://127.0.0.1:8080/waapi)
Inputs: url. Returns: result
wwise_create_eventB
Create a Wwise Event with an Action targeting an object.
Args: name: Event name (e.g. Play_Gunshot_Rifle) target_path: Path to the target object the action acts on action_type: Action type name (Play, Stop, Pause, etc.) event_parent: Parent path for the event (default: Events\Default Work Unit)
Inputs: name (required), target_path (required), action_type, event_parent. Returns: result
wwise_create_game_parameterA
Create a Game Parameter (RTPC) in Wwise.
Creates the GameParameter object. To bind it as an RTPC curve on a specific property, use execute_waapi with ak.wwise.core.object.setRTPCCurve or configure the binding in the Wwise Authoring GUI.
Args: name: GameParameter name (e.g. RTPC_Wind_Intensity) min_value: Minimum range value max_value: Maximum range value default_value: Default value
Inputs: name (required), max_value, min_value, default_value. Returns: result
wwise_create_objectB
Create a Wwise object in the hierarchy.
Args: parent_path: Parent object path (backslash-separated, e.g. \Actor-Mixer Hierarchy\Default Work Unit) object_type: Wwise type (Sound, RandomSequenceContainer, Event, etc.) name: Object name on_conflict: Name conflict mode: merge, rename, replace, fail
Inputs: name (required), object_type (required), parent_path (required), on_conflict. Returns: result
wwise_generate_banksB
Generate Wwise SoundBanks.
Args: bank_names: JSON array of bank names to generate (e.g. ["Weapons_Bank", "UI_Bank"])
Inputs: bank_names (required). Returns: result
wwise_get_infoA
Get Wwise application info (version, platform, project).
Inputs: no named parameters. Returns: result
wwise_import_audioB
Import audio files into Wwise.
Args: audio_files: JSON array of objects with 'audioFile' and 'objectPath' keys. Example: [{"audioFile": "/path/to/shot.wav", "objectPath": "\Actor-Mixer Hierarchy\Default Work Unit\Shot_01"}] import_operation: createNew, useExisting, or replaceExisting language: Import language (default SFX)
Inputs: audio_files (required), language, import_operation. Returns: result
wwise_previewB
Preview a Wwise object (Event, Sound, Container) via transport.
Args: object_path: Path to the object to preview action: Transport action — play, stop, or pause
Inputs: object_path (required), action. Returns: result
wwise_queryC
Query Wwise objects using WAQL.
Args: waql: WAQL query string (e.g. '$ from type sound') return_fields: JSON array of fields to return
Inputs: waql (required), return_fields. Returns: result
wwise_saveB
Save the current Wwise project.
Inputs: no named parameters. Returns: result
wwise_set_attenuationB
Create an Attenuation ShareSet and set its distance curve.
Args: name: Attenuation name curve_type: Curve type (VolumeDryUsage, LowPassFilterUsage, etc.) curve_points: JSON array of {x, y, shape} points parent_path: Parent path (default: Attenuations\Default Work Unit)
Inputs: name (required), curve_type (required), curve_points (required), parent_path. Returns: result
wwise_set_propertyB
Set a property on a Wwise object.
Args: object_path: Object path or GUID property_name: Property name (Volume, Pitch, Lowpass, IsLoopingEnabled, etc.) value: JSON-encoded value (number, bool, or string)
Inputs: value (required), object_path (required), property_name (required). Returns: result
wwise_set_referenceB
Set a reference on a Wwise object (e.g. OutputBus, Attenuation).
Args: object_path: Object path or GUID reference: Reference name (OutputBus, Attenuation, SwitchGroupOrStateGroup, etc.) value: Target object path or GUID
Inputs: value (required), reference (required), object_path (required). Returns: result
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 81 tools
Prefixes (wwise_, ms_, bp_) separate major domains, but there are overlapping high-level and low-level paths: ms_build_graph wraps ms_validate_graph/ms_graph_to_commands/ms_save_asset, bp_wire_audio_param wraps bp_add_bp_node/bp_connect_bp_pins, and wwise_create_object overlaps with wwise_create_event. Descriptions usually clarify intent, but several boundaries remain easy to confuse.
Tool names use snake_case throughout, but the prefixing convention is mixed: some domains are consistently prefixed (wwise_, ms_, bp_), while many editor/system tools are generic and unprefixed (build_audio_system, place_anim_notify, find_actor, spawn_audio_emitter). This is readable but not a predictable single pattern.
With 81 tools, the surface is far beyond a well-scoped set and well past the 50+ threshold for extreme mismatch. Even accounting for Wwise, MetaSounds, Blueprint, and UE5 editor domains, the count creates heavy selection and context burden.
The surface is very broad, covering Wwise authoring, MetaSounds graph construction, Blueprint wiring/scanning, UE5 actor/editor operations, templates, import/export, sync, and auditing. Explicit delete/move/rename operations and some asset lifecycle operations are missing, though WAAPI escape hatches and high-level builders cover most practical workflows.
Maintenance
Related MCP Connectors
Make all the audio for your game from a single prompt. Describe your game and your AI assistant plans every sound it needs (sound effects, ambience loops, music tracks and character voice lines), then generates them all in one go. You get several AI versions of each sound and keep the ones you like. Sounds are organized per game in folders and scenes, and the free Godot plugin installs them into your project, ready to play with one line of code. Works with Claude, Claude Code, Cursor and any MCP client, with OAuth login (no API key needed). Free plan included; sounds can be used in commercial games.
Generate game-ready 3D models, textures, and audio from natural language, over MCP.
A comprehensive Model Context Protocol (MCP) server that enables AI assistants to control Unreal E…
Make games with AI: one MCP server that connects your agent to Unity, Unreal and Godot editors.
Related MCP Servers
- AlicenseAqualityCmaintenanceA comprehensive bridge connecting AI agents to Unreal Engine 5.7 through 39 MCP tools for scene manipulation, asset management, and blueprint control. It enables real-time perception and editor automation using the Remote Control API and file-based protocols.253MIT
- AlicenseNot gradedqualityAmaintenanceUnreal Engine 5.7 editor plugin that gives AI assistants full read/write access to Blueprints, Materials, Animation, Niagara, Config, and more via MCP. 119 actions across 9 domains, pure C++, embedded Streamable HTTP server.370MIT
- AlicenseAqualityBmaintenanceA modular suite of MCP servers for Audiokinetic Wwise, enabling AI agents to browse, edit, audition, profile, and build Wwise projects through the Wwise Authoring API.155Apache 2.0
- AlicenseAqualityDmaintenanceEnables natural language control of Wwise audio middleware, allowing project auditing, batch editing, event creation, and reference checking through conversational interaction.201MIT