code
code
¶
MCP tools for code execution inside Houdini.
Exposes 4 tools for running Python code, HScript commands, evaluating expressions, and reading Houdini environment variables.
Functions:
| Name | Description |
|---|---|
evaluate_expression |
Evaluate an expression in Houdini and return its result. |
execute_hscript |
Execute an HScript command in Houdini. |
execute_python |
Execute arbitrary Python code inside Houdini. LAST RESORT only. |
get_env_variable |
Get a Houdini environment variable value. |
get_file_references |
Every file path the scene references, with the parameter holding it and whether it exists. |
reload_plugin |
Re-import the plugin's Houdini-side code without restarting Houdini. |
set_update_mode |
Set Houdini's cook update mode, or read it when called with no mode. |
Functions:¶
evaluate_expression
async
¶
evaluate_expression(
ctx: Context, expression: str, language: str = "hscript"
) -> dict
execute_hscript
async
¶
execute_python
async
¶
execute_python(
ctx: Context,
code: str,
justification: str,
return_expression: str | None = None,
) -> dict
Execute arbitrary Python code inside Houdini. LAST RESORT only.
DO NOT use this to: - Create nodes or networks → use build_network or create_node - Set parameters → use set_parameter or set_parameters - Create wrangles or write Python SOPs → use create_wrangle - Connect nodes → use connect_nodes or connect_nodes_batch - Read geometry → use get_geometry_info, get_points, sample_geometry
ONLY use this when no dedicated tool exists for the operation — i.e. hou.* API calls or Python-level state that no other tool exposes. The justification parameter is mandatory: name the dedicated tools you considered and why none covers this operation.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
|
str
|
Python source code to execute. |
required |
|
str
|
Which dedicated tools you considered and why none covers this operation. |
required |
|
str | None
|
Python expression to evaluate after execution. |
None
|
get_env_variable
async
¶
get_file_references
async
¶
get_file_references(ctx: Context, include_missing_only: bool = False) -> dict
reload_plugin
async
¶
reload_plugin(ctx: Context) -> dict
Re-import the plugin's Houdini-side code without restarting Houdini.
For developing this server: after editing its handlers, this picks the edit up in the running session. The MCP server's own tool definitions are not reloaded; the client has to reconnect for those.
set_update_mode
async
¶
Set Houdini's cook update mode, or read it when called with no mode.
"manual" before a long build stops every parameter change from re-cooking; set "auto" back afterwards.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
|
Context
|
MCP context. |
required |
|
str | None
|
"auto", "on_mouse_up" or "manual". Omit to read. |
None
|