assets-find-built-in
Search Unity Editor's built-in assets like Materials and Shaders from the Resources/unity_builtin_extra folder to locate default resources for your projects.
Instructions
Search the built-in assets of the Unity Editor located in the built-in resources: Resources/unity_builtin_extra. Doesn't support GUIDs since built-in assets do not have them.
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | The name of the asset to filter by. | |
| type | No | The type of the asset to filter by. Schema: "Material" or "Shader" or "Texture2D" etc. (Unity asset type name) | |
| maxResults | No | Maximum number of assets to return. If the number of found assets exceeds this limit, the result will be truncated. | 10 |
Implementation Reference
- The `call_tool` function in `mcp_server.py` handles the execution of MCP tools (including "assets-find-built-in") by writing commands to a filesystem-based IPC mechanism that the Unity Editor monitors.
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