ClaudeKit Blender MCP
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@ClaudeKit Blender MCP Create a cube at the origin and render the current scene"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
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-mcpOption 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 buildConfiguration
Step 1: Install Blender Addon
Open Blender
Go to Edit β Preferences β Add-ons
Click Install... button
Navigate to and select:
blender-addon/addon.pyEnable 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.jsonWindows:
%APPDATA%\Claude\claude_desktop_config.jsonLinux:
~/.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/nodeIf 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 && claudeVerification
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 BlenderExpected Output
You should see 26 tools available:
Core Blender Tools (10):
blender_execute_python: Execute Python code in Blenderblender_create_object: Create objects (cube, sphere, etc.)blender_list_objects: List all objects in sceneblender_modify_object: Modify object propertiesblender_delete_object: Delete objectsblender_get_scene_info: Get scene informationblender_render_scene: Render the current sceneblender_save_file: Save .blend fileblender_take_screenshot: Capture viewportblender_import_file: Import 3D files
Asset Integration Tools (16):
polyhaven_search_assets: Search Poly Haven librarypolyhaven_get_asset_info: Get asset detailspolyhaven_download_asset: Download assetsAnd 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*.log2. 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 toolsJSON 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 errorsCommon 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:
Blender β Edit β Preferences β Add-ons
Search for "MCP"
Ensure checkbox is checked
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 # RebuildCheck Node.js version:
node --version # Should be >= 18.0.0Development
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/ # DocumentationDevelopment 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 changesRunning Tests
# Run all tests (coming soon)
npm test
# Test specific tool
npm test -- objectsAvailable 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
Always start Blender before using Claude Desktop
Keep Blender console open to see real-time feedback
Save your work frequently - use "save the Blender file"
Use descriptive names for objects to make them easy to reference
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
/docsfolder for detailed guidesIssues: Report bugs on GitHub Issues
Logs: Always check Claude Desktop logs first
Reporting Bugs
Include:
Claude Desktop version
Node.js version (
node --version)Blender version
OS and version
Config file content (remove sensitive data)
Error logs from Claude Desktop
Blender console output
Contributing
Contributions are welcome! Please:
Fork the repository
Create a feature branch
Make your changes
Add tests if applicable
Submit a pull request
License
MIT License - See LICENSE file for details
Acknowledgments
Built with Model Context Protocol
Integrates with Poly Haven
Powered by Blender
Made with β€οΈ by ClaudeKit Team
Available Tools
26 toolsblender_add_to_collectionAdd Object to CollectionAIdempotent
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 ObjectAIdempotent
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 CollectionAIdempotent
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 DirectoryAIdempotent
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 ObjectADestructiveIdempotent
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:
Download texture: url="https://example.com/texture.jpg", destination_path="assets/textures/download.jpg"
Download model: url="https://example.com/model.fbx", destination_path="assets/models/download.fbx"
Reference image: url="https://example.com/ref.png", destination_path="references/ref.png"
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 CodeADestructive
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 InfoARead-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 DetailsARead-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_polyhaven_popularGet Popular PolyHaven AssetsARead-onlyIdempotent
Get trending and popular assets from PolyHaven.
Returns the most downloaded and highly-rated assets across different categories.
Args:
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
Returns: List of popular assets with download counts and ratings
Examples:
Popular models: type="model", limit=10
Trending textures: type="texture", limit=15
Top HDRIs: type="hdri", limit=5
All categories: limit=20
Use when: Discovering trending assets, finding high-quality content, asset inspiration Don't use when: Searching for specific criteria (use search_polyhaven instead)
Performance: Fast network request, typically 1-3 seconds
Content: Updated daily based on community downloads and ratings
Inputs: type, limit, quality.
blender_get_scene_infoGet Blender Scene InfoARead-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 ScreenshotARead-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 FormatsARead-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 CollectionsARead-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 FilesARead-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 ObjectAIdempotent
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 PerformanceADestructive
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 TypeADestructive
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 ProjectADestructive
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 AssetsARead-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 PropertyAIdempotent
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
Scored across 26 tools
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.
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.
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.
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
Related MCP Connectors
Blender-as-a-service for agents: search 3D assets, run Blender Python, or brief the studio agent.
Connect your AI assistant to Blender for 3D modeling, Geometry Nodes, materials, lighting, animation, rendering and export. Inspect real scenes and viewport images, refine the result and restore checkpoints. OAuth connects your chat to Blender Bridge Desktop on an online Windows 10/11 x64 computer running Blender 4.2+. The chat can run on another device. Requires an active Blender Bridge account; 7-day trial available. AI model access is separate.
Cloud Blender for AI agents: build, inspect, render and animate 3D scenes over remote MCP. Keep editable .blend projects and export GLB or STL. Make your first 3D asset freeβ30 compute minutes per UTC month, no credit card. First 100 eligible Free account owners to use all 30 minutes in one UTC month by December 31, 2026 UTC receive one calendar month of beta free: 4 compute hours per UTC month, 2 concurrent workers per deployment, 2 deployments, 2048Γ2048 renders at up to 256 samples, and 10 GiB storage. Existing usage counts toward the 4-hour allowance. Limited to 100 rewards; expires January 1, 2027 00:00 UTC. Free resumes afterward without an automatic charge. Examples, eligibility and terms: https://sceneplane.online/launch?utm_source=glama&utm_medium=directory&utm_campaign=first100
Blender and GLB/FBX/USD/STL rendered on cloud GPUs for AI agents: product shots, turntables, MP4
Related MCP Servers
- AlicenseAqualityDmaintenanceConnects 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.13MIT
- AlicenseBqualityDmaintenanceEnables 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.102MIT
- FlicenseNot gradedqualityDmaintenanceEnables Claude AI to control Blender 3D through natural language commands for object creation, modification, deletion, and Python script execution.-
- AlicenseNot gradedqualityDmaintenanceEnables executing Python scripts, rendering scenes, and controlling 3D objects in Blender via Claude, with support for Cycles and EEVEE engines.MIT