assets-get-data
Retrieve detailed Unity asset data including serializable fields and properties from project files. Use after locating assets to access comprehensive information for development workflows.
Instructions
Get asset data from the asset file in the Unity project. It includes all serializable fields and properties of the asset. Use 'assets-find' tool to find asset before using this tool.
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| assetRef | Yes | Asset reference. SCHEMA: {"assetPath":"Assets/path/to/asset"} or {"instanceID":12345} or {"assetGuid":"guid-string"} |
Implementation Reference
- The tool handler in the MCP server proxies calls to the Unity bridge via file-based IPC. The actual tool implementation is not statically defined in the Python code but is dispatched dynamically to the Unity Editor using the name passed in the `call_tool` function.
def call_tool(name, arguments): """Execute a Unity Bridge tool via file IPC. Returns MCP content result.""" bridge_dir = get_bridge_dir() commands_dir = os.path.join(bridge_dir, "commands") results_dir = os.path.join(bridge_dir, "results") # Heartbeat check err = check_heartbeat(bridge_dir) if err: return True, err # Write command command_id = f"{int(time.time())}-{uuid.uuid4().hex[:8]}" command = {"id": command_id, "tool": name, "params": arguments or {}} os.makedirs(commands_dir, exist_ok=True) os.makedirs(results_dir, exist_ok=True) command_file = os.path.join(commands_dir, f"{command_id}.json") write_atomic(command_file, json.dumps(command)) # Poll for result result_file = os.path.join(results_dir, f"{command_id}.json") elapsed = 0.0 while not os.path.exists(result_file): time.sleep(IPC_POLL_INTERVAL) elapsed += IPC_POLL_INTERVAL if elapsed >= IPC_TIMEOUT: try: os.remove(command_file) except OSError: pass return True, f"Timeout after {IPC_TIMEOUT}s waiting for Unity (tool: {name})" # Read result try: with open(result_file, "r", encoding="utf-8") as f: result = json.load(f) finally: try: os.remove(result_file) except OSError: pass is_error = result.get("status") != "success" message = result.get("message", "") return is_error, message