rogue-blender-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| BLENDER_MCP_HOST | No | Host address for the Blender MCP server. | localhost |
| BLENDER_MCP_PORT | No | Port for the Blender MCP server. | 9876 |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": false
} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| execute_blender_codeA | Execute Python code in the connected Blender instance. The code runs in Blender's Python environment with full access to |
| execute_blender_code_for_cliA | Execute Python code in a background Blender process. Opens blend_file with |
| get_blendfile_summary_datablocksA | Return a summary of the blend file: data-block counts, active workspace, and render engine. |
| get_blendfile_summary_datablocks_for_cliB | Return a data-block summary by opening blend_file in background Blender. |
| get_blendfile_summary_missing_filesA | Report external file references that are missing from disk (images, libraries, fonts, sounds, movie clips, caches, sequences). |
| get_blendfile_summary_missing_files_for_cliB | Report missing file references by opening blend_file in background Blender. |
| get_blendfile_summary_of_linked_librariesA | Return a tree of directly and indirectly linked library files. |
| get_blendfile_summary_of_linked_libraries_for_cliB | Return linked-library info by opening blend_file in background Blender. |
| get_blendfile_summary_path_infoA | Simple/fast access to the blend file's path, save status, age, and backups. |
| get_blendfile_summary_path_info_for_cliB | Return path info by opening blend_file in background Blender. |
| get_blendfile_summary_usage_guessA | Guess the primary use-cases of the current blend file (scored 0-100 with certainty). |
| get_blendfile_summary_usage_guess_for_cliA | Guess use-cases by opening blend_file in background Blender. |
| get_object_detail_summaryA | Return a structured summary of the object identified by name. Includes type, transforms, parent, children, modifiers, constraints, materials, visibility, data-block name, and collections. |
| get_objects_summaryA | Return the scene's collection hierarchy and their objects. Each collection lists its objects (name, type, parent, data name, selection, visibility) and nested child collections. |
| get_python_api_docsA | Return the Blender Python API docs for identifier, or list
modules matching a trailing- identifier should be a fully-qualified Python name (e.g.
Both return a The response always carries
|
| get_screenshot_of_area_as_imageA | Take a screenshot of a single Blender area and return it as a PNG image. area_ui_type matches the area's size_limit_in_bytes caps the image size in bytes. Zero (the default) uses the MCP message size limit. |
| get_screenshot_of_window_as_imageA | Take a screenshot of the entire Blender window and return it as a PNG image. size_limit_in_bytes caps the image size in bytes. Zero (the default) uses the MCP message size limit. |
| get_screenshot_of_window_as_jsonA | Return a JSON description of the Blender window layout, areas, active object, and selection. |
| jump_to_tab_by_nameB | Switch the active workspace tab to name. |
| jump_to_tab_by_space_typeA | Switch to a workspace whose main area matches space_type. If allow_edits is True and no matching workspace exists, a new one is created by duplicating the current workspace. |
| jump_to_view3d_object_by_nameA | Move the 3D viewport to focus on an object by name. If allow_edits is True the object may be un-hidden and its collections enabled to make it visible. |
| jump_to_view3d_object_data_by_nameA | Move the 3D viewport to the object whose data block matches name. If allow_edits is True the object may be un-hidden and its collections enabled to make it visible. |
| render_thumbnail_to_pathB | Render a small, low-quality thumbnail to output_path (temporarily overrides settings). |
| render_viewport_to_pathA | Render the current scene to output_path using current render settings. |
| search_api_docsA | Full-text search over the bundled Blender Python API reference. Returns a ranked list of hits. Each hit has:
The query is tokenised on whitespace and matched
case-insensitively. Every token must appear somewhere in
the paragraph body, the file path, or an enclosing section
title - in any order. Common English stop-words ( Use Read-only; consults bundled RST files only. |
| search_manual_docsA | Full-text search over the bundled Blender user manual. Returns a ranked list of hits. Each hit has:
The query is tokenised on whitespace and matched
case-insensitively. Every token must appear somewhere in
the paragraph body, the file path, or an enclosing section
title - in any order. Common English stop-words ( Use Read-only; consults bundled RST files only. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 26 tools
Most tools have clearly distinct targets: manual docs vs API docs, window vs area screenshots, object name vs data-block name, and interactive vs CLI execution. A few pairs are close, especially search_manual_docs and search_api_docs, but the names and first-line descriptions make the intended choice reasonably clear.
All tool names are snake_case and follow a predictable verb-first pattern: search_*, get_*, jump_to_*, execute_*, render_*. The get_blendfile_summary_* family and the repeated _for_cli suffix make parallel interactive/CLI tools easy to recognize.
At 26 tools, the surface is too heavy, and much of the count comes from every get_blendfile_summary_* tool having a _for_cli twin that duplicates the same logical operation. Consolidating the CLI variants into a mode parameter would make the set much tighter.
The domain is clearly Blender inspection, navigation, rendering, and documentation, and those workflows are well covered: object summaries, blend-file health checks, viewport jumps, screenshots, rendering, and doc search. The main gap is a lack of direct high-level object or file mutation tools, but execute_blender_code provides an escape hatch for arbitrary bpy operations.