Unity MCP Efficient
Unity MCP Efficient
MCP for Unity 向けの、独立したトークン効率的な MCP ファサードおよび Codex スキルです。
Unity の完全な機能セットは、モデルに面した小さな API の背後に保持されます。モデルは、安定した 6 つのツールを参照し、必要に応じて上流カタログを検索し、Unity を認識したコンパクトなレスポンスを受け取り、すべての中間結果を会話に持ち込むことなくルーチン作業を連鎖できます。
[!IMPORTANT] このプロジェクトは、Unity パッケージやその Python サーバーを置き換えるものではありません。MCP for Unity はバックエンドとして残ります。AI クライアントには、上流サーバーではなくファサードを登録してください。両方のツールサーフェスを公開すると、コンテキスト削減の効果はほとんど失われます。
測定されたコンテキスト削減
2024-08-24 に、benchmarks/ 内のスクリプトは、MCP for Unity v10.1.0 (c14de1e6) に対して以下の結果を生成しました。
測定項目 | 上流サーフェス | 効率的なファサード | 削減率 |
モデルが見えるツール | 48 | 6 | 87.50% |
シリアル化されたツールスキーマ | 93,119 chars | 3,657 chars | 96.07% |
概算スキーマトークン数¹ | 23,280 | 915 | 96.07% |
合成 250 オブジェクト階層² | 628,110 chars | 875 chars | 99.86% |
概算階層トークン数¹ | 157,028 | 219 | 99.86% |
アクション引数サーフェス | 5,566 fields | 1,798 fields | 67.70% |
動的カタログは 377 の Unity オペレーションをインデックス化しました。小規模で決定論的な英語/ロシア語の検索スイートは、15 件すべてのケースで期待されたオペレーションをランク 1 で返し、15 件すべてのケースでトップ 3 以内に返しました。リリース候補は 35 のファサードテストに合格しています。ライブのスモークテストはプロジェクトを一切変更せず、6 つのツールサーフェス、ランク 1 の editor.refresh、エディタ状態、および開いている Unity Editor に対する 2 段階のシーン検証バッチを確認しました。
¹ トークン数は、4 文字を 1 トークンとする透明な概算を用いています。これらは API の課金ではなく、コンテキストの占有量を示します。実際のトークナイゼーションはモデルとペイロードによって異なります。
² 階層ベンチマークは、250 オブジェクト、オブジェクトごとに 300 の頂点インデックス、同じデータをテキストと構造化ペイロードの両方に含むノイジーなレスポンスをモデル化しています。このストレステストは、すべてのシーンで同じ削減を保証するものではありません。手法と生の値については、BENCHMARKS.md を参照してください。
Related MCP server: SimpleMcpServer
6 つのツールが行うこと
ツール | 目的 |
| 短い英語または全てのタスクフレーズから、最適な Unity オペレーションを見つけます。完全なスキーマはオプションです。 |
| 指定された 1 つのオペレーションを実行し、制限付きプレビューと回収可能な結果ハンドルを返します。 |
| 1 回のモデル往復で、最大 50 の制限付き call、select、assert、poll、foreach、emit ステップを実行します。 |
| プロジェクト、エディタ、シーン、コンソール、または選択オブジェクトの状態と、変更認識による抑制を読み取ります。 |
| すでに生成済みのデータを、Unity の作業をやり直すことなく、ページング、フィルタリング、検索、または選択します。 |
| シーンまたはゲームビューの画像を 1 枚だけ、構造化 JSON に重複させることなく返します。 |
モデルは、ファサードの後ろにある 377 のインデックス化されたオペレーションに、すべて依然として到達できます。これらのオペレーションは、もはや一度にすべてプロ画面表示されることはありません。
ボーダーで解決される問題
一般的な障害モード | ファサードが変更する点 |
クライアントが実用的な作業を始める前に、多数の巨大なツールスキーマを送信する | オンデマンド発見を備えた 6 つのツール基板とサーフェス |
マネージャツールが全アクションにわたって大きな合計引数を公開する | アクション専用のスキーマ。測定カタログでは引数が 67.70% 削減 |
シーン、コンソール、テスト、アセットの応答が会話を圧迫する | Unity を意識した後処理、厳格な出力バジェット、ページング、および結果ハンドル |
FastMCP または Pydantic の | プレビュー構築前の再帰的 JSON 正規化 |
Unity が変更を完了したが、ドメイン再ロード中に切断と切断する | 生の結果の永続、明示的なリトライメタデータ、自動変更者なし |
テスト実行は開始するが、大きなエンベロープがジョブIDを失わせる・隠す | ポーリング用に設計されたコンパクトな非同期受領 |
上部応答が階層の | 外側の |
タイムアウトした変更の再実行が作業を複製する | 安定した |
複数オブジェクトの作業が 1 つのオブジェクトごとに 1 ターンを消費する | 制限付きの順次ワークフローと、読み取りに対する保守的なパラレルバッチ |
| 明確な停止条件を伴う、遅延された修正感知チェックと定義された停止条件 |
アーキテクチャ
Codex or another MCP client
|
| sees 6 tools
v
Unity MCP Efficient (stdio by default)
|-- capability search over the live upstream catalog
|-- compact Unity-specific post-processing
|-- bounded workflow runtime
|-- local SQLite result and request receipts
|
| HTTP, default http://127.0.0.1:8080/mcp
v
MCP for Unity server
|
v
Unity Editor packageスキルだけでは、MCP クライアントがすでに読み込んだツールスキーマを隠すことはできません。 そのため、このリポジトリには次の 2 つが含まれています。
ファサードは、より小さな API とコンパクトなレスポンスを適用します。
スキルは、検索、バッチ、リカバリ、検証を効率良く行う方法を Codex に教えます。
インストール
1. MCP for Unity を HTTP モードで起動する
上流の手順に従って CoplayDev/MCP for Unity をインストールします。Unity で Window → MCP for Unity を開き、ローカル HTTP トランスポートを選択して、サーバーを起動してください。
上流のデフォルトエンドポイントは次のとおりです。
http://127.0.0.1:8080/mcpプロジェクトが別のポートを使用する場合、後述の UNITY_MCP_BACKEND_URL でその値を渡します。
2. Codex にファサードを登録する
必要な場合、uv をインストールしたうえで、次のコマンドを実行してください。
codex mcp add unity-efficient \
--env UNITY_MCP_BACKEND_URL=http://127.0.0.1:8080/mcp \
-- uvx --from git+https://github.com/Vangardo/unity-mcp-efficient.git unity-mcp-efficientPowerShell では、同じコマンドを 1 行で実行します。
codex mcp add unity-efficient --env UNITY_MCP_BACKEND_URL=http://127.0.0.1:8080/mcp -- uvx --from git+https://github.com/Vangardo/unity-mcp-efficient.git unity-mcp-efficient同じ Codex クライアントから、MCP for Unity への直接エントリを取り除くか、無効化してください。上流の HTTP サーバーの実行は維持しつつも、その 48 ツールのサーフェスをモデルに登録しないでください。
3. Codex スキルをインストールする
最も簡単な方法は、Codex に直接依頼することです。
$skill-installer Install the skill from https://github.com/Vangardo/unity-mcp-efficient/tree/main/skills/unity-mcp-efficient手動でユーザーレベルのインストールを行う場合は、リポジトリをクローンして skills/unity-mcp-efficient を次の場所にコピーしてください。
$HOME/.agents/skills/unity-mcp-efficientCodex はスキルの変更を自動的に検出します。スキルが表示されない場合は再起動してください。
他の MCP クライアント
次の stdio 設定シェイプを使用してください。
{
"mcpServers": {
"unity-efficient": {
"command": "uvx",
"args": [
"--from",
"git+https://github.com/Vangardo/unity-mcp-efficient.git",
"unity-mcp-efficient"
],
"env": {
"UNITY_MCP_BACKEND_URL": "http://127.0.0.1:8080/mcp"
}
}
}
}クライアントが Agent Skills 形式をサポートしている場合は、パッケージ化されたスキルをインストールしてください。ファサードは Option なしでも動作しますが、スキルはツールの選択とリカバリ動作を向上させます。
推奨されるエージェントのループ
低詳細の Unity 状態を 1 回だけ確認する。
具体的なタスクフレーズ指向で検索する。
引数が不明な場合は、その選択のスキーマを要求する。
既知の依存作業を順番にバッチ化する。独立した読み取りは並列するが、Unity のミューテーションは並列化しない。
コンパクトな出力を保ち、保存された結果はパスまたはページで展開する。
生の中間オブジェクトをそのまま検証するのではなく、意味的な結果を検証する。
このループは、skills/unity-mcp-efficient/SKILL.md にすでに組み込まれています。
設定
変数 | デフォルト | 説明 |
|
| 上流 MCP for Unity の HTTP エンドポイント |
|
| オペレーションごとのタイムアウト(秒) |
| OS ユーザーのキャッシュディレクトリ | SQLite の結果ストアのパス。プロセスローカルなら |
|
| ファサードのトランスポート。 |
既定の stdio 転送を保つのは、ファサードをネットワークへ公開する理由がある場合を除きます。HTTP または SSE を使用する前に、SECURITY.md を読んでください。
開発と検証
git clone https://github.com/Vangardo/unity-mcp-efficient.git
cd unity-mcp-efficient
uv sync --extra dev
uv run pytest -q上流の HTTP サーバーが起動した状態で以下を実行してください:
uv run python benchmarks/evaluate_facade.py
uv run python benchmarks/measure_surface.py
uv run python benchmarks/live_smoke.pyevaluate_facade.py と measure_surface.py は、稼働中の上流カタログを読み取ります。live_smoke.py は変更を行いませんが、開いて接続された Unity Editor が必要です。
既知の制限
コンパクトな出力は意図的にロスが伴います。変更されていない元の結果は
get_resultで一定時間利用できます。ファサードは、Unity の任意のミューテーションを安全にすることはしません。権限とレビューは、引き続き MCP クライアントのユーザーに委ねられています。
パラレル は保守的です。Unity は内部でエディタ作業をシリアル化する可能性があります。
Roslyn サポートなどの検出可能な、互換性のある任意の機能は、その Unity プロジェクトにはない場合があります。
シーン・ゲームビューのキャプチャでは、IMGUI やエディタのオーバーレイお含まれない可能性があります。
互換性テスト は MCP for Unity
v10.1.0を対象としています。カタログは動的なので、サポートを宣言する前に、後の上流リリースもベンチマークしてください。
設計のルーツ
私たちは、Vangardo/mcp_hub という、大規模なインテグレーションカタログを小さな検索・コール面に集約する作業から、順次を公開するアイデアを得ました。Unity MCP Efficient は、このコンテキストを表す考え方を Unity に適用し、さらに Unity 固有のコンパクト化、リビジョンチェック、ミューテーションリカバリ、スクリーンショット、制限付きローカルワークフローを追加しています。
Slack、Teamwork、Telegram、カレンダー、メモリ、自動化、またはクロスサービスエージェント向けにこのパターンを使いたい場合は、MCP Hub を参照してください。
Unity 互換のバックエンドは、MIT License の下で配布されている CoplayDev/MCP for Unity です。このリポジトリは独立したプロジェクトであり、そのソースコードは含まれません。NOTICE.md と THIRD_PARTY_NOTICES.md を参照してください。
ライセンスと商標
このリポジトリの独自コードは、MIT License の下で利用できます。
Unity は、米国およびその他の国における Unity Technologies またはその関連会社の商標およびの登録商標です。本プロジェクトは Unity Technologies または CoplayDev とは関連しておらず、その保証も受けていません。その他の名称およびブランドは、それぞれの権利者に帰属します。
Available Tools
6 toolsbatch_operationsBDestructive
Run calls or local select/assert/poll/foreach/emit workflow steps.
| Name | Required | Description | Default |
|---|---|---|---|
| execution | No | sequential | |
| max_chars | No | ||
| operations | Yes | ||
| request_id | No | ||
| output_mode | No | compact | |
| response_mode | No | summary | |
| stop_on_error | No | ||
| unity_instance | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare the safety profile (destructiveHint=true, readOnlyHint=false, idempotentHint=false), which the description does not contradict. The description adds only the 'local' qualifier for workflow steps and the step-type list; it does not disclose error behavior, execution-mode effects, or what summary/steps/emits responses contain, so added value beyond annotations is minimal.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Twelve words in a single sentence, verb-front-loaded, with no filler or redundant content. Every word earns its place by naming either the action or the specific step types.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
This is a complex tool — eight parameters, a required nested operations array with no item schema (additionalProperties only), three enum parameters, a destructive annotation, and no output schema. The description does not explain how to structure an operation item, what the response looks like, or how the response_mode/output_mode options differ, leaving an agent without enough information to invoke it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema description coverage, the description must compensate, and it does clarify the key required parameter: operations can be either calls or local select/assert/poll/foreach/emit steps. But the other seven parameters (execution, max_chars, output_mode, response_mode, stop_on_error, request_id, unity_instance) receive no semantic explanation anywhere, so the compensation is only partial.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific action ('Run') and a concrete resource ('calls or local select/assert/poll/foreach/emit workflow steps'), so an agent can tell that this tool executes operations rather than inspecting state. However, it does not explicitly contrast with the sibling call_operation, leaving the batch-vs-single distinction to be inferred from the tool name.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives no guidance on when to choose batch_operations over call_operation, get_result, or the other siblings. There are no use cases, prerequisites, or exclusions stated; an agent must infer from the name alone that this is for running multiple operations at once.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
call_operationBDestructive
Execute once; request_id safely deduplicates retries of mutations.
| Name | Required | Description | Default |
|---|---|---|---|
| arguments | No | ||
| max_chars | No | ||
| operation | Yes | ||
| request_id | No | ||
| output_mode | No | compact | |
| unity_instance | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark destructiveHint=true and idempotentHint=false; the description adds useful behavioral context by stating execution is once-only and that request_id deduplicates retries. It does not disclose failure modes, side effects beyond mutation, or result-handling behavior, but it goes beyond what the annotations already convey.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single efficient sentence with no filler, and it front-loads the key execution behavior. It is admirably concise for a tool with six parameters, though arguably too terse to fully educate an agent.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the destructive hint, six parameters, no output schema, and zero schema coverage, one line is not enough context. The request_id guidance is valuable, but the agent is left without sufficient details on how to specify the operation, shape arguments, choose output_mode, or interpret results.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate for six parameters, but it only explains request_id. Critical parameters such as operation, arguments, output_mode, max_chars, and unity_instance are left wholly undocumented, making correct invocation harder than it should be.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description identifies the tool as a single-execution operation invoker ('Execute once') and references mutations, which helps distinguish it from sibling tools like batch_operations. However, it never explains what an 'operation' actually is or what domain it operates on, so some clarity is left to inference from the tool name and parameters.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for single mutations and mentions safe deduplication of retries, but it gives no explicit when-to-use guidance or when-not-to-use alternatives. It does not tell the agent to prefer read-oriented siblings for inspection or batch_operations for multi-step work.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_resultBRead-onlyIdempotent
Page, select, or search a prior result without repeating Unity work.
| Name | Required | Description | Default |
|---|---|---|---|
| path | No | ||
| limit | No | ||
| offset | No | ||
| pattern | No | ||
| max_chars | No | ||
| result_id | Yes | ||
| output_mode | No | standard |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, covering the safety profile. The description adds useful behavioral context by indicating that the tool works over prior results and avoids re-running Unity work, but it does not reveal details about output modes, pagination behavior, or any hidden side effects. This is adequate but not rich.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence with no filler, and the key behavioral point about not repeating Unity work is front-loaded. It earns its place, though the brevity contributes to the lack of parameter clarity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With seven parameters, no parameter descriptions, no output schema, and an already-terse tool description, an agent has insufficient context to call the tool confidently. The description does not explain how paging, search, output modes, or character limits behave, leaving important invocation details to inference.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate for the seven parameters, but it does not. 'Page, select, or search' loosely maps to limit/offset, result_id, and pattern/path, yet parameters such as max_chars, output_mode, and path remain unexplained. The description provides only weak semantic hints and does not carry the parameter-documentation burden.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description identifies a specific resource ('a prior result') and a set of verbs ('Page, select, or search'), which makes the tool's purpose reasonably clear. It also adds the motivational context of avoiding repeated Unity work, but it does not explicitly differentiate itself from sibling tools like search_capabilities or call_operation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'without repeating Unity work' implies this tool should be used when a previous result already exists and should be retrieved rather than recomputed. However, there is no explicit guidance on when to prefer get_result over siblings such as call_operation or search_capabilities, and no exclusions or alternative conditions are stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_viewportBRead-onlyIdempotent
Return one bounded inline viewport image for visual verification.
| Name | Required | Description | Default |
|---|---|---|---|
| source | No | scene_view | |
| target | No | ||
| max_resolution | No | ||
| unity_instance | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish that the tool is read-only, idempotent, and non-destructive, so the description need not repeat that. It adds a small behavioral detail—the result is a single inline bounded image—but leaves the semantics of 'bounded' and the meaning of source/target selection unexplained. No contradiction with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One short sentence, front-loaded with the action and resource, with no filler. It is concise and readable, though it could afford a second sentence to explain key parameters or use cases without becoming bloated.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with four parameters, no output schema, and no parameter descriptions, this description is incomplete. An agent cannot infer what 'target' means, how max_resolution behaves, or how to select scene_view versus game_view, and there is no guidance on how to interpret the returned image.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% and the description names none of the four parameters (source, target, max_resolution, unity_instance). The enum for source and default values in the schema provide some hints, but the description adds no parameter-level meaning and fails to compensate for the zero coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Return') with a clear resource ('one bounded inline viewport image') and states the purpose ('for visual verification'). It is distinguishable from generic sibling names like get_result or inspect_unity, though it does not explicitly contrast with them.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'for visual verification' implies this tool is for obtaining an image to verify a scene or game view, but the description does not state when to use it instead of alternatives like inspect_unity or get_result, nor are exclusions given. Usage context is inferred rather than explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
inspect_unityCRead-onlyIdempotent
Inspect Unity semantically; unchanged revisions return no repeated payload.
| Name | Required | Description | Default |
|---|---|---|---|
| scope | No | state | |
| detail | No | standard | |
| targets | No | ||
| max_chars | No | ||
| since_revision | No | ||
| unity_instance | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint and idempotentHint, and the description adds the concrete behavior that unchanged revisions produce no repeated payload, which clarifies what idempotency means here. It also lets the agent infer that since_revision is tied to change detection. No statement contradicts the read-only/idempotent annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is short and the behavioral note does earn its place, but 'semantically' is cryptic and the text is under-specified for a tool with six parameters. It is concise in word count, yet not 'appropriately sized' for the complexity the schema reveals.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With low schema coverage, no output schema, and six parameters, the description leaves important context missing: what a successful inspection returns, which scopes are involved, what targets selects, and how unity_instance affects execution. The single revision-related sentence is useful but far from complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description bears the burden, but it only loosely clarifies since_revision via 'unchanged revisions'. The other five parameters—scope, detail, targets, max_chars, unity_instance—are left entirely to name/enum inference, and targets in particular is ambiguous.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a verb and resource ('Inspect Unity') but 'semantically' is undefined, and nothing in the text distinguishes it from siblings like get_viewport or search_capabilities. The second clause describes revision behavior rather than clarifying what inspection covers. It is not a complete tautology, but the core phrasing largely restates the tool name.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is given for when to use inspect_unity instead of sibling tools such as get_viewport, call_operation, or search_capabilities. There are no exclusions, prerequisites, or context triggers. An agent must infer usage from the schema alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_capabilitiesCRead-onlyIdempotent
Find operation names and only the argument hints needed next.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| query | No | ||
| refresh | No | ||
| category | No | ||
| include_schema | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark it read-only, idempotent, and non-destructive; the description adds a scoping claim: results contain operation names and only the argument hints needed next. This is useful but vague, and it does not disclose output shape, refresh behavior, or query semantics.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The definition is one short sentence and front-loads the main action, but it is under-specified rather than economically complete; important behavioral and parameter information is missing.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With five optional parameters, no output schema, and no parameter descriptions, the description must carry more weight. It gives the broad purpose but omits the query semantics, return shape, and how the result connects to call_operation, so the tool is not sufficiently contextualized.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% across five parameters (limit, query, refresh, category, include_schema), yet the description names none of them and only references 'argument hints' as output. This is a serious gap: an agent cannot know what query string, limit, or include_schema controls.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific action ('Find operation names') and the scope of results ('argument hints needed next'), which distinguishes it from sibling tools that call/get/batch operations. However, it does not explicitly differentiate from 'inspect_unity' or clarify what 'capabilities' means in context, so it falls short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'needed next' implies this is a discovery step before invoking an operation, giving some context. But it offers no explicit guidance on when to choose this over call_operation, get_result, inspect_unity, or batch_operations, and no exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
6 tool updates
v0.2.0- First observed
batch_operations - First observed
call_operation - First observed
get_result - First observed
get_viewport - First observed
inspect_unity - First observed
search_capabilities
TDQS
Scored across 6 tools
Each tool targets a distinct phase of interaction: discovery, execution, result retrieval, batching, semantic inspection, and visual verification. There is no meaningful overlap that would cause an agent to misselect between them.
All tool names follow a consistent verb_noun snake_case pattern: search_, call_, get_, batch_, inspect_, get_. This makes the set predictable and easy to navigate.
Six tools is a well-scoped count for an efficiency-focused server. Each tool earns its place and the set avoids both bloat and thinness.
The surface covers the main lifecycle well: discover capabilities, execute operations, retrieve results, batch workflows, inspect Unity state, and verify visually. Minor gaps exist, such as no explicit cancellation or full listing tool, but search_capabilities and batch_operations cover most practical needs.
Maintenance
Related MCP Connectors
214 tools for AI agents over one MCP endpoint: image, video, audio, 3D, data, storage, mail, GPUs.
The OpenRouter for tools. One MCP connection gives any AI agent 254 hosted tools, pay per call.
Zero-setup MCP gateway securely connecting AI to your tools with authentication and workflows
MCP server for your apps' tools and custom tools, plus hosted AI agents and approval-gated workflows
Related MCP Servers
- AlicenseNot gradedqualityCmaintenanceEnables AI agents to control the Unity Editor through MCP, allowing scene building, runtime scripting, visual QA, and more.5Apache 2.0
- AlicenseNot gradedqualityCmaintenanceEnables AI agents (like Claude Code, Cursor) to directly operate Unity scenes via MCP protocol, with tools for scene hierarchy, object creation/deletion, and transform modification.12 npm1ISC
- AlicenseNot gradedqualityAmaintenanceEnables AI assistants to control the Unity Editor via MCP, allowing scene manipulation, asset management, compilation, and testing through natural language.MIT
- AlicenseAqualityAmaintenanceMCP server for controlling the Unity Editor from AI clients. 140+ tools for scenes, GameObjects, components, assets, Shader Graph, PlayTest DSL, screenshots with visual diff, batch operations with Undo rollback, and in-editor chat. Token-efficient plain-text protocol.3631MIT