Unity MCP Efficient
Unity MCP Efficient
독립적이고 토큰 효율적인 MCP 파사드 및 Codex 스킬로, MCP for Unity용입니다.
MCP for Unity의 전체 기능 세트를 작은 모델 지향 API 뒤에 유지합니다. 모델은 여섯 개의 안정된 도구를 보게 되고, 필요할 때 업스트림 카탈로그를 검색하고, Unity에 최적화된 컴팩트한 응답을 받으며, 모든 중간 결과를 대화창으로 가져오지 않아도 일상적인 작업을 연쇄적으로 처리할 수 있습니다.
[!IMPORTANT] 이 프로젝트는 Unity 패키지나 그 Python 서버를 대체하지 않습니다. MCP for Unity는 여전히 백엔드입니다. AI 클라이언트에는 업스트림 서버가 아니라 이 파사드를 등록하세요. 두 도구 표면을 모두 노출하면 컨텍스트 절약 효과가 대부분 사라집니다.
측정된 컨텍스트 절감
2026-08-24에 benchmarks/의 스크립트는 MCP for Unity v10.1.0 (c14de1e6)을 대상으로 다음 결과를 만들었습니다.
측정 항목 | 업스트림 표면 | 효율적 파사드 | 감소율 |
모델에 노출되는 도구 | 48 | 6 | 87.50% |
직렬화된 도구 스키마 | 93,119자 | 3,657자 | 96.07% |
근사 스키마 토큰¹ | 23,280 | 915 | 96.07% |
합성 250-오브젝트 계층 구조² | 628,110자 | 875자 | 99.86% |
근사 계층 토큰¹ | 157,028 | 219 | 99.86% |
액션 인자 표면 | 5,566필드 | 1,798필드 | 67.70% |
동적 카탈로그는 377개의 Unity 연산을 인덱싱했습니다. 작고 결정적인 영어/러시아 검색 스위트는 15개 사례 모두에서 기대 연산을 rank 1로 반환했고, 15개 사례 모두 상위 3위 안에 들었습니다. 릴리스 후보는 35개 파서드 테스트를 통과합니다. 실시간 스모크 테스트는 프로젝트를 변경하지 않았고 여섯 도구 표면, rank 1의 editor.refresh, 에디터 상태, 열려 있는 Unity Editor에 대한 두 단계 씬 검사 배치를 검증했습니다.
¹ 토큰 수는 투명한 "토큰당 4자" 추정치를 사용합니다. 이는 컨텍스트 크기를 나타내며 API 과금 기준이 아닙니다. 실제 토크나이저 인식은 모델과 페이로드에 따라 다릅니다.
² 계층 벤치마크는 250개의 오브젝트, 오브젝트당 300개의 정점 인덱스, 그리고 같은 데이터가 text와 structured payload에 있는 "잡음 있는" 응답을 모델링합니다. 이 스트레스 케이스는 모든 씬에 동일한 절감을 보장하지 않습니다. 방법과 원시 값은 BENCHMARKS.md 참조.
Related MCP server: SimpleMcpServer
여섯 도구가 하는 일
도구 | 용도 |
| 짧은 영어 또는 러시아어 작업 문구에서 최선의 Unity 연동을 찾습니다. 전체 스키마는 선택 사항입니다. |
| 정확한 연산 하나를 실행하고 제한된 미리보기와 복구 가능한 결과 핸들을 반환합니다. |
| 모델 왕복 한 번에 최대 50개의 제한된 call, select, assert, poll, foreach 및 emit 단계를 실행합니다. |
| 프로젝트, 에디터, 씬, 콘솔 또는 선택된 오브젝트 상태를 리비전 인식 억제와 함께 읽습니다. |
| 이미 생성된 데이터를 페이지, 필터, 검색 또는 선택하여 Unity 작업을 다시 하지 않습니다. |
| 구조화된 JSON에 중복하지 않고 Scene 또는 Game 뷰 이미지 하나를 반환합니다. |
모델은 여전히 파사드 뒤의 377개 인덱스 연동에 접근할 수 있습니다. 그 연동은 더 이상 프롬프트 전체를 동시에 차지하지 않습니다.
경계에서 다루는 문제
일반적인 실패 사례 | 파셔드가 바꾸는 점 |
클라이언트가 유용한 작업을 시작하기 전에 수십 개의 큰 tool 스키마를 전송함 | 여섯 도구 표면과 필요 시 동작 검색 |
관리자 도구가 모든 동작에 하나의 큰 UNION 인자를 노출함 | 동작별 스키마; 측정 카탈로그에서 인자 필드 76.70% 감소 |
씬, 콘솔, 테스트, 에셋 응답이 대화를 과하게 채움 | Unity 인식 후처리, 엄격한 출력 예산, 페이지네이션과 결과 핸들 |
FastMCP 또는 Pydantic | 미리보기 구성 전에 재귀 JSON 정규화 |
Unity가 mutation은 완료했지만 domain reload 중 연결이 끊김 | 원시 결과 유지, 명시적 재시도 메타데이터, 자동 mutation 재실행 없음 |
테스트 실행이 시작됐지만 큰 봉투가 | 폴링에 맞게 설계된 소형 비동기 영수증 |
업스트림 응답이 전송수준 성공 아래에 | 바깥쪽 |
시간 초과된 mutation 반복 시 작업 중복 위험 | 안정적 |
다중 오브젝트 작업이 연산마다 모델 턴을 사용함 | 제한된 순차 워크플로우와 읽기 전용 보수적 병렬 배치 |
| 지연되고 리비전 인식이며 종료 규칙이 있는 검사 |
아키텍처
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 클라이언트가 이미 로드한 도구 스키마를 숨길 수 없습니다. 그래서 이 저장소에는 두 가지 구성요소가 있습니다.
파서드는 더 작은 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에서는 같은 명령을 한 줄로 사용하세요.
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 클라이언트에서 https://github.com/CoplayDev/unity-mcp 관련 직접 등록 항목을 제거하거나 비활성화하세요. 업스트림 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는 스킬 변경을 자동으로 감지합니다. 스킬이 목록에 안 나타나면 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 형식을 지원하면 패키징된 스킬을 설치하세요. 파사이드 없이도 동작하지만, 스킬은 도구 선택과 복구 동작을 개선합니다.
권장 에이전트 루프
Unity의 낮은 세부 상태를 먼저 검사합니다.
하나의 구체적인 작업 문구로 검색합니다.
인자가 불분명하면 선택한 스키마를 요청합니다.
알려진 종속 작업은 순차적으로 일괄 처리합니다. 독립 읽기는 병렬화하고 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를 요구합니다.
알려진 경계
컴팩트한 출력은 의도적으로 손실이 있습니다. 원본의 손상되지 않은 raw 결과는 유한한 시간 동안
get_result로 얻을 수 있습니다.파서드가 임의의 Unity 변경 작업을 안전하게 만든는 건 아닙니다. 권한과 단계를 MCP 클라이언트와 사용자가 여전히 확인해야 합니다.
병렬 모드는 보수적입니다. Unity는 내부에서 에디터 작업을 직렬화할 수 있습니다.
검출되어 선택할 수 있는 옵션 기능(예: Roslyn 지원)이 특정 Unity 프로젝트에 없을 수 있습니다.
Scene·Game 뷰 캡처는 IMGUI 일부나 에디터 오버레이를 빼먹을 수 있습니다.
호환성 테스트는 MCP for Unity
v10.1.0기준입니다. 카탈로그는 동적으로 늘어나므로, 이후의 업스트림 버전에서는 우선 벤치마크를 실행하고 호환한다고 볼 것.
디자인 계보
우리는 Vangardo/mcp_hub 작업에서 온 프로gressive-disclosure 아이디어를 가져왔습니다. MCP_hub는 큰 통합 카탈로그를 작은 검색-호출 API 뒤로 보내는 넓은 MCP 게이트웨이입니다. Unity MCP Efficient는 그 컨텍스트 운영 방식을 Unity에 적용하고, 여기에 Unity 특화 압축, 리비전 체크, 변경 작업 복구, 스크린샷, 그리고 짧은 로컬 워크플로우까지 추가했습니다.
Slack, Teamwork, Telegram, 메모리, 자동화, 교차 서비스 에이전트에 이런 패턴이 필요하다면 MCP Hub를 참고하세요.
Unity 호환 백엔드는 CoplayDev/MCP for Unity이며, MIT License로 배포됩니다. 이 저장소는 독립적인 프로젝트로 그 소스 코드를 포함하지 않습니다. NOTICE.md와 THIRD_PARTY_NOTICES.md를 확인하세요.
사용 허가와 상표
이 저장소의 원본 코드는 MIT 라이선스로 제공됩니다.
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