Houdini MCP
Provides tools for interacting with SideFX Houdini through a Houdini bridge, enabling agents to inspect scene information, list/create/delete nodes, set parameters, connect nodes, execute Python, save/load HIP files, and list node types.
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., "@Houdini MCP create a box node and connect it to a transform node"
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.
Houdini MCP
OpenAI-compatible Model Context Protocol server for SideFX Houdini.
Repository: github.com/alexantoshuk/houdini-mcp
Works with any agent path available in Zed:
Agent path | How it gets the tools |
Zed Agent | Uses Zed |
External Agents (Cursor, Claude ACP, Goose, Cline, OpenCode, Qwen Code, …) | Zed forwards configured MCP servers over ACP |
Terminal / other MCP clients |
|
Architecture
Zed agents --stdio MCP--> houdini-mcp (Python)
|
+-- mock backend (tests / offline)
+-- TCP JSON-lines --> Houdini bridge (hou.*)Related MCP server: Houdini MCP Server
Quick start
pip install -e .
python -m houdini_mcp --mock # offline smokeZed
.\scripts\install_zed.ps1Then in Zed: Extensions → Install Dev Extension → select this repo folder.
Or add manually to %APPDATA%\Zed\settings.json:
"context_servers": {
"houdini-mcp": {
"command": "C:/Python310/python.exe",
"args": ["-m", "houdini_mcp"],
"env": {
"HOUDINI_MCP_HOST": "127.0.0.1",
"HOUDINI_MCP_PORT": "18812"
}
}
}Green status under Settings → AI → MCP Servers means the server is active for all Zed agents.
Live Houdini
.\scripts\install_houdini_package.ps1Restart Houdini. The bridge autostarts on 127.0.0.1:18812 via scripts/123.py / 456.py — GUI sessions only. hython / hbatch skip the bind so they no longer steal the port from a live Houdini (no more renaming hooks to .bak).
Manual start / recovery inside Houdini Python Shell:
import houdini_mcp_bridge
houdini_mcp_bridge.ensure_bridge() # preferred — no-op if already listening
# or: houdini_mcp_bridge.start_server(port=18812)Env | Effect |
| Never autostart |
| Force autostart even in hython |
Tools (OpenAI-style)
Focused tools with input schemas + safety annotations (readOnlyHint / destructiveHint):
get_scene_info,list_nodes,get_nodecreate_node,set_parameter,connect_nodes,delete_nodeexecute_python,save_hip,load_hip,list_node_typesOpenAI company-knowledge pair:
search,fetchWorkflow skills:
list_skills,get_skill— loadSKILL.mdfrom the public repoalexantoshuk/houdini-mcp(raw.githubusercontent.com/ Contents API, refmain). Local.cursor/skills/is offline fallback only.
Also exposes resources houdini://scene/info, houdini://skills/index, and prompt houdini_starter_network.
Env | Meaning |
| GitHub |
| Branch/tag/commit (default |
|
|
MCP instructions tell the agent to call get_skill(...) when the task matches. Push skill edits to main before expecting remote agents to see them.
Transports
Transport | Command | Use |
stdio (default) |
| Zed, Claude Desktop, Cursor, Codex |
Streamable HTTP |
| OpenAI remote MCP / Inspector |
Tests
pip install -e ".[dev]"
pytest -qSkills (Cursor / agents)
Project skills live in .cursor/skills/houdini-*/SKILL.md (33 skills):
Solaris / assets / model / VEX —
houdini-solaris,houdini-assets,houdini-model,houdini-vexSims — pyro, fluid, vellum, destruction, mpm, ocean, grains, …
Pipeline — tops, io, render, shade, character, crowds, …
Defaults —
houdini-discipline(senior operating rules)
Index + attribution: skills/README.md.
Upstream guides (MIT): skills/vendor/fxhoudinimcp/.
Environment
Variable | Meaning |
| Bridge host (default |
| Bridge port (default |
|
|
|
|
|
|
|
|
Available Tools
15 toolsconnect_nodesConnect nodesC
Wire an output of from_path into an input of to_path.
Inputs: to_path (required), from_path (required), to_index, from_index. Returns: object
create_nodeCreate nodeB
Create a Houdini node under parent. Example: parent=/obj, type=geo, name=geo1.
Inputs: type (required), parent (required), name. Returns: object
delete_nodeDelete nodeADestructive
Delete a node and its descendants. Refuses to delete /obj.
Inputs: path (required). Returns: object
execute_pythonExecute PythonADestructive
Run Python in the Houdini process with hou available. Prefer typed tools when possible.
Inputs: code (required). Returns: object
fetchFetch Houdini docARead-only
OpenAI-compatible fetch of a documentation item by id from search results.
Inputs: id (required). Returns: object
get_nodeGet nodeBRead-only
Fetch details for one node: type, parms, inputs, outputs, children.
Inputs: path (required). Returns: object
get_scene_infoGet scene infoARead-only
Use when you need Houdini session status: hip path, version, frame, fps.
Inputs: no named parameters. Returns: object
get_skillGet workflow skillARead-only
Load a houdini-* SKILL.md by name (e.g. houdini-camera, houdini-solaris). Call this when the user task matches that skill's topic — especially from workspaces that are not the houdini_mcp repo — then follow the skill text.
Inputs: name (required). Returns: object
list_nodesList nodesBRead-only
List child nodes under a parent path. Set recursive=true to walk descendants.
Inputs: path, recursive. Returns: object
list_node_typesList node typesARead-only
List available Houdini node types, optionally filtered by category (Object, Sop, Dop, ...).
Inputs: category. Returns: object
list_skillsList workflow skillsARead-only
List houdini-* Agent Skills shipped with this package. Use when choosing which get_skill to load for the current Houdini task.
Inputs: no named parameters. Returns: object
load_hipLoad hipCDestructive
Load a hip file into the current Houdini session.
Inputs: path (required). Returns: object
save_hipSave hipA
Save the current hip file. Provide path to save-as; omit to save current file.
Inputs: path. Returns: object
searchSearch Houdini docsCRead-only
OpenAI-compatible search over node-type documentation. Returns id/title/url results.
Inputs: query (required). Returns: object
set_parameterSet parameterCIdempotent
Set a parameter on a node. Value may be number, string, or list for multi-component parms.
Inputs: parm (required), path (required), value (required). Returns: object
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 15 tools
Most tools map cleanly to a distinct resource+action (get_node vs list_nodes vs create_node vs delete_node), and the skill tools are clearly separated. Minor ambiguity: generic `search`/`fetch` names sit alongside Houdini-specific node/doc tools, and `execute_python` can subsume nearly every other tool, though the description frames it as a fallback.
Strong, consistent snake_case verb_noun pattern across the board (get_scene_info, list_nodes, create_node, set_parameter, save_hip, get_skill). The only deviations are `search` and `fetch`, which are bare verbs retained for OpenAI compatibility, but they remain readable and non-conflicting.
15 tools is well-scoped for a DCC-integration server: a core scene-graph surface plus file ops, docs, and skills. Each tool earns its place and the set avoids both thin single-tool surfaces and sprawling 40+ tool menus.
Core lifecycle is covered: create/get/list/delete nodes, set parameters, wire connections, plus hip save/load and scene introspection. Gaps like disconnect, duplicate/rename, node flags (display/render), or geometry readback exist, but `execute_python` provides a workable escape hatch.
Maintenance
Related MCP Connectors
Host any HTTP API as a standard MCP server; auto-distribute to 12+ mainstream agent platforms.
Nifty's MCP server — exposes tasks, projects, messages, and files as tools for AI agents.
Remote MCP server exposing SMI Aware tools, resources, and skills over Streamable HTTP.
Remote MCP server exposing your Node Command fleet (files, shell, processes, browser) to AI hosts.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceEnables 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
- AlicenseNot gradedqualityCmaintenanceAn MCP server for controlling SideFX Houdini via hrpyc, enabling AI assistants to interact with Houdini sessions.85MIT
- AlicenseNot gradedqualityCmaintenanceAn MCP server for SideFX Houdini that enables AI assistants to interactively control, construct, inspect, and visually verify 3D procedural scenes through tools like node creation, parameter editing, viewport capture, and rendering.MIT
- AlicenseNot gradedqualityCmaintenanceEnables language models to inspect the current Houdini scene, create and modify nodes, and run VEX/Python code in the running Houdini session via MCP.1MIT