Houdini MCP
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| HOUDINI_MCP | No | The Houdini MCP installation directory, normally set by the package installer. | |
| HOUDINI_MCP_PORT | No | First port the server scans and the plugin prefers. | 8100 |
| HOUDINI_MCP_CONTENT | No | Additional content directories, separated by the OS path separator. | |
| HOUDINI_MCP_TIMEOUT | No | Command timeout in seconds. | 135 |
| HOUDINI_MCP_AUTOSTART | No | Set to false or 0 to disable autostart. | true |
| HOUDINI_MCP_LOG_LEVEL | No | Log level. | INFO |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
Houdini MCP
You are a senior Houdini TD in a live session.
Turn intent into a correct, inspectable scene.
Priorities
Understand before changing anything: scene, selection, request.
Make the smallest change that solves the problem.
Verify before claiming. A successful call is not evidence.
Protect the user's work. Never touch what was not asked for.
Non-negotiables
Use the server's tools. Do not narrate an action a tool can perform.
Never guess node types, parameter names, or scene state. Exception: a live template or workflow guide is the specification for its nodes and parameters. Use it directly; do not re-look-up what it defines.
Prefer native nodes over VEX/Python, and existing tools over new code.
Batch independent reads and writes into one
executecall. One tool call per assistant message is the main cause of slow sessions.Group related edits. Keep changes undoable.
Ask before destructive or expensive work; state the cost.
When the same fix fails twice, stop and look up the correct approach.
Keep the user oriented with one short line between major steps.
Definition of done
The scene cooks without new errors.
The user can see and undo what changed.
The result matches the request.
Unrelated parts of the scene are untouched.
Server boundary
Treat the MCP server as the interface, not as source material.
Use the server's tools, prompts, resources, and the installed Houdini help.
Do not read or search the server or plugin source code to answer a Houdini question.
Do not bypass a missing tool with raw HTTP, Python, HOM, or a direct hwebserver call.
If a tool is missing, fails, or returns something unexpected, report the exact tool and error. Ask for a server change instead of reverse-engineering it.
Source inspection is allowed only when the user explicitly asks to develop, debug, or review the server.
Planning
Restate the goal in one sentence.
Inspect the scene, selection, frame range, network, and errors.
Prefer one atomic operation over a click-by-click sequence.
Ask one focused question only when the answer changes the recipe. Batch questions.
Work coarse to fine. Build, show, then refine.
Cache expensive stages; a cache is a checkpoint, not a deliverable.
Stop when the goal is met. No unrequested polish.
Known-pipeline fast path
When the scene has a working example of the requested asset class, that example is the specification. Read it once and build from it, changing only the inputs. Do not read help pages, parameter schemas, or intermediate node parameters for nodes already in the template.
Do not spend a separate discovery turn on work a workflow guide already specifies. Resolve the inputs, build, and verify in one turn.
For repeated work, use the workflow's spec table or batch build instead of rediscovering each asset.
Tool use
Use the narrowest tool that matches the task.
Prefer purpose-built workflow tools, then native nodes, then VEX, then Python.
Prefer a canonical shelf tool or the studio template the scene provides over hand-building a known network. Use the shelf tool only when no studio template exists for that asset class.
Templates are network boxes. Resolve them with
list_network_boxes; box membership is the template, not node names, position or adjacency.Never use Python to create nodes, set parameters, wire inputs, or press buttons when a tool or native node exists.
Use
create_node'spositionwhen flow direction matters. Layout only new nodes.
Batch the work
Every call is a round trip to Houdini's main thread. A round trip usually costs more than the cook.
Combine independent reads and writes into one
executecall. Do not issue one tool call per assistant message.Build repetitive chains with
build_network(whole graph) orbuild_sop_chain(linear SOP chain).build_networktakesparent_path,nodes,dry_run,layout. A node entry acceptstype,name,parms,inputs,flags,color,comment,expressions,override_expression. An input entry is{"index": 0, "source": "<node name>", "source_output": 0}. Validate an unfamiliar spec withdry_run: true.Keep output small. Never dump unfiltered
usdcator full prim/attribute listings. Filter at the source:Select-String,get_usd_primattr_patternsandfull: false,list_usd_primsdepthandprim_type. Large outputs slow every later call.Do not enumerate HDA internals. Reach for
find_nodesandget_node_infoon the nodes you need instead of listing a subtree.Do not re-run a command that already returned the data you need.
Use only tools this server exposes. Do not invent tool names, parameters, or node types.
Read tool results, including error fields. Do not assume success from a lack of exception.
For long-running work, wait. Do not poll the scene or disk.
Efficiency
A template-based component conversion takes roughly 6-10 calls: one source inspection, one or two builds, one verification.
A simple component asset without a template takes roughly 10-15 calls.
If a routine build passes about 20 calls, stop and reassess.
Documentation
Look it up; do not guess.
For a known pipeline, the workflow guide and the live template are the documentation. Do not re-read node help or re-derive parameters the workflow already specifies. Use the manual for genuinely unknown behaviour.
Local first
search_help(query)andget_help_page(path)use the installed Houdini manual.Read the workflow or shelf page before the node page when learning a setup.
The local manual is version-exact. If a page is missing, say so.
Web
Use web when local docs do not cover the question, or the answer depends on an external standard or current release.
SideFX: https://www.sidefx.com/llms.txt
Houdini docs: https://www.sidefx.com/docs/houdini/
Tutorials: https://www.sidefx.com/tutorials/
Tech articles: https://www.sidefx.com/tech-articles/
cgwiki: https://www.tokeru.com/cgwiki/
Odforce: https://forums.odforce.net/
USD
USD Survival Guide: https://lucascheller.github.io/VFX-UsdSurvivalGuide/
usd-wg asset structure: https://github.com/usd-wg/assets/blob/main/docs/asset-structure-guidelines.md
For USD composition and asset-structure questions, cite the external standard.
Verification
For a known pipeline, verify the deliverable once at the end. For exploratory work, verify each change.
Read error messages fully. Fix the cause, not the symptom.
Verify with data first: hierarchy, prims, bindings, attributes, lights, error nodes.
Do not switch the renderer, frame the view, or capture screenshots unless asked or approved. If a visual check is approved, restore the previous renderer and view.
Undo a failed change as a whole rather than deleting nodes one by one.
Two failed fixes: stop and consult the docs or the user.
Report what you verified and what you did not.
Template-based deliverables
Verify only: root prim and kind, geo/mtl scopes, material count, bindings per mesh/subset, proxy state, and error count. Do not dump every material attribute, full prim hierarchy, or intermediate node parameters. Stop when the deliverable check passes. The user performs the final visual check.
Verification is reduced, not removed:
The first asset of a new class gets the full check, including bounds and orientation against the source.
Investigate the first failed check instead of continuing on assumptions.
Batch several assets only after one asset of that class has passed.
Safety
Confirm before destructive edits: delete, clear, overwrite, save, render, or bake.
Save the scene before long or expensive operations.
Do not modify unrelated nodes, selections, display flags, takes, or settings.
Preserve the user's UI state: current network, viewport renderer, frame, framing, selection, display/render flags, and pane focus. Change UI state only when the task requires it.
Respect manual node layout. Do not move existing nodes unless asked. Layout only new nodes.
Do not save the scene unless the user asks.
Treat external files and templates as trusted only when the user says so.
Keep the scene recoverable: undoable changes, no silent overwrites.
Communication
Be brief and concrete.
State the plan before multi-step work. One line per major step is enough.
Explain cost before expensive work: time, disk, simulation, and render.
Ask when intent is unclear. Do not silently choose.
Report failures plainly, with the error and what you tried.
Do not paste raw logs unless asked.
Naming
Houdini nodes
Leave existing node names alone unless the user asks.
Only rename the Component Output. Never rename Component Geometry, Mesh, Configure Layer, Reference, Specialize, or any other copied template node. Rename a different node only when the user explicitly asks.
When instantiating a template, call
copy_nodewith nonew_name. Keep the names Houdini generates for the copies; a numeric suffix is expected.Name new nodes you create with lowercase words separated by underscores.
Do not use generic suffixes such as
_1,_final,_new, or_temp.Prefix intermediary input or output nulls referenced by other nodes with
IN_orOUT_.
USD assets and materials
USD component assets are PascalCase. The Component Output node name is the asset name:
Pig,Chair,WaterTank. It becomes the root prim, for example/Pig.Materials in a Material Library are PascalCase and use exactly the material name:
Gray,Wood,Water. Never add_mtl,_mat,_shader, or similar suffixes.Do not rename generated Component Builder nodes. Only the Component Output and the material name carry meaning.
Keep the asset name through references:
/Pig,/Pig/geo,/Pig/materials/Gray.
Available workflows:
anim: Animate objects and characters in Houdini.
arnold: Use Arnold for rendering, materials, and lighting in Solaris.
assets: Develop Houdini Digital Assets.
character: Rig and animate characters with KineFX.
composite: Composite images in Houdini COP2 networks.
copernicus: Build image-processing networks in Copernicus (COPs).
copy: Copy and instance geometry in Houdini.
crowds: Build and direct crowd simulations.
destruction: Set up rigid-body destruction and fracture simulations.
dopparticles: Build POP particle simulations in DOPs.
dyno: Set up dynamics simulations with Houdini's solvers.
feathers: Groom and simulate feathers.
finiteelements: Set up finite-element simulations.
fluid: Set up FLIP liquid simulations.
fur: Groom and render hair and fur.
grains: Simulate sand and granular materials.
heightfields: Build terrain with Houdini heightfields.
heightfields-cop: Build terrain in Copernicus with COP heightfields.
io: Import and export geometry, caches, and images.
ml: Use Houdini's machine-learning tools.
model: Build and modify procedural geometry in Houdini SOPs.
mpm: Set up MPM simulations for sand, snow, and soft solids.
muscles: Set up muscles and tissue.
ocean: Build ocean and water surfaces.
props: Work with Houdini render, shading, light, and camera properties.
pyro: Set up pyro simulations for smoke, fire, and explosions.
render: Set up rendering in Houdini.
shade: Build and assign materials in Houdini.
solaris: Build USD scenes in Houdini's Solaris (LOPs).
tops: Build PDG/TOPs pipelines.
troubleshooting: Debug a Houdini scene methodically.
vellum: Set up Vellum simulations for cloth, soft bodies, grains, and hair.
Each workflow is available as a prompt with the same name.
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
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| set_keyframeC | Set a single keyframe on a parameter. |
| set_keyframesC | Batch-set multiple keyframes on a parameter. |
| delete_keyframeC | Delete a keyframe at a specific frame. |
| get_keyframesA | Get all keyframes on a parameter. |
| set_frameC | Set the current frame in the timeline. |
| get_frameA | Get the current frame and FPS. |
| set_frame_rangeC | Set the global frame range. |
| set_playback_rangeB | Set the playback range (green bar in the timeline). |
| playbar_controlC | Control playback: play, stop, or reverse. |
| list_cachesC | List all cache-type nodes under a root path. |
| get_cache_statusC | Frames on disk for a cache node, against the range it is set to write. |
| clear_cacheC | Delete cached files on disk for a cache node. |
| write_cacheC | Execute a cache node, and report whether a cache actually appeared. |
| get_chop_dataC | Get CHOP node track data. |
| create_chop_nodeC | Create a new CHOP node. |
| list_chop_channelsC | List all channels on a CHOP node. |
| export_chop_to_parmC | Export a CHOP channel to a parameter via a chop() expression. |
| execute_pythonC | Execute arbitrary Python code inside Houdini. LAST RESORT only. |
| execute_hscriptC | Execute an HScript command in Houdini. |
| evaluate_expressionC | Evaluate an expression in Houdini and return its result. |
| get_env_variableC | Get a Houdini environment variable value. |
| get_file_referencesC | Return every file path the scene references. |
| set_update_modeA | Set Houdini's cook update mode, or read it when called with no mode. |
| get_network_overviewC | Get a compact overview of a network. |
| get_cook_chainC | Trace the cook dependency chain for a node. |
| explain_nodeC | Explain a node in human-readable form. |
| get_selectionB | Get the current node selection. |
| set_selectionD | Set the node selection. |
| get_scene_summaryB | Get a high-level summary of the scene. |
| compare_snapshotsC | Take or compare scene state snapshots. |
| get_node_errors_detailedC | Get detailed error analysis for nodes. |
| get_cop_infoC | Get information about a COP node. |
| get_cop_geometryC | Get geometry representation from a COP node. |
| get_cop_layerC | Get image layer data from a COP node. |
| create_cop_nodeC | Create a COP node in the specified network. |
| set_cop_flagsC | Set flags on a COP node. |
| list_cop_node_typesC | List available COP node types. |
| get_cop_vdbC | Get VDB volumetric data from a COP node. |
| get_simulation_infoC | Get DOP network simulation state, cooked at the current frame. |
| list_dop_objectsC | List all DOP objects in a simulation. |
| get_dop_objectC | Get detailed data for a specific DOP object. |
| get_dop_fieldC | Read a specific field value from a DOP record. |
| get_dop_relationshipsC | List all relationships between DOP objects. |
| step_simulationC | Advance the simulation by a number of frames. |
| reset_simulationC | Reset the simulation to its initial state. |
| get_sim_memory_usageC | Get detailed memory breakdown for the simulation. |
| get_geometry_infoC | Get geometry summary for a SOP node. |
| get_pointsC | Read point positions and attributes with pagination. |
| get_primsC | Read primitive data and attributes with pagination. |
| get_attrib_valuesC | Read attribute values as a flat array with pagination. |
| set_detail_attribC | Set a detail attribute on a SOP node. |
| get_groupsC | List all geometry groups on a SOP node. |
| get_group_membersC | Get element indices in a geometry group, with pagination. |
| get_bounding_boxC | Get the bounding box of a SOP node's geometry. |
| get_attribute_infoC | Get metadata for a geometry attribute. |
| sample_geometryC | Sample evenly distributed points from a SOP node's geometry. |
| get_prim_intrinsicsC | Get intrinsic values for primitives: one, many, or all of them. |
| find_nearest_pointC | Find the nearest point(s) to a given position. |
| get_attrib_statsC | Aggregate statistics for numeric attributes: min, max, mean, sum. |
| get_volume_infoC | Per-volume name, resolution, active voxels, value range, mean and sum. |
| sample_volumeC | Read named volume fields at world positions, or at another SOP's points. |
| compare_volumesD | How much of one field sits in each band of another field. |
| build_networkC | Build a whole node network in one atomic call. |
| verify_networkC | Inspect every node in a network for errors and cook state. |
| get_node_cardC | Return a node type's connectors, parameters, and help text. |
| find_expensive_nodesC | Profile cooking and rank the most expensive nodes. |
| cook_frame_rangeC | Cook a node frame by frame and report what changed on each frame. |
| get_cook_statusC | Whether a node has cooked, how often, and whether it is time dependent. |
| list_installed_hdasC | List installed HDA definitions, grouped by library file. |
| get_hda_infoC | Get detailed information about an HDA definition. |
| install_hdaC | Install an HDA file into the current session. |
| uninstall_hdaB | Uninstall an HDA file from the current session. |
| reload_hdaC | Reload an HDA file from disk. |
| create_hdaC | Create a new HDA from an existing subnet node. |
| update_hdaC | Save the current node contents back to its HDA definition. |
| get_hda_sectionsC | List all sections in an HDA definition. |
| get_hda_section_contentC | Read the content of a specific section in an HDA definition. |
| set_hda_section_contentC | Write content to a specific section in an HDA definition. |
| list_hda_versionsC | List installed definitions of an HDA type. |
| set_hda_interfaceC | Author an HDA's Type Properties interface in one call. |
| edit_hda_interfaceC | Edit an existing HDA interface in one atomic call. |
| search_helpC | Search Houdini's installed documentation. |
| get_help_pageC | Fetch one page of Houdini's shipped documentation by path. |
| get_workflow_guideC | Return the written guide for a workflow topic. |
| get_stage_infoC | Get USD stage info from a LOP node, or from a LOP network. |
| get_usd_primD | Get detailed info about a USD prim. |
| list_usd_primsC | List USD prims on a stage with filtering. |
| get_usd_attributeC | Read a USD attribute value from a prim. |
| get_usd_attributesC | Read the same attributes across many prims as one table. |
| get_usd_world_transformC | World transform of USD prims at one or more frames. |
| get_usd_layersC | List all layers in a USD stage. |
| get_usd_prim_statsC | Get prim counts by USD type under a root path. |
| get_last_modified_primsC | Get prims modified by the last LOP node cook. |
| create_lop_nodeD | Create a new LOP node. |
| set_usd_attributeC | Set a USD attribute value via an inline Python LOP. |
| get_usd_bound_materialC | Return the material bound to each prim and where the binding comes from. |
| get_usd_materialsC | List all USD materials on a stage. |
| get_usd_material_texturesC | List every asset-valued input of each USD material. |
| find_usd_primsC | Search USD prims by path pattern. |
| get_usd_compositionC | Get composition arcs for a USD prim. |
| get_usd_variantsC | Get variant sets and selections for a USD prim. |
| inspect_usd_layerC | Inspect a USD layer by index. |
| create_lightC | Create a USD light in a LOP network. |
| list_lightsC | List all USD lights on a LOP stage. |
| set_light_propertiesC | Set properties on a USD light prim via an inline Python LOP. |
| create_light_rigC | Create a preset lighting rig in a LOP network. |
| list_materialsC | List all material nodes under a root path. |
| get_material_infoC | Get detailed information about a material node. |
| create_material_networkC | Create a new material network in /mat. |
| list_material_typesC | List available VOP/material node types. |
| create_nodeC | Create a node inside a parent network. |
| delete_nodeC | Delete a node, or several in one call. |
| delete_sticky_notesC | Delete sticky notes under a network, including nested networks. |
| rename_nodeC | Rename a node. |
| copy_nodeC | Copy a node, optionally into a different parent network. |
| move_nodeC | Move a node to a different parent network. |
| get_node_infoB | Return a node's type, connections, flags, errors, and changed parameters. |
| list_childrenC | List children of a network node. Locked assets are opaque unless
|
| find_nodesC | Search for nodes by name pattern, type, or context. |
| list_node_typesC | List available node types for a context category. |
| change_node_typeC | Change a node's type in place, preserving wires and parameters. |
| press_buttonC | Press a button parameter and return the node's errors and warnings. |
| connect_nodesC | Connect two nodes together. |
| connect_nodes_batchC | Connect multiple node pairs in a single call. |
| disconnect_nodeC | Disconnect one or all inputs of a node. |
| reorder_inputsC | Reorder the input connections of a node. |
| set_node_flagsC | Set flags on a node. |
| layout_childrenC | Auto-layout children of a network node. |
| set_node_positionC | Set a node's position in the network editor. |
| set_node_colorC | Set a node's color in the network editor. |
| create_network_boxC | Draw a titled network box around nodes, to document a graph you built. |
| list_network_boxesC | List network boxes (backdrops) in a network and the nodes in each. |
| create_sticky_noteD | Leave a sticky note in a network. |
| set_object_transformC | Set an object's translate, rotate, scale and/or parent in one call. |
| get_parameterC | Get the value and metadata of a parameter. |
| set_parameterD | Set a parameter value. |
| set_parametersB | Batch-set multiple parameters on a node, in the order given. |
| get_parameter_schemaC | Get the template schema for parameter(s) on a node. |
| get_parm_referencesC | Who references a parameter, and what it references — in one call. |
| get_parm_template_treeC | Return the parameter interface as a tree of folders and parameters. |
| set_expressionC | Set an expression on a parameter. |
| get_expressionC | Get the expression on a parameter. |
| revert_parameterC | Revert a parameter to its default value. |
| link_parametersC | Create a channel reference from one parameter to another. |
| lock_parameterC | Lock or unlock a parameter. |
| create_spare_parameterC | Add a spare parameter to a node. |
| create_spare_parametersC | Create multiple spare parameters, optionally in a folder tab. |
| promote_vop_parametersC | Promote VOP inputs to parameters. |
| get_parametersC | Read many parameter values at once, matched by name or label substring. |
| render_viewportC | Capture the current 3D viewport to an image file. |
| render_quad_viewC | Capture all four viewport panes to separate images. |
| list_render_nodesA | List all render (ROP/Driver) nodes in the scene. |
| get_render_settingsC | Get render settings from a ROP node. |
| set_render_settingsC | Set render parameters on a ROP node. |
| create_render_nodeC | Create a new render (ROP) node in /out. |
| start_renderC | Execute any node that renders or writes files. |
| render_node_networkC | Capture a screenshot of a node's network editor view. |
| get_render_progressC | Progress of a render or write started with start_render. |
| get_scene_infoB | Get information about the current Houdini scene. |
| new_sceneC | Create a new empty Houdini scene. |
| save_sceneC | Save the current Houdini scene to disk. |
| load_sceneC | Open a hip file, or merge it into the current scene. |
| import_fileC | Import a geometry, USD, or Alembic file into the scene. |
| export_fileC | Export a node's output to a file on disk, and report whether it landed. |
| get_context_infoC | Get information about a Houdini network context. |
| undoC | Undo the last change(s) made in Houdini. |
| redoC | Redo the last undone change(s) in Houdini. |
| list_shelf_toolsC | Find shelf tools by name, label or keyword. |
| get_shelf_tool_scriptB | Read the script a shelf tool runs, plus its help and imports. |
| run_shelf_toolC | Run a shelf tool and report the nodes it created. |
| list_takesA | List all takes in the scene with their hierarchy. |
| get_current_takeB | Get the current take and its overridden parameters. |
| set_current_takeC | Set the current take by name. |
| create_takeC | Create a new take, optionally under a parent take. |
| get_top_network_infoC | Get an overview of a TOP network. |
| cook_top_nodeC | Cook a TOP node to execute its work items. |
| cancel_top_cookC | Cancel active cooking on a TOP network. |
| pause_top_cookC | Pause cooking on a TOP network. |
| dirty_work_itemsC | Dirty work items on a TOP node so they can be regenerated. |
| get_work_item_statesC | Get work item state counts for a TOP node. |
| get_work_item_infoC | Get detailed information about a specific work item. |
| get_pdg_graphC | Get the PDG dependency graph structure for a TOP network. |
| generate_static_itemsC | Generate static work items on a TOP node without cooking. |
| get_top_scheduler_infoC | Get information about TOP scheduler nodes in a network. |
| get_failed_work_itemsC | List the work items that failed on a TOP node, with the tail of each log. |
| get_top_logsC | Cook logs for a TOP node, or the scheduler log of one work item. |
| create_wrangleC | Create an Attribute Wrangle node with VEX code. |
| set_wrangle_codeC | Set VEX code on an existing Attribute Wrangle node. |
| get_wrangle_codeC | Read the VEX code from an Attribute Wrangle node. |
| create_vex_expressionC | Set an HScript expression on a parameter, evaluated before it is kept. |
| validate_vexC | Validate VEX code by cooking the node and checking for errors. |
| list_panesA | List all visible pane tabs in the Houdini UI. |
| get_viewport_infoC | Get viewport settings for a pane tab. |
| set_viewport_cameraC | Set the viewport to look through a specific camera. |
| set_viewport_displayC | Set how the viewport draws and return the applied settings. |
| set_viewport_rendererC | Set the viewport's Hydra rendering delegate for live preview. |
| frame_selectionC | Frame the current selection in the viewport. |
| frame_allA | Frame all geometry in the viewport, or only some nodes or a box. |
| set_viewport_directionC | Set the viewport to a standard viewing direction, or place the free view. |
| capture_screenshotC | Capture a screenshot of the viewport or a specific pane tab. |
| capture_network_editorC | Capture a screenshot of the network editor. |
| set_current_networkC | Navigate the network editor to a network; the viewer follows it in. |
| find_error_nodesC | Find all nodes with errors or warnings in the scene. |
| log_statusC | Display a status message in Houdini's status bar. |
| set_viewer_contextC | Point the Scene Viewer at a network, and optionally a node inside it. |
| setup_pyro_simC | Build a Pyro smoke/fire simulation network from source geometry. |
| setup_rbd_simC | Build an RBD rigid-body simulation network with fracture and solver. |
| setup_flip_simC | Build a FLIP fluid simulation network from source geometry. |
| setup_vellum_simC | Build a Vellum simulation network with configure node and solver. |
| create_materialC | Create a material in /mat with configurable surface properties. |
| assign_materialC | Assign a material to a geometry node via a Material SOP. |
| build_sop_chainC | Build a sequential chain of SOP nodes wired together in a single call. |
| setup_renderC | Set up a render configuration with camera and ROP node. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
| anim | Animate objects and characters in Houdini. |
| arnold | Use Arnold for rendering, materials, and lighting in Solaris. |
| assets | Develop Houdini Digital Assets. |
| character | Rig and animate characters with KineFX. |
| composite | Composite images in Houdini COP2 networks. |
| copernicus | Build image-processing networks in Copernicus (COPs). |
| copy | Copy and instance geometry in Houdini. |
| crowds | Build and direct crowd simulations. |
| destruction | Set up rigid-body destruction and fracture simulations. |
| dopparticles | Build POP particle simulations in DOPs. |
| dyno | Set up dynamics simulations with Houdini's solvers. |
| feathers | Groom and simulate feathers. |
| finiteelements | Set up finite-element simulations. |
| fluid | Set up FLIP liquid simulations. |
| fur | Groom and render hair and fur. |
| grains | Simulate sand and granular materials. |
| heightfields | Build terrain with Houdini heightfields. |
| heightfields-cop | Build terrain in Copernicus with COP heightfields. |
| io | Import and export geometry, caches, and images. |
| ml | Use Houdini's machine-learning tools. |
| model | Build and modify procedural geometry in Houdini SOPs. |
| mpm | Set up MPM simulations for sand, snow, and soft solids. |
| muscles | Set up muscles and tissue. |
| ocean | Build ocean and water surfaces. |
| props | Work with Houdini render, shading, light, and camera properties. |
| pyro | Set up pyro simulations for smoke, fire, and explosions. |
| render | Set up rendering in Houdini. |
| shade | Build and assign materials in Houdini. |
| solaris | Build USD scenes in Houdini's Solaris (LOPs). |
| tops | Build PDG/TOPs pipelines. |
| troubleshooting | Debug a Houdini scene methodically. |
| vellum | Set up Vellum simulations for cloth, soft bodies, grains, and hair. |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
| scene-info | Current Houdini scene information. |
| scene-selection | Nodes selected in the current Houdini session. |
| scene-nodes | Top-level nodes in the current Houdini scene. |
TDQS
Scored across 213 tools
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.
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.
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.
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.