Skip to main content
Glama

Houdini MCP

Python License Ruff ty

An MCP server for SideFX Houdini.

Installation

Create a virtual environment and install the server:

uv venv
uv pip install -e .

Install the Houdini package file:

.venv/bin/houdini-mcp install

This writes houdini_mcp.json into the detected Houdini packages directories, for example ~/houdini21.0/packages. Use --packages-dir PATH if detection is wrong.

Point your MCP client at the server:

{
  "mcpServers": {
    "houdini": {
      "command": "/path/to/houdini-mcp/.venv/bin/houdini-mcp"
    }
  }
}

Restart Houdini after installing the package file.

The plugin listens on 127.0.0.1. Houdini and the MCP client run on the same machine.

To remove it:

.venv/bin/houdini-mcp uninstall

Related MCP server: Houdini MCP Server

Custom content

Built-in content lives in src/houdini_mcp/content/. User content lives in the platform config directory or in custom directories set with HOUDINI_MCP_CONTENT. User content mirrors the built-in layout under houdini_mcp/content/ and can overwrite existing files:

~/.config/houdini_mcp/content/
└── workflows/
    └── my-workflow.md

Use {context} for the caller's context and {include:name} to include a shared fragment.

Inspect content with:

.venv/bin/houdini-mcp content path
.venv/bin/houdini-mcp content list

Environment variables

Server variables are read by the MCP server process. Plugin variables are read inside Houdini; set them in houdini.env or the environment used to launch Houdini.

Variable

Used by

Default

Description

HOUDINI_MCP_PORT

Server, Plugin

8100

First port the server scans and the plugin prefers.

HOUDINI_MCP_TIMEOUT

Server

135

Command timeout in seconds.

HOUDINI_MCP_LOG_LEVEL

Server

INFO

Log level.

HOUDINI_MCP_CONTENT

Server

none

Additional content roots, separated by the OS path separator.

HOUDINI_MCP_AUTOSTART

Plugin

1

Set to 0 to disable autostart.

HOUDINI_MCP_AUTO_LAYOUT

Plugin

0

Set to 1 to allow network layout.

HOUDINI_MCP_OUTPUT_TIMEOUT

Plugin

2

Seconds to wait for render or cache output files.

HOUDINI_MCP_PROJECT_ROOT

Plugin

none

Optional root for scene and file operations.

HOUDINI_MCP

Plugin

set by install

Repository root used by the Houdini package file.

Development

See CONTRIBUTING.md for the development setup and check commands.

License

MIT License. Copyright 2026 - Beat Reichenbach. See the LICENSE file for details.

Available Tools

213 tools
assign_materialC

Assign a material to a geometry node via a Material SOP.

Inputs: geo_path (required), material_path (required).

build_networkC

Build a whole node network in one atomic call.

Inputs: nodes (required), parent_path (required), layout, dry_run.

build_sop_chainC

Build a sequential chain of SOP nodes wired together in a single call.

Inputs: steps, parent_path.

cancel_top_cookC

Cancel active cooking on a TOP network.

Inputs: node_path (required).

capture_network_editorC

Capture a screenshot of the network editor.

Inputs: node_path, output_path.

capture_screenshotC

Capture a screenshot of the viewport or a specific pane tab.

Inputs: pane_name, output_path, settle_seconds.

change_node_typeC

Change a node's type in place, preserving wires and parameters.

Inputs: new_type (required), node_path (required), keep_name, keep_parms, +1 more.

clear_cacheC

Delete cached files on disk for a cache node.

Inputs: node_path (required), frame_range.

compare_snapshotsC

Take or compare scene state snapshots.

Inputs: action, snapshot_name.

compare_volumesD

How much of one field sits in each band of another field.

Inputs: field (required), against (required), node_path (required), bands, +1 more.

connect_nodesC

Connect two nodes together.

Inputs: dest_path (required), source_path (required), input_name, input_index, +2 more.

connect_nodes_batchC

Connect multiple node pairs in a single call.

Inputs: connections (required).

cook_frame_rangeC

Cook a node frame by frame and report what changed on each frame.

Inputs: node_path (required), end, step, start, +2 more.

cook_top_nodeC

Cook a TOP node to execute its work items.

Inputs: node_path (required), block, generate_only.

copy_nodeC

Copy a node, optionally into a different parent network.

Inputs: node_path (required), offset, new_name, dest_parent.

create_chop_nodeC

Create a new CHOP node.

Inputs: chop_type (required), parent_path (required), name.

create_cop_nodeC

Create a COP node in the specified network.

Inputs: cop_type (required), parent_path (required), name.

create_hdaC

Create a new HDA from an existing subnet node.

Inputs: label (required), hda_file (required), node_path (required), type_name (required), +1 more.

create_lightC

Create a USD light in a LOP network.

Inputs: name, color, position, intensity, +2 more.

create_light_rigC

Create a preset lighting rig in a LOP network.

Inputs: preset, parent_path, intensity_mult.

create_lop_nodeD

Create a new LOP node.

Inputs: lop_type (required), parent_path (required), name, prim_path.

create_materialC

Create a material in /mat with configurable surface properties.

Inputs: name, opacity, mat_type, metallic, +2 more.

create_material_networkC

Create a new material network in /mat.

Inputs: name (required), params, shader_type.

create_network_boxC

Draw a titled network box around nodes, to document a graph you built.

Inputs: parent_path (required), color, comment, node_paths.

create_nodeC

Create a node inside a parent network.

Inputs: node_type (required), parent_path (required), name, position.

create_render_nodeC

Create a new render (ROP) node in /out.

Inputs: renderer (required), name, camera, output_path.

create_spare_parameterC

Add a spare parameter to a node.

Inputs: label (required), node_path (required), parm_name (required), parm_type (required), +4 more.

create_spare_parametersC

Create multiple spare parameters, optionally in a folder tab.

Inputs: node_path (required), parameters (required), folder_name, folder_type.

create_sticky_noteD

Leave a sticky note in a network.

Inputs: text (required), parent_path (required), size, color, +1 more.

create_takeC

Create a new take, optionally under a parent take.

Inputs: name (required), parent_name.

create_vex_expressionC

Set an HScript expression on a parameter, evaluated before it is kept.

Inputs: vex_code (required), node_path (required), parm_name (required).

create_wrangleC

Create an Attribute Wrangle node with VEX code.

Inputs: vex_code (required), parent_path (required), justification (required), name, +1 more.

delete_keyframeC

Delete a keyframe at a specific frame.

Inputs: frame (required), node_path (required), parm_name (required).

delete_nodeC

Delete a node, or several in one call.

Inputs: node_path, node_paths.

delete_sticky_notesC

Delete sticky notes under a network, including nested networks.

Inputs: parent_path (required), recursive.

dirty_work_itemsC

Dirty work items on a TOP node so they can be regenerated.

Inputs: node_path (required), remove_outputs.

disconnect_nodeC

Disconnect one or all inputs of a node.

Inputs: node_path (required), input_index, disconnect_all.

edit_hda_interfaceC

Edit an existing HDA interface in one atomic call.

Inputs: ops (required), node_path (required), dry_run.

evaluate_expressionC

Evaluate an expression in Houdini and return its result.

Inputs: expression (required), language.

execute_hscriptC

Execute an HScript command in Houdini.

Inputs: command (required).

execute_pythonC

Execute arbitrary Python code inside Houdini. LAST RESORT only.

Inputs: code (required), justification (required), return_expression.

explain_nodeC

Explain a node in human-readable form.

Inputs: node_path (required).

export_chop_to_parmC

Export a CHOP channel to a parameter via a chop() expression.

Inputs: chop_path (required), channel_name (required), target_node_path (required), target_parm_name (required).

export_fileC

Export a node's output to a file on disk, and report whether it landed.

Inputs: file_path (required), node_path (required), frame_range.

find_error_nodesC

Find all nodes with errors or warnings in the scene.

Inputs: root_path.

find_expensive_nodesC

Profile cooking and rank the most expensive nodes.

Inputs: frame, limit, root_path.

find_nearest_pointC

Find the nearest point(s) to a given position.

Inputs: position (required), node_path (required), max_results.

find_nodesC

Search for nodes by name pattern, type, or context.

Inputs: inside, context, pattern, node_type.

find_usd_primsC

Search USD prims by path pattern.

Inputs: pattern (required), node_path (required), traverse_instance_proxies.

frame_allA

Frame all geometry in the viewport, or only some nodes or a box.

Inputs: bounds, pane_name, node_paths.

frame_selectionC

Frame the current selection in the viewport.

Inputs: pane_name.

generate_static_itemsC

Generate static work items on a TOP node without cooking.

Inputs: node_path (required).

get_attrib_statsC

Aggregate statistics for numeric attributes: min, max, mean, sum.

Inputs: group, frames, unique, attribs, +5 more.

get_attribute_infoC

Get metadata for a geometry attribute.

Inputs: node_path (required), attrib_name (required), attrib_class.

get_attrib_valuesC

Read attribute values as a flat array with pagination.

Inputs: node_path (required), attrib_name (required), count, start, +1 more.

get_bounding_boxC

Get the bounding box of a SOP node's geometry.

Inputs: node_path (required).

get_cache_statusC

Frames on disk for a cache node, against the range it is set to write.

Inputs: node_path (required).

get_chop_dataC

Get CHOP node track data.

Inputs: node_path (required), end, start, channel_name.

get_context_infoC

Get information about a Houdini network context.

Inputs: context (required).

get_cook_chainC

Trace the cook dependency chain for a node.

Inputs: node_path (required).

get_cook_statusC

Whether a node has cooked, how often, and whether it is time dependent.

Inputs: node_path.

get_cop_geometryC

Get geometry representation from a COP node.

Inputs: node_path (required), output_index.

get_cop_infoC

Get information about a COP node.

Inputs: node_path (required).

get_cop_layerC

Get image layer data from a COP node.

Inputs: node_path (required), output_index.

get_cop_vdbC

Get VDB volumetric data from a COP node.

Inputs: node_path (required), output_index.

get_current_takeB

Get the current take and its overridden parameters.

Inputs: no named parameters.

get_dop_fieldC

Read a specific field value from a DOP record.

Inputs: data_path (required), node_path (required), field_name (required), object_name (required).

get_dop_objectC

Get detailed data for a specific DOP object.

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

get_dop_relationshipsC

List all relationships between DOP objects.

Inputs: node_path (required).

get_env_variableC

Get a Houdini environment variable value.

Inputs: var_name (required).

get_expressionC

Get the expression on a parameter.

Inputs: node_path (required), parm_name (required).

get_failed_work_itemsC

List the work items that failed on a TOP node, with the tail of each log.

Inputs: node_path (required), limit.

get_file_referencesC

Return every file path the scene references.

Inputs: include_missing_only.

get_frameA

Get the current frame and FPS.

Inputs: no named parameters.

get_geometry_infoC

Get geometry summary for a SOP node.

Inputs: node_path (required), output_index.

get_group_membersC

Get element indices in a geometry group, with pagination.

Inputs: node_path (required), group_name (required), count, start, +1 more.

get_groupsC

List all geometry groups on a SOP node.

Inputs: node_path (required).

get_hda_infoC

Get detailed information about an HDA definition.

Inputs: hda_file, node_path, type_name.

get_hda_section_contentC

Read the content of a specific section in an HDA definition.

Inputs: node_path (required), section_name (required).

get_hda_sectionsC

List all sections in an HDA definition.

Inputs: node_path (required).

get_help_pageC

Fetch one page of Houdini's shipped documentation by path.

Inputs: path (required), offset, section.

get_keyframesA

Get all keyframes on a parameter.

Inputs: node_path (required), parm_name (required).

get_last_modified_primsC

Get prims modified by the last LOP node cook.

Inputs: node_path (required).

get_material_infoC

Get detailed information about a material node.

Inputs: node_path (required).

get_network_overviewC

Get a compact overview of a network.

Inputs: path, depth.

get_node_cardC

Return a node type's connectors, parameters, and help text.

Inputs: node_type (required), context, parm_filter, include_help.

get_node_errors_detailedC

Get detailed error analysis for nodes.

Inputs: node_path, root_path.

get_node_infoB

Return a node's type, connections, flags, errors, and changed parameters.

Inputs: node_path (required).

get_parameterC

Get the value and metadata of a parameter.

Inputs: node_path (required), parm_name (required).

get_parametersC

Read many parameter values at once, matched by name or label substring.

Inputs: inside, patterns, node_path, node_type, +5 more.

get_parameter_schemaC

Get the template schema for parameter(s) on a node.

Inputs: node_path (required), filter, parm_name.

get_parm_referencesC

Who references a parameter, and what it references — in one call.

Inputs: node_path (required), limit, direction, parm_name, +1 more.

get_parm_template_treeC

Return the parameter interface as a tree of folders and parameters.

Inputs: folder, context, node_path, type_name, +2 more.

get_pdg_graphC

Get the PDG dependency graph structure for a TOP network.

Inputs: node_path (required).

get_pointsC

Read point positions and attributes with pagination.

Inputs: node_path (required), count, group, start, +1 more.

get_prim_intrinsicsC

Get intrinsic values for primitives: one, many, or all of them.

Inputs: node_path (required), intrinsics, prim_index, prim_range, +1 more.

get_primsC

Read primitive data and attributes with pagination.

Inputs: node_path (required), count, group, start, +1 more.

get_render_progressC

Progress of a render or write started with start_render.

Inputs: node_path (required).

get_render_settingsC

Get render settings from a ROP node.

Inputs: node_path (required).

get_scene_infoB

Get information about the current Houdini scene.

Inputs: no named parameters.

get_scene_summaryB

Get a high-level summary of the scene.

Inputs: no named parameters.

get_selectionB

Get the current node selection.

Inputs: no named parameters.

get_shelf_tool_scriptB

Read the script a shelf tool runs, plus its help and imports.

Inputs: tool_name (required).

get_sim_memory_usageC

Get detailed memory breakdown for the simulation.

Inputs: node_path (required).

get_simulation_infoC

Get DOP network simulation state, cooked at the current frame.

Inputs: node_path (required).

get_stage_infoC

Get USD stage info from a LOP node, or from a LOP network.

Inputs: node_path.

get_top_logsC

Cook logs for a TOP node, or the scheduler log of one work item.

Inputs: node_path (required), tail, work_item_index.

get_top_network_infoC

Get an overview of a TOP network.

Inputs: node_path (required).

get_top_scheduler_infoC

Get information about TOP scheduler nodes in a network.

Inputs: node_path (required).

get_usd_attributeC

Read a USD attribute value from a prim.

Inputs: attr_name (required), node_path (required), prim_path (required), full, +4 more.

get_usd_attributesC

Read the same attributes across many prims as one table.

Inputs: prims (required), node_path (required), full, time, +5 more.

get_usd_bound_materialC

Return the material bound to each prim and where the binding comes from.

Inputs: node_path (required), prim_paths (required), purpose.

get_usd_compositionC

Get composition arcs for a USD prim.

Inputs: node_path (required), prim_path (required).

get_usd_layersC

List all layers in a USD stage.

Inputs: node_path (required).

get_usd_materialsC

List all USD materials on a stage.

Inputs: node_path (required).

get_usd_material_texturesC

List every asset-valued input of each USD material.

Inputs: node_path (required), root_path, include_prototypes, traverse_instance_proxies.

get_usd_primD

Get detailed info about a USD prim.

Inputs: node_path (required), prim_path (required), full, time, +2 more.

get_usd_prim_statsC

Get prim counts by USD type under a root path.

Inputs: node_path (required), prim_path, traverse_instance_proxies.

get_usd_variantsC

Get variant sets and selections for a USD prim.

Inputs: node_path (required), prim_path (required).

get_usd_world_transformC

World transform of USD prims at one or more frames.

Inputs: node_path (required), prim_paths (required), frames.

get_viewport_infoC

Get viewport settings for a pane tab.

Inputs: pane_name.

get_volume_infoC

Per-volume name, resolution, active voxels, value range, mean and sum.

Inputs: node_path (required), bins, threshold, max_volumes.

get_workflow_guideC

Return the written guide for a workflow topic.

Inputs: topic (required), description.

get_work_item_infoC

Get detailed information about a specific work item.

Inputs: node_path (required), work_item_index (required).

get_work_item_statesC

Get work item state counts for a TOP node.

Inputs: node_path (required).

get_wrangle_codeC

Read the VEX code from an Attribute Wrangle node.

Inputs: node_path (required).

import_fileC

Import a geometry, USD, or Alembic file into the scene.

Inputs: file_path (required), node_name, parent_path.

inspect_usd_layerC

Inspect a USD layer by index.

Inputs: node_path (required), layer_index.

install_hdaC

Install an HDA file into the current session.

Inputs: file_path (required), force.

layout_childrenC

Auto-layout children of a network node.

Inputs: parent_path (required), spacing.

list_cachesC

List all cache-type nodes under a root path.

Inputs: root_path.

list_childrenC

List children of a network node. Locked assets are opaque unless include_locked_assets (raw contents) or dive_target (editable content) asks for them.

Inputs: parent_path (required), recursive, dive_target, filter_type, +1 more.

list_chop_channelsC

List all channels on a CHOP node.

Inputs: node_path (required).

list_cop_node_typesC

List available COP node types.

Inputs: filter.

list_dop_objectsC

List all DOP objects in a simulation.

Inputs: node_path (required).

list_hda_versionsC

List installed definitions of an HDA type.

Inputs: node_path (required).

list_installed_hdasC

List installed HDA definitions, grouped by library file.

Inputs: limit, filter.

list_lightsC

List all USD lights on a LOP stage.

Inputs: node_path (required).

list_materialsC

List all material nodes under a root path.

Inputs: root_path.

list_material_typesC

List available VOP/material node types.

Inputs: filter.

list_network_boxesC

List network boxes (backdrops) in a network and the nodes in each.

Inputs: parent_path.

list_node_typesC

List available node types for a context category.

Inputs: context (required), limit, filter.

list_panesA

List all visible pane tabs in the Houdini UI.

Inputs: no named parameters.

list_render_nodesA

List all render (ROP/Driver) nodes in the scene.

Inputs: no named parameters.

list_shelf_toolsC

Find shelf tools by name, label or keyword.

Inputs: limit, filter.

list_takesA

List all takes in the scene with their hierarchy.

Inputs: no named parameters.

list_usd_primsC

List USD prims on a stage with filtering.

Inputs: node_path (required), kind, depth, prim_type, +2 more.

load_sceneC

Open a hip file, or merge it into the current scene.

Inputs: file_path (required), merge, node_paths, overwrite_on_conflict.

lock_parameterC

Lock or unlock a parameter.

Inputs: locked (required), node_path (required), parm_name (required).

log_statusC

Display a status message in Houdini's status bar.

Inputs: message (required), severity.

move_nodeC

Move a node to a different parent network.

Inputs: node_path (required), dest_parent (required).

new_sceneC

Create a new empty Houdini scene.

Inputs: save_current.

pause_top_cookC

Pause cooking on a TOP network.

Inputs: node_path (required).

playbar_controlC

Control playback: play, stop, or reverse.

Inputs: action (required), fps, real_time.

press_buttonC

Press a button parameter and return the node's errors and warnings.

Inputs: node_path (required), parm_name (required), cook, action, +1 more.

promote_vop_parametersC

Promote VOP inputs to parameters.

Inputs: promotions (required).

redoC

Redo the last undone change(s) in Houdini.

Inputs: steps.

reload_hdaC

Reload an HDA file from disk.

Inputs: file_path (required).

rename_nodeC

Rename a node.

Inputs: new_name (required), node_path (required).

render_node_networkC

Capture a screenshot of a node's network editor view.

Inputs: node_path (required), output_path.

render_quad_viewC

Capture all four viewport panes to separate images.

Inputs: resolution, output_path.

render_viewportC

Capture the current 3D viewport to an image file.

Inputs: camera, resolution, output_path, settle_seconds.

reorder_inputsC

Reorder the input connections of a node.

Inputs: new_order (required), node_path (required).

reset_simulationC

Reset the simulation to its initial state.

Inputs: node_path (required).

revert_parameterC

Revert a parameter to its default value.

Inputs: node_path (required), parm_name (required).

run_shelf_toolC

Run a shelf tool and report the nodes it created.

Inputs: tool_name (required), kwargs, selection, dop_network, +1 more.

sample_geometryC

Sample evenly distributed points from a SOP node's geometry.

Inputs: node_path (required), seed, sample_count.

sample_volumeC

Read named volume fields at world positions, or at another SOP's points.

Inputs: fields (required), node_path (required), bins, limit, +3 more.

save_sceneC

Save the current Houdini scene to disk.

Inputs: file_path.

search_helpC

Search Houdini's installed documentation.

Inputs: query (required), limit, scope.

set_cop_flagsC

Set flags on a COP node.

Inputs: node_path (required), display, compress, export_flag.

set_current_networkC

Navigate the network editor to a network; the viewer follows it in.

Inputs: network_path (required), other_objects.

set_current_takeC

Set the current take by name.

Inputs: name (required).

set_detail_attribC

Set a detail attribute on a SOP node.

Inputs: value (required), node_path (required), attrib_name (required).

set_expressionC

Set an expression on a parameter.

Inputs: node_path (required), parm_name (required), expression (required), language.

set_frameC

Set the current frame in the timeline.

Inputs: frame (required).

set_frame_rangeC

Set the global frame range.

Inputs: end (required), start (required).

set_hda_interfaceC

Author an HDA's Type Properties interface in one call.

Inputs: node_path (required), parameters (required), dry_run, replace.

set_hda_section_contentC

Write content to a specific section in an HDA definition.

Inputs: content (required), node_path (required), section_name (required).

set_keyframeC

Set a single keyframe on a parameter.

Inputs: frame (required), value (required), node_path (required), parm_name (required), +2 more.

set_keyframesC

Batch-set multiple keyframes on a parameter.

Inputs: keyframes (required), node_path (required), parm_name (required).

set_light_propertiesC

Set properties on a USD light prim via an inline Python LOP.

Inputs: node_path (required), prim_path (required), properties (required).

set_node_colorC

Set a node's color in the network editor.

Inputs: b (required), g (required), r (required), node_path (required).

set_node_flagsC

Set flags on a node.

Inputs: node_path (required), lock, bypass, render, +2 more.

set_node_positionC

Set a node's position in the network editor.

Inputs: x (required), y (required), node_path (required).

set_object_transformC

Set an object's translate, rotate, scale and/or parent in one call.

Inputs: node_path (required), scale, parent, rotate, +1 more.

set_parameterD

Set a parameter value.

Inputs: value (required), node_path (required), parm_name (required), run_callbacks, +1 more.

set_parametersB

Batch-set multiple parameters on a node, in the order given.

Inputs: params (required), node_path (required), run_callbacks, override_expression.

set_playback_rangeB

Set the playback range (green bar in the timeline).

Inputs: end (required), start (required).

set_render_settingsC

Set render parameters on a ROP node.

Inputs: node_path (required), settings.

set_selectionD

Set the node selection.

Inputs: node_paths.

set_update_modeA

Set Houdini's cook update mode, or read it when called with no mode.

Inputs: mode.

setup_flip_simC

Build a FLIP fluid simulation network from source geometry.

Inputs: name, domain, source_geo, particle_sep.

setup_pyro_simC

Build a Pyro smoke/fire simulation network from source geometry.

Inputs: name, substeps, container, res_scale, +1 more.

setup_rbd_simC

Build an RBD rigid-body simulation network with fracture and solver.

Inputs: name, ground, geo_path, pieces_type.

setup_renderC

Set up a render configuration with camera and ROP node.

Inputs: name, camera, samples, renderer, +2 more.

setup_vellum_simC

Build a Vellum simulation network with configure node and solver.

Inputs: name, ground, geo_path, sim_type, +1 more.

set_usd_attributeC

Set a USD attribute value via an inline Python LOP.

Inputs: value (required), attr_name (required), node_path (required), prim_path (required).

set_viewer_contextC

Point the Scene Viewer at a network, and optionally a node inside it.

Inputs: network_path (required), pane_name, current_node.

set_viewport_cameraC

Set the viewport to look through a specific camera.

Inputs: camera_path (required), pane_name.

set_viewport_directionC

Set the viewport to a standard viewing direction, or place the free view.

Inputs: pivot, distance, rotation, direction, +1 more.

set_viewport_displayC

Set how the viewport draws and return the applied settings.

Inputs: pane_name, point_size, color_scheme, display_mode, +2 more.

set_viewport_rendererC

Set the viewport's Hydra rendering delegate for live preview.

Inputs: renderer (required), pane_name.

set_wrangle_codeC

Set VEX code on an existing Attribute Wrangle node.

Inputs: vex_code (required), node_path (required).

start_renderC

Execute any node that renders or writes files.

Inputs: node_path (required), overrides, background, frame_range.

step_simulationC

Advance the simulation by a number of frames.

Inputs: node_path (required), steps.

undoC

Undo the last change(s) made in Houdini.

Inputs: steps.

uninstall_hdaB

Uninstall an HDA file from the current session.

Inputs: file_path (required).

update_hdaC

Save the current node contents back to its HDA definition.

Inputs: node_path (required).

validate_vexC

Validate VEX code by cooking the node and checking for errors.

Inputs: node_path (required).

verify_networkC

Inspect every node in a network for errors and cook state.

Inputs: parent_path (required), force_cook.

write_cacheC

Execute a cache node, and report whether a cache actually appeared.

Inputs: node_path (required), background, frame_range.

Tool Schema Changelog

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

Loading tool schema changelog…

    TDQS

    C2.4/5.0

    Scored across 213 tools

    Disambiguation2/5

    With 213 tools there are many overlapping pairs: get_parameter vs get_parameters, get_usd_attribute vs get_usd_attributes, capture_screenshot vs render_viewport vs render_node_network, create_material vs create_material_network, and several list_* tools that differ only subtly. Descriptions help in places, but an agent will frequently face unclear boundaries among the many read/inspect tools.

    Naming Consistency4/5

    Most tools follow a snake_case verb_noun pattern (get_node_info, create_lop_node, list_usd_prims, set_render_settings). Minor deviations exist, such as playbar_control, log_status, undo/redo, and the misleadingly named create_vex_expression, but the overall convention is predictable.

    Tool Count1/5

    213 tools is an extreme mismatch for a single MCP server, far beyond the typical 3-15 range. The surface spans many Houdini contexts, but the sheer volume makes tool discovery, selection, and maintenance unwieldy.

    Completeness4/5

    The surface is remarkably comprehensive across SOP, DOP, COP, TOP, LOP, CHOP, rendering, HDA, UI, and scene workflows, covering most lifecycle operations. However, there are minor gaps such as no delete_take, no delete_network_box, and some material lifecycle operations only partially exposed.

    Maintenance

    ActivityMaintained
    ResponsivenessNo recent community issues

    Related MCP Connectors

    Related MCP Servers

    • A
      license
      Not graded
      quality
      D
      maintenance
      Enables natural language control of SideFX Houdini for tasks including node management, parameter editing, and geometry inspection. It leverages RPYC to execute Python scripts and manage scene data through an MCP-compatible interface.
      MIT
    • F
      license
      Not graded
      quality
      D
      maintenance
      Enables AI assistants to control Houdini by executing Python code, querying scene information, and creating nodes via the Model Context Protocol.
      2
      -
    • A
      license
      A
      quality
      B
      maintenance
      Drive SideFX Houdini from any agent: build node networks in one all-or-nothing call, cook, render, capture the viewport, and read the offline docs of your Houdini build. 20 tools with modes.
      20
      172 PyPI
      15
      MIT
    • A
      license
      Not graded
      quality
      D
      maintenance
      Enables AI assistants to control SideFX Houdini 3D software, providing tools for scene management, node operations, rendering, and more through the Model Context Protocol.
      1
      MIT