NarraLeaf

ツール

Studio の MCP サーバーが提供するすべてのツールを、対象ごとにまとめたもの

Studio の MCP サーバーには以下の 77 個のツールがあり、プラグインがさらに追加できます。プラグインのツールを参照してください。ツールの説明はエージェントが読むものなので英語で書かれており、それぞれにいつ使うかが書かれています。「Studio での表示」は、Studio がエージェントログとステータスバーでその呼び出しを呼ぶ名前です。

「プロジェクトを変更」が「する」のツールは、エージェントによる変更を許可がオフの間は拒否されます。開いているプロジェクトに対するものは、エージェントの一時停止中、プロジェクトの凍結中、Team のライブセッション中にも拒否されます。それ以外のツールは読み取りだけを行います。テストプレイもこちらに含まれるため、エージェントは変更の許可がなくてもゲームを確認できます。

プロジェクトを対象とするツールはすべて、省略可能な project(プロジェクトフォルダーの絶対パス)を受け取ります。必要になるのは複数のプロジェクトを開いているときだけです。

セッションとガイド

ツールStudio での表示プロジェクトを変更用途
agent_statusStudio の状態しないStudio で開いているプロジェクト、変更が許可されているか、フルアクセスがオンか、エージェントが一時停止中か、どのディレクトリからファイルを読み込めるかを返す。最初に呼ぶ
agent_guideガイドを読むしないNarraLeaf のゲーム制作ガイドの 1 章を Markdown で返す
request_folder_accessフォルダーへのアクセスを要求しない大きな読み込みの前に、指定したファイルのあるフォルダーの読み取りを、Studio のウィンドウ 1 つで作者に求める。答えは granted、denied、pending のいずれか

プロジェクト

ツールStudio での表示プロジェクトを変更用途
project_createプロジェクトを作成するテンプレートから NarraLeaf プロジェクトを新規作成し、Studio で開く
project_openプロジェクトを開くしない既存のプロジェクトディレクトリを Studio で開く。開いている場合はそのプロジェクトに切り替える
project_infoプロジェクトの概要しない名前、デザイン解像度、言語、開始ページと開始シーン、プレイヤーの初期値(最初の文字速度、オート送りの間隔、音量、スキップ)、ストーリー・シーン・ページ・アセット・キャラクター・変数の数
project_settings_setプロジェクト設定を変更するプロジェクトの名前、デザイン解像度、ゲームの言語、プレイヤーの初期値(新しいプレイヤーの設定が始まる値)を変更する。プレイヤーが保存した設定はそのまま

アセット

ツールStudio での表示プロジェクトを変更用途
assets_listアセット一覧しないプロジェクトのアセットを id、名前、種類、フォルダーとともに一覧表示する
assets_importファイルを読み込むするディスク上のファイルをプロジェクトに読み込む。プロジェクトと許可したフォルダーの外のファイルは、先に Studio がそのフォルダーについて作者に尋ねる。プロジェクトにあるアセットと内容が同一のファイルは読み込み直さず、既存のアセットの名前を返す。ファイルのないパスは見つからないと報告する
asset_deleteアセットを削除するプロジェクトからアセットを削除する。たとえば、スケルトンテンプレートに残ったサンプルの画像や音楽。まだ使われている間は拒否し、使っている場所を示す
asset_usageアセットの使用箇所しないアセットが使われている場所をすべて示す。Studio の使用状況インデックスが数える使用と、ストーリー、ページ、ブループリントにその id が書かれているすべての箇所
assets_placeholder仮画像を作成する単色の PNG を生成し、必要ならキャプションを入れて、画像アセットとして読み込む
audio_tracks_listオーディオトラック一覧しない/bgm track= とサウンドのプロパティで指定できるオーディオトラック(音楽、効果音、ボイス、独自のトラック)を一覧表示する

キャラクターと変数

ツールStudio での表示プロジェクトを変更用途
characters_listキャラクター一覧しないキャラクターを id、名前、別名、名前の色、種類、見た目(プリセットのキャラクターのポーズ、レイヤー立ち絵の軸とレイヤー、Live2D や Spine のキャラクターのモデル)、entranceTransform(立ち絵を描く大きさと立ち位置)、ダイアログのアバターとともに一覧表示する
character_upsertキャラクターを作成・更新するキャラクターを作成する。または、この id か完全に一致する name を持つキャラクターを、ダイアログのアバターも含めて更新する
character_layered_setレイヤー立ち絵を設定するレイヤー立ち絵のキャラクターを作成する。または既存のキャラクターの見た目、つまり軸とそのタグ、下から上へのレイヤーを置き換える
character_layers_importファイルからレイヤー立ち絵を構成する<prefix>_<layer> と <prefix>_<layer>_<tag> という名前の画像アセット、または PSD からレイヤー立ち絵のキャラクターを構成する
character_previewキャラクターの見た目をプレビューしないキャラクターの 1 つの見た目を、Studio のエディタと同じように合成した画像で返す
character_deleteキャラクターを削除するキャラクターを削除する。たとえば、スケルトンテンプレートのサンプルのキャラクター
variables_list変数一覧しないプロジェクトのグローバル変数(セーブデータとともに保存されるもの、またはセーブをまたいで保持されるもの)を一覧表示する
variable_upsert変数を作成・更新するグローバル変数を宣言する。または、id(名前を変える方法。行とノードは id を保持するので追従する)か完全に一致する name で既存の変数を更新する
variable_delete変数を削除するグローバル変数を削除する。たとえば、スケルトンテンプレートのサンプルの変数

キャラクターの編集は 1 回ごとに 1 ステップの取り消しになります。ほかの種類のキャラクターをレイヤー立ち絵に、またはレイヤー立ち絵をポーズに切り替えると見た目が失われるため、character_upsert、character_layered_set、character_layers_import は、呼び出しに confirmSwitch: true がない限りこれを拒否し、その見た目を選んでいるストーリーの行を示します。Live2D と Spine のキャラクターは読み取りだけで、設定は Studio のキャラクターエディタで行います。

ダイアログのアバターは、ダイアログとバックログでセリフの横に表示される顔の画像です。character_upsert は、より具体的なものがない場所に表示する defaultAvatar と、avatars を受け取ります。avatars はポーズごとに 1 枚、レイヤー立ち絵の場合は avatarAxes に挙げた軸のタグの組み合わせごとに 1 枚で、たとえば衣装にかかわらず表情ごとに 1 枚にできます。どちらもなければ、作者がキャラクターパネルを開いたときに Studio が立ち絵からアバターを切り出します。Live2D と Spine のキャラクターには既定のアバターだけがあります。

ストーリー

ツールStudio での表示プロジェクトを変更用途
story_commandsストーリーコマンド一覧しないストーリーコマンド(/bg、/show、/bgm、/menu、/if、/jump など)を分類ごとに一覧表示する、または検索する
story_commandストーリーコマンドの詳細しない1 つのストーリーコマンドの引数、位置の順序、既定値、使用例
story_targetsストーリー行で使える名前しないストーリーの行が解決できる名前をすべて一覧表示する。キャラクター、画像、音声、動画、オーディオトラック、変数、シーン、ページ、各シーンの開始時の背景と音楽
story_listストーリーとシーン一覧しないストーリーとその章、シーンを順に一覧表示し、開始シーンに印を付ける
story_showシーンをテキストで読むしない1 つのシーンを .story テキスト形式で、revision とともに出力する
story_applyシーンを書き込むするsource の #scene ヘッダーが指すシーンの行を、source の行で置き換える
scene_createシーンを作成するストーリーに空のシーンを作成する。指定したストーリーがなければ、それも作成する
scene_renameシーン名を変更するシーンの名前を変える。ジャンプはシーンの id を保持しているので追従する
story_renameストーリー名を変更するストーリーの名前を変える。たとえば、Studio のストーリー一覧に名前が表示される、スケルトンテンプレートのストーリー
chapter_renameチャプターの名前を変更するストーリーのチャプターの名前を変える。チャプターはシーンをまとめるだけなので、ほかには何も変わらない
chapter_deleteチャプターを削除する空のチャプターを削除する。シーンが残っている間は拒否し、そのシーンを示す
scene_set_entry開始シーンを設定するプレイヤーがスタートを押したときにゲームが始まるシーンを設定する
scene_deleteシーンを削除するシーンとその行を削除する。たとえば、スケルトンテンプレートのサンプルのシーン

インターフェース

ツールStudio での表示プロジェクトを変更用途
ui_widgetsウィジェット一覧しないインターフェースのウィジェットの種類(nl.button、nl.text、nl.container、nl.list など)と、それぞれを挿入できる場所を一覧表示する
ui_widgetウィジェットの詳細しない1 つのウィジェットの種類のすべて。プロパティと既定値、バインドできるプロパティ、構成する部品、ブループリントイベント、コマンド、注記
ui_usageウィジェットの使用例しない同梱のスケルトンテンプレート(またはこのプロジェクト)でのウィジェットの実際の使用例を、貼り付けて編集できる .ui 形式で出力する
ui_surfacesページとコンポーネント一覧しないページ、ゲーム UI(ダイアログ、選択肢など)、コンポーネントを、要素のパス、id、付いているブループリントとともに一覧表示する
ui_showページをテキストで読むしないページまたはコンポーネントを、id とプロパティを含めて .ui テキスト形式で、revision とともに出力する
ui_selection選択中の要素しない作者がインターフェースエディタで選択しているページと要素、およびそのプロパティ
ui_screenshotページのスクリーンショットしないページ(またはその中の 1 要素)をゲーム内の見た目で描画し、画像を返す
ui_applyページを書き込むする.ui ドキュメントを適用する。surface または component の各ブロックが、そのページの要素ツリー全体を置き換える
ui_patch要素を編集するページを書き直さずに行う小さな編集。要素の追加、プロパティの設定、移動とサイズ変更、親の変更、名前の変更、削除、コンポーネントの配置
ui_page_renameページ名を変更するページまたはゲーム UI の名前を変える。それを開く Go Page ノードとフレームは id を保持しているので追従する
ui_page_deleteページを削除するページまたはゲーム UI を、その要素とブループリントごと削除する。開始ページと、まだ何かが開いたり指定したりしているページは拒否し、その場所を示す
ui_page_set_entry開始ページを設定するゲームが最初に開くページ(スプラッシュやタイトル)を設定する
ui_install_standard_screens標準画面を導入するスケルトンテンプレートの動作する画面をプロジェクトに取り込む。スプラッシュ、タイトル、セーブ、ロード、設定、バックログ、鑑賞、確認のページ、ダイアログ、選択肢メニュー、クイックメニュー、通知と、それらのコンポーネント、その裏のブループリントすべて
ui_templatesインターフェーステンプレートしないStudio のオンラインのテンプレートストアにあるインターフェーステンプレートを一覧表示する。テンプレートはレイアウトで、ほとんどはブループリントを持たないため、つなぐまでボタンは何もしない
ui_template_applyテンプレートを適用するテンプレートのページを新しいページとしてプロジェクトに追加する。開始ページにはならない。ページごとに、ブループリントとバインドされたプロパティがいくつ付いてきたかを返す
brand_get配色を読むしないプロジェクトのブランドの配色とフォント
brand_set配色を変更する配色の色(id で指定。新しい id は追加される)とプロジェクトのフォントスタックを設定する

ui_install_standard_screens は、空のテンプレートから作ったプロジェクトや、インターフェースを失ったプロジェクトのためのものです。スタートはプロジェクト自身のストーリーを始め、画面が使うファイル、配色の項目、翻訳キー、入力アクション、セーブのフィールド、永続変数も一緒に取り込まれます。プロジェクトがすでに埋めているゲーム UI のスロットは、呼び出しが replace: true を渡さない限りそのままです。現在の開始ページが空なら、スプラッシュが開始ページになります。プロジェクトが実行していないプラグインを必要とするページ(Gallery の鑑賞画面など)は、それを開くボタンとともに除かれます。導入全体が 1 ステップの取り消しで、dryRun: true は書き込まずに何を追加するかを返します。

テンプレートストアのページはロジックのないレイアウトです。エージェントがブループリントでつなぐまで、スタートボタンもセーブスロットもスライダーも何もしません。すぐに動く画面が必要なら、標準画面から始めるほうが適しています。

ブループリント

ツールStudio での表示プロジェクトを変更用途
blueprint_nodesブループリントノード一覧しないブループリントノードを検索する。このプロジェクトで読み込まれたプラグインのノードも含む
blueprint_nodeブループリントノードの詳細しない1 つのノードの種類のピン、インスペクターのパラメーター、使えるグラフの種類、スコープ
blueprint_listブループリント一覧しないブループリントを、所有者(ページまたは要素)とイベントの起点とともに一覧表示する
blueprint_showブループリントをテキストで読むしない1 つのブループリント(または 1 つの所有者のすべて)を .bp テキスト形式で出力する
blueprint_applyブループリントを書き込むする.bp ドキュメントを適用する。各 blueprint ブロックが、その所有者のグラフをすべて置き換える
blueprint_removeブループリントを削除するブループリントを 1 つ削除する。主に、属していた要素が削除された後に残ったもの。ほかのブループリントやバインドされたプロパティがまだ指定している間は拒否する

すべての .bp ドキュメントが通るチェックは、別のページやゲーム UI の要素を指す Element ノードを拒否します。ブループリントが届くのは自分のページの要素だけだからです。また、本体がループに戻る配線を持たないループには警告を出します。そのループは 1 回だけ実行されて止まります。blueprint_remove は dryRun: true を受け取ります。

翻訳とボイス

ツールStudio での表示プロジェクトを変更用途
localization_status翻訳の進捗しない各翻訳先の言語の進み具合を、状態別・出どころ別に返す。言語を 1 つ指定すると、シーンごとの残りのセリフも返す
localization_list翻訳するテキストを一覧しない1 つの言語の翻訳単位を読む順に 1 ページずつ一覧にする。それぞれ原文、翻訳、状態、rev を含む
localization_set翻訳を書き込むする1 つの言語の翻訳を、1 回に最大 1000 件、1 ステップの取り消しとして書き込む
voice_statusボイスの進捗しないボイスの言語、収録ファイル名のパターン、選択肢にボイスを付けるか、言語別・キャラクター別に音声のあるセリフの数
voice_listボイスのセリフを一覧しない1 つのボイス言語のボイス付きセリフをストーリー順に 1 ページずつ一覧にする。それぞれ想定ファイル名、リンクした音声、状態を含む
voice_linkボイスをリンクするボイス付きセリフに音声アセットを 1 つずつリンク、リンク解除、または承認する。1 ステップの取り消しになる
voice_auto_link名前でボイスをリンクするボイス付きの各セリフを、収録ファイル名のパターンで同じ名前になる音声アセットにリンクする。1 ステップの取り消しになる
voice_settings_setボイス設定を変更するボイスの言語、収録ファイル名のパターン、選択肢にボイスを付けるかを設定する

翻訳単位は、ストーリーのセリフ 1 行、キャラクター・シーン・エンディング・/rename の名前、ページやコンポーネント上の語、名前付きの翻訳キー、プラグインが提供するテキストのいずれかです。どれも同じ id の体系を使うので、同じように一覧にして書き込めます。ストーリーのセリフの id は、そのままボイスのセリフの id でもあります。

  • 状態。 翻訳の状態は missing、machine、translated、reviewed、stale のいずれかで、最後のものは翻訳した後に原文が変わったことを表します。localization_set は指定がなければ machine で書き込み、翻訳の表では機械翻訳と表示されます。音声の状態は missing、linked、approved、stale のいずれかで、ボイスの表ではリンク済みの音声は収録済み、古いものは古いと表示されます。
  • マークアップ。 翻訳単位の原文では、ゲームが埋める値が {0}、装飾した語や間が ‹1›word‹/1› や ‹2/› のようなランタグで示されます。これらや {name} プレースホルダー、改行を失った翻訳も書き込まれますが、その単位には警告が付きます。
  • リビジョン。 各単位には rev があります。エージェントが一覧にした後に原文が変わった単位は飛ばされ、新しい原文とともに返されます。
  • 収録ファイル名のパターン。 既定は {scene}_{index}_{character} で、{locale} と {unit} も使えます。大文字と小文字、空白、句読点、フォルダーを無視して、各アセットのライブラリ上の名前と照合します。複数のアセットや複数のセリフが共有する名前は、推測せずにあいまいなものとして返します。

ゲームのテキストの言語は project_settings_set で、ボイスの言語は voice_settings_set で設定します。localization_set、voice_link、voice_auto_link は dryRun: true を受け取り、チェックだけを行って何も書き込みません。character_layered_set と character_layers_import も同じです。

チェックとビルド

ツールStudio での表示プロジェクトを変更用途
lintプロジェクトをチェックしないプロジェクトのチェックルールをすべて実行し、結果をエラーから順に 1 ページずつ返す。答えの冒頭にレポート全体でのルールごとの件数がある。rule で 1 つのルールや story/ のような分類に絞り、cursor と limit でページを送る
testプロジェクトのテストを実行しない組み込みのテストを画面なしで実行する。narraleaf-studio:route-coverage(すべてのシーンに到達できるか)、narraleaf-studio:reachable-endings、narraleaf-studio:project-diagnostics
playtest_startゲームをプレイしないDev Mode でゲームを開く。タイトルページから、またはシーン(と行)から始める
playtest_advanceプレイを進めるしない実行中のストーリーを steps 行だけ読み進める。クリック待ち、時間指定の待機、動画を越えて進み、選択肢メニューかエンディングで止まって、エンディングの名前を返す
playtest_screenshotプレイ画面のスクリーンショットしない実行中の Dev Mode のゲームを、プレイヤーに見えるとおりに撮る。ステージとそのゲーム UI、その上に開いているすべてのページやレイヤー。view: "stage" はセーブのサムネイルと同じくステージだけを撮る
playtest_clickプレイ中にクリックしない実行中のゲームのインターフェースの要素を、プレイヤーのマウスと同じようにクリックする。要素は id、名前のパス、一意な名前、表示されている文字で指定し、何が開いたか、閉じたか、始まったかを返す
playtest_hoverプレイ中にポインターを重ねるしない要素を押さずにポインターを重ね、ホバー時の見た目と On Mouse Enter のグラフを動かす
playtest_keyプレイ中にキーを押すしないプレイヤーのキーボードと同じようにキーを押し、そのキーに割り当てた入力アクションとフォーカス移動を反応させる。右クリックとマウスホイールも送れる
playtest_stopプレイを終了しないDev Mode のゲームを閉じる
console_readコンソールを読むしないStudio のコンソールの最近の行(ビルド、ストーリー、ブループリント、ランタイムのチャンネル)
buildゲームをビルドするプロジェクトの実行可能なパッケージをビルドする。Studio のビルドダイアログと同じ処理を通る

テストプレイのツールは、ゲームのウィンドウを前面に出さずに操作します。テストプレイの答えにはどれも、その回の実行で Dev Mode が報告したエラーと警告が、それぞれのシーンと行、またはページとともに含まれます。Dev Mode のウィンドウの問題バーが数えるものと同じです。

プラグインのツール

プラグインは、エージェント向けに独自のツールを提供できます。これらは Studio のツールと並んで、プラグイン ID とツール名からなる名前で提供されます。. と - はすべて _ に置き換えられ、2 つの部分は __ でつながれます。Gallery の narraleaf.gallery.add_entries は narraleaf_gallery__add_entries として提供されます。

プラグインのツールが提供されるのは、そのプラグインを読み込み、そこで有効にしているプロジェクトが開いている間だけです。状況が変わると、Studio の通知ストリームを開いたままのクライアントには一覧が変わったことが通知され、それ以外のクライアントは次に一覧を取得したときに新しい一覧を受け取ります。agent_status は、開いている各プロジェクトが提供するプラグインのツールを示します。

プラグインのツールは Studio 自身のツールと同じ検査を通り、「プロジェクトを変更」の意味も同じです。設定 → エージェント連携 → プラグインのツールで、プラグインごとにすべてのツールをオフにできます。プラグインの作者は エージェント用ツールを参照してください。

プラグインはガイドの章を同梱することもでき、agent_guide に plugin:<plugin id> を渡して読みます。

組み込みの Gallery プラグインは鑑賞画面を埋めます。ガイドの章は plugin:narraleaf.gallery です。表示名はプラグイン自身のもので、翻訳されていません。

ツールStudio での表示プロジェクトを変更用途
narraleaf_gallery__listRead the galleryしない鑑賞画面のカタログ。グループ、各種類(cg、scene、music、voice)の項目とその id とバリアント、ロック中の見た目
narraleaf_gallery__add_entriesAdd gallery entriesする鑑賞画面に項目を追加する。1 ステップで取り消せる
narraleaf_gallery__update_entriesEdit gallery entriesする既存の項目を編集する。1 ステップで取り消せる
narraleaf_gallery__remove_entriesRemove gallery entriesするid を指定してギャラリーから項目を削除する。1 ステップで取り消せる
narraleaf_gallery__set_groupsSet gallery groupsするギャラリーのグループ一覧を順序どおりに置き換える。1 ステップで取り消せる
narraleaf_gallery__set_settingsSet the gallery's locked lookするロック中の項目が鑑賞画面でどう見えるかを設定する。1 ステップで取り消せる

テキスト形式

エージェントは、プロジェクトの内容を 3 つのテキスト形式で読み書きします。

形式内容読み取り書き込み
.story1 つのシーン。ヘッダー、行、分岐story_showstory_apply
.uiページ、ゲーム UI、コンポーネント。要素とそのプロパティui_showui_apply、ui_patch
.bp1 つの所有者のブループリントblueprint_showblueprint_apply

読み取りはそれぞれ revision を返します。それを付けた書き込みは、その間に内容が変わっていれば stale_revision で拒否されます。story_apply、ui_apply、ui_patch、blueprint_apply は dryRun: true を受け取り、テキストをチェックするだけで何も書き込みません。

.story のシーンで表せることの一部です。

  • 装飾した語。 セリフ、地の文、選択肢では、{b}…{/b}、{i}…{/i}、{color=…}…{/color} で行の一部を装飾でき、1 行の中で入れ子にできます。この形式にタグのない装飾(ルビや文字サイズなど)を使った行は » の行として読み戻されるので、そのまま残します。
  • 正確な位置。 /show、/image、/text、/transform の pos=x,y は、オブジェクトの中心を置く位置です。x と y はステージに対する割合で、x は左端(0)から右端(1)、y は下端(0)から上端(1)へ向かいます。left、center、right はそれぞれ 0.25,0.5、0.5,0.5、0.75,0.5 です。pos= と一緒に使う xoffset= と yoffset= はデザイン上のピクセルを加え、yoffset が正なら上へ動きます。
  • ブループリントを実行する行。 ストーリーの行は、再生がそこに来たときに自分のブループリントを実行できます。プラグインのノードを呼ぶものも含みます。たとえば CG が表示された瞬間に鑑賞画面の項目を解放する、実績を付与する、といった用途です。エージェントはブループリントを blueprint_apply で、行を story_apply で書き込みます。

形式の詳細はガイドの story-format、ui-format、blueprint-format の章にあります。どのコマンド、ウィジェット、ノードがあるかは、カタログ系のツール story_commands、story_command、story_targets、ui_widgets、ui_widget、ui_usage、blueprint_nodes、blueprint_node が答えます。これらは実行中の Studio から読み取るので、エージェントは記憶に頼らずこれらに問い合わせるべきです。

ガイド

agent_guide は chapter を 1 つ受け取ります。省略すると、ある章をすべて一覧にします。

章内容
workflow要件の確認からビルドまでの作業の順序
story-format.story 形式
ui-format.ui 形式
blueprint-format.bp 形式
ui-designビジュアルノベルのインターフェースの設計
script-adaptation台本をシーンにする方法
layered-spritesレイヤー立ち絵のキャラクター。軸、レイヤー、ファイルや PSD からの構成
verify-and-shipチェック、テスト、テストプレイ、ビルド
localization-and-voiceゲームの翻訳とボイスの収録音声のリンク
troubleshooting拒否とその対処
plugin:<plugin id>有効なプラグインが同梱する章。たとえば plugin:narraleaf.gallery

同じ章は MCP リソース narraleaf://guide/<chapter> として、プラグインの章は narraleaf://guide/plugin/<plugin id> として提供されます。make_game プロンプトは、省略可能な brief を付けて workflow から作業を始めます。

このページの目次