Unity MCP Claude Code
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| FIGMA_TOKEN | No | Optional Figma API token for asset creation tools. |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": false
} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| get_environment_statusA | Vollständiger Umgebungsstatus: Hub-Pfad/-Version, installierte Editoren, neue unity-CLI, Standard-Projektordner, erlaubte Roots, ob Hub/Editor laufen. Idealer Einstiegspunkt. |
| check_hub_runningA | Prüft, ob Unity Hub aktuell läuft (Prozessliste). |
| list_unity_processesA | Listet alle laufenden Unity-Prozesse (Hub und Editoren getrennt). |
| launch_hubA | Startet die Unity-Hub-GUI (losgelöster Prozess). |
| close_hubA | Beendet alle Unity-Hub-Prozesse (NICHT die Editoren). Erfordert confirm=true. |
| stop_editorA | Beendet laufende Unity-Editor-Prozesse (Unity.exe), ohne den Hub. Erfordert confirm=true. |
| list_installed_editorsA | Listet installierte Unity-Editoren (Hub-CLI 'editors --installed'). |
| list_available_releasesA | Listet von Unity beworbene installierbare Releases (Hub-CLI, Online — kann dauern). |
| resolve_editor_changesetA | Löst eine Editor-Version (z.B. '6000.4.10f1') über die Unity-Release-API zu Changeset + unityhub://-Deep-Link auf. Nötig für install_editor bei nicht-gelisteten Versionen. |
| get_editor_install_pathA | Gibt das aktuelle Editor-Installationsverzeichnis zurück (Hub-CLI 'install-path --get'). |
| set_editor_install_pathA | Setzt das Editor-Installationsverzeichnis (Hub-CLI 'install-path --set'). confirm=true nötig. |
| install_editorA | Installiert einen Unity-Editor (+ optionale Module) als Hintergrund-Job. changeset wird für nicht-gelistete Versionen benötigt (siehe resolve_editor_changeset). Module z.B.: android, ios, webgl, windows-il2cpp, mac-mono, linux-il2cpp, documentation. Fortschritt via get_job_status/read_job_output verfolgen. confirm=true nötig (großer Download). |
| install_editor_modulesA | Fügt Module zu einem bereits installierten Editor hinzu (Hub-CLI 'install-modules'). Läuft als Hintergrund-Job. confirm=true nötig. |
| add_existing_editorB | Bindet einen außerhalb des Hubs installierten Editor ein (Hub-CLI 'editors --add'). confirm=true. |
| install_editor_via_deeplinkA | Startet die Editor-Installation über einen unityhub://-Deep-Link in der Hub-GUI (Alternative zur headless-Installation; nützlich wenn GUI-Bestätigung gewünscht). |
| list_recent_projectsA | Listet die im Hub bekannten Projekte (aus projects-v1.json), nach Datum sortiert. |
| get_project_infoA | Liest Projekt-Metadaten aus Dateien (schnell, ohne Editor-Start): Unity-Version, Changeset, productName/companyName/bundleVersion, Paketanzahl, Build-Szenen, Assets-Größe. |
| get_project_info_liveB | Startet den Editor headless und liest Live-Infos (aktives BuildTarget, Scripting-Defines, aktive Szenen) via injiziertem C#-Skript. Läuft als Job; Ergebnis aus result_file lesen. |
| create_projectA | Erstellt ein neues, leeres Unity-Projekt (Unity.exe -createProject) als Job. version optional (sonst neuester installierter Editor). confirm=true nötig. |
| open_projectA | Öffnet ein Projekt in der Editor-GUI. Nutzt die neue unity-CLI ('unity open') falls vorhanden, sonst 'Unity.exe -projectPath' (Editor-Version aus ProjectVersion.txt). |
| register_project_in_hubA | Trägt ein vorhandenes Projekt in die Hub-Recents ein (schreibt projects-v1.json). Hub sollte geschlossen sein (sonst überschreibt er die Änderung). confirm=true nötig. |
| unregister_project_from_hubA | Entfernt ein Projekt aus der Hub-Liste (löscht NICHT die Projektdateien). confirm=true nötig. |
| set_project_favoriteB | Setzt/entfernt den Favoriten-Stern eines Projekts in der Hub-Liste. confirm=true nötig. |
| build_playerB | Baut einen Player (BuildPipeline.BuildPlayer via injiziertem C#) als Hintergrund-Job. build_target z.B.: win64, StandaloneWindows64, android, webgl, ios, linux64, osxuniversal. scenes optional (sonst aktivierte Build-Settings-Szenen). Ergebnis nach Jobende aus result_file lesen (get_build_result). confirm=true nötig. |
| run_testsA | Führt Unity-Tests via Test Framework aus (Job). platform: EditMode | PlayMode | StandaloneWindows64. Schreibt NUnit-XML; danach get_test_results aufrufen. |
| get_test_resultsA | Parst eine NUnit3-Ergebnis-XML (von run_tests) und liefert Pass/Fail-Zahlen + Fehlerdetails. |
| check_compileA | Kompiliert alle Skripte des Projekts headless (öffnet+quittiert den Editor), als Job. Danach get_compile_result(log_file) für strukturierte Compiler-Fehler/Warnungen — funktioniert auch, wenn der Code NICHT kompiliert. Ideal für Schreiben→Prüfen→Auto-Fix-Schleifen. |
| get_compile_resultA | Parst Compiler-Fehler/Warnungen (Datei/Zeile/Spalte/CS-Code/Meldung) aus einem Editor-Log (von check_compile, build_scene, build_player …). |
| import_unitypackageB | Importiert ein .unitypackage headless in ein Projekt (Unity.exe -importPackage), als Job. confirm=true nötig (verändert Projekt-Assets). |
| export_unitypackageA | Exportiert Assets als .unitypackage (AssetDatabase.ExportPackage via C#), als Job. asset_paths sind projektrelativ (z.B. ['Assets/Prefabs']). confirm=true nötig. |
| run_editor_methodA | Führt eine BELIEBIGE statische Editor-Methode headless aus (-executeMethod), als Job. Mächtig und potenziell riskant (führt projektinternen Code aus) — confirm=true nötig. method als 'Namespace.Klasse.Methode'. extra_args werden unverändert angehängt. |
| remove_automation_scriptC | Entfernt das vom Server injizierte C#-Automationsskript (Assets/Editor/MCP) wieder. confirm=true. |
| list_project_packagesA | Listet die direkten Paket-Abhängigkeiten eines Projekts aus Packages/manifest.json. |
| add_project_packageA | Fügt ein Paket zu Packages/manifest.json hinzu/ändert die Version (Backup wird erstellt). version kann SemVer, git-URL oder 'file:'-Pfad sein. confirm=true nötig. |
| remove_project_packageA | Entfernt ein Paket aus Packages/manifest.json (Backup wird erstellt). confirm=true nötig. |
| get_hub_settingsA | Liest die Unity-Hub-Einstellungen (user-settings.json): Theme, Tray, Download-Limit, Channel … |
| update_hub_settingA | Setzt einen Hub-Einstellungswert (verschachtelt per '.', z.B. 'download.maxConcurrentDownloads' oder 'themeSource'). Backup wird erstellt; wirksam nach Hub-Neustart. confirm=true nötig. |
| get_default_project_dirA | Gibt den Standardordner für neue Projekte zurück (projectDir.json). |
| set_default_project_dirB | Setzt den Standardordner für neue Projekte (projectDir.json). confirm=true nötig. |
| read_editor_logB | Liest die Unity-Editor-Logdatei (Editor.log bzw. Editor-prev.log), letzte tail_lines Zeilen. |
| read_hub_logsA | Liest die Unity-Hub-Logs. which: 'info' (info-log.json) oder 'install' (install-log.json). |
| detect_errors_in_logA | Scannt ein Log auf Fehler/Exceptions. source: 'editor' | 'hub' | 'job' (mit job_id). |
| get_job_statusB | Status eines Hintergrund-Jobs (Install/Build/Test/Import/Export/Methode). |
| read_job_outputC | Liest die Ausgabe eines Jobs. stream: 'stdout' | 'stderr'. |
| list_jobsB | Listet die letzten Hintergrund-Jobs mit Status. |
| stop_jobB | Bricht einen laufenden Job ab. confirm=true nötig. |
| get_build_resultC | Liest das von build/export/info erzeugte Ergebnis-JSON (result_file aus dem jeweiligen Tool). |
| get_license_statusB | Best-effort Lizenzstatus über den Unity Licensing Client (read-only). |
| create_manual_activation_fileB | Erzeugt eine manuelle Aktivierungsdatei (.alf) zum Hochladen auf license.unity3d.com. confirm=true. |
| apply_license_fileB | Wendet eine heruntergeladene .ulf-Lizenzdatei an (manuelle Aktivierung, Schritt 3). confirm=true. |
| open_create_project_uiA | Öffnet die 'Neues Projekt'-Oberfläche im Hub (Deep-Link). |
| open_package_install_uiA | Öffnet im aktiven Editor den Package-Manager-Install für ein Paket (Deep-Link), z.B. 'com.unity.cinemachine@2.9.7'. |
| open_deep_linkC | Öffnet einen beliebigen unityhub://-Deep-Link. |
| screenshot_desktopA | Erstellt einen Desktop-Screenshot (PNG) zur Sichtprüfung des aktuellen GUI-Zustands. |
| list_backupsB | Listet die vom Server erstellten Datei-Backups (neueste zuerst). |
| restore_backupA | Stellt eine gesicherte Datei an target_path wieder her (die aktuelle Datei wird vorher erneut gesichert). confirm=true nötig. |
| write_scriptA | Schreibt ein C#-Skript (MonoBehaviour etc.) ins Projekt, z.B. rel_path='Assets/Scripts/PlayerController.cs'. Überschreibt mit Backup. Path-Sandbox aktiv. Kernbaustein für Game-Logik; danach via build_scene als Komponente per Klassenname anhängbar. |
| write_text_assetC | Schreibt eine beliebige Textdatei ins Projekt (JSON, .asmdef, .shader, .txt, .csv …). Path-Sandbox + Backup. |
| read_project_fileB | Liest eine Projektdatei als Text (z.B. ein Skript oder eine Config). |
| import_external_assetA | Kopiert eine externe Datei (Modell/Textur/Audio …) nach dest_rel (unter Assets/) ins Projekt. Unity importiert sie beim nächsten Editor-Lauf; Feintuning danach via configure_asset_import. |
| list_project_assetsC | Listet Asset-Dateien eines Projekts (rekursiv, ohne .meta). pattern z.B. '*.cs'. |
| create_project_folderB | Erstellt einen Ordner im Projekt (z.B. 'Assets/Scripts'). Path-Sandbox aktiv. |
| delete_project_assetA | Löscht eine Asset-Datei (+ .meta) nach Backup. confirm=true nötig. |
| build_sceneA | Baut aus einer JSON-Spezifikation eine echte .unity-Szene (via injiziertes C#), als Job. spec = { "scenePath": "Assets/Scenes/Game.unity", "addToBuildSettings": true, "gameObjects": [ {"name":"Main Camera","camera":true,"position":[0,1,-10]}, {"name":"Sun","light":{"type":"Directional","intensity":1.0},"rotation":[50,-30,0]}, {"name":"Floor","primitive":"Plane","scale":[5,1,5]}, {"name":"Player","primitive":"Capsule","position":[0,1,0],"tag":"Player", "components":["Rigidbody","PlayerController"]} ] } components dürfen eingebaute Typen (Rigidbody, BoxCollider …) ODER eigene MonoBehaviour- Klassennamen sein (vorher per write_script anlegen). PROFI-Features pro gameObject (optional): "material": {"color":[r,g,b],"metallic":0.0,"smoothness":0.6,"emission":[r,g,b],"emissionIntensity":2.0, "mainTexture":"Assets/.../baseColor.png","normalMap":"Assets/.../normal.png", "occlusionMap":"Assets/.../ao.png","metallicGlossMap":"Assets/.../mask.png","normalScale":1.0} (URP-aware, wird als .mat gespeichert+zugewiesen; PBR-Maps automatisch korrekt importiert: normalMap→NormalMap+_NORMALMAP, ao/mask→linear. Maps z.B. via download_pbr_material / download_polyhaven_texture holen = Premium-Look) "physicMaterial": {"bounciness":0.8,"dynamicFriction":0.3,"staticFriction":0.4} "props": Komponenten-Properties setzen (Werte/Referenzen/Assets/Enums/Vektoren/Farben), z.B. {"component":"Rigidbody","name":"mass","value":2.0} {"component":"Rigidbody","name":"linearDamping","value":0.5} # Unity-6-Name (alt: drag) {"component":"Rigidbody","name":"constraints","enum":"FreezeRotationX|FreezeRotationZ"} {"component":"CameraFollow","name":"target","ref":"Player"} # Referenz auf Scene-Objekt {"component":"AudioSource","name":"clip","asset":"Assets/Audio/x.wav"} {"component":"Light","name":"color","color":[1,0.9,0.7]} "prefab": "Assets/Prefabs/X.prefab" # statt primitive eine Prefab-Instanz erzeugen "isStatic": true, "tag":"Player", "layer":8, "parent":"OtherObjectName" Top-Level optional: "environment": {"ambientMode":"Trilight","ambient":[r,g,b],"skyboxMaterial":"Assets/...","fog":true,"fogColor":[..],"fogDensity":0.01} "postProcessing": {"bloom":{"intensity":1.2,"threshold":0.9,"scatter":0.7}, "colorAdjustments":{"postExposure":0.2,"contrast":10,"saturation":15}, "vignette":{"intensity":0.3},"tonemapping":{"mode":"ACES"}, "antialiasing":"SubpixelMorphologicalAntiAliasing"} (URP; Bloom braucht emissive/HDR-Quellen) "saveAsPrefabs": [{"object":"Enemy","path":"Assets/Prefabs/Enemy.prefab"}] Ergebnis via get_build_result(result_file). |
| configure_projectA | Setzt Projekt-Einstellungen (Job): PlayerSettings (productName/companyName/bundleVersion/ Auflösung/fullScreenMode/runInBackground/colorSpace), Quality-Level, sowie eigene Tags und Layer. config = { "productName":"My Game","companyName":"My Studio","bundleVersion":"1.0.0", "defaultWidth":1920,"defaultHeight":1080,"fullScreenMode":"FullScreenWindow", "runInBackground":true,"colorSpace":"Linear","qualityLevel":5, "tags":["Player","Enemy"],"layers":{"8":"Ground","9":"Interactable"} } Layer-Indizes müssen 8..31 sein (0..7 sind reserviert). |
| capture_scene_renderB | Rendert die Kamera einer Szene headless in eine PNG (Job) — für visuelle Prüfung:
Claude kann die PNG anschließend per Bild-Werkzeug ansehen und Shader-/Clipping-/Layout-Fehler
erkennen. Läuft bewusst OHNE -nographics (mit -force-d3d11), sonst schwarzes Bild.
Nach Jobende |
| analyze_scene_performanceA | Statische Performance-Analyse einer Szene (Job): Dreiecke/Vertices, Mesh-/Renderer-Anzahl, eindeutige Materialien (Draw-Call-Proxy), Lichter/Echtzeitlichter. Ergebnis via get_build_result(result_file) — liefert Budget-Daten zum Optimieren ohne Play-Modus. |
| profile_playA | Laufzeit-Profiling SCHRITT 1 (Job): baut einen Development-Player der Szene (inkl. Profiling-
Probe). Echte Draw-Call-/Frame-Zeit-Werte gibt es nur im laufenden Player (Headless-Editor liefert
0 Render-Zähler). Liefert |
| run_profiled_playerA | Laufzeit-Profiling SCHRITT 2 (Job): startet den von profile_play gebauten Player im Fenster (mit GPU), misst N Frames (Frame-Zeit/FPS/Draw Calls/Speicher/GC) und schreibt das Perf-JSON; der Player beendet sich selbst. Danach get_profile_result(perf_file). |
| get_profile_resultB | Liest das Profiling-Ergebnis: avgFrameMs, avgFps, maxMemMB, avgGcAllocBytes, maxDrawCalls/ maxSetPass/maxTriangles, renderCountersValid. |
| configure_asset_importB | Setzt Import-Einstellungen eines Assets (Job) und reimportiert. asset_path ist projektrelativ (z.B. 'Assets/Textures/hero.png'). settings_props = Liste von {name, value} oder {name, enum}: Texturen: maxTextureSize(int), textureCompression(enum Uncompressed/Compressed/CompressedHQ/LQ), crunchedCompression(bool), mipmapEnabled(bool), isReadable(bool), textureType(enum) Modelle: globalScale(float), meshCompression(enum Off/Low/Medium/High), materialImportMode(enum), animationType(enum), optimizeMeshPolygons(bool), optimizeMeshVertices(bool) Audio: forceToMono(bool) |
| create_animation_clipA | Erzeugt eine AnimationClip (.anim, Job) aus Keyframe-Kurven — prozedurale Animation ohne externe Assets (z.B. Idle-Bob, Pulsieren, Rotation). spec = {"path":"Assets/Anims/Bob.anim","frameRate":30,"loop":true, "curves":[{"relativePath":"Visual","type":"Transform","property":"localPosition.y", "keys":[{"t":0,"v":0},{"t":0.5,"v":0.25},{"t":1,"v":0}]}]} |
| build_animator_controllerA | Baut einen Animator-Controller (.controller, Job) mit States, Parametern und Transitions — macht Charaktere animiert (Idle/Run/Jump). Clips referenzieren via '.anim'-Pfad oder 'Pfad.fbx::ClipName'. Danach den Controller per build_scene an einen Animator hängen: components:["Animator"], props:[{"component":"Animator","name":"runtimeAnimatorController", "asset":"Assets/Animators/Player.controller"}]. spec = {"path":"...","parameters":[{"name":"Speed","type":"Float"}],"defaultState":"Idle", "states":[{"name":"Idle","clip":"..."},{"name":"Run","clip":"..."}], "transitions":[{"from":"Idle","to":"Run","conditions":[{"param":"Speed","mode":"Greater","threshold":0.1}]}]} Parameter-Typen: Float/Int/Bool/Trigger. Condition-Modi: Greater/Less/If/IfNot/Equals/NotEqual. |
| create_spriteB | Erzeugt einen prozeduralen Platzhalter-Sprite (PNG → als Sprite importiert, Job) für 2D-Spiele ohne externe Art. shape: 'square' | 'circle'. Danach via build_scene an einen 'SpriteRenderer' hängen (components:['SpriteRenderer'], props:[{component:'SpriteRenderer',name:'sprite',asset:path}]). 2D-Kamera: props {component:'Camera',name:'orthographic',value:true} + 'orthographicSize'. 2D-Physik: Komponenten 'Rigidbody2D' / 'BoxCollider2D' / 'CircleCollider2D'. |
| list_animation_clipsB | Listet die AnimationClip-Namen in einem importierten Asset (FBX/.anim, Job) — z.B. um die Clip-Namen eines Mixamo-/Asset-Pack-Charakters für build_animator_controller zu erfahren. Ergebnis via get_build_result(result_file) -> result.clips. |
| gui_list_windowsA | Listet sichtbare Top-Level-Fenster (Titel, Klasse, Handle, Position). Filter z.B. 'Unity'. |
| gui_inspect_windowA | Listet den UIA-Steuerelementbaum eines Fensters (Buttons/Texte/IDs) — ideal für den Hub. |
| gui_focus_windowB | Bringt ein Fenster in den Vordergrund (Teil-Titel genügt). |
| gui_clickA | Klickt an Bildschirmkoordinaten (button: left|right|middle). Für den selbst gezeichneten Editor der Fallback; vorher screenshot_desktop zur Orientierung nutzen. |
| gui_type_textC | Tippt literalen Text in das fokussierte Fenster. |
| gui_send_keysA | Sendet rohe Tastenfolgen (pywinauto-Syntax), z.B. '^s' = Strg+S, '{ENTER}', '%{F4}'. |
| blender_statusA | Prüft, ob Blender (headless) verfügbar ist (Version, Python, glTF/FBX-Export). |
| blender_run_pythonA | Führt ein bpy-Python-Skript headless in Blender aus → eigene 3D-Assets erzeugen (Mesh/Material/UV/Bake/Export GLB+FBX/Render) für Unity. Das mächtige Primitiv der 3D-Erstellung. Im Skript verfügbar: |
| blender_render_previewA | Rendert eine Vorschau-PNG eines 3D-Modells (GLB/FBX/OBJ) headless in Blender (CYCLES) — damit Claude generierte/importierte 3D-Assets per Bild prüfen kann. |
| blender_bake_pbrA | Erzeugt prozedural einen tileable PBR-Textursatz (baseColor/normal/roughness/ao) via Blender-CYCLES-Bake — eigene Premium-Texturen ohne Download, für Dinge, die keine CC0-Bibliothek hat. preset: 'brick' | 'rock' | 'wood' | 'metal'. resolution z.B. 512/1024/2048. Danach in Unity via build_scene material (mainTexture=baseColor, normalMap=normal, occlusionMap=ao) verbaubar. |
| pack_sprite_atlasA | Packt alle PNGs eines Ordners (rekursiv) in einen kohärenten Sprite-Atlas (atlas.png + atlas.json/JsonHash, POT, getrimmt) via free-tex-packer-core. Für 2D-Kohärenz
|
| figma_export_imagesA | Exportiert Figma-Frames/Components als PNG/SVG (für Game-UI) und lädt sie nach output_dir. node_ids aus der Figma-URL (?node-id=…); '-' wird zu ':' konvertiert. Token via Parameter oder FIGMA_TOKEN. ⚠️ Free-Tier ~6 Calls/Monat → alle Nodes in EINEM Aufruf batchen. |
| figma_get_outlineA | Holt die obere Struktur einer Figma-Datei (Frame-/Node-IDs + Namen finden), sparsam (depth). |
| krita_exportA | Konvertiert eine .kra/.psd/.tiff … in PNG/JPG (Endung von out_path) via Krita. |
| krita_openB | Öffnet Krita (GUI) zum Hand-Polieren von 2D-Art; danach als .kra speichern → krita_export. |
| search_pbr_materialsA | Sucht hochwertige CC0-PBR-Materialien auf ambientCG (z.B. 'brick', 'wood', 'metal', 'rock', 'fabric'). Liefert Asset-IDs für download_pbr_material. |
| download_pbr_materialB | Lädt ein CC0-PBR-Set von ambientCG (gescannt, kostenlos) und entpackt die Maps (baseColor/normal/roughness/ao/height/metallic). asset_id z.B. 'Bricks075A'; resolution z.B. '1K-PNG','2K-PNG','4K-PNG'. Danach in Unity (build_scene material mainTexture = baseColor, NormalMap importieren) oder Blender verbauen. Premium-Qualität ohne eigene Erstellung. |
| search_polyhaven_texturesA | Sucht CC0-Texturen auf Poly Haven (zweite Premium-Quelle, oft schöner für Natur/Stein/Holz; Tags/Kategorien). Liefert Asset-Slugs für download_polyhaven_texture. |
| download_polyhaven_textureB | Lädt ein CC0-PBR-Set von Poly Haven und klassifiziert die Maps (baseColor/normal(nor_gl)/ roughness/ao/height/metallic/arm). asset_id z.B. 'brick_wall_02'; resolution '1k'/'2k'/'4k'/'8k'; fmt 'png'/'jpg'. Danach in Unity via build_scene material (mainTexture=baseColor, normalMap=normal, occlusionMap=ao) verbaubar — volle PBR-Qualität ohne eigene Erstellung. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/MauricePutinas/Unity-MCP-Claude-Code'
If you have feedback or need assistance with the MCP directory API, please join our Discord server