HoudiniMCP
Controls SideFX Houdini via MCP, providing tools for scene management, node operations, parameters, rendering, geometry, PDG/TOPs, USD/Solaris, HDAs, animation, VEX, DOPs, viewport, COPs, CHOPs, takes, cache, and more through Houdini's Python API.
Click on "Install 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., "@HoudiniMCPcreate a sphere and apply a noise to it"
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.
Control SideFX Houdini from Claude using the Model Context Protocol. HoudiniMCP connects to your running Houdini instance — your license, your scene, your tools. The bridge talks to Houdini's Python API over a local TCP socket, so everything runs on your machine against your own installation. If no Houdini GUI is running, the bridge auto-launches a headless hython session so you can work without opening the UI.
166 MCP tools — nodes, rendering, geometry, PDG/TOPs, USD/Solaris, HDAs, scene management, parameters, animation, VEX, DOPs, viewport, COPs, CHOPs, takes, cache, workflows
30,000+ searchable documents — Houdini docs + patterns extracted from your Houdini install's example files
Bidirectional event system — Houdini pushes scene changes to Claude in real time
Get Started
Prerequisites: git and Python 3.10+. Houdini is optional at setup time.
Linux / macOS:
curl -sSL https://raw.githubusercontent.com/kleer001/houdini-mcp/main/bootstrap.sh | bashWindows (PowerShell):
powershell -c "irm https://raw.githubusercontent.com/kleer001/houdini-mcp/main/bootstrap.bat -OutFile bootstrap.bat; .\bootstrap.bat"The bootstrap script clones the repo, installs uv, creates a venv, installs deps, sets up the Houdini plugin, optionally downloads offline docs, and configures your MCP client. Re-run from inside the repo at any time — it's idempotent. Full install is ~1 GB (mostly the documentation corpus).
1. Install the Houdini Plugin
# Auto-detect Houdini version and install
python scripts/install.py
# Or specify version explicitly
python scripts/install.py --houdini-version 20.5
# Preview without changing anything
python scripts/install.py --dry-runThis copies plugin files to your Houdini preferences directory, creates a packages JSON for auto-loading, and adds a startup hook (pythonrc.py) so the MCP server starts automatically when Houdini opens.
2. Install MCP Dependencies
# Using uv (recommended)
cd /path/to/houdini-mcp
uv sync
# Or using pip
pip install "mcp[cli]"3. Configure Your MCP Client
Claude Code (CLI):
claude mcp add --transport stdio houdini -- uv --directory /path/to/houdini-mcp run python houdini_mcp_server.pyClaude Desktop: Go to File > Settings > Developer > Edit Config and add:
{
"mcpServers": {
"houdini": {
"command": "uv",
"args": [
"--directory",
"/path/to/houdini-mcp",
"run",
"python",
"houdini_mcp_server.py"
]
}
}
}ChatGPT Desktop: ChatGPT only supports remote (HTTP) MCP servers, not local stdio. You'll need to wrap the bridge in an HTTP transport and expose it via a tunnel:
# 1. Run the MCP server with HTTP transport (requires mcp[cli])
uv --directory /path/to/houdini-mcp run fastmcp run houdini_mcp_server.py --transport http --port 8080
# 2. Expose it with ngrok (or Cloudflare Tunnel, etc.)
ngrok http 8080Then in ChatGPT: Settings > Connectors > Create — paste the ngrok HTTPS URL as the Connector URL.
Ollama (local LLM): Ollama doesn't have a built-in MCP client. Use ollama-mcp-bridge to connect:
pip install ollama-mcp-bridgeCreate mcp-config.json:
{
"mcpServers": {
"houdini": {
"command": "uv",
"args": [
"--directory",
"/path/to/houdini-mcp",
"run",
"python",
"houdini_mcp_server.py"
]
}
}
}ollama-mcp-bridge --config ./mcp-config.jsonThe bridge proxies Ollama's API and routes tool calls to HoudiniMCP automatically.
4. Set Up Documentation Search
# Downloads Houdini docs and builds the BM25 index (~1 GB)
python scripts/fetch_houdini_docs.pyThis enables the search_docs and get_doc tools — they work offline without a Houdini connection.
Related MCP server: HoudiniMCP
What You Get
HoudiniMCP exposes 166 tools, 8 resources, and 6 prompts over MCP, organized by domain: scene management, node operations, scene context, parameters, code execution, materials, animation, VEX, geometry, rendering, viewport, DOPs, PDG/TOPs, USD/Solaris, COPs, CHOPs, takes, cache, HDA management, batch operations, workflow templates, events, and documentation search. The bridge runs as a separate process (houdini_mcp_server.py) and talks to the Houdini plugin over TCP.
Claude (MCP stdio) → houdini_mcp_server.py (Bridge) → TCP:9876 → server.py (Houdini Plugin) → hou API
↘ houdini_rag.py (BM25 search — docs + patterns, local-only)
↖ scripts/ingest_hips.py (pattern extraction from .hip files)
No Houdini running? Bridge auto-launches hython → headless_server.py → server.py → hou APIScene Management (6)
Tool | Description |
| Health check — verify Houdini is connected |
| Connection info (port, command count, timing) |
| Scene summary (file, frame, FPS, node counts) |
| Save current scene, optionally to a new path |
| Load a .hip file |
| Set the playbar frame |
Scene Context (6)
Tool | Description |
| Overview of a network's children and connections |
| Trace upstream cook dependency chain |
| Human-readable summary of a node's role |
| High-level scene statistics |
| Get currently selected nodes |
| Set the node selection |
Node Operations (18)
Tool | Description |
| Create a node (type, parent, name) |
| Rename, reposition, or change parameters |
| Delete a node by path |
| Inspect a node (type, parms, inputs, outputs) |
| Wire src output → dst input |
| Disconnect a specific input |
| Set display/render/bypass flags |
| Set a node's color [r, g, b] |
| Auto-layout child nodes |
| Scan hierarchy for cook errors |
| Copy a node to a new parent |
| Move a node to a new parent |
| Rename a node |
| List children of a node |
| Search for nodes by type/name pattern |
| List available node types for a context |
| Connect multiple node pairs at once |
| Reorder a node's input connections |
Parameters (10)
Tool | Description |
| Read a single parameter value |
| Set a single parameter value |
| Set multiple parameters at once |
| Get parameter metadata (type, range, menu items) |
| Get the expression on a parameter |
| Revert a parameter to its default |
| Create a channel reference between parameters |
| Lock or unlock a parameter |
| Add a spare parameter to a node |
| Add multiple spare parameters at once |
Code Execution (4)
Tool | Description |
| Run Python code in Houdini (with safety guard) |
| Run HScript commands |
| Evaluate an HScript or Python expression |
| Get a Houdini environment variable |
Materials (6)
Tool | Description |
| Create or apply a material to an OBJ node |
| List all materials in a context |
| Get material parameters and properties |
| Create a material network with a shader |
| Assign a material to geometry |
| List available material/shader types |
Animation (9)
Tool | Description |
| Set an HScript or Python expression on a parm |
| Set a keyframe on a parameter |
| Set multiple keyframes at once |
| Delete a keyframe at a frame |
| Get all keyframes on a parameter |
| Get the current frame |
| Set the global frame range |
| Set the playback frame range |
| Control playbar (play, stop, reverse, step) |
VEX (5)
Tool | Description |
| Create an attribute wrangle node with VEX code |
| Set VEX code on an existing wrangle |
| Get VEX code from a wrangle |
| Create a wrangle with a VEX expression |
| Validate VEX syntax |
Geometry (11)
Tool | Description |
| Point/prim/vertex counts, bbox, attributes |
| Export geometry (obj, gltf, glb, usd, ply, bgeo.sc) |
| Get point positions and attributes (paginated) |
| Get primitive data and attributes (paginated) |
| Get attribute values for all elements |
| Set a detail attribute value |
| List point/prim groups |
| Get members of a group |
| Get geometry bounding box |
| Get primitive intrinsic values |
| Find the nearest point to a position |
Rendering (11)
Tool | Description |
| Render a single viewport (OpenGL/Karma/Mantra) |
| Render 4 canonical views |
| Render from a specific camera node |
| Render a flipbook sequence |
| Check if a Karma/Mantra render is still running |
| List all ROP nodes in /out |
| Get render node parameters |
| Set render node parameters |
| Create a new ROP node |
| Start a render from a ROP node |
| Get render progress percentage |
Viewport (10)
Tool | Description |
| List all pane tabs in the desktop |
| Get viewport settings and camera info |
| Set the viewport camera |
| Set viewport display options |
| Set viewport renderer (OpenGL, Karma, etc.) |
| Frame the viewport on selected nodes |
| Frame all geometry in the viewport |
| Set viewport to a standard direction |
| Capture a viewport screenshot |
| Set the current network editor path |
DOPs (8)
Tool | Description |
| Get simulation status and properties |
| List objects in a DOP simulation |
| Get details of a DOP object |
| Get a DOP field's data/stats |
| Get DOP object relationships |
| Advance simulation by N frames |
| Reset simulation to start frame |
| Get simulation memory usage |
PDG/TOPs (5)
Tool | Description |
| Start cooking a TOP network |
| Get cook status and work item counts |
| List work items (optionally by state) |
| Dirty work items for re-cooking |
| Cancel a running PDG cook |
USD/Solaris (15)
Tool | Description |
| USD stage summary (prims, layers, time) |
| Inspect a specific USD prim |
| Search prims by pattern and type |
| USD layer stack info |
| Import USD via reference or sublayer |
| List USD prims with hierarchy traversal |
| Get a USD prim attribute value |
| Set a USD prim attribute value |
| Get USD prim statistics |
| Get recently modified prims |
| Create a LOP node |
| Get USD composition arcs |
| Get USD variant sets and selections |
| Inspect a USD layer |
| List lights in the USD stage |
COPs (7)
Tool | Description |
| Get COP node info and planes |
| Get COP geometry data |
| Get COP layer/plane info |
| Create a COP node |
| Set COP node flags |
| List available COP node types |
| Get COP VDB volume info |
CHOPs (4)
Tool | Description |
| Get CHOP channel data and samples |
| Create a CHOP node |
| List channels in a CHOP node |
| Export a CHOP channel to a parameter |
Takes (4)
Tool | Description |
| List all takes in the scene |
| Get the current take |
| Set the current take |
| Create a new take |
Cache (4)
Tool | Description |
| List all cache nodes in the scene |
| Get cache node status |
| Clear a cache node |
| Write/execute a cache node |
HDA Management (10)
Tool | Description |
| List available HDA definitions |
| Detailed info about an HDA |
| Install an HDA file into the session |
| Create an HDA from an existing node |
| Uninstall an HDA definition |
| Reload an HDA from disk |
| Update an HDA definition from a node |
| List sections in an HDA |
| Read content of an HDA section |
| Write content to an HDA section |
Workflow Templates (8)
Tool | Description |
| Set up a Pyro simulation from source geometry |
| Set up an RBD simulation from source geometry |
| Set up a FLIP fluid simulation |
| Set up a Vellum simulation (cloth, hair, grain) |
| Create a material in a material context |
| Assign a material to geometry |
| Build a chain of connected SOP nodes |
| Set up a render node with camera and output |
Batch Operations (1)
Tool | Description |
| Execute multiple operations atomically |
Event System (2)
Tool | Description |
| Get pending Houdini events (scene/node/frame changes) |
| Configure which event types to collect |
Documentation Search (2)
Tool | Description |
| BM25 search across 30,000+ documents (no Houdini needed) |
| Read full content of a doc page |
Shelf Tools
The installer adds a HoudiniMCP shelf with a Toggle MCP Server button that starts or stops the TCP server on localhost:9876.
Headless Mode
If no Houdini GUI is running when the MCP bridge starts, it automatically launches a headless hython session with the TCP server. This means Claude can work with Houdini's Python API (nodes, geometry, parameters, USD, PDG, rendering, etc.) without opening the UI.
Auto-detected: the bridge probes port 9876 on first tool call — if nothing is listening, it finds
hythonand starts itTransparent: same tools, same API — just no viewport or interactive UI
Cleanup: the hython process is terminated when the MCP bridge shuts down
Disable: set
HOUDINIMCP_NO_HEADLESS=1to prevent auto-launch
hython is found via $HFS/bin/hython, PATH, or common install locations (/opt/hfs*, C:\Program Files\Side Effects Software\*).
Note: GUI-only tools (viewport, screenshots, flipbook) won't work in headless mode. All node, geometry, parameter, rendering, USD, PDG, HDA, and code execution tools work normally.
The ingest pipeline extracts reusable patterns from Houdini's own example .hip files and HDA definitions, then indexes them alongside the documentation corpus for BM25 search.
# Run the full pipeline (discover → parse → extract HDAs → extract patterns → index)
python scripts/ingest_hips.py all
# Or run individual stages
python scripts/ingest_hips.py discover # Find .hip files in Houdini install
python scripts/ingest_hips.py parse # Parse .hip files (cpio format, no Houdini needed)
python scripts/ingest_hips.py extract-hdas # Extract HDA networks (requires hython)
python scripts/ingest_hips.py extract # Extract patterns (scene graphs, subgraphs, recipes)
python scripts/ingest_hips.py index # Build combined BM25 index (docs + patterns)Pattern types extracted:
Scene graphs — full node hierarchies from each .hip file
Subgraphs — connected node clusters, deduplicated by topology
Recipes — individual node configurations with parameter values
The combined index feeds the same search_docs and get_doc MCP tools used for documentation search.
Best Practices — hard-won lessons from production use (COP pitfalls, diagnostics, etc.)
Getting Started — first-time setup walkthrough
Tools Reference — detailed tool documentation with examples
Events Guide — event system setup and usage
Troubleshooting — common issues and fixes
.hip Format Reference — cpio-based .hip file format internals
Skills
Skills are multi-step workflow guides that define how Claude should approach complex, repeatable production tasks using HoudiniMCP. Unlike single tool calls, skills orchestrate sequences of MCP tools, filesystem queries, and user confirmation gates to complete high-level operations safely.
Skills live in the skills/ folder. Invoke one by describing the task
to Claude — it will recognise the workflow and follow the skill's phases.
Skill | Description |
Duplicate an FX rig network and remap all file references from one shot's sequences to another's |
Best Practices — The Recipe Book
Houdini is deep software, and the best way to learn it is from someone who's already been there. BEST_PRACTICES.md is a growing collection of practical recipes — the kind of knowledge that saves you hours.
Every entry follows the same format: what we tried, what surprised us, and what works. Tagged with the Houdini version so you know what applies to you.
This file is baked into Claude's context, so the AI builds on previous experience instead of starting from scratch. The more you use HoudiniMCP, the smarter it gets.
Got recipes to share? As you work with HoudiniMCP, your AI will add entries to its own BEST_PRACTICES.md. If you've accumulated useful ones, open an issue and paste your file — we'll merge the good stuff in for everyone.
Under the Hood
Zero external deps for search — BM25 engine is pure stdlib Python, no numpy/scipy/nltk
Cpio parser for .hip files — reads Houdini's binary scene format without Houdini installed
19,000+ patterns extracted from Houdini's own example files, searchable alongside 11,000+ doc pages
Event deduplication collapses rapid-fire callbacks (same type + path within 100ms)
Undo groups wrap all mutating commands, dangerous code patterns blocked by default
256 tests, all run without a Houdini instance
Acknowledgements
HoudiniMCP builds on the work of several open-source projects:
blender-mcp by ahujasid — architectural inspiration (MCP bridge + TCP socket pattern)
capoomgit/houdini-mcp by capoomgit — first full-featured Houdini MCP implementation
eetumartola/houdini-mcp by eetumartola — early Houdini MCP implementation
Houdini21MCP by orrzxz — documentation search engine
fxhoudinimcp by healkeiser — comprehensive Houdini MCP with 167 tools across 19 categories (MIT license)
License
MIT
HoudiniMCP is an independent community project and is not affiliated with, endorsed by, or sponsored by SideFX Software. Houdini and SideFX are trademarks of SideFX Software Inc.
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Latest Blog Posts
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/JTCHE/houdini-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server