download_polyhaven_asset
Download Poly Haven assets directly into Blender for 3D projects, supporting HDRIs, textures, and models with customizable resolution and format options.
Instructions
Download and import a Polyhaven asset into Blender.
Parameters:
asset_id: The ID of the asset to download
asset_type: The type of asset (hdris, textures, models)
resolution: The resolution to download (e.g., 1k, 2k, 4k)
file_format: Optional file format (e.g., hdr, exr for HDRIs; jpg, png for textures; gltf, fbx for models)
Returns a message indicating success or failure.
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| asset_id | Yes | ||
| asset_type | Yes | ||
| file_format | No | ||
| resolution | No | 1k |
Implementation Reference
- src/blender_mcp/server.py:416-466 (handler)The main handler function for the 'download_polyhaven_asset' MCP tool. It validates inputs via type hints and docstring, sends the download command to the Blender addon via socket, and processes the response with type-specific messages.@mcp.tool() def download_polyhaven_asset( ctx: Context, asset_id: str, asset_type: str, resolution: str = "1k", file_format: str = None ) -> str: """ Download and import a Polyhaven asset into Blender. Parameters: - asset_id: The ID of the asset to download - asset_type: The type of asset (hdris, textures, models) - resolution: The resolution to download (e.g., 1k, 2k, 4k) - file_format: Optional file format (e.g., hdr, exr for HDRIs; jpg, png for textures; gltf, fbx for models) Returns a message indicating success or failure. """ try: blender = get_blender_connection() result = blender.send_command("download_polyhaven_asset", { "asset_id": asset_id, "asset_type": asset_type, "resolution": resolution, "file_format": file_format }) if "error" in result: return f"Error: {result['error']}" if result.get("success"): message = result.get("message", "Asset downloaded and imported successfully") # Add additional information based on asset type if asset_type == "hdris": return f"{message}. The HDRI has been set as the world environment." elif asset_type == "textures": material_name = result.get("material", "") maps = ", ".join(result.get("maps", [])) return f"{message}. Created material '{material_name}' with maps: {maps}." elif asset_type == "models": return f"{message}. The model has been imported into the current scene." else: return message else: return f"Failed to download asset: {result.get('message', 'Unknown error')}" except Exception as e: logger.error(f"Error downloading Polyhaven asset: {str(e)}") return f"Error downloading Polyhaven asset: {str(e)}"
- src/blender_mcp/server.py:416-416 (registration)The @mcp.tool() decorator registers this function as an MCP tool.@mcp.tool()
- src/blender_mcp/server.py:889-891 (helper)Documentation in the asset_creation_strategy prompt explaining usage of the tool for different asset types.- For objects/models: Use download_polyhaven_asset() with asset_type="models" - For materials/textures: Use download_polyhaven_asset() with asset_type="textures" - For environment lighting: Use download_polyhaven_asset() with asset_type="hdris"
- src/blender_mcp/server.py:424-433 (schema)The docstring provides the input schema (parameters) and output description used by FastMCP for tool schema generation.""" Download and import a Polyhaven asset into Blender. Parameters: - asset_id: The ID of the asset to download - asset_type: The type of asset (hdris, textures, models) - resolution: The resolution to download (e.g., 1k, 2k, 4k) - file_format: Optional file format (e.g., hdr, exr for HDRIs; jpg, png for textures; gltf, fbx for models) Returns a message indicating success or failure.