Skip to main content
Glama

Unity MCP Efficient

CI Python 3.10+ License: MIT

这是一个面向 MCP for Unity 的独立、token 高效的 MCP facade 与 Codex 技能。

它在一个面向模型的小型 API 背后保留了完整的 Unity 功能集。模型只看到六个稳定工具,按需搜索上游工具目录,接收紧凑且对 Unity 感知的响应,并且可以在不把每个中间结果都带入对话的情况下串联起例行工作。

[!IMPORTANT] 本项目并不替代 Unity 包或其 Python 服务器。MCP for Unity 仍然是后端。请向 AI 客户端注册 facade,而不是上游服务端。如果同时暴露两套工具面,省下的上下文大多会被抵消。

实测上下文缩减

在 2026-08-24,benchmarks/ 中的脚本针对 MCP for Unity v10.1.0(c14de1e6)测出了以下结果。

测量项

上游工具面

高效 facade

缩减幅度

模型可见的工具

48

6

87.50%

序列化后工具 schema

93,119 字符

3,657 字符

96.07%

schema 近似 token 数¹

22,780

915

96.07%

250 对象层级压力用例²

628,110 字符

875 字符

99.86%

层级近似 token 数¹

157,028

219

99.86%

动作参数面

5,566 字段

1,798 字段

67.70%

动态目录收录了 377 个 Unity 操作。一套小型确定性英/俄搜索用例,在全部 15 个用例中都将预期操作排在第 1 位,也全部进入前 3。候选版本通过了 35 项 facade 测试。一次现场冒烟测试没有对项目做任何改动,并在已打开的 Unity 编辑器中验证了这六个工具构成 surface、editor.refresh 位列第 1、编辑器状态,以及分两步检查场景的一个批次。

¹ Token 数使用“每 token 约 4 字符”的保守估算。它们描述的是上下文占用,而非 API 计费。实际 token 化结果因模型和负载而异。
² 该层级压力用例模拟一条接口噪声很大的响应,包含 250 个对象、每个对象 300 个顶点索引,并且同一份内容同时出现在文本和结构化负载中。这种极端场景并不承诺每个场景都能同等缩减。方法和原始数值见 BENCHMARKS.md。

Related MCP server: SimpleMcpServer

六个工具各自的作用

工具

用途

search_capabilities

用一句简短的任务描述(英文或俄文)找到最合适的 Unity 操作;完整 schema 可以按需选取。

call_operation

精确执行一个操作,返回有所节制的预览加上可恢复的结果句柄。

batch_operations

在单次模型往返中运行最多 50 个有界步骤,支持向 call、select、assert、poll、foreach、emit 操作。

inspect_unity

读取“项目、编辑器、场景、控制台或选中的对象”状态,并带着对 revision 感知的抑制。

get_result

对已经产生的数据做分页、过滤、搜索或选择,不重复再次做 Unity 工作。

get_viewport

只取回一帧有界大小的 Scene 或 Game 视图截图像,不会同时以结构化 JSON 方式再携带一份。

模型依然能触到 facade 后面那 377 个已索引的操作,只是它们不再一次性占满完整提示词。

接线层处理的问题

常见的故障模式

facade 的介入方式

客户端在有用工作开始前就一次塞入几十个大工具 schema

六个工具的工具表面,操作按需发现

Manager 工具把所有操作都暴露成一个庞大的参数并集

按操作准确匹配 schema;在该目录向量测中参数域名减少了 67.70%

场景、控制台、测试与资源相关的响应把对话吞没

带 Unity 感知的后处理、严格的输出预算、分页、结果句柄

FastMCP 或 Pydantic 的 Root 对象无法 JSON 序列化

构建预览前先递归 JSON 规范化

Unity 已完成变更但在域重载期间断开

原始结果持久化、明确的 retry 元数据、不会自动重放变更

测试任务开始了但很大很包的 job_id 被包住/丢失

便于轮询的紧凑异步收据

上游响应把 success: false 嵌在传输层成功里

外层 ok 反映到被嵌套的 Unity 结果

重放一个已超时的变更会重复工作

用 request_id 收据抑制完全相同的重试

多对象任务每操作消耗一个模型会话回合

有界的顺序工作流,加上对读取的保守并行批次

stale_status 或 is_changing 导致轮询永远结束不了

轮询检测延后 + revision 感知,并且有明确停止规则

架构

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

一个 skill 本身不能隐藏 MCP 客户端已经加载的工具 schema。这也是本仓库同时提供两件东西的原因:

  • facade 负责维系更小的 API 和紧凑响应;

  • skill 教 Codex 如何高效地搜索、批量、恢复和验证。

安装

1. 以 HTTP 模式启动 MCP for Unity

请按上游它的说明来安装 CoplayDev/MCP for Unity。在 Unity 中打开 Window → MCP for Unity,选择本地 HTTP 传输并启动服务。

上游的默认端点是:

http://127.0.0.1:8080/mcp

如果你的项目使用的是另一个端口,请通过下面的 UNITY_MCP_BACKEND_URL 传进去。

2. 在 Codex 中注册 facade

需要时可以 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-efficient

在 PowerShell 里面,请把命令写到一行再运行:

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 skill

最简单的办法是直接让 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-efficient

Codex 会自动感知 skill 的变化。如果 skill 没出现,重启 Codex。

其他 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 格式,就安装打包好的 skill。没有它 facade 也照样能用,但这个 skill 会提升工具选择和恢复行为。

推荐的 agent 流程

  1. 先做一次浅层 Unity 状态读取。

  2. 用一个明确的任务句搜索。

  3. 参数不明时,只去获取对应的 schema。

  4. 先后顺序处理已知有依赖的工作;独立读取可以并行,Unity 的变更绝不能并行。

  5. 保留紧凑输出,再按路径/页去展开已存的结果。

  6. 验证的语义要做,而不是对着每个中间暴露检查。

这个流程已经写进 skills/unity-mcp-efficient/SKILL.md。

配置

变量

默认值

含义

UNITY_MCP_BACKEND_URL

http://127.0.0.1:8080/mcp

上游 MCP for Unity 的 HTTP 端点

UNITY_MCP_OPERATION_TIMEOUT

60

每次操作的超时秒数

UNITY_MCP_RESULT_DB

操作系统用户缓存目录

SQLite 结果存储路径;使用 memory 则走进程内存储

UNITY_MCP_EFFICIENT_TRANSPORT

stdio

facade 的传输方式:stdio、http 或 sse

除非确实要独自通过网络暴露 facade,否则保持默认的 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.py

evaluate_facade.py 和 measure_surface.py 都会读取实时的上游目录。live_smoke.py 不会做任何变更,但它需要已经打开并连接到 Unity Editor。

已知限制

  • 输出刻意有损。未处理的完整原始结果通过 get_result 在一个有界的时间内保持可用。

  • facade 并不会让任意的 Unity 变更更安全;权限与复审仍属于 MCP 客户端和用户自己。

  • 并行是保守的。Unity 内部很可能本身就串行化了编辑器工作。

  • 某些可选能力(如 Roslyn 支持)也许不会出现在这个 Unity 工程里。

  • Scene/Game 视图捕获可能会漏掉 ImGUI 编辑器上的浮层。

  • 兼容性测试以 MCP for Unity v10.1.0 为准。目录是动态的,所以在声称支持上游较新版本之前,请以较新版本再跑一次基准。

设计渊源

渐进显示的想法是从 Vangardo/mcp_hub 学到并的,那是一个把大型集成目录经由小搜索+调用面路由的 MCP 网关。Unity MCP Efficient 则把这种上下文纪律应用到 Unity,再加上 Unity 专属的压缩、rev 状态、变更恢复、截图和有界局部工作流。

如果你在 Slack、Teamwork、Telegram、日历、记忆、自动化或跨服务 agent 上也需要这种形态,请看 MCP Hub。

Unity 兼容后端是 CoplayDev/MCP for Unity,以 MIT 协议分发。本仓库与它是独立的项目,不包含它的源代码。参见 NOTICE.md 和 THIRD_PARTY_NOTICES.md。

License and Trademark

本仓库里的原创代码以 MIT License 发布。

Unity 是 Unity Technologies 或它的关联方在美国以及其他地方的商标或注册商标。本项目与 Unity Technologies 或 CoplayDev 无关,也不受它们背书。其他名称与商标归各自的所有者所有。

Available Tools

6 tools
batch_operationsB
Destructive

Run calls or local select/assert/poll/foreach/emit workflow steps.

NameRequiredDescriptionDefault
executionNosequential
max_charsNo
operationsYes
request_idNo
output_modeNocompact
response_modeNosummary
stop_on_errorNo
unity_instanceNo

TDQS

B3.2/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness2/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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_operationB
Destructive

Execute once; request_id safely deduplicates retries of mutations.

NameRequiredDescriptionDefault
argumentsNo
max_charsNo
operationYes
request_idNo
output_modeNocompact
unity_instanceNo

TDQS

B3.3/5.0
Behavior4/5

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.

Conciseness4/5

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.

Completeness2/5

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.

Parameters2/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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_resultB
Read-onlyIdempotent

Page, select, or search a prior result without repeating Unity work.

NameRequiredDescriptionDefault
pathNo
limitNo
offsetNo
patternNo
max_charsNo
result_idYes
output_modeNostandard

TDQS

B3.1/5.0
Behavior3/5

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.

Conciseness4/5

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.

Completeness2/5

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.

Parameters2/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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_viewportB
Read-onlyIdempotent

Return one bounded inline viewport image for visual verification.

NameRequiredDescriptionDefault
sourceNoscene_view
targetNo
max_resolutionNo
unity_instanceNo

TDQS

B3.1/5.0
Behavior3/5

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.

Conciseness4/5

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.

Completeness2/5

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.

Parameters2/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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_unityC
Read-onlyIdempotent

Inspect Unity semantically; unchanged revisions return no repeated payload.

NameRequiredDescriptionDefault
scopeNostate
detailNostandard
targetsNo
max_charsNo
since_revisionNo
unity_instanceNo

TDQS

C2.8/5.0
Behavior4/5

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.

Conciseness3/5

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.

Completeness2/5

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.

Parameters2/5

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.

Purpose3/5

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.

Usage Guidelines2/5

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_capabilitiesC
Read-onlyIdempotent

Find operation names and only the argument hints needed next.

NameRequiredDescriptionDefault
limitNo
queryNo
refreshNo
categoryNo
include_schemaNo

TDQS

C2.8/5.0
Behavior3/5

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.

Conciseness2/5

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.

Completeness2/5

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.

Parameters1/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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.

  1. 6 tool updatesv0.2.0
    • First observedbatch_operations
    • First observedcall_operation
    • First observedget_result
    • First observedget_viewport
    • First observedinspect_unity
    • First observedsearch_capabilities

TDQS

A3.5/5.0

Scored across 6 tools

Disambiguation5/5

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.

Naming Consistency5/5

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.

Tool Count5/5

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.

Completeness4/5

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

ActivityStale
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers