[English](TOOL_REFERENCE.md) # uLoopMCP ツールリファレンス このドキュメントでは、全uLoopMCPツールの詳細仕様を提供します。 ## 共通レスポンス形式 すべてのUnity MCPツールは以下の共通要素を持ちます: ### 共通レスポンスプロパティ すべてのツールには以下のプロパティが自動的に含まれます: - `Ver` (string): CLIとの互換性チェック用のuLoopMCPサーバーバージョン --- ## Unity コアツール ### 1. compile - **説明**: AssetDatabase.Refresh()を実行後、コンパイルを行います。詳細なタイミング情報付きでコンパイル結果を返します。 - **パラメータ**: - `ForceRecompile` (boolean): 強制再コンパイルを実行するかどうか(デフォルト: false) - `WaitForDomainReload` (boolean): Domain Reload完了まで待機するかどうか(デフォルト: false) - **レスポンス**: - `Success` (boolean | null): コンパイルが成功したかどうか。ForceRecompile=true時はDomain Reload完了まで結果が取得できないためnull - `ErrorCount` (number | null): エラーの総数。ForceRecompile=true時はnull - `WarningCount` (number | null): 警告の総数。ForceRecompile=true時はnull - `Errors` (array | null): コンパイルエラーの配列。ForceRecompile=true時はnull - `Message` (string): エラーメッセージ - `File` (string): エラーが発生したファイルパス - `Line` (number): エラーが発生した行番号 - `Warnings` (array | null): コンパイル警告の配列。ForceRecompile=true時はnull - `Message` (string): 警告メッセージ - `File` (string): 警告が発生したファイルパス - `Line` (number): 警告が発生した行番号 - `Message` (string): 追加情報のためのオプションメッセージ - `ProjectRoot` (string): Unityプロジェクトのルートパス。WaitForDomainReload=true時のみセットされる ### 2. get-logs - **説明**: フィルタリングおよび高度な検索機能付きでUnityコンソールからログ情報を取得します - **パラメータ**: - `LogType` (enum): フィルタするログタイプ - "Error", "Warning", "Log", "All"(デフォルト: "All") - `MaxCount` (number): 取得するログの最大数(デフォルト: 100) - `SearchText` (string): ログメッセージ内で検索するテキスト(空の場合はすべて取得)(デフォルト: "") - `UseRegex` (boolean): 検索に正規表現を使用するかどうか(デフォルト: false) - `SearchInStackTrace` (boolean): スタックトレース内も検索対象に含めるかどうか(デフォルト: false) - `IncludeStackTrace` (boolean): スタックトレースを表示するかどうか(デフォルト: false) - **レスポンス**: - `TotalCount` (number): 利用可能なログの総数 - `DisplayedCount` (number): このレスポンスで表示されるログの数 - `LogType` (string): 使用されたログタイプフィルタ - `MaxCount` (number): 使用された最大数制限 - `SearchText` (string): 使用された検索テキストフィルタ - `IncludeStackTrace` (boolean): スタックトレースが含まれているかどうか - `Logs` (array): ログエントリの配列 - `Type` (string): ログタイプ(Error, Warning, Log) - `Message` (string): ログメッセージ - `StackTrace` (string): スタックトレース(IncludeStackTraceがtrueの場合) ### 3. run-tests - **説明**: Unity Test Runnerを実行し、包括的なレポート付きでテスト結果を取得します - **パラメータ**: - `FilterType` (enum): テストフィルタのタイプ - "all"(0), "exact"(1), "regex"(2), "assembly"(3)(デフォルト: "all") - `FilterValue` (string): フィルタ値(FilterTypeがall以外の場合に指定)(デフォルト: "") - `exact`: 個別テストメソッド名(完全一致)(例:io.github.hatayama.uLoopMCP.ConsoleLogRetrieverTests.GetAllLogs_WithMaskAllOff_StillReturnsAllLogs) - `regex`: クラス名または名前空間(正規表現パターン)(例:io.github.hatayama.uLoopMCP.ConsoleLogRetrieverTests, io.github.hatayama.uLoopMCP) - `assembly`: アセンブリ名(例:uLoopMCP.Tests.Editor) - `TestMode` (enum): テストモード - "EditMode"(0), "PlayMode"(1)(デフォルト: "EditMode") - **PlayMode注意**: PlayModeテスト実行時は、一時的にdomain reloadが無効化されます - `SaveBeforeRun` (boolean): 未保存のロード済みScene変更と現在のPrefab Stage変更を保存してからテストを実行(デフォルト: false) - **レスポンス**: - `Success` (boolean): テスト実行が成功したかどうか - `Message` (string): テスト実行メッセージ - `CompletedAt` (string): テスト実行完了タイムスタンプ(ISO形式) - `TestCount` (number): 実行されたテストの総数 - `PassedCount` (number): 合格したテストの数 - `FailedCount` (number): 失敗したテストの数 - `SkippedCount` (number): スキップされたテストの数 - `XmlPath` (string): NUnit XML結果ファイルのパス(テスト失敗時に自動保存)。XMLファイルは `{project_root}/.uloop/outputs/TestResults/` フォルダに保存されます ### 4. clear-console - **説明**: クリーンな開発ワークフローのためにUnityコンソールログをクリアします - **パラメータ**: - `AddConfirmationMessage` (boolean): クリア後に確認ログメッセージを追加するかどうか(デフォルト: false) - **レスポンス**: - `Success` (boolean): コンソールクリア操作が成功したかどうか - `ClearedLogCount` (number): コンソールからクリアされたログの数 - `ClearedCounts` (object): タイプ別のクリアされたログの内訳 - `ErrorCount` (number): クリアされたエラーログの数 - `WarningCount` (number): クリアされた警告ログの数 - `LogCount` (number): クリアされた情報ログの数 - `Message` (string): クリア操作結果を説明するメッセージ - `ErrorMessage` (string): 操作が失敗した場合のエラーメッセージ ### 5. find-game-objects - **説明**: 高度な検索条件(コンポーネントタイプ、タグ、レイヤーなど)で複数のGameObjectを検索します - **パラメータ**: - `NamePattern` (string): 検索するGameObject名のパターン(デフォルト: "") - `SearchMode` (enum): 検索モード - "Exact", "Path", "Regex", "Contains", "Selected"(デフォルト: "Exact") - `RequiredComponents` (array): GameObjectが持つ必要のあるコンポーネントタイプ名の配列(デフォルト: []) - `Tag` (string): タグフィルター(デフォルト: "") - `Layer` (number): レイヤーフィルター(デフォルト: null) - `IncludeInactive` (boolean): 非アクティブなGameObjectを含めるかどうか(デフォルト: false) - `MaxResults` (number): 返す結果の最大数(デフォルト: 20) - `IncludeInheritedProperties` (boolean): 継承プロパティを含めるかどうか(デフォルト: false) - **レスポンス**: - `results` (array): 見つかったGameObjectの配列 - `name` (string): GameObject名 - `path` (string): 完全な階層パス - `isActive` (boolean): GameObjectがアクティブかどうか - `tag` (string): GameObjectタグ - `layer` (number): GameObjectレイヤー - `components` (array): GameObject上のコンポーネントの配列 - `type` (string): コンポーネントタイプ名 - `fullTypeName` (string): 完全なアセンブリ修飾タイプ名 - `properties` (array): コンポーネントプロパティ(IncludeInheritedPropertiesがtrueの場合) - `totalFound` (number): 見つかったGameObjectの総数 - `errorMessage` (string): 検索が失敗した場合のエラーメッセージ - `resultsFilePath` (string): 結果がファイルにエクスポートされた場合のファイルパス - `message` (string): 操作メッセージ - `processingErrors` (array): シリアライズに失敗したオブジェクトの配列 - `gameObjectName` (string): 失敗したGameObjectの名前 - `gameObjectPath` (string): 失敗したGameObjectのパス - `error` (string): エラーの説明 --- ## Unity 検索・発見ツール ### 6. get-hierarchy - **説明**: Unity階層構造をネストされたJSON形式で取得します - **パラメータ**: - `IncludeInactive` (boolean): 階層結果に非アクティブなGameObjectを含めるかどうか(デフォルト: true) - `MaxDepth` (number): 階層を探索する最大深度(無制限深度の場合は-1)(デフォルト: -1) - `RootPath` (string): 階層探索を開始するルートGameObjectパス(すべてのルートオブジェクトの場合は空/null)(デフォルト: null) - `IncludeComponents` (boolean): 階層内の各GameObjectのコンポーネント情報を含めるかどうか(デフォルト: true) - `IncludePaths` (boolean): ノードのパス情報を含めるかどうか(デフォルト: false) - `UseComponentsLut` (string): コンポーネント用LUTの使用 - "auto", "true", "false"(デフォルト: "auto") - `UseSelection` (boolean): 現在選択中のGameObjectをルートとして使用するかどうか。trueの場合、RootPathは無視されます(デフォルト: false) - **レスポンス**: - `message` (string): クライアントがJSONファイルを参照するための案内メッセージ - `hierarchyFilePath` (string): 階層データが保存されたファイルパス(例: "{project_root}/.uloop/outputs/HierarchyResults/hierarchy_2025-07-10_21-30-15.json")。エクスポートされたJSONファイルには `hierarchy`(GameObjectのネスト配列)と `context`(シーン情報、ノード数、最大深度)が含まれる ### 7. execute-dynamic-code - **説明**: Unity Editor内で動的C#コードを実行します。セキュリティレベルに応じてAPI利用を制限し、using文の自動処理やエラーメッセージの改善機能を提供します - **パラメータ**: - `Code` (string): 実行するC#コード(デフォルト: "") - `Parameters` (Dictionary): 実行時パラメータ(デフォルト: {}) - `CompileOnly` (boolean): コンパイルのみ実行(実行はしない)(デフォルト: false) - **レスポンス**: - `Success` (boolean): 実行が成功したかどうか - `Result` (string): 実行結果 - `Logs` (array): ログメッセージの配列 - `CompilationErrors` (array): コンパイルエラーの配列(存在する場合) - `Message` (string): エラーメッセージ - `Line` (number): エラーが発生した行番号 - `Column` (number): エラーが発生した列番号 - `ErrorCode` (string): コンパイラーエラーコード(CS0103など) - `Hint` (string): エラー解決のためのオプションヒント - `Suggestions` (array of string): 修正候補(例: usingの追加や完全修飾名の使用) - `Context` (string): エラー周辺のコード行とキャレットポインタ - `PointerColumn` (number): キャレット描画用のポインタカラム(1-based) - `ErrorMessage` (string): エラーメッセージ(失敗時) - `SecurityLevel` (string): 現在のセキュリティレベル("Disabled", "Restricted", "FullAccess") - `UpdatedCode` (string): 更新されたコード(修正適用後) - `DiagnosticsSummary` (string): 診断情報のサマリー(ユニークエラー数、総数、最初のエラー概要) - `Diagnostics` (array): リッチクライアント向けの構造化された診断情報(CompilationErrorsと同じ構造) ### 8. focus-window - **説明**: macOSおよびWindowsでUnity Editorウィンドウを前面に表示します - **パラメータ**: なし - **レスポンス**: - `Success` (boolean): 操作が成功したかどうか - `Message` (string): 操作結果メッセージ - `ErrorMessage` (string): 操作が失敗した場合のエラーメッセージ ### 9. screenshot - **説明**: Unity EditorWindowのスクリーンショットを撮影してPNG画像として保存します。名前による柔軟なマッチングモードで任意のEditorWindowをキャプチャ可能です - **パラメータ**: - `WindowName` (string): キャプチャするウィンドウ名(例: "Game", "Scene", "Console", "Inspector", "Project", "Hierarchy")(デフォルト: "Game") - `ResolutionScale` (number): キャプチャ画像の解像度スケール、0.1〜1.0(デフォルト: 1) - `MatchMode` (enum): ウィンドウ名のマッチングモード(すべて大文字小文字を区別しない) - "exact", "prefix", "contains"(デフォルト: "exact") - `exact`: ウィンドウ名が完全に一致する必要があります - `prefix`: ウィンドウ名が入力で始まる必要があります - `contains`: ウィンドウ名に入力が含まれている必要があります - `OutputDirectory` (string): スクリーンショット保存先のディレクトリパス。空の場合はデフォルトパス(.uloop/outputs/Screenshots/)を使用。絶対パスも指定可能(デフォルト: "") - **レスポンス**: - `ScreenshotCount` (number): キャプチャされたウィンドウの数 - `Screenshots` (array): スクリーンショット情報の配列 - `ImagePath` (string): 保存されたPNGファイルの絶対パス - `FileSizeBytes` (number): 保存されたファイルのサイズ(バイト) - `Width` (number): キャプチャ画像の幅(ピクセル) - `Height` (number): キャプチャ画像の高さ(ピクセル) ### 10. control-play-mode - **説明**: Unity Editorのプレイモードを制御します(再生/停止/一時停止) - **パラメータ**: - `Action` (enum): 実行するアクション - "Play", "Stop", "Pause"(デフォルト: "Play") - `Play`: プレイモードを開始(一時停止からの再開も含む) - `Stop`: プレイモードを終了し、エディットモードに戻る - `Pause`: プレイモードのまま一時停止する - **レスポンス**: - `IsPlaying` (boolean): Unityが現在プレイモードかどうか - `IsPaused` (boolean): プレイモードが一時停止中かどうか - `Message` (string): 実行されたアクションの説明 ### 11. simulate-mouse-ui - **説明**: PlayMode中のUI要素に対してマウスクリック・長押し・ドラッグをシミュレーション。EventSystemとExecuteEventsを使ってポインタイベントを直接ディスパッチするため、旧・新Input Systemの両方に依存せず動作。Input Systemを読むゲームロジック(`Mouse.current.leftButton.wasPressedThisFrame`等)には `simulate-mouse-input` を使用 - **パラメータ**: - `Action` (enum): マウスアクション - "Click", "Drag", "DragStart", "DragMove", "DragEnd", "LongPress"(デフォルト: "Click") - `Click`: (X, Y)でクリック。PointerDown → PointerUp → PointerClick を発火 - `LongPress`: (X, Y)でDuration秒間押し続けてからリリース。PointerClickは発火しない - `Drag`: (FromX, FromY)から(X, Y)へのワンショットドラッグ - `DragStart`: (X, Y)でドラッグを開始しホールド - `DragMove`: 現在位置から(X, Y)へ指定速度でアニメーション移動 - `DragEnd`: (X, Y)へ移動後、ドラッグをリリース - `X` (number): ターゲットX座標(スクリーンピクセル、原点: 左上)(デフォルト: 0) - `Y` (number): ターゲットY座標(スクリーンピクセル、原点: 左上)(デフォルト: 0) - `FromX` (number): Dragアクションの開始X座標(デフォルト: 0) - `FromY` (number): Dragアクションの開始Y座標(デフォルト: 0) - `DragSpeed` (number): ドラッグ速度(ピクセル/秒)、0で即時移動(デフォルト: 2000) - `Duration` (number): LongPressアクションのホールド秒数(デフォルト: 0.5) - `Button` (enum): マウスボタン - "Left", "Right", "Middle"(デフォルト: "Left") - **レスポンス**: - `Success` (boolean): アクションが正常に完了したかどうか - `Message` (string): 実行されたアクションの説明 - `Action` (string): 実行されたアクション - `HitGameObjectName` (string): ヒットしたUI要素の名前(ヒットなしの場合null) - `PositionX` (number): 使用されたX座標 - `PositionY` (number): 使用されたY座標 - `EndPositionX` (number): 終了X座標(Dragアクション用) - `EndPositionY` (number): 終了Y座標(Dragアクション用) ### 12. simulate-mouse-input - **説明**: Input System経由でPlayMode中のマウス入力をシミュレーション。ボタンクリック、マウスデルタ、スクロールホイールを `Mouse.current` に直接注入。`wasPressedThisFrame`や`Mouse.current.delta`等を読むゲームロジック向け。Input Systemパッケージ導入時のみ利用可能で、Player SettingsのActive Input Handlingを `Input System Package (New)` または `Both` に設定する必要がある。IPointerClickHandler等のUI要素には `simulate-mouse-ui` を使用 - **パラメータ**: - `Action` (enum): マウス入力アクション - "Click", "LongPress", "MoveDelta", "SmoothDelta", "Scroll"(デフォルト: "Click") - `Click`: ボタンのpress+releaseを注入し、`wasPressedThisFrame`がtrueを返すようにする - `LongPress`: Duration秒間ボタンをホールド - `MoveDelta`: マウスデルタを注入(ワンショット、FPSカメラ操作等) - `SmoothDelta`: Duration秒かけて滑らかにマウスデルタを注入(人間的なカメラ旋回) - `Scroll`: スクロールホイールを注入(ホットバー切替、ズーム等) - `X` (number): ターゲットX座標(スクリーンピクセル、原点: 左上)。ClickとLongPressで使用(デフォルト: 0) - `Y` (number): ターゲットY座標(スクリーンピクセル、原点: 左上)。ClickとLongPressで使用(デフォルト: 0) - `Button` (enum): マウスボタン - "Left", "Right", "Middle"(デフォルト: "Left")。ClickとLongPressで使用 - `Duration` (number): LongPressのホールド秒数、またはClickの最小ホールド時間。0=ワンショットタップ(デフォルト: 0) - `DeltaX` (number): MoveDeltaアクションのデルタX(ピクセル)。正=右(デフォルト: 0) - `DeltaY` (number): MoveDeltaアクションのデルタY(ピクセル)。正=上(デフォルト: 0) - `ScrollX` (number): Scrollアクションの水平スクロールデルタ(デフォルト: 0) - `ScrollY` (number): Scrollアクションの垂直スクロールデルタ。正=上、通常1ノッチ=120(デフォルト: 0) - **レスポンス**: - `Success` (boolean): アクションが正常に完了したかどうか - `Message` (string): 実行されたアクションの説明 - `Action` (string): 実行されたアクション - `Button` (string): 使用されたボタン(Click/LongPress用) - `PositionX` (number, nullable): 使用されたX座標(位置を使わないアクションではnull) - `PositionY` (number, nullable): 使用されたY座標(位置を使わないアクションではnull) ### 13. simulate-keyboard - **説明**: Input System経由でPlayMode中のキーボード入力をシミュレーション。単発のキータップ、長押し、複数キーの同時押しに対応。Input Systemパッケージ導入時のみ利用可能で、Player SettingsのActive Input Handlingを `Input System Package (New)` または `Both` に設定する必要がある。ゲームコードがInput System API(例: `Keyboard.current[Key.W].isPressed`)で入力を読み取っている必要があり、レガシーの `Input.GetKey()` には非対応 - **パラメータ**: - `Action` (enum): キーボードアクション - "Press", "KeyDown", "KeyUp"(デフォルト: "Press") - `Press`: ワンショットキータップ(KeyDown→KeyUp)。`Duration`で長押し時間を指定可能 - `KeyDown`: KeyUpで明示的に解放するまでキーを押し続ける - `KeyUp`: KeyDownで押下中のキーを解放 - `Key` (string): Input SystemのKey enumに対応するキー名(例: "W", "Space", "LeftShift", "Enter")。大文字小文字を区別しない - `Duration` (number): Pressアクションのホールド秒数、0でワンショットタップ(デフォルト: 0)。KeyDown/KeyUpでは無視される - **レスポンス**: - `Success` (boolean): アクションが正常に完了したかどうか - `Message` (string): 実行されたアクションの説明 - `Action` (string): 実行されたアクション - `KeyName` (string, nullable): 操作対象のキー名 --- ## 関連ドキュメント - [メインREADME](README_ja.md) - プロジェクト概要とセットアップ - [アーキテクチャドキュメント](ARCHITECTURE_ja.md) - 技術アーキテクチャの詳細 - [変更履歴](CHANGELOG.md) - バージョン履歴と更新