set_texture
Apply downloaded Polyhaven textures to specified 3D objects in Blender, enabling texture mapping for enhanced scene creation. Requires object name and texture ID.
Instructions
Apply a previously downloaded Polyhaven texture to an object.
Parameters:
object_name: Name of the object to apply the texture to
texture_id: ID of the Polyhaven texture to apply (must be downloaded first)
Returns a message indicating success or failure.
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| object_name | Yes | ||
| texture_id | Yes |
Implementation Reference
- src/blender_mcp/server.py:462-520 (handler)The handler function for the 'set_texture' MCP tool. It is decorated with @mcp.tool() for automatic registration and schema inference from the type hints and docstring. The function proxies the command to the Blender connection, handles the response, and provides detailed feedback about the applied material and nodes.@mcp.tool() def set_texture( ctx: Context, object_name: str, texture_id: str ) -> str: """ Apply a previously downloaded Polyhaven texture to an object. Parameters: - object_name: Name of the object to apply the texture to - texture_id: ID of the Polyhaven texture to apply (must be downloaded first) Returns a message indicating success or failure. """ try: # Get the global connection blender = get_blender_connection() result = blender.send_command("set_texture", { "object_name": object_name, "texture_id": texture_id }) if "error" in result: return f"Error: {result['error']}" if result.get("success"): material_name = result.get("material", "") maps = ", ".join(result.get("maps", [])) # Add detailed material info material_info = result.get("material_info", {}) node_count = material_info.get("node_count", 0) has_nodes = material_info.get("has_nodes", False) texture_nodes = material_info.get("texture_nodes", []) output = f"Successfully applied texture '{texture_id}' to {object_name}.\n" output += f"Using material '{material_name}' with maps: {maps}.\n\n" output += f"Material has nodes: {has_nodes}\n" output += f"Total node count: {node_count}\n\n" if texture_nodes: output += "Texture nodes:\n" for node in texture_nodes: output += f"- {node['name']} using image: {node['image']}\n" if node['connections']: output += " Connections:\n" for conn in node['connections']: output += f" {conn}\n" else: output += "No texture nodes found in the material.\n" return output else: return f"Failed to apply texture: {result.get('message', 'Unknown error')}" except Exception as e: logger.error(f"Error applying texture: {str(e)}") return f"Error applying texture: {str(e)}"
- src/blender_mcp/server.py:462-462 (registration)The @mcp.tool() decorator registers the set_texture function as an MCP tool, inferring schema from parameters.@mcp.tool()
- src/blender_mcp/server.py:463-467 (schema)Function signature defining the input schema: object_name (str), texture_id (str), returns str. Full description in docstring.def set_texture( ctx: Context, object_name: str, texture_id: str ) -> str: