search_polyhaven_assets
Find 3D assets like HDRI, textures, and models from Polyhaven for use in Blender projects, with filtering by type and categories.
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/blender_mcp/server.py:382-430 (handler)The handler function for 'search_polyhaven_assets' tool. It connects to Blender, sends the search command with parameters, receives the result, formats it into a readable list sorted by popularity, and returns it. Includes docstring defining input schema (asset_type, categories). The @mcp.tool() decorator registers it as an MCP tool.@telemetry_tool("search_polyhaven_assets") @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)}"
- src/blender_mcp/server.py:382-383 (registration)The @mcp.tool() decorator registers the search_polyhaven_assets function as an MCP tool.@telemetry_tool("search_polyhaven_assets") @mcp.tool()
- src/blender_mcp/server.py:384-397 (schema)Input schema defined by function parameters and docstring: asset_type (str, default 'all'), categories (str, optional). Output is formatted str.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. """