Files
ft/Client/Packages/io.github.hatayama.uloopmcp/TOOL_REFERENCE_ja.md

281 lines
21 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
[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<string, object>): 実行時パラメータ(デフォルト: {})
- `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) - バージョン履歴と更新