Skip to main content
Glama

editor_get_asset_info

Retrieve asset metadata and LOD details for StaticMesh and SkeletalMesh assets in Unreal Engine to analyze mesh properties and structure.

Instructions

Get information about an asset, including LOD levels for StaticMesh and SkeletalMesh assets

Example output: [{'name': 'SM_Cube', 'is_valid': True, 'is_u_asset': True, 'is_asset_loaded': True, 'class': 'StaticMesh', 'path': '/Game/Meshes/SM_Cube', 'package': 'SM_Cube', 'package_path': '/Game/Meshes/SM_Cube', 'lod_levels': [{'lod_index': 0, 'num_vertices': 24, 'num_triangles': 12}, {'lod_index': 1, 'num_vertices': 16, 'num_triangles': 8}]}]

Returns asset metadata with LOD information for mesh assets.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
asset_pathYes

Implementation Reference

  • Core handler logic in Python script executed by Unreal Editor. Retrieves asset metadata including LOD levels for StaticMesh and SkeletalMesh using Unreal Python API.
    from typing import List, Dict, Any import unreal import json def get_asset_info(asset_path: str) -> List[Dict[str, Any]]: asset = unreal.EditorAssetLibrary.find_asset_data(asset_path) if asset.is_valid(): asset_data = asset.get_asset() asset_info = { "name": asset_data.get_name(), "is_valid": asset.is_valid(), "is_u_asset": asset.is_u_asset(), "is_asset_loaded": asset.is_asset_loaded(), "class": asset_data.get_class().get_name(), "path": asset_data.get_path_name(), "package": asset_data.get_package().get_name(), "package_path": asset_data.get_package().get_path_name(), } # Add LOD information for assets that support it lod_info = get_lod_info(asset_data) if lod_info: asset_info["lod_levels"] = lod_info return [asset_info] else: return [] def get_lod_info(asset_data) -> List[Dict[str, Any]]: lod_levels = [] try: if isinstance(asset_data, unreal.StaticMesh): num_lods = asset_data.get_num_lods() for i in range(num_lods): lod_data = asset_data.get_render_data().lod_resources[i] lod_info = { "lod_index": i, "num_vertices": lod_data.get_num_vertices(), "num_triangles": lod_data.get_num_triangles(), } lod_levels.append(lod_info) elif isinstance(asset_data, unreal.SkeletalMesh): editor_subsystem = unreal.get_editor_subsystem( unreal.SkeletalMeshEditorSubsystem ) if editor_subsystem: try: lod_count = editor_subsystem.get_lod_count(asset_data) for lod_index in range(lod_count): try: lod_info_data = editor_subsystem.get_lod_info( asset_data, lod_index ) lod_data = { "lod_index": lod_index, "lod_info": str(lod_info_data) if lod_info_data else None, } lod_levels.append(lod_data) except Exception: lod_data = { "lod_index": lod_index, "lod_info": None, } lod_levels.append(lod_data) except Exception: pass except Exception as e: # If we can't get LOD info, return empty list pass return lod_levels def main(): asset_info = get_asset_info("${asset_path}") print(json.dumps(asset_info)) if __name__ == "__main__": main()
  • Registers the 'editor_get_asset_info' tool in the MCP server, defines input schema { asset_path: z.string() }, and provides wrapper handler that executes the templated Python command.
    server.tool( "editor_get_asset_info", "Get information about an asset, including LOD levels for StaticMesh and SkeletalMesh assets\n\nExample output: [{'name': 'SM_Cube', 'is_valid': True, 'is_u_asset': True, 'is_asset_loaded': True, 'class': 'StaticMesh', 'path': '/Game/Meshes/SM_Cube', 'package': 'SM_Cube', 'package_path': '/Game/Meshes/SM_Cube', 'lod_levels': [{'lod_index': 0, 'num_vertices': 24, 'num_triangles': 12}, {'lod_index': 1, 'num_vertices': 16, 'num_triangles': 8}]}]\n\nReturns asset metadata with LOD information for mesh assets.", { asset_path: z.string() }, async ({ asset_path }) => { const result = await tryRunCommand(editorTools.UEGetAssetInfo(asset_path)) return { content: [ { type: "text", text: result, }, ], } }, )
  • Helper function that reads the ue_get_asset_info.py script and applies Template with asset_path parameter to generate the Python code string for execution.
    export const UEGetAssetInfo = (asset_path: string) => Template(read("./scripts/ue_get_asset_info.py"), { asset_path })

Latest Blog Posts

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/runreal/unreal-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server