Unity Editor MCP Server
MCP Unity Editor (Spiele-Engine)
,/(/. *(/,
*/(((((/. *((((((*.
.*((((((((((/. *((((((((((/.
./((((((((((((((/ *((((((((((((((/,
,/(((((((((((((/*. */(((((((((((((/*.
,%%#((/((((((* ,/(((((/(#&@@(
,%%##%%##((((((/*. ,/((((/(#&@@@@@@(
,%%######%%##((/(((/*. .*/(((//(%@@@@@@@@@@@(
,%%####%#(%%#%%##((/((((((((//#&@@@@@@&@@@@@@@@(
,%%####%( /#%#%%%##(//(#@@@@@@@%, #@@@@@@@(
,%%####%( *#%###%@@@@@@( #@@@@@@@(
,%%####%( #%#%@@@@, #@@@@@@@(
,%%##%%%( #%#%@@@@, #@@@@@@@(
,%%%#* #%#%@@@@, *%@@@(
., ,/##*. #%#%@@@@, ./&@#* *`
,/#%#####%%#/, #%#%@@@@, ,/&@@@@@@@@@&\.
`*#########%%%%###%@@@@@@@@@@@@@@@@@@&*´
`*%%###########%@@@@@@@@@@@@@@&*´
`*%%%######%@@@@@@@@@@&*´
`*#%%##%@@@@@&*´
`*%#%@&*´
███╗ ███╗ ██████╗██████╗ ██╗ ██╗███╗ ██╗██╗████████╗██╗ ██╗
████╗ ████║██╔════╝██╔══██╗ ██║ ██║████╗ ██║██║╚══██╔══╝╚██╗ ██╔╝
██╔████╔██║██║ ██████╔╝ ██║ ██║██╔██╗ ██║██║ ██║ ╚████╔╝
██║╚██╔╝██║██║ ██╔═══╝ ██║ ██║██║╚██╗██║██║ ██║ ╚██╔╝
██║ ╚═╝ ██║╚██████╗██║ ╚██████╔╝██║ ╚████║██║ ██║ ██║
╚═╝ ╚═╝ ╚═════╝╚═╝ ╚═════╝ ╚═╝ ╚═══╝╚═╝ ╚═╝ ╚═╝ MCP Unity ist eine Implementierung des Model Context Protocol für den Unity Editor und ermöglicht KI-Assistenten die Interaktion mit Ihren Unity-Projekten. Dieses Paket bildet eine Brücke zwischen Unity und einem Node.js-Server, der das MCP-Protokoll implementiert. Dadurch können KI-Agenten wie Claude, Windsurf und Cursor Operationen im Unity Editor ausführen.
Merkmale
IDE-Integration – Paket-Cache-Zugriff
MCP Unity ermöglicht die automatische Integration mit VSCode-ähnlichen IDEs (Visual Studio Code, Cursor, Windsurf), indem der Ordner Unity Library/PackedCache zu Ihrem Arbeitsbereich hinzugefügt wird. Diese Funktion:
Verbessert die Code-Intelligenz für Unity-Pakete
Ermöglicht eine bessere Autovervollständigung und Typinformationen für Unity-Pakete
Hilft KI-Codierungsassistenten, die Abhängigkeiten Ihres Projekts zu verstehen
MCP-Servertools
Zum Bearbeiten und Abfragen von Unity-Szenen und GameObjects über MCP stehen die folgenden Tools zur Verfügung:
execute_menu_item: Führt Unity-Menüelemente aus (Funktionen, die mit dem Attribut „MenuItem“ gekennzeichnet sind)Beispiel-Eingabeaufforderung: „Führen Sie den Menüpunkt ‚GameObject/Create Empty‘ aus, um ein neues leeres GameObject zu erstellen.“
select_gameobject: Wählt Spielobjekte in der Unity-Hierarchie nach Pfad oder Instanz-ID ausBeispielaufforderung: „Wählen Sie das Hauptkameraobjekt in meiner Szene aus.“
update_gameobject: Aktualisiert die Kerneigenschaften eines GameObjects (Name, Tag, Ebene, aktiver/statischer Status) oder erstellt das GameObject, wenn es nicht existiertBeispiel-Eingabeaufforderung: „Setzen Sie das Tag des Player-Objekts auf ‚Enemy‘ und machen Sie es inaktiv.“
update_component: Aktualisiert Komponentenfelder in einem GameObject oder fügt sie dem GameObject hinzu, wenn es die Komponente nicht enthältBeispiel-Eingabeaufforderung: „Fügen Sie dem Player-Objekt eine Rigidbody-Komponente hinzu und setzen Sie ihre Masse auf 5.“
add_package: Installiert neue Pakete im Unity Package ManagerBeispiel-Eingabeaufforderung: „Fügen Sie das TextMeshPro-Paket zu meinem Projekt hinzu.“
run_tests: Führt Tests mit dem Unity Test Runner ausBeispiel-Eingabeaufforderung: „Alle EditMode-Tests in meinem Projekt ausführen“
send_console_log: Senden Sie ein Konsolenprotokoll an UnityBeispiel-Eingabeaufforderung: „Senden Sie ein Konsolenprotokoll an den Unity Editor“
add_asset_to_scene: Fügt der Unity-Szene ein Asset aus der AssetDatabase hinzuBeispiel-Eingabeaufforderung: „Fügen Sie das Player-Prefab aus meinem Projekt zur aktuellen Szene hinzu.“
MCP-Serverressourcen
unity://menu-items: Ruft eine Liste aller verfügbaren Menüelemente im Unity-Editor ab, um das Toolexecute_menu_itemzu vereinfachenBeispiel-Eingabeaufforderung: „Zeigen Sie mir alle verfügbaren Menüelemente im Zusammenhang mit der Erstellung von GameObjects.“
unity://scenes-hierarchy: Ruft eine Liste aller Spielobjekte in der aktuellen Unity-Szenenhierarchie abBeispiel-Eingabeaufforderung: „Zeigen Sie mir die aktuelle Hierarchiestruktur der Szenen.“
unity://gameobject/{id}: Ruft detaillierte Informationen zu einem bestimmten GameObject anhand der Instanz-ID oder des Objektpfads in der Szenenhierarchie ab, einschließlich aller GameObject-Komponenten mit ihren serialisierten Eigenschaften und FeldernBeispiel-Eingabeaufforderung: „Holen Sie mir detaillierte Informationen zum Player-GameObject.“
unity://logs: Ruft eine Liste aller Protokolle von der Unity-Konsole abBeispiel-Eingabeaufforderung: „Zeigen Sie mir die letzten Fehlermeldungen der Unity-Konsole.“
unity://packages: Ruft Informationen über installierte und verfügbare Pakete vom Unity Package Manager abBeispiel-Eingabeaufforderung: „Listen Sie alle Pakete auf, die derzeit in meinem Unity-Projekt installiert sind.“
unity://assets: Ruft Informationen zu Assets in der Unity Asset-Datenbank abBeispiel-Eingabeaufforderung: „Alle Textur-Assets in meinem Projekt finden“
unity://tests/{testMode}: Ruft Informationen zu Tests im Unity Test Runner abBeispiel-Eingabeaufforderung: „Liste alle verfügbaren Tests in meinem Unity-Projekt auf“
Related MCP server: MCP For Unity
Anforderungen
Unity 2022.3 oder höher – um den Server zu installieren
Node.js 18 oder höher – zum Starten des Servers
npm 9 oder höher – zum Debuggen des Servers
Installation
Die Installation dieses MCP Unity Servers ist ein mehrstufiger Prozess:
Schritt 1: Installieren Sie das Unity MCP Server-Paket über den Unity Package Manager
Öffnen Sie den Unity-Paketmanager (Fenster > Paketmanager).
Klicken Sie oben links auf die Schaltfläche "+"
Wählen Sie „Paket von Git-URL hinzufügen …“
Geben Sie ein:
https://github.com/CoderGamester/mcp-unity.gitKlicken Sie auf „Hinzufügen“
Schritt 2: Installieren Sie Node.js
Um den MCP Unity-Server auszuführen, muss Node.js 18 oder höher auf Ihrem Computer installiert sein:
Besuchen Sie die Node.js-Downloadseite
Laden Sie den Windows Installer (.msi) für die LTS-Version herunter (empfohlen)
Führen Sie das Installationsprogramm aus und folgen Sie dem Installationsassistenten
Überprüfen Sie die Installation, indem Sie PowerShell öffnen und Folgendes ausführen:
node --versionBesuchen Sie die Node.js-Downloadseite
Laden Sie das macOS-Installationsprogramm (.pkg) für die LTS-Version herunter (empfohlen)
Führen Sie das Installationsprogramm aus und folgen Sie dem Installationsassistenten
Wenn Sie Homebrew installiert haben, können Sie alternativ Folgendes ausführen:
brew install node@18Überprüfen Sie die Installation, indem Sie das Terminal öffnen und Folgendes ausführen:
node --version
Schritt 3: AI LLM-Client konfigurieren
Öffnen Sie den Unity-Editor
Navigieren Sie zu Tools > MCP Unity > Serverfenster
Klicken Sie auf die Schaltfläche "Konfigurieren" für Ihren AI LLM-Client, wie im Bild unten gezeigt
Bestätigen Sie die Installation der Konfiguration mit dem angezeigten Popup
Öffnen Sie die MCP-Konfigurationsdatei Ihres AI-Clients (z. B. claude_desktop_config.json in Claude Desktop) und kopieren Sie den folgenden Text:
Ersetzen Sie
ABSOLUTE/PATH/TOdurch den absoluten Pfad zu Ihrer MCP Unity-Installation oder kopieren Sie einfach den Text aus dem MCP-Serverfenster des Unity Editors (Tools > MCP Unity > Serverfenster).
{
"mcpServers": {
"mcp-unity": {
"command": "node",
"args": [
"ABSOLUTE/PATH/TO/mcp-unity/Server~/build/index.js"
]
}
}
}Starten Sie den Unity Editor MCP-Server
Öffnen Sie den Unity-Editor
Navigieren Sie zu Tools > MCP Unity > Serverfenster
Klicken Sie auf „Server starten“, um den WebSocket-Server zu starten
Öffnen Sie Claude Desktop oder Ihre AI Coding IDE (z. B. Cursor IDE, Windsurf IDE usw.) und starten Sie die Ausführung der Unity-Tools
Wenn der AI-Client eine Verbindung zum WebSocket-Server herstellt, wird er automatisch im grünen Feld im Fenster angezeigt
Optional: WebSocket-Port festlegen
Standardmäßig läuft der WebSocket-Server auf Port 8090. Sie können diesen Port auf zwei Arten ändern:
Öffnen Sie den Unity-Editor
Navigieren Sie zu Tools > MCP Unity > Serverfenster
Ändern Sie den Wert "WebSocket Port" auf die gewünschte Portnummer
Unity richtet die Systemumgebungsvariable UNITY_PORT auf die neue Portnummer ein
Starten Sie den Node.js-Server neu
Klicken Sie erneut auf „Server starten“, um den Unity Editor-Websocket wieder mit dem Node.js MCP-Server zu verbinden
Legen Sie die Umgebungsvariable UNITY_PORT im Terminal fest
Powershell GXP6
Eingabeaufforderung/Terminal GXP7
Starten Sie den Node.js-Server neu
Klicken Sie erneut auf „Server starten“, um den Unity Editor-Websocket wieder mit dem Node.js MCP-Server zu verbinden
Optional: Timeout festlegen
Standardmäßig beträgt das Timeout zwischen dem MCP-Server und dem WebSocket 10 Sekunden. Sie können es je nach verwendetem Betriebssystem ändern:
Öffnen Sie den Unity-Editor
Navigieren Sie zu Tools > MCP Unity > Serverfenster
Ändern Sie den Wert "Anforderungs-Timeout (Sekunden)" auf die gewünschten Timeout-Sekunden
Unity richtet die Systemumgebungsvariable UNITY_REQUEST_TIMEOUT auf den neuen Timeout-Wert ein
Starten Sie den Node.js-Server neu
Klicken Sie erneut auf „Server starten“, um den Unity Editor-Websocket wieder mit dem Node.js MCP-Server zu verbinden
Für Nicht-Windows-Betriebssysteme müssen Sie zwei Stellen konfigurieren:
Im Editor-Prozess-Timeout
Öffnen Sie den Unity-Editor
Navigieren Sie zu Tools > MCP Unity > Serverfenster
Ändern Sie den Wert "Anforderungs-Timeout (Sekunden)" auf die gewünschten Timeout-Sekunden
WebSocket-Timeout
Legen Sie die Umgebungsvariable UNITY_REQUEST_TIMEOUT im Terminal fest
Powershell GXP8
Eingabeaufforderung/Terminal GXP9
Starten Sie den Node.js-Server neu
Klicken Sie erneut auf „Server starten“, um den Unity Editor-Websocket wieder mit dem Node.js MCP-Server zu verbinden
[!TIPP]
Das Timeout zwischen Ihrer AI Coding IDE (z. B. Claude Desktop, Cursor IDE, Windsurf IDE) und dem MCP-Server hängt von der IDE ab.
Debuggen des Servers
Der MCP Unity-Server wird mit Node.js erstellt. Dazu muss der TypeScript-Code im build -Verzeichnis in JavaScript kompiliert werden. Um den Server zu erstellen, öffnen Sie ein Terminal und:
Navigieren Sie zum Serververzeichnis:
cd ABSOLUTE/PATH/TO/mcp-unity/Server~Installieren Sie Abhängigkeiten:
npm installErstellen Sie den Server:
npm run buildFühren Sie den Server aus:
node build/index.js
Debuggen Sie den Server mit @modelcontextprotocol/inspector :
PowerShell
npx @modelcontextprotocol/inspector node Server~/build/index.jsEingabeaufforderung/Terminal
npx @modelcontextprotocol/inspector node Server~/build/index.jsVergessen Sie nicht, den Server mit Ctrl + C herunterzufahren, bevor Sie das Terminal schließen oder es mit dem MCP Inspector debuggen.
Aktivieren Sie die Protokollierung auf Ihrem Terminal oder in einer log.txt-Datei:
Powershell GXP16
Eingabeaufforderung/Terminal GXP17
Fehlerbehebung
Stellen Sie sicher, dass der WebSocket-Server ausgeführt wird (überprüfen Sie das Serverfenster in Unity).
Senden Sie eine Konsolenprotokollnachricht vom MCP-Client, um eine erneute Verbindung zwischen MCP-Client und Unity-Server zu erzwingen
Ändern Sie die Portnummer im MCP-Serverfenster des Unity-Editors. (Tools > MCP Unity > Serverfenster)
Überprüfen Sie die Unity-Konsole auf Fehlermeldungen
Stellen Sie sicher, dass Node.js ordnungsgemäß installiert und in Ihrem PATH zugänglich ist
Überprüfen Sie, ob alle Abhängigkeiten im Serververzeichnis installiert sind
Das Tool run_tests gibt die folgende Antwort zurück:
Error:
Connection failed: Unknown errorDieser Fehler tritt auf, weil die Bridge-Verbindung verloren geht, wenn die Domäne beim Wechsel in den Wiedergabemodus neu geladen wird.
Die Problemumgehung besteht darin, „Domäne neu laden“ unter „Bearbeiten > Projekteinstellungen > Editor > „Einstellungen für den Wiedergabemodus eingeben“ zu deaktivieren.
Support und Feedback
Wenn Sie Fragen haben oder Unterstützung benötigen, öffnen Sie bitte ein Problem in diesem Repository.
Alternativ können Sie uns erreichen unter:
Linkedin:
Discord: gamester7178
E-Mail: game.gamester@gmail.com
Beitragen
Beiträge sind willkommen! Senden Sie uns gerne einen Pull Request oder eröffnen Sie ein Issue mit Ihrer Anfrage.
Übernehmen Sie Ihre Änderungen im konventionellen Commit- Format.
Lizenz
Dieses Projekt steht unter der MIT-Lizenz
Danksagung
Available Tools
5 toolsnotify_messageC
Sends a message to the Unity console
| Name | Required | Description | Default |
|---|---|---|---|
| message | Yes | The message to display in the Unity console | |
| type | No | The type of message (info, warning, error) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden but only states what the tool does without disclosing behavioral traits. It doesn't mention whether this is a read-only operation, if it requires specific permissions, how messages appear in the console, or any rate limits. The description is minimal and lacks necessary context for a mutation tool.
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 zero waste. It's appropriately sized and front-loaded, directly stating the tool's purpose without unnecessary elaboration.
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 that sends messages (implying mutation) with no annotations and no output schema, the description is incomplete. It doesn't explain what happens after sending, return values, error conditions, or integration with Unity's console system. The minimal description leaves significant gaps in understanding the tool's behavior.
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 100%, so the schema already documents both parameters thoroughly. The description doesn't add any meaning beyond what the schema provides about message content or type options. Baseline 3 is appropriate when the schema does the heavy lifting.
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 clearly states the action ('sends') and target ('message to the Unity console'), providing a specific verb+resource combination. However, it doesn't differentiate from sibling tools like 'execute_menu_item' or 'run_tests', which prevents a perfect score.
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 provides no guidance on when to use this tool versus alternatives like logging to files or using other console methods. It lacks context about appropriate scenarios or exclusions, offering only basic functional information.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
package_managerC
Manages packages in the Unity Package Manager
| Name | Required | Description | Default |
|---|---|---|---|
| branch | No | The branch to use for GitHub packages (optional) | |
| methodSource | Yes | The method source to use (registry, github, or disk) to add the package | |
| packageName | No | The package name to add from Unity registry (e.g. com.unity.textmeshpro) | |
| path | No | The path to use (folder path for disk method or subfolder for GitHub) | |
| repositoryUrl | No | The GitHub repository URL (e.g. https://github.com/username/repo.git) | |
| version | No | The version to use for registry packages (optional) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure but only states a general purpose. It doesn't describe whether this tool performs read-only or destructive operations, what permissions are needed, how it handles errors, or what the typical output looks like, which is insufficient for a tool with multiple parameters and no output schema.
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 wasted words, making it appropriately concise. However, it lacks front-loaded detail that could immediately clarify the tool's specific actions, slightly reducing its effectiveness despite the brevity.
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 tool's complexity with 6 parameters, no annotations, and no output schema, the description is incomplete. It fails to explain what the tool does beyond a vague purpose, leaving gaps in understanding behavioral traits, return values, and proper usage context, which is inadequate for effective agent invocation.
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?
The schema description coverage is 100%, so all parameters are documented in the schema itself. The description adds no additional meaning about parameters beyond the general purpose, resulting in a baseline score of 3 where the schema does the heavy lifting without enhancement from the description.
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 'Manages packages in the Unity Package Manager' states a general purpose but is vague about what specific actions are performed. It doesn't specify whether it adds, removes, updates, or lists packages, and doesn't distinguish from sibling tools like 'execute_menu_item' or 'run_tests' which are unrelated to package management.
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 provided on when to use this tool versus alternatives. The description doesn't mention any prerequisites, context for package management, or exclusions, leaving the agent to infer usage from the parameters alone without explicit direction.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
run_testsC
Runs Unity's Test Runner tests
| Name | Required | Description | Default |
|---|---|---|---|
| testFilter | No | Optional test filter (e.g. specific test name or namespace) | |
| testMode | No | The test mode to run (EditMode, PlayMode, or All) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden but lacks behavioral details. It doesn't disclose whether this is a read-only or destructive operation, execution time, error handling, or output format (e.g., test results). The phrase 'Runs' implies execution but gives no further context on safety or side effects.
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 wasted words, making it easy to parse. It's front-loaded with the core action and resource, earning full marks for conciseness and structure.
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 complexity of running tests (which involves execution and potential side effects), no annotations, and no output schema, the description is incomplete. It doesn't explain what happens during execution, what results to expect, or any constraints, leaving significant gaps for an agent to use the tool effectively.
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?
The input schema has 100% description coverage, documenting both parameters clearly. The description adds no additional meaning beyond what the schema provides, such as examples of test filters or implications of test modes. With high schema coverage, the baseline score of 3 is appropriate.
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 clearly states the action ('Runs') and the resource ('Unity's Test Runner tests'), making the purpose immediately understandable. However, it doesn't differentiate this tool from sibling tools like 'execute_menu_item' or 'package_manager', which could also involve Unity operations, so it doesn't reach the highest score.
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 provides no guidance on when to use this tool versus alternatives. There's no mention of prerequisites, context (e.g., when in Unity's workflow), or comparisons to siblings like 'execute_menu_item' for other Unity actions, leaving the agent to infer usage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
select_objectC
Sets the selected object in the Unity editor by path or ID
| Name | Required | Description | Default |
|---|---|---|---|
| objectPath | Yes | The path or ID of the object to select (e.g. "Main Camera" or a Unity object ID) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It states the tool 'Sets the selected object' which implies a mutation (changing editor state), but doesn't disclose critical traits like whether this requires specific editor modes, if changes are undoable, potential side effects, or error handling. For a mutation tool with zero annotation coverage, this is a significant gap.
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 that front-loads the core action ('Sets the selected object') with essential details ('in the Unity editor by path or ID'). Every word earns its place with no redundancy or fluff, making it highly concise and well-structured.
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 tool's complexity (a mutation in an editor environment), lack of annotations, and no output schema, the description is incomplete. It doesn't cover behavioral aspects like permissions, side effects, or return values, leaving gaps for an AI agent to understand how to invoke it correctly in context.
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?
The input schema has 100% description coverage, with the parameter 'objectPath' fully documented in the schema. The description adds minimal value beyond the schema by mentioning 'path or ID' and providing an example ('Main Camera'), but doesn't elaborate on syntax, format differences, or edge cases. Baseline 3 is appropriate when the schema does the heavy lifting.
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 clearly states the action ('Sets the selected object') and the resource ('in the Unity editor'), with the method ('by path or ID') specified. It distinguishes from siblings like 'execute_menu_item' or 'run_tests' by focusing on object selection. However, it doesn't explicitly differentiate from all siblings (e.g., 'notify_message' is clearly different, but the distinction could be more explicit for a perfect score).
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 provides no guidance on when to use this tool versus alternatives. It doesn't mention prerequisites (e.g., needing an open Unity project), exclusions, or comparisons to sibling tools. Usage is implied through the action but lacks explicit context for selection.
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.
5 tool updates
v1.0.0- First observed
execute_menu_item - First observed
notify_message - First observed
package_manager - First observed
run_tests - First observed
select_object
TDQS
Scored across 5 tools
Each tool has a clearly distinct purpose targeting different Unity Editor functionalities: executing menu items, sending console messages, managing packages, running tests, and selecting objects. There is no overlap or ambiguity in their intended uses.
The tool names follow a consistent snake_case pattern with descriptive verb_noun combinations (e.g., execute_menu_item, notify_message). However, 'package_manager' deviates slightly by using a noun-only name instead of a verb_noun structure, but overall the naming is highly readable and predictable.
With 5 tools, the server is well-scoped for its purpose of interacting with the Unity Editor. Each tool serves a specific, essential function, and there are no extraneous or redundant tools, making the count appropriate for the domain.
The toolset covers key Unity Editor operations like executing commands, messaging, package management, testing, and object selection. However, there are notable gaps for a full editor integration, such as creating or modifying assets, building projects, or accessing scene hierarchies, which limits comprehensive workflow coverage.
Maintenance
Related MCP Connectors
A comprehensive Model Context Protocol (MCP) server that enables AI assistants to control Unreal E…
MCP server for AI dialogue using various LLM models via AceDataCloud
MCP server unifying ERPs, CRMs, APIs and knowledge base for Claude, ChatGPT and Gemini.
Nifty's MCP server — exposes tasks, projects, messages, and files as tools for AI agents.
Related MCP Servers
- AlicenseNot gradedqualityAmaintenanceSeamless automation and intelligent control over your Unity projects. By integrating with the MCP server and client, it allows AI agents or external tools to interact with your Unity environment—creating, modifying, and managing GameObjects, Components, Assets, Scenes, and more.4,386Apache 2.0
- FlicenseNot gradedqualityDmaintenanceEnables AI clients to interact with and control the Unity Editor through a Python MCP server bridge, allowing natural language-based Unity project manipulation.-
- AlicenseNot gradedqualityDmaintenanceMCP server that bridges Unity with AI agents, enabling scene inspection, C# code execution, and screenshot capture via WebSocket communication.MIT
- FlicenseNot gradedqualityDmaintenanceMCP server that lets AI agents drive the full Unity lifecycle on macOS without opening the Unity Editor.2-