Unity MCP Server

by justinpbarnett
Verified
using System; using System.Collections.Generic; using Newtonsoft.Json.Linq; namespace UnityMCP.Editor.Commands { /// <summary> /// Registry for all MCP command handlers /// </summary> public static class CommandRegistry { private static readonly Dictionary<string, Func<JObject, object>> _handlers = new() { // Scene management commands { "GET_SCENE_INFO", _ => SceneCommandHandler.GetSceneInfo() }, { "OPEN_SCENE", parameters => SceneCommandHandler.OpenScene(parameters) }, { "SAVE_SCENE", _ => SceneCommandHandler.SaveScene() }, { "NEW_SCENE", parameters => SceneCommandHandler.NewScene(parameters) }, { "CHANGE_SCENE", parameters => SceneCommandHandler.ChangeScene(parameters) }, // Asset management commands { "IMPORT_ASSET", parameters => AssetCommandHandler.ImportAsset(parameters) }, { "INSTANTIATE_PREFAB", parameters => AssetCommandHandler.InstantiatePrefab(parameters) }, { "CREATE_PREFAB", parameters => AssetCommandHandler.CreatePrefab(parameters) }, { "APPLY_PREFAB", parameters => AssetCommandHandler.ApplyPrefab(parameters) }, { "GET_ASSET_LIST", parameters => AssetCommandHandler.GetAssetList(parameters) }, // Object management commands { "GET_OBJECT_PROPERTIES", parameters => ObjectCommandHandler.GetObjectProperties(parameters) }, { "GET_COMPONENT_PROPERTIES", parameters => ObjectCommandHandler.GetComponentProperties(parameters) }, { "FIND_OBJECTS_BY_NAME", parameters => ObjectCommandHandler.FindObjectsByName(parameters) }, { "FIND_OBJECTS_BY_TAG", parameters => ObjectCommandHandler.FindObjectsByTag(parameters) }, { "GET_HIERARCHY", _ => ObjectCommandHandler.GetHierarchy() }, { "SELECT_OBJECT", parameters => ObjectCommandHandler.SelectObject(parameters) }, { "GET_SELECTED_OBJECT", _ => ObjectCommandHandler.GetSelectedObject() }, // Editor control commands { "EDITOR_CONTROL", parameters => EditorControlHandler.HandleEditorControl(parameters) } }; /// <summary> /// Gets a command handler by name /// </summary> /// <param name="commandName">Name of the command to get</param> /// <returns>The command handler function if found, null otherwise</returns> public static Func<JObject, object> GetHandler(string commandName) { return _handlers.TryGetValue(commandName, out var handler) ? handler : null; } } }