search_polyhaven_assets
Search Polyhaven's library of 3D assets like HDRI environments, textures, and models, with filtering by type and categories to find resources for 3D projects.
Instructions
Search for assets on Polyhaven with optional filtering.
Parameters:
- asset_type: Type of assets to search for (hdris, textures, models, all)
- categories: Optional comma-separated list of categories to filter by
Returns a list of matching assets with basic information.
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| asset_type | No | all | |
| categories | No |
Implementation Reference
- src/server.py:502-558 (handler)The handler function for the 'search_polyhaven_assets' MCP tool. It uses the Blender connection to send a 'search_polyhaven_assets' command with parameters and formats the returned assets list, sorting by popularity.@mcp.tool() def search_polyhaven_assets( ctx: Context, asset_type: str = "all", categories: str = None ) -> str: """ Search for assets on Polyhaven with optional filtering. Parameters: - asset_type: Type of assets to search for (hdris, textures, models, all) - categories: Optional comma-separated list of categories to filter by Returns a list of matching assets with basic information. """ try: blender = get_blender_connection() result = blender.send_command( "search_polyhaven_assets", {"asset_type": asset_type, "categories": categories}, ) if "error" in result: return f"Error: {result['error']}" # Format the assets in a more readable way assets = result["assets"] total_count = result["total_count"] returned_count = result["returned_count"] formatted_output = f"Found {total_count} assets" if categories: formatted_output += f" in categories: {categories}" formatted_output += f"\nShowing {returned_count} assets:\n\n" # Sort assets by download count (popularity) sorted_assets = sorted( assets.items(), key=lambda x: x[1].get("download_count", 0), reverse=True ) for asset_id, asset_data in sorted_assets: formatted_output += ( f"- {asset_data.get('name', asset_id)} (ID: {asset_id})\n" ) formatted_output += ( f" Type: {['HDRI', 'Texture', 'Model'][asset_data.get('type', 0)]}\n" ) formatted_output += ( f" Categories: {', '.join(asset_data.get('categories', []))}\n" ) formatted_output += ( f" Downloads: {asset_data.get('download_count', 'Unknown')}\n\n" ) return formatted_output except Exception as e: logger.error(f"Error searching Polyhaven assets: {str(e)}") return f"Error searching Polyhaven assets: {str(e)}"