Skip to main content
Glama

editor_search_assets

Search for Unreal Engine assets by name, path, or class to locate specific files within your project.

Instructions

Search for assets by name or path with optional class filter

Example output: {'search_term': 'character', 'asset_class_filter': 'Blueprint', 'total_matches': 3, 'assets': [{'name': 'BP_Character', 'path': '/Game/Characters', 'class': 'Blueprint', 'package_name': 'BP_Character'}, {'name': 'BP_EnemyCharacter', 'path': '/Game/Enemies', 'class': 'Blueprint', 'package_name': 'BP_EnemyCharacter'}]}

Returns search results with asset details, limited to 50 results.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
search_termYes
asset_classNo

Implementation Reference

  • Core implementation of the asset search logic using Unreal Engine's AssetRegistry. Searches assets by name or path with optional class filter, sorts by relevance, limits to 50 results.
    def search_assets( search_term: str, asset_class: Optional[str] = None ) -> Dict[str, Any]: asset_registry = unreal.AssetRegistryHelpers.get_asset_registry() all_assets = asset_registry.get_all_assets() matching_assets = [] search_term_lower = search_term.lower() for asset in all_assets: asset_name = str(asset.asset_name).lower() package_path = str(asset.package_path).lower() asset_class_name = str(asset.asset_class_path.asset_name).lower() name_match = search_term_lower in asset_name path_match = search_term_lower in package_path class_match = True if asset_class: class_match = asset_class.lower() in asset_class_name if (name_match or path_match) and class_match: matching_assets.append( { "name": str(asset.asset_name), "path": str(asset.package_path), "class": str(asset.asset_class_path.asset_name), "package_name": str(asset.package_name), } ) def relevance_score(asset): name_exact = search_term_lower == asset["name"].lower() name_starts = asset["name"].lower().startswith(search_term_lower) return (name_exact * 3) + (name_starts * 2) + 1 matching_assets.sort(key=relevance_score, reverse=True) return { "search_term": search_term, "asset_class_filter": asset_class, "total_matches": len(matching_assets), "assets": matching_assets[:50], # Limit to 50 results }
  • Registers the 'editor_search_assets' tool with MCP server, including schema (search_term: string, asset_class: optional string) and thin wrapper handler that executes templated Python code via tryRunCommand.
    server.tool( "editor_search_assets", "Search for assets by name or path with optional class filter\n\nExample output: {'search_term': 'character', 'asset_class_filter': 'Blueprint', 'total_matches': 3, 'assets': [{'name': 'BP_Character', 'path': '/Game/Characters', 'class': 'Blueprint', 'package_name': 'BP_Character'}, {'name': 'BP_EnemyCharacter', 'path': '/Game/Enemies', 'class': 'Blueprint', 'package_name': 'BP_EnemyCharacter'}]}\n\nReturns search results with asset details, limited to 50 results.", { search_term: z.string(), asset_class: z.string().optional(), }, async ({ search_term, asset_class }) => { const result = await tryRunCommand(editorTools.UESearchAssets(search_term, asset_class)) return { content: [ { type: "text", text: result, }, ], } }, )
  • Helper function that templates the ue_search_assets.py script with search parameters for execution in Unreal Editor.
    export const UESearchAssets = (search_term: string, asset_class?: string) => Template(read("./scripts/ue_search_assets.py"), { search_term, asset_class: asset_class || "", })

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