Houdini MCP
Control SideFX Houdini from an AI client (Claude, ChatGPT Codex, Gemini) through the Model Context Protocol.
The bridge talks to Houdini's Python API over a local TCP socket.
If no Houdini GUI is running, the bridge starts a
headless hython session, so you can work without the UI.
- 20 tools — one for each noun:
scene_overview,node_inspect,geometry_inspect,stage_inspect,node_edit,parm_set,connect,cook,execute,render,capture,console,docs,playbar,scene_file,select,hda,pdg,session,batch. Amodeargument chooses the action, and every tool takes one item or a list. The modules are insrc/bridge/tools/. - Honest failures — a write that Houdini silently ignored is reported as such, and every error names the next action.
- Documentation — the official Houdini docs for the exact build on this machine, read out of the install by the HoudiniMD engine. No network.
Install
Prerequisites: Python 3.10+. Houdini is optional at setup time.
The script installs uv and the houdinimcp
package from PyPI, installs the Houdini plugin, and registers the bridge with
the agent harnesses you pick.
Windows
powershell -c "irm https://raw.githubusercontent.com/JTCHE/houdini-mcp/main/bootstrap.bat -OutFile bootstrap.bat; .\bootstrap.bat"
Linux / macOS
curl -sSL https://raw.githubusercontent.com/JTCHE/houdini-mcp/main/bootstrap.sh | bash
At a terminal you get menus: which Houdini release to install for, which harnesses to configure — Claude Code, Claude Desktop, Codex, Gemini CLI, Cursor, opencode, pi. pi reads MCP servers through its pi-mcp-adapter extension.
Have uv already? uv tool install houdini-mcp-server && houdinimcp-install does the
same thing.
Working from a clone? Run the installer from the repository root:
uv run python -m bridge.onboarding.install. It installs the plugin from that
clone, and points every harness at it.
Unattended install (agents, CI, scripted setup)
The installer never blocks without a terminal: it takes the default for every
question and says so. Flags make each choice explicit, and --json reports what
it did.
# What is on this machine, as JSON: Houdini releases, harnesses, uv
houdinimcp-install --list
# Every default: newest Houdini, every detected harness
houdinimcp-install --yes
# Explicit, and report what changed
houdinimcp-install --houdini-version 22.0 --harness claude-code --harness codex --yes --json
# Report only, change nothing
houdinimcp-install --dry-run --yes
From a clone, uv run python -m bridge.onboarding.install takes the same flags.
bootstrap.sh and bootstrap.bat pass every flag through, so the one-line
install above works unattended too — bash bootstrap.sh --yes on Linux and
macOS, .\bootstrap.bat --yes on Windows.
Useful flags: --houdini-version none skips the plugin, --prefs-dir names the
Houdini preferences directory outright, --harness none leaves every client
alone, --skip-deps skips uv sync in a clone, --quiet-start stops the
usage statistics dialog and the Start Here window that cover the viewport on
a first launch (it adds HOUDINI_NO_START_PAGE_SPLASH = 1 to houdini.env).
With --json, stdout carries the JSON report and nothing else — the progress
log goes to stderr. The report names every file written and every client
configured, so it is also the verification: read plugin.wrote and
harnesses[].target back, and check errors is empty. claude mcp list is the
independent check for Claude Code.
Manual setup
uv tool install houdini-mcp-server
houdinimcp-install --harness none # plugin only
claude mcp add --transport stdio houdini -- houdinimcp-bridge
For a client that reads a JSON config, point command at houdinimcp-bridge
with no arguments. From a clone, point it at uv with
args: ["--directory", "/path/to/houdini-mcp", "run", "python", "houdini_mcp_server.py"].
ChatGPT accepts remote MCP servers only. The bridge speaks stdio, so put a stdio-to-HTTP proxy in front of it and expose that with a tunnel.
How it works
MCP client ──stdio──> src/bridge/ ──TCP──> src/houdinimcp/ ──> hou API
└──────> houdinimd_docs ──> $HFS/houdini/help
No Houdini running? The bridge starts hython -> houdinimcp/headless.py
src/bridge/ is the MCP side and holds the installer. src/houdinimcp/ is the
plugin, which Houdini loads from a copy in its preferences directory.
The installer also adds a HoudiniMCP shelf with a button that starts and stops the TCP server.
Headless mode gives you every tool except the ones that need a UI: viewport,
screenshots and flipbooks. Set HOUDINIMCP_NO_HEADLESS=1 to turn auto-launch off.
For those, session with action="start_gui" starts Houdini with its window
(and hip= opens a file), then waits for the plugin.
On Windows, a Houdini that the bridge starts reads the same preferences as one
started from the Start menu: the bridge sets HOUDINI_USER_PREF_DIR when it is
not set. A shell that sets HOME (Git Bash does) otherwise sends Houdini to
$HOME\houdiniX.Y.
Contributing
Read AGENTS.md before you change anything. It carries the working
rules and links to the short guides in agents/.
Acknowledgements
Built on the work of blender-mcp, capoomgit/houdini-mcp, eetumartola/houdini-mcp, Houdini21MCP and fxhoudinimcp.
MIT licensed.
HoudiniMCP is an independent community project. It is not affiliated with, endorsed by, or sponsored by SideFX Software. Houdini and SideFX are trademarks of SideFX Software Inc.
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file houdini_mcp_server-0.4.0.tar.gz.
File metadata
- Download URL: houdini_mcp_server-0.4.0.tar.gz
- Upload date:
- Size: 74.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via:
uv/0.10.9 {"installer":{"name":"uv","version":"0.10.9","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":null,"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
724de5cdac4f42bad83bc6652d74e132742f5625fda71d76399cffca4eb6d946
|
|
| MD5 |
e3451e4877eb624557cc1ec43d9472af
|
|
| BLAKE2b-256 |
2e865309692fec3986156db230ed4b8b8c1df9fd66d329517d776286fdae5885
|
File details
Details for the file houdini_mcp_server-0.4.0-py3-none-any.whl.
File metadata
- Download URL: houdini_mcp_server-0.4.0-py3-none-any.whl
- Upload date:
- Size: 98.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via:
uv/0.10.9 {"installer":{"name":"uv","version":"0.10.9","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":null,"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
0349f8ac87000c470e0eeea57de63e336816087a10b2d0ac4e063a7abe27451d
|
|
| MD5 |
baa9bcc38e2a6803a8be3121b646d538
|
|
| BLAKE2b-256 |
f5cc6bf730907ea3fccac91e704c795e1a1ee96cddbf0be8878c4c280b9c605b
|