nobu
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| NOBU_SF2 | No | Override for the SoundFont file path. | |
| NOBU_MIDI_DIR | No | Override for the MIDI directory. | |
| FLUID_SYNTH_SF2 | No | Alternative override for the SoundFont file path. | |
| NOBU_OUTPUT_DIR | No | Override for the output audio directory. |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": true
} |
| logging | {} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
| extensions | {
"io.modelcontextprotocol/ui": {}
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| start_projectA | ALWAYS call this tool first, before any other, when composing a game track. Creates an empty project where layers (independent channels: melody, harmony, bass, drums) are added one by one via add_layer. Each layer may have a completely different length and rhythm from the others (e.g. a 4-note bass loop while the melody plays a 32-note phrase), matching how independent channels work on real NES/SNES hardware. |
| suggest_scale_for_moodA | Use this tool BEFORE composing any melody, harmony, or bass line. It maps the scene's EMOTION/MOOD to the technically correct musical scale (VGM theory: major = joy/safe town, dorian = heroic/adventure, phrygian = hostile/exotic, natural_minor = melancholy/dungeon, mixolydian = folk/open road, lydian = magical/dreamlike, minor_pentatonic = tension/combat). Accepted moods: safe_exploration, heroic_exploration, nostalgic_town, melancholic_dungeon, hostile_exotic_biome, magical_dreamlike, combat, victory, classic_retro. Returns the chosen scale AND a list of MIDI pitches ready for add_layer — no need to invent note numbers from memory. |
| generate_scaleA | Generate the correct MIDI notes for a musical scale, to use as a palette of valid pitches when composing. Use this tool (or suggest_scale_for_mood) ALWAYS before inventing note numbers manually — that avoids out-of-key / random-sounding melodies. scale_type accepts: major, natural_minor, major_pentatonic, minor_pentatonic, dorian, mixolydian, phrygian, lydian. |
| add_layerA | Add ONE independent layer/channel to the project. Call this tool multiple times to stack as many layers as you want (melody, harmony, bass, drums) — each layer has its own length and rhythm, without needing to match the others in note count. layer_type accepts: 'melody', 'harmony', 'bass', 'drums'. Format of 'notes': each item is [pitch_or_piece, start_time_in_beats, duration_in_beats, optional_velocity_0_to_127]. If layer_type='drums', pitch may be a string ('kick', 'snare', 'closed_hihat', 'open_hihat', 'crash', 'ride', 'clap', 'rimshot', 'low_tom', 'mid_tom', 'high_tom') or a GM percussion MIDI number. Portuguese drum names are also accepted. swing_offset: add a fixed offset (in beats, e.g. 0.02 to 0.08) to every ODD-index note, simulating light swing/humanization. Use 0.0 for straight quantized rhythm (classic chiptune aesthetic). For deliberate off-beats (e.g. hi-hat on 0.5, 1.5, 2.5), place start_time directly in the notes list — no swing_offset needed. chiptune_program (ignored if layer_type='drums'): 'pulse_lead' (melody, NES pulse timbre, GM 80), 'pulse_harmony' (countermelody, GM 81), 'triangle_bass' (bass, NES triangle approx, GM 38). |
| set_tempo_changeA | Schedule a tempo (BPM) change at a specific absolute beat. Use for horizontal resequencing inside a single file — e.g. speed up when entering boss phase 2, or slow down for tension before a climax. |
| list_layersA | List all layers already added to the project, with note counts and duration for each. Use before export_midi to verify that every planned layer (melody, bass, drums, harmony) was actually added, or to decide whether to add more. |
| export_midiA | Render all project layers into a single multi-track .mid file. Call last, after all add_layer calls. Returns loop metadata (beats and bars) for configuring loop points in the engine (Godot/Unity/ FMOD/Wwise), since MIDI does not store that natively. Default destination_dir is assets/midi/ (or NOBU_MIDI_DIR). |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 7 tools
The tools have distinct purposes, but suggest_scale_for_mood and generate_scale both deal with musical scales and could be confused if descriptions are not read carefully. However, the descriptions clarify their different use cases (mood-based vs. arbitrary scale generation).
All tool names follow a consistent verb_noun pattern in snake_case (e.g., list_layers, start_project, generate_scale). No deviations or mixing of styles.
With 7 tools, the server covers the core workflow of creating a game track: starting a project, selecting scales, adding layers, adjusting tempo, listing layers, and exporting. The count feels well-scoped for the domain.
The tool set covers the essential operations for composing a multi-layer MIDI track. Minor gaps exist, such as no tool to modify or delete a layer after addition, and no explicit tool to set initial tempo (only tempo changes). These are not critical for basic usage.