OpenUtau MCP
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| OPENUTAU_EXE | No | Path to OpenUtau.exe | |
| OPENUTAU_DATA_DIR | No | OpenUtau data directory (default `Documents\OpenUtau`) | |
| OPENUTAU_MCP_PORT | No | Port for the OpenUtau MCP bridge (default 51128; set the same variable for OpenUtau to move the plugin) |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
Control OpenUtau (singing synthesis) in English or Japanese.
Call openutau_status first. Live tools need OpenUtau running with the OpenUtauMcp plugin (the "bridge"). If it is not running, call launch_openutau. ustx_* / ust_* / voicebank tools work with OpenUtau closed.
Time is in ticks: 480 ticks = one quarter note (1920 = one 4/4 bar). Note positions are relative to their part.
Pitch: MIDI number or name. C4 = 60 (middle C), A4 = 69, C#4/Db4 = 61, C-1 = 0.
Indexes: "track" = track number; "part" = index among voice parts only; "note" = index in the part, sorted by position.
Lyrics (assign_lyrics / set_lyrics / ustx_assign_lyrics): Japanese = one mora per note (きゃ is one note; っ is its own note; ー becomes a "+" note that holds the previous vowel; punctuation is dropped; kanji become hiragana when pykakasi is installed). English = one word per note; write hyphens for syllables ("hel-lo") and the extra syllables become "+" extender notes.
Phonemizer by voicebank: Japanese UTAU bank -> OpenUtau.Plugin.Builtin.JapanesePresampPhonemizer ("JA VCV & CVVC"); English ARPAsing bank -> ArpasingPhonemizer ("EN ARPA"); English VCCV bank -> EnglishVCCVPhonemizer ("EN VCCV"); English X-SAMPA bank -> EnXSampaPhonemizer ("EN X-SAMPA"); English lyrics on a Japanese bank -> ENtoJAPhonemizer ("EN to JA"). Check list_phonemes: has_oto=false means the voicebank has no sample for that phoneme.
Each live edit is one undo step (undo / redo). Save with save_project.
OpenUtau(歌声合成)を英語・日本語で操作します。
まず openutau_status を呼んでください。ライブ操作には OpenUtauMcp プラグイン(ブリッジ)入りの OpenUtau が必要です。 起動していなければ launch_openutau。ustx_* / ust_* / 音源ツールは OpenUtau を閉じたままでも使えます。
時間はティック単位:四分音符 = 480(4/4 の1小節 = 1920)。音符の位置はパートの先頭からの相対値です。
音高は MIDI 番号か音名:C4 = 60(中央ド)、A4 = 69、C#4/Db4 = 61、C-1 = 0。
番号:track はトラック番号、part はボイスパートだけを数えた番号、note はパート内の位置順の番号です。
歌詞:日本語は1音符1モーラ(「きゃ」で1音符、「っ」は単独の音符、「ー」は前の母音を伸ばす「+」音符、句読点は除去、pykakasi があれば漢字をひらがなに)。 英語は1音符1単語。音節はハイフンで区切ると(hel-lo)、残りの音節が「+」の延長音符になります。
音源に合う音素化器:日本語 UTAU 音源 → JapanesePresampPhonemizer、英語 ARPAsing → ArpasingPhonemizer、 英語 VCCV → EnglishVCCVPhonemizer、英語 X-SAMPA→ EnXSampaPhonemizer、 日本語音源で英語歌詞 → ENtoJAPhonemizer。list_phonemes の has_oto=false は音源に該当サンプルがないことを示します。
ライブ編集は1回の呼び出しが1回の取り消し単位です(undo / redo)。保存は save_project。
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": false
} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| openutau_statusA | Is OpenUtau running, is the bridge reachable, and how to fix it if not. Call this first. / OpenUtau が起動しているか、ブリッジに接続できるか、できない場合の対処法。最初に呼んでください。 |
| launch_openutauA | Start OpenUtau (optionally with a project). If it is already running with the bridge, opens the project there. / OpenUtau を起動します(プロジェクト指定可)。起動済みならそのプロジェクトを開きます。 |
| close_openutauA | Close OpenUtau. Refuses if there are unsaved changes unless force=true (force discards them). / OpenUtau を終了します。未保存の変更がある場合は force=true が必要です(変更は破棄されます)。 |
| get_projectB | Summary of the open project: file, saved state, key, tempos, time signatures, tracks, voice parts. / 開いているプロジェクトの概要(ファイル、保存状態、キー、テンポ、拍子、トラック、ボイスパート)。 |
| new_projectA | Start a new empty project. force=true discards unsaved changes. / 新規プロジェクトを作成します。force=true で未保存の変更を破棄します。 |
| open_projectA | Open a project file (.ustx, .ust, .vsqx, .mid, .musicxml, .svp, ...). force=true discards unsaved changes. / プロジェクトを開きます(.ustx .ust .vsqx .mid .musicxml .svp など)。force=true で未保存の変更を破棄します。 |
| save_projectB | Save as .ustx to path, or to the current file if path is omitted. / .ustx として保存します。path 省略時は現在のファイルに上書き保存します。 |
| import_tracksC | Import the tracks of another project file into the open project. / 別のプロジェクトファイルのトラックを現在のプロジェクトに読み込みます。 |
| undoB | Undo the last edit. / 直前の編集を取り消します。 |
| redoA | Redo the last undone edit. / 取り消した編集をやり直します。 |
| set_tempoB | Set the tempo at tick 0, or add/replace a tempo change at a tick. / テンポを設定します(tick 0)。tick を指定するとその位置にテンポ変更を追加・置換します。 |
| remove_tempoB | Remove the tempo change at a tick (not tick 0). / 指定ティックのテンポ変更を削除します(tick 0 は不可)。 |
| set_time_signatureA | Set the time signature at bar 0, or add a change at a bar (e.g. 3/4 = 3, 4). / 拍子を設定します(bar 0)。bar を指定するとその小節に拍子変更を追加します(例:3/4 は 3, 4)。 |
| set_keyB | Set the project key: 0 = C ... 11 = B, or a name like "F#" / "Bb". / プロジェクトのキー:0 = C 〜 11 = B、または "F#"・"Bb" などの音名。 |
| list_singersA | Singers OpenUtau has loaded: id, name, type, location, default phonemizer, supported renderers. Singers without a default phonemizer get a "suggested_phonemizer" (a guess: confirm with rank_phonemizers). / OpenUtau が読み込んだ歌手一覧(ID、名前、種類、場所、既定の音素化器、対応レンダラー)。 既定の音素化器が無い歌手には "suggested_phonemizer" を付けます。 |
| list_phonemizersA | Installed phonemizers (type, name, tag, language, author); filter by language such as "EN" or "JA". / インストール済みの音素化器一覧。language("EN"・"JA" など)で絞り込めます。 |
| rank_phonemizersA | Find the best phonemizer for a singer by trying each installed classic phonemizer on sample lyrics and counting how many of the sounds it asks for exist in the voicebank (score 1.0 = every sound has a sample). language: "EN", "JA" or omitted for both; text: your own lyrics instead of the built-in samples. Nothing in the project changes. / 各音素化器でサンプル歌詞を音素化し、音源にサンプルがある音の割合で順位付けします (1.0 = すべての音にサンプルあり)。プロジェクトは変更しません。 |
| list_expressionsB | Project expressions (abbr, name, type, min, max, default). / プロジェクトの表情パラメータ一覧。 |
| add_trackC | Add a track. Setting a singer also applies its default phonemizer and a suitable renderer unless given. Phonemizer may be a full type name, class name or tag ("EN ARPA", "JA VCV & CVVC"). / トラックを追加します。歌手を指定すると既定の音素化器とレンダラーも設定されます。 音素化器は型名・クラス名・タグ("EN ARPA" など)で指定できます。 |
| update_trackB | Change a track: singer, phonemizer, name, renderer, volume (dB, -24..12), pan (-100..100), mute, solo. / トラックを変更します:歌手、音素化器、名前、レンダラー、音量(dB)、パン、ミュート、ソロ。 |
| remove_trackC | Remove a track and its parts. / トラックとそのパートを削除します。 |
| add_partC | Add an empty voice part to a track (position/duration in ticks; 7680 = 4 bars of 4/4). / トラックに空のボイスパートを追加します(位置・長さはティック、7680 = 4/4 で4小節)。 |
| update_partC | Rename, move (position / track) or resize a voice part. / ボイスパートの名前変更・移動(位置・トラック)・長さ変更。 |
| remove_partC | Remove a voice part. / ボイスパートを削除します。 |
| list_notesB | Notes of a voice part: index, position, duration, tone, lyric, tuning, vibrato. / ボイスパートの音符一覧(番号、位置、長さ、音高、歌詞、微調整、ビブラート)。 |
| add_notesC | Add notes to a voice part (positions relative to the part); the part grows if needed. / ボイスパートに音符を追加します(位置はパート相対)。必要ならパートを延長します。 |
| edit_notesC | Edit notes in place by index (position, duration, tone, lyric, tuning, vibrato); pitch curves are kept. / 番号で指定した音符をその場で編集します(位置・長さ・音高・歌詞・微調整・ビブラート)。ピッチ曲線は保持されます。 |
| replace_lyricsB | Write lyrics onto consecutive notes starting at note index start (one item per note, no splitting). / 音符番号 start から順に歌詞を書き込みます(1要素 = 1音符、分割なし)。 |
| delete_notesB | Delete notes by index; no indices = delete all notes in the part. / 番号で音符を削除します。indices を省略するとパートの全音符を削除します。 |
| set_note_expressionB | Set a note expression (e.g. vel, vol, atk, dec, gen, bre, clr) on notes; no indices = all notes; value null = reset to default. / 音符の表情(vel・vol・atk など)を設定します。indices 省略で全音符、value=null で既定値に戻します。 |
| set_pitchA | Replace the pitch curve of notes (scoops, falls, drifts, overshoot). At least 2 points. snap_first=true makes the first point start from the previous note's pitch, overriding its y (a normal slide); use false for a scoop or any start you set yourself. Examples: scoop up into a note (snap_first=false): [{x:-40,y:-20},{x:60,y:0}]; fall at a phrase end on a 600 ms note: [{x:-40,y:0},{x:40,y:0},{x:420,y:0},{x:600,y:-30,shape:"i"}]. / 音符のピッチ曲線を置き換えます(しゃくり・フォール・揺れ)。点は2つ以上。 |
| get_curveA | Read an expression curve of a part (e.g. dyn, pitd, tenc, brec, genc, voic): [tick, value] points, min/max/default. / パートの表情カーブを読みます(dyn・tenc・brec など)。 |
| set_curveA | Draw an expression curve through [tick, value] points (part-relative ticks), straight lines between them; values are clamped to the curve's range. Use for dynamics (dyn), DiffSinger tension (tenc), breathiness (brec), gender (genc), voicing (voic), pitch deviation (pitd, cents). / [ティック, 値] の点を直線で結んで表情カーブを描きます。 |
| clear_curveB | Reset an expression curve of a part to its default. / 表情カーブを既定値に戻します。 |
| refresh_singersA | Rescan the Singers folder so newly installed voicebanks appear without restarting OpenUtau. / Singers フォルダを再読み込みし、新しく入れた音源を OpenUtau の再起動なしで使えるようにします。 |
| list_phonemesB | Phonemes OpenUtau produced for a part (note index, lyric, position, duration, phoneme, has_oto). Use it to check pronunciation. / パートについて OpenUtau が生成した音素一覧。発音の確認に使います。 |
| assign_lyricsB | Split text into lyrics and lay out new consecutive notes from start_tick. durations / tones may be one value or a list (the last value repeats). / テキストを歌詞に分割し、start_tick から連続する新しい音符を作ります。 durations・tones は単一値かリスト(最後の値を繰り返し)。 |
| set_lyricsC | Split text into lyrics and write them onto existing notes from start_index. / テキストを歌詞に分割し、start_index 番目からの既存の音符に書き込みます。 |
| add_melodyB | Add a melody with its lyrics in one call. melody: space-separated PITCH:BEATS (r = rest). lyrics are split like set_lyrics and must give one lyric per sounding note (use "+" for held syllables). / メロディと歌詞を一度に追加します。melody は「音名:拍」(r = 休符)。歌詞は set_lyrics と同じ規則で分割され、 音の数と一致する必要があります(伸ばす音節は「+」)。 |
| fit_partB | Resize a voice part to end on the first bar line after its last note. / ボイスパートの長さを、最後の音符の後の最初の小節線までに合わせます。 |
| playB | Start playback (from tick, optionally until end_tick, optionally one track only). / 再生します(tick から、end_tick まで、track 指定でそのトラックのみ)。 |
| pauseB | Pause playback. / 再生を一時停止します。 |
| stopB | Stop playback. / 再生を停止します。 |
| seekC | Move the playback cursor. / 再生位置を移動します。 |
| export_wavA | Render the mixdown to a WAV file, or one WAV per track (per_track=true). Can take minutes. / ミックスダウンを WAV に書き出します。per_track=true でトラックごとに書き出します。数分かかることがあります。 |
| export_midiC | Export the project as a MIDI file. / プロジェクトを MIDI ファイルに書き出します。 |
| ustx_createC | Create a new .ustx file (one track, no parts). singer = voicebank id or name. / 新しい .ustx ファイルを作成します(1トラック、パートなし)。singer は音源 ID か名前。 |
| ustx_summaryB | Summary of a .ustx file (tempos, tracks, voice parts). / .ustx ファイルの概要。 |
| ustx_set_tempoB | Set the tempo at tick 0 or a tempo change at a tick in a .ustx file. / .ustx ファイルのテンポ(tick 0)またはテンポ変更を設定します。 |
| ustx_add_trackC | Add a track to a .ustx file. / .ustx ファイルにトラックを追加します。 |
| ustx_set_track_singerB | Set the singer (and phonemizer: given > voicebank default > Japanese presamp) of a track in a .ustx file. / .ustx ファイルのトラックの歌手(と音素化器)を設定します。 |
| ustx_add_voice_partC | Add an empty voice part to a .ustx file. / .ustx ファイルに空のボイスパートを追加します。 |
| ustx_add_notesB | Add notes to a voice part in a .ustx file (the part grows if needed). / .ustx ファイルのボイスパートに音符を追加します(必要ならパートを延長)。 |
| ustx_list_notesC | List the notes of a voice part in a .ustx file. / .ustx ファイルのボイスパートの音符一覧。 |
| ustx_edit_notesC | Edit notes by index in a .ustx file (position, duration, tone, lyric, tuning, vibrato). / .ustx ファイルの音符を番号で編集します。 |
| ustx_delete_notesC | Delete notes by index from a .ustx file (no indices = all). / .ustx ファイルの音符を削除します(省略で全部)。 |
| ustx_set_vibratoB | Set vibrato fields on notes in a .ustx file (no indices = all notes). length > 0 turns vibrato on. / .ustx ファイルの音符にビブラートを設定します(省略で全音符)。length > 0 で有効。 |
| ustx_assign_lyricsC | Split text into lyrics and add consecutive notes to a voice part in a .ustx file. / テキストを歌詞に分割し、.ustx ファイルのボイスパートに連続する音符を追加します。 |
| ustx_add_melodyD | add_melody for a .ustx file. / .ustx ファイル版の add_melody。 |
| ustx_fit_partD | fit_part for a .ustx file. / .ustx ファイル版の fit_part。 |
| ust_importC | Convert a classic UTAU .ust (Shift_JIS unless Charset= says otherwise) into a new .ustx file. / UTAU の .ust(既定は Shift_JIS、Charset= 行があれば従う)を新しい .ustx に変換します。 |
| ust_exportB | Export one voice part of a .ustx as a classic .ust (gaps become R rests; Shift_JIS by default). / .ustx のボイスパートを UTAU の .ust に書き出します(隙間は休符 R、既定は Shift_JIS)。 |
| list_voicebanksB | Voicebanks in the Singers folder and AdditionalSingerPath (id as OpenUtau uses it, name, author, default phonemizer). / Singers フォルダーと AdditionalSingerPath の音源一覧(OpenUtau と同じ ID)。 |
| get_voicebankB | Details of a voicebank: info, oto sets and alias count. / 音源の詳細(情報、oto セット、エイリアス数)。 |
| search_otoB | Search oto.ini aliases of a voicebank (substring match). / 音源の oto.ini エイリアスを検索します(部分一致)。 |
| note_to_midiB | Note name to MIDI number (C4 = 60). / 音名を MIDI 番号に変換します(C4 = 60)。 |
| midi_to_noteB | MIDI number to note name (60 = C4). / MIDI 番号を音名に変換します(60 = C4)。 |
| beats_to_ticksA | Quarter-note beats to ticks (1 beat = 480). / 拍数(四分音符)をティックに変換します(1拍 = 480)。 |
| ticks_to_beatsC | Ticks to quarter-note beats. / ティックを拍数に変換します。 |
| split_lyricsB | Preview how text is split into one lyric per note (language auto / ja / en). / テキストが1音符ずつの歌詞にどう分割されるかを確認します(auto / ja / en)。 |
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 70 tools
The surface is split into two near-parallel families — live-editor tools (add_notes, edit_notes, set_curve, play) and .ustx file tools (ustx_add_notes, ustx_edit_notes, ustx_assign_lyrics) — with identical purposes distinguished only by whether the project is open in the app. On top of that, lyric entry has five overlapping variants (replace_lyrics, set_lyrics, assign_lyrics, add_melody, split_lyrics), so an agent can easily pick the wrong layer or the wrong lyric tool.
Almost everything is snake_case verb_noun (add_track, remove_part, set_tempo, get_curve), and the ustx_/ust_ prefixes act as readable namespaces. Minor deviations exist: new_project instead of create_project, noun-only tools like pause/stop/seek/undo, and converter-style names (ticks_to_beats, note_to_midi) that break the verb pattern.
70 tools is heavy for a DAW integration and is inflated mainly by duplicating ~15 operations for offline .ustx editing alongside the live-editor equivalents. A single mode-switched or file-path-parameterized surface could halve the count; as listed it is well past the reasonable 3-15 range.
Coverage is genuinely broad: project lifecycle (new/open/save/launch/close), tracks, parts, notes, expressions and curves, pitch curves, playback, WAV/MIDI export, voicebank and oto inspection, and UST import/export. Gaps are minor — no explicit part-level get beyond list_notes, and no project settings/track-level expression defaults tool — but agents can work around them.