Skip to main content
Glama

Features

  • 🎨 26 Blender Tools: Complete control over Blender from Claude Desktop

  • 🎭 Object Management: Create, modify, transform objects

  • 🎬 Scene Control: Manage scenes, cameras, lighting

  • πŸ“¦ Asset Integration: Import from Poly Haven, Sketchfab, and more

  • πŸ–ΌοΈ Viewport Control: Take screenshots, render scenes

  • πŸ”§ Material & Texture Management: Full material editing capabilities

  • πŸ“ Python Scripting: Execute custom Blender scripts

Related MCP server: BlenderMCP

Installation

Option 1: Global Installation (Production Use)

npm install -g claudekit-blender-mcp

Option 2: Local Development

# Clone the repository
git clone https://github.com/yourusername/claudekit-blender-mcp.git
cd claudekit-blender-mcp

# Install dependencies
npm install

# Build the project
npm run build

Configuration

Step 1: Install Blender Addon

  1. Open Blender

  2. Go to Edit β†’ Preferences β†’ Add-ons

  3. Click Install... button

  4. Navigate to and select: blender-addon/addon.py

  5. Enable the addon by checking the box next to "Blender MCP Server"

The addon will automatically start the WebSocket server when Blender launches.

Step 2: Configure Claude Desktop

The configuration file location varies by OS:

  • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json

  • Windows: %APPDATA%\Claude\claude_desktop_config.json

  • Linux: ~/.config/Claude/claude_desktop_config.json

Configuration for Global Installation

{
  "mcpServers": {
    "blender": {
      "command": "npx",
      "args": ["-y", "claudekit-blender-mcp"]
    }
  }
}

Configuration for Local Development

If using Node Version Manager (fnm, nvm, asdf):

{
  "mcpServers": {
    "blender": {
      "command": "/absolute/path/to/node",
      "args": ["/absolute/path/to/claudekit-blender-mcp/dist/index.js"]
    }
  }
}

Find your Node.js path:

# For fnm users
which node  # Then use realpath or readlink to get actual path

# For nvm users
nvm which current

# Example paths:
# fnm: /Users/username/.local/share/fnm/node-versions/v20.19.5/installation/bin/node
# nvm: /Users/username/.nvm/versions/node/v20.19.5/bin/node

If Node.js is in system PATH:

{
  "mcpServers": {
    "blender": {
      "command": "node",
      "args": ["/absolute/path/to/claudekit-blender-mcp/dist/index.js"]
    }
  }
}

Step 3: Restart Claude Desktop

Important: You must completely restart Claude Desktop (not just reload):

# macOS
killall "Claude" && sleep 2 && open -a "Claude"

# Windows
# Close Claude Desktop completely from system tray, then reopen

# Linux
killall claude && claude

Verification

Test the Connection

Open Claude Desktop and try these commands:

What MCP tools do you have available?
List all Blender tools
Create a cube in Blender

Expected Output

You should see 26 tools available:

Core Blender Tools (10):

  • blender_execute_python: Execute Python code in Blender

  • blender_create_object: Create objects (cube, sphere, etc.)

  • blender_list_objects: List all objects in scene

  • blender_modify_object: Modify object properties

  • blender_delete_object: Delete objects

  • blender_get_scene_info: Get scene information

  • blender_render_scene: Render the current scene

  • blender_save_file: Save .blend file

  • blender_take_screenshot: Capture viewport

  • blender_import_file: Import 3D files

Asset Integration Tools (16):

  • polyhaven_search_assets: Search Poly Haven library

  • polyhaven_get_asset_info: Get asset details

  • polyhaven_download_asset: Download assets

  • And more...

Troubleshooting

Error: spawn node ENOENT

Problem: Claude Desktop cannot find the node command.

Solution: Use absolute path to Node.js in your config.

# Find your Node.js path
which node
realpath $(which node)  # Get the actual path if using fnm/nvm

# Update config with absolute path
# Example:
{
  "mcpServers": {
    "blender": {
      "command": "/Users/username/.local/share/fnm/node-versions/v20.19.5/installation/bin/node",
      "args": ["/path/to/project/dist/index.js"]
    }
  }
}

Why this happens:

  • Claude Desktop runs with its own PATH environment

  • Node version managers (fnm, nvm, asdf) modify shell PATH

  • Claude Desktop's PATH doesn't include these custom paths

  • Solution: Use absolute path to bypass PATH lookup

MCP Server Not Connecting

1. Check Claude Desktop logs:

# macOS
tail -f ~/Library/Logs/Claude/mcp*.log

# Windows
# Check: %APPDATA%\Claude\logs\

# Linux
tail -f ~/.config/Claude/logs/mcp*.log

2. Verify Blender addon is running:

  • Open Blender β†’ Window β†’ Toggle System Console

  • Look for: "BlenderMCP server started on localhost:9876"

3. Test MCP server manually:

# For local development
cd /path/to/claudekit-blender-mcp
node dist/index.js

# Should see:
# Starting ClaudeKit Blender MCP Server...
# Registered 10 core Blender tools
# Registered 16 asset integration tools

JSON Configuration Errors

Validate your config file:

# macOS/Linux
cat ~/Library/Application\ Support/Claude/claude_desktop_config.json | python3 -m json.tool

# Should output formatted JSON without errors

Common mistakes:

  • Missing commas between entries

  • Trailing commas at end of objects/arrays

  • Incorrect quote types (use " not ')

  • Missing closing brackets

Blender Connection Timeout

Check Blender addon status:

  1. Blender β†’ Edit β†’ Preferences β†’ Add-ons

  2. Search for "MCP"

  3. Ensure checkbox is checked

  4. Check console for errors

Firewall issues:

  • Ensure localhost connections are allowed

  • Default port: 9876

  • Protocol: TCP Socket

Module Not Found Errors

For local development:

cd /path/to/claudekit-blender-mcp
npm install  # Reinstall dependencies
npm run build  # Rebuild

Check Node.js version:

node --version  # Should be >= 18.0.0

Development

Project Structure

claudekit-blender-mcp/
β”œβ”€β”€ src/
β”‚   β”œβ”€β”€ server.ts          # MCP server setup
β”‚   β”œβ”€β”€ tools/             # Tool implementations
β”‚   β”‚   β”œβ”€β”€ objects.ts     # Object manipulation
β”‚   β”‚   β”œβ”€β”€ scene.ts       # Scene management
β”‚   β”‚   β”œβ”€β”€ materials.ts   # Material system
β”‚   β”‚   β”œβ”€β”€ assets.ts      # Asset integration
β”‚   β”‚   └── ...
β”‚   └── utils/             # Utilities
β”œβ”€β”€ dist/                  # Compiled JavaScript
β”œβ”€β”€ blender-addon/
β”‚   └── addon.py          # Blender addon
└── docs/                 # Documentation

Development Workflow

# Watch mode (auto-rebuild on changes)
npm run dev

# Build once
npm run build

# Clean build
npm run clean && npm run build

# After making changes:
# 1. Rebuild: npm run build
# 2. Restart Claude Desktop
# 3. Test changes

Running Tests

# Run all tests (coming soon)
npm test

# Test specific tool
npm test -- objects

Available Tools

Core Blender Operations

  • Object Management: Create, modify, delete, transform objects

  • Scene Control: Manage scenes, cameras, lighting

  • Viewport: Take screenshots, change view angles

  • Rendering: Render images and animations

  • File I/O: Import/export various 3D formats

Asset Integration

  • Poly Haven: Search and download HDRIs, textures, models

  • Sketchfab: Browse and import models

  • External Sources: Custom asset sources

Advanced Features

  • Material Editing: Create and modify materials

  • Texture Management: Apply and manage textures

  • Python Scripting: Execute custom Blender scripts

  • Batch Operations: Process multiple objects

Requirements

  • Node.js: >= 18.0.0

  • Blender: >= 3.0 (tested with 3.6+)

  • Claude Desktop: Latest version

  • OS: macOS, Windows, or Linux

Tips for End Users

Best Practices

  1. Always start Blender before using Claude Desktop

  2. Keep Blender console open to see real-time feedback

  3. Save your work frequently - use "save the Blender file"

  4. Use descriptive names for objects to make them easy to reference

  5. Start with simple commands to verify connection

Example Workflows

Creating a scene:

1. "Create a cube in Blender"
2. "Add a sphere 5 units above the cube"
3. "Create a camera looking at the objects"
4. "Add a sun light to the scene"
5. "Take a screenshot of the viewport"

Working with materials:

1. "Create a red metallic material"
2. "Apply it to the cube"
3. "Make the sphere glass-like"

Asset integration:

1. "Search for HDRI sky on Poly Haven"
2. "Download the first result"
3. "Set it as environment texture"

Support

Getting Help

  • Documentation: Check /docs folder for detailed guides

  • Issues: Report bugs on GitHub Issues

  • Logs: Always check Claude Desktop logs first

Reporting Bugs

Include:

  1. Claude Desktop version

  2. Node.js version (node --version)

  3. Blender version

  4. OS and version

  5. Config file content (remove sensitive data)

  6. Error logs from Claude Desktop

  7. Blender console output

Contributing

Contributions are welcome! Please:

  1. Fork the repository

  2. Create a feature branch

  3. Make your changes

  4. Add tests if applicable

  5. Submit a pull request

License

MIT License - See LICENSE file for details

Acknowledgments


Made with ❀️ by ClaudeKit Team

Available Tools

26 tools
blender_add_to_collectionAdd Object to CollectionA
Idempotent

Move or copy an object to a specific collection.

Objects in Blender can belong to multiple collections. This tool provides flexible asset organization and scene management.

Args:

  • object_name (string): Target object name to add to collection

  • collection_name (string): Destination collection name

  • remove_from_others (boolean, default false): Remove from other collections

Returns: Collection assignment confirmation and updated object information

Examples:

  • Move object: object_name="TreeOak", collection_name="Trees", remove_from_others=true

  • Add to multiple: object_name="Rock", collection_name="Environment", remove_from_others=false

  • Organize assets: object_name="Character", collection_name="Characters"

Use when: Organizing scene assets, managing object relationships, structuring workflow Don't use when: Creating new objects (use object creation tools instead)

Performance: Instant operation, negligible performance impact

Inputs: object_name (required), collection_name (required), remove_from_others.

blender_apply_materialApply Material to ObjectA
Idempotent

Apply existing material to Blender object.

Assigns material to object's active material slot. Object must exist and material must be created first.

Args:

  • object_name (string): Object to apply material to

  • material_name (string): Material to apply

Returns: Success confirmation

Use when: Texturing objects after creating materials Don't use when: Material doesn't exist (create it first)

Inputs: object_name (required), material_name (required).

blender_create_collectionCreate Blender CollectionA
Idempotent

Create a new Blender collection for organizing assets.

Collections in Blender help organize scenes by grouping related objects. Collections can be nested for hierarchical organization.

Args:

  • name (string): Collection name (alphanumeric, spaces, hyphens, underscores, max 64 chars)

  • parent_collection (optional): Parent collection name for nested organization

Returns: Collection creation confirmation and collection information

Examples:

  • Create main collection: name="Environment"

  • Nested collection: name="Trees", parent_collection="Environment"

  • Asset library: name="Props", parent_collection="Library"

Use when: Organizing scene assets, creating asset libraries, structuring complex scenes Don't use when: Creating single objects without organization needs

Performance: Instant operation, negligible performance impact

Inputs: name (required), parent_collection.

blender_create_directoryCreate Project DirectoryA
Idempotent

Create a new directory within the Blender project structure.

Useful for organizing assets, creating project folders, and establishing file system structure.

Args:

  • directory_path (string): Directory path to create (relative to project)

  • parent_directories (boolean, default true): Create parent directories if needed

Returns: Directory creation confirmation and path information

Examples:

  • Asset folder: directory_path="assets/models"

  • Textures: directory_path="assets/textures"

  • Project structure: directory_path="scenes/environment"

Use when: Setting up project structure, organizing assets, creating workflow folders Don't use when: Creating files (use save_file instead)

Performance: Instant operation, negligible performance impact

Security: Only creates directories within project boundary

Inputs: directory_path (required), parent_directories.

blender_create_materialCreate Blender MaterialA

Create PBR material with Principled BSDF shader.

Creates material with standard PBR properties. Use Principled BSDF workflow.

Args:

  • material_name: Material name

  • base_color (optional): RGBA [r, g, b, a] with 0-1 values

  • metallic (optional): 0-1, default 0

  • roughness (optional): 0-1, default 0.5

  • emission_color (optional): RGBA for emission

  • emission_strength (optional): Emission intensity

Returns: Success message

Example: { material_name: "RedMetal", base_color: [0.8, 0.1, 0.1, 1], metallic: 1, roughness: 0.2 }

Inputs: material_name (required), base_color, metallic, roughness, +2 more.

blender_create_primitiveCreate Blender PrimitiveA

Create basic 3D primitive object in Blender scene.

Creates mesh primitive at specified location with optional custom name and scale.

Args:

  • primitive_type: 'CUBE' | 'SPHERE' | 'CYLINDER' | 'CONE' | 'TORUS' | 'PLANE' | 'MONKEY' | 'UV_SPHERE' | 'ICO_SPHERE'

  • name (optional): Custom object name (default: auto-generated)

  • location (optional): Position [x, y, z] (default: [0, 0, 0])

  • scale (optional): Scale [x, y, z] (default: [1, 1, 1])

Returns: Success message with created object name

Examples:

  • Create cube at origin: { primitive_type: "CUBE" }

  • Create sphere at (5, 0, 2): { primitive_type: "SPHERE", location: [5, 0, 2] }

Use when: Starting new scene, adding basic geometry Don't use when: Need complex custom geometry (use execute_blender_code instead)

Inputs: primitive_type (required), name, location, scale.

blender_delete_objectDelete Blender ObjectA
DestructiveIdempotent

Delete object from Blender scene by name.

Permanently removes object and its data. Cannot be undone via MCP.

Args:

  • object_name (string): Object to delete

Returns: Success confirmation

Use when: Cleaning up scene, removing unwanted objects Don't use when: Temporarily hiding objects (no hide functionality in MCP currently)

Error: "Object not found" if object doesn't exist

Inputs: object_name (required).

blender_download_fileDownload File to ProjectA

Download file from URL and save to Blender project directory.

Supports downloading assets, textures, and reference materials from external sources.

Args:

  • url (string): URL to download from

  • destination_path (string): Destination file path (relative to project)

  • timeout (number, default 30000): Download timeout in milliseconds

Returns: Download confirmation with file size, type, and save location

Examples:

Use when: Downloading external assets, reference materials, textures from web Don't use when: Accessing local files (use save_file with local data)

Performance: Depends on file size and network speed, timeout protection included

Security: Validates URLs, enforces timeouts, saves within project directory

Inputs: url (required), destination_path (required), timeout.

blender_download_polyhaven_assetDownload and Import PolyHaven AssetA

Download a PolyHaven asset and optionally import it directly into Blender.

Downloads high-quality assets from PolyHaven with automatic file management and scene integration.

Args:

  • asset_id (string): PolyHaven asset ID to download

  • quality (enum): Download quality level (hd, 1k, 2k, 4k, 8k)

  • save_path (optional): Save path (relative to project assets directory)

  • import_to_scene (boolean, default true): Import directly into Blender scene

  • import_options (optional): Import options if importing to scene

Returns: Download confirmation with file information and import status

Examples:

  • Download 2K texture: asset_id="old_wood_01", quality="2k"

  • Download and import model: asset_id="oak_tree", quality="4k", import_to_scene=true

  • Custom save path: asset_id="sky_cloudy", quality="hdr", save_path="environments/sky.hdr"

Use when: Adding professional assets to scenes, sourcing textures, environment setup Don't use when: Just browsing assets (use search_polyhaven instead)

Performance: Network and file-size dependent, typically 5-60 seconds

Security: Validates asset IDs, downloads to secure project directory

Inputs: asset_id (required), quality, save_path, import_to_scene, +2 more.

blender_execute_codeExecute Blender Python CodeA
Destructive

Execute Python code using Blender's bpy API.

Provides escape hatch for complex operations not covered by other tools. Use full bpy API access.

Args:

  • code (string): Python code to execute using bpy API (max 100KB)

  • timeout (optional): Execution timeout in milliseconds (1000-180000, default: 180000)

Returns: Execution result with any output or error message

Examples:

  • List objects: [obj.name for obj in bpy.data.objects]

  • Create custom mesh: bpy.ops.mesh.primitive_cube_add(location=(1, 2, 3))

  • Get object location: bpy.data.objects['Cube'].location[:]

Use when: Complex operations, custom workflows, bpy API access Don't use when: Simple operations covered by dedicated tools

Security: Code is validated for dangerous patterns. System commands are restricted. Performance: Long-running code may hit timeout limits (default 3 minutes)

Inputs: code (required), timeout.

blender_export_assetExport Scene AssetA

Export Blender objects or entire scene to various 3D formats.

Comprehensive export tool with support for multiple formats and export options including materials and animations.

Args:

  • objects (optional): Object names to export (exports all if not specified)

  • format (enum): Export format (fbx, obj, gltf, glb, stl, ply, abc)

  • file_path (string): Export destination path (relative to project)

  • options (optional): Export options including modifiers, materials, and compression

Returns: Export confirmation with file size, format, and object count

Examples:

  • Export all: format="fbx", file_path="exports/scene.fbx"

  • Export specific: objects=["Cube", "Sphere"], format="obj", file_path="exports/selection.obj"

  • Optimized export: format="gltf", file_path="exports/optimized.glb", options={compression: 90}

Use when: Sharing assets, exporting for other applications, backup and version control Don't use when: Quick previews (use screenshot tools instead)

Performance: Varies by scene complexity and format, typically 5-30 seconds

Inputs: format (required), file_path (required), objects, options.

blender_get_object_infoGet Blender Object InfoA
Read-onlyIdempotent

Query detailed properties of specific Blender object by name.

Returns object type, transforms (location/rotation/scale), bounding box, materials, modifiers, and parent/children relationships.

Args:

  • object_name (string): Name of object to query (e.g., "Cube", "Camera")

  • response_format ('markdown' | 'json'): Output format (default: 'markdown')

Returns: For JSON: { name, type, location: [x,y,z], rotation: [...], scale: [...], materials: [...], ... } For markdown: Formatted object details

Use when: Need specific object details before modifying Don't use when: Querying entire scene (use blender_get_scene_info instead)

Error: Returns "Object not found" if object_name doesn't exist

Inputs: object_name (required), response_format.

blender_get_polyhaven_asset_detailsGet PolyHaven Asset DetailsA
Read-onlyIdempotent

Get detailed information about a specific PolyHaven asset.

Provides comprehensive asset metadata including download options, technical specifications, and licensing information.

Args:

  • asset_id (string): PolyHaven asset ID to get details for

  • include_thumbnails (boolean, default true): Include thumbnail information

Returns: Complete asset metadata with download options, file sizes, and quality levels

Examples:

  • Basic details: asset_id="old_wood_01"

  • With thumbnails: asset_id="oak_tree", include_thumbnails=true

  • Check availability: asset_id="sky_cloudy"

Use when: Verifying asset availability, checking download options, asset metadata research Don't use when: Downloading assets (use download_polyhaven_asset instead)

Performance: Fast network request, typically 1-3 seconds

License: Returns CC0 licensing information for all assets

Inputs: asset_id (required), include_thumbnails.

blender_get_scene_infoGet Blender Scene InfoA
Read-onlyIdempotent

Query current Blender scene hierarchy, objects list, materials, and world settings.

Returns complete scene metadata including all objects, their types, transforms, materials, and collections.

Args:

  • response_format ('markdown' | 'json'): Output format (default: 'markdown')

Returns: For JSON: { objects: [...], materials: [...], collections: [...], world: {...} } For markdown: Formatted hierarchy with object details

Use when: Need to understand current scene state, find object names, or verify scene setup Don't use when: Modifying scene (use create/modify tools instead)

Inputs: response_format.

blender_get_screenshotCapture Viewport ScreenshotA
Read-onlyIdempotent

Capture current viewport as base64 image.

Takes screenshot of current 3D viewport view. Limited to 800px max dimension for performance.

Args:

  • max_size (optional): Maximum dimension in pixels (100-800, default: 800)

Returns: Base64 encoded PNG image data with metadata

Use when: Visualizing scene state, checking results, debugging Don't use when: Need high resolution renders (use Blender render instead)

Performance: Larger images take longer to process and transfer

Inputs: max_size.

blender_get_supported_formatsGet Supported Import/Export FormatsA
Read-onlyIdempotent

List all supported file formats for import and export operations.

Provides comprehensive format information with capabilities and recommended use cases.

Args:

  • operation (enum): Filter by operation type (import, export, both)

Returns: Detailed list of supported formats with capabilities and use cases

Examples:

  • All formats: operation="both"

  • Import only: operation="import"

  • Export only: operation="export"

Use when: Planning asset workflows, choosing formats, understanding capabilities Don't use when: Actual import/export operations (use import_asset/export_asset instead)

Performance: Instant operation, negligible performance impact

Inputs: operation.

blender_import_assetImport External AssetA

Import external 3D assets into Blender scene with comprehensive options.

Supports multiple 3D file formats including FBX, OBJ, GLTF, and more with advanced import options.

Args:

  • file_path (string): Path to asset file to import (relative to project)

  • format (optional): Asset format (auto-detected if not specified)

  • options (optional): Import options including location, rotation, scale, and processing

Returns: Import confirmation with object details and processing information

Examples:

  • Basic import: file_path="assets/models/chair.fbx"

  • With positioning: file_path="assets/tree.obj", options={location: [0, 0, 0]}

  • Optimized import: file_path="assets/vehicle.gltf", options={decimate: true, decimate_ratio: 0.5}

Use when: Adding external assets to scenes, importing models/textures, asset workflows Don't use when: Creating new primitives (use object creation tools instead)

Performance: Varies by file size and complexity, typically 1-10 seconds for most assets

Inputs: file_path (required), format, options.

blender_list_collectionsList Scene CollectionsA
Read-onlyIdempotent

List all collections in the current Blender scene with optional object details.

Provides comprehensive view of scene organization structure, including nested collections and object membership.

Args:

  • include_objects (boolean, default false): Include objects in each collection

  • object_details (boolean, default false): Include detailed object information

Returns: Hierarchical list of collections with optional object details and statistics

Examples:

  • Simple list: include_objects=false, object_details=false

  • With objects: include_objects=true, object_details=false

  • Full details: include_objects=true, object_details=true

Use when: Understanding scene structure, managing assets, planning organization Don't use when: Creating new collections (use create_collection instead)

Performance: Fast operation, minimal performance impact

Inputs: include_objects, object_details.

blender_list_filesList Project FilesA
Read-onlyIdempotent

List files and directories in the Blender project or specified directory.

Provides comprehensive file system overview for project management and asset organization.

Args:

  • directory_path (optional): Directory path to list (relative to project)

  • recursive (boolean, default false): Include subdirectories recursively

  • include_hidden (boolean, default false): Include hidden files and directories

Returns: File listing with metadata including sizes, types, and modification times

Examples:

  • Current directory: directory_path="", recursive=false

  • Recursive list: directory_path="assets", recursive=true

  • Include hidden: directory_path=".", include_hidden=true

Use when: Project organization, asset management, file system navigation Don't use when: Creating new files or directories (use create_directory/save_file)

Performance: Fast operation, minor impact with large recursive listings

Security: Only accesses files within project directory structure

Inputs: directory_path, recursive, include_hidden.

blender_modify_objectModify Blender ObjectA
Idempotent

Modify transforms of existing Blender object.

Update location, rotation (in radians), and/or scale of object by name.

Args:

  • object_name (string): Object to modify

  • location (optional): New position [x, y, z]

  • rotation (optional): New rotation in radians [x, y, z]

  • scale (optional): New scale [x, y, z]

At least one transform property must be provided.

Returns: Success message with updated properties

Use when: Positioning, rotating, or scaling existing objects Don't use when: Creating new objects (use create_primitive instead)

Inputs: object_name (required), location, rotation, scale.

blender_optimize_assetOptimize Asset PerformanceA
Destructive

Optimize 3D assets for better performance through mesh decimation and cleanup.

Reduces polygon count and optimizes geometry while preserving visual quality and essential attributes.

Args:

  • objects (array): Object names to optimize

  • target_poly_count (optional): Target polygon count (100-1000000)

  • decimation_ratio (optional): Decimation ratio (0.1-1.0)

  • preserve_uvs (boolean, default true): Preserve UV coordinates

  • preserve_materials (boolean, default true): Preserve material assignments

  • preserve_vertex_colors (boolean, default true): Preserve vertex colors

Returns: Optimization summary with before/after statistics and performance improvements

Examples:

  • Target count: objects=["HighPolyModel"], target_poly_count=10000

  • Ratio based: objects=["Tree"], decimation_ratio=0.3

  • Multiple objects: objects=["Rock1", "Rock2", "Rock3"], decimation_ratio=0.5

Use when: Optimizing for real-time applications, reducing file sizes, performance improvements Don't use when: Preserving maximum detail for rendering (use export with high quality instead)

Performance: Moderate impact depending on mesh complexity, typically 5-60 seconds

Inputs: objects (required), target_poly_count, decimation_ratio, preserve_uvs, +2 more.

blender_organize_assets_by_typeOrganize Assets by TypeA
Destructive

Automatically organize scene assets into collections based on object type.

This intelligent organization tool creates collections for different asset types (models, materials, etc.) and moves objects accordingly.

Args:

  • create_collections (boolean, default true): Create collections for each asset type

  • existing_objects_only (boolean, default true): Only organize existing objects

  • prefix_with_type (boolean, default false): Prefix object names with asset type

Returns: Organization summary with collections created and objects moved

Examples:

  • Basic organization: create_collections=true, existing_objects_only=true, prefix_with_type=false

  • Include new objects: create_collections=true, existing_objects_only=false

  • Naming convention: create_collections=true, prefix_with_type=true

Use when: Cleaning up disorganized scenes, establishing asset workflows, improving scene management Don't use when: Fine-grained manual control needed, complex custom organization

Performance: Moderate impact depending on scene size and object count

Inputs: create_collections, existing_objects_only, prefix_with_type.

blender_save_fileSave File to ProjectA
Destructive

Save base64 encoded file data to the Blender project directory.

Supports saving various file types including assets, textures, and project files.

Args:

  • file_path (string): Destination file path (relative to project)

  • data (string): Base64 encoded file data

  • overwrite (boolean, default false): Overwrite existing file

Returns: File save confirmation with size and type information

Examples:

  • Save texture: file_path="assets/textures/wood.png", data="[base64]"

  • Save model: file_path="assets/models/chair.fbx", data="[base64]"

  • Save project: file_path="scenes/level1.blend", data="[base64]"

Use when: Saving downloaded assets, exporting files, project file management Don't use when: Creating files from Blender operations (use Blender export tools)

Performance: Depends on file size, typically fast for assets under 100MB

Security: Validates file paths and saves within project directory

Inputs: file_path (required), data (required), overwrite.

blender_search_polyhavenSearch PolyHaven AssetsA
Read-onlyIdempotent

Search the PolyHaven library for free 3D assets, textures, and HDRIs.

PolyHaven offers 10,000+ free CC0-licensed 3D assets including models, materials, textures, and HDRIs.

Args:

  • query (optional): Search query for assets

  • type (optional): Asset type filter (model, material, texture, hdri)

  • limit (integer): Maximum number of results (1-100, default 20)

  • quality (optional): Quality level for thumbnails

  • tags (optional): Filter by tags array

Returns: Search results with asset metadata, thumbnails, and download options

Examples:

  • Wood textures: query="wood", type="texture", limit=10

  • Tree models: query="tree", type="model", limit=5

  • HDRI skies: type="hdri", limit=8

  • Popular materials: type="material", limit=15

Use when: Finding reference assets, texture sourcing, environment creation Don't use when: Downloading specific assets (use download_polyhaven_asset instead)

Performance: Network-dependent, typically 1-5 seconds

License: All PolyHaven assets are CC0 (public domain)

Inputs: query, type, limit, quality, +1 more.

blender_set_material_propertySet Material PropertyA
Idempotent

Modify specific property of existing material.

Updates PBR material properties like color, metallic, roughness, or emission.

Args:

  • material_name (string): Material to modify

  • property: 'base_color' | 'metallic' | 'roughness' | 'emission_color' | 'emission_strength'

  • value: Property value (color as RGBA array or number for metallic/roughness/strength)

Returns: Success confirmation

Examples:

  • Make metallic: { material_name: "Metal", property: "metallic", value: 1.0 }

  • Set red color: { material_name: "Red", property: "base_color", value: [1, 0, 0, 1] }

Inputs: material_name (required), property (required), value (required).

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

Loading tool schema changelog…

    TDQS

    A4.2/5.0

    Scored across 26 tools

    Disambiguation4/5

    Most tools have distinct purposes with clear boundaries, such as blender_create_primitive for object creation versus blender_modify_object for transforms. However, some overlap exists between blender_get_object_info and blender_get_scene_info, where the latter could be used to infer object details, potentially causing confusion. Additionally, blender_organize_assets_by_type and blender_add_to_collection both handle collection organization, but their descriptions clarify different use cases.

    Naming Consistency5/5

    All tool names follow a consistent snake_case pattern with a 'blender_' prefix and verb_noun structure, such as blender_create_material and blender_export_asset. This uniformity makes the tool set predictable and easy to navigate, with no deviations in naming conventions across the 26 tools.

    Tool Count3/5

    With 26 tools, the count feels heavy for a Blender integration server, bordering on excessive. While the tools cover a broad range of operations from asset management to scene editing, the high number may overwhelm users and increase complexity. A more streamlined set of 15-20 tools could maintain functionality while improving usability.

    Completeness5/5

    The tool set provides comprehensive coverage for Blender workflows, including CRUD operations for objects, materials, and collections, as well as asset import/export, optimization, and PolyHaven integration. There are no obvious gaps; tools like blender_execute_code serve as an escape hatch for advanced operations, ensuring agents can handle most Blender tasks without dead ends.

    Maintenance

    ActivityInactive
    ResponsivenessNo recent community issues

    Related MCP Connectors

    Related MCP Servers

    • A
      license
      A
      quality
      D
      maintenance
      Connects Claude AI to Blender through the Model Context Protocol, enabling AI-assisted 3D modeling, scene creation, material control, and object manipulation. Supports integration with Poly Haven assets and Hyper3D for AI-generated models.
      13
      MIT
    • A
      license
      B
      quality
      D
      maintenance
      Enables Claude AI to directly control Blender for automated 3D modeling, scene creation, and object manipulation. It provides tools for material management, scene inspection, and integration with third-party asset libraries like Poly Haven and Sketchfab.
      10
      2
      MIT