Skip to main content

Comprehensive MCP server for SideFX Houdini with 131 tools covering SOPs, LOPs/USD, DOPs, PDG/TOPs, COPs, HDAs, animation, rendering, VEX, and more

Project description

Houdini      MCP

fxhoudinimcp

The most comprehensive MCP server for SideFX Houdini.
167 tools across 19 categories, covering every major Houdini context.

   License: MIT   Last Commit      PyPI   GitHub Stars  

Table of Contents

About

A comprehensive MCP (Model Context Protocol) server for SideFX Houdini. Connects AI assistants like Claude directly to Houdini's Python API, enabling natural language control over scene building, simulation setup, rendering, and more.

167 tools, 8 resources, and 6 workflow prompts out of the box.

Features

Category Tools Description
Scene Management 7 Open, save, import/export, scene info
Node Operations 16 Create, delete, copy, connect, layout, flags
Parameters 10 Get/set values, expressions, keyframes, spare parameters
Geometry (SOPs) 12 Points, prims, attributes, groups, sampling, nearest-point search
LOPs/USD 18 Stage inspection, prims, layers, composition, variants, lighting
DOPs 8 Simulation info, DOP objects, step/reset, memory usage
PDG/TOPs 10 Cook, work items, schedulers, dependency graphs
COPs (Copernicus) 7 Image nodes, layers, VDB data
HDAs 10 Create, install, manage Digital Assets and their sections
Animation 9 Keyframes, playbar control, frame range
Rendering 9 Viewport capture, render nodes, settings, render launch
VEX 5 Create/edit wrangles, validate VEX code
Code Execution 4 Python, HScript, expressions, env variables
Viewport/UI 10 Pane management, screenshots, error detection
Scene Context 8 Network overview, cook chain, selection, scene summary, error analysis
Workflows 8 One-call Pyro/RBD/FLIP/Vellum setup, SOP chains, render config
Materials 4 List, inspect, create materials and shader networks
CHOPs 4 Channel data, CHOP nodes, export channels to parameters
Cache 4 List, inspect, clear, write file caches
Takes 4 List, create, switch takes with parameter overrides

Architecture

flowchart LR
    subgraph Client[" 🤖 AI Client "]
        direction TB
        A1("Claude Desktop")
        A2("Cursor / VS Code")
        A3("Claude Code")
    end

    subgraph MCP[" ⚡ FXHoudini MCP Server "]
        direction TB
        B1("🔧 167 Tools")
        B2("📦 8 Resources")
        B3("💬 6 Prompts")
    end

    subgraph Houdini[" 🔶 SideFX Houdini "]
        direction TB
        C1("🌐 hwebserver")
        C2("📡 Dispatcher")
        C3("🎛️ hou.* Handlers")
        C1 --> C2 --> C3
    end

    Client -. "MCP Protocol · stdio" .-> MCP
    MCP -. "HTTP / JSON · port 8100" .-> Houdini

    classDef clientBox fill:#f0f4ff,stroke:#b8c9e8,stroke-width:1px,color:#2d3748,rx:12,ry:12
    classDef mcpBox fill:#eef6f0,stroke:#a8d5b8,stroke-width:1px,color:#2d3748,rx:12,ry:12
    classDef houdiniBox fill:#fff5f0,stroke:#e8c4a8,stroke-width:1px,color:#2d3748,rx:12,ry:12

    classDef clientNode fill:#dbe4f8,stroke:#96b0dc,stroke-width:1px,color:#2d3748,rx:8,ry:8
    classDef mcpNode fill:#d4edda,stroke:#82c896,stroke-width:1px,color:#2d3748,rx:8,ry:8
    classDef houdiniNode fill:#fde4d0,stroke:#e0a87c,stroke-width:1px,color:#2d3748,rx:8,ry:8

    class Client clientBox
    class MCP mcpBox
    class Houdini houdiniBox
    class A1,A2,A3 clientNode
    class B1,B2,B3 mcpNode
    class C1,C2,C3 houdiniNode

Uses Houdini's built-in hwebserver. No custom socket servers, no rpyc. Uses hdefereval.executeInMainThreadWithResult() to safely run hou.* calls on the main thread.

Installation

Requirements

  • Houdini 20.5+ (tested on 21.0)
  • Python 3.10+
  • MCP SDK (mcp package) 1.8+

1. Install the MCP Server

From PyPI:

pip install fxhoudinimcp

From source:

pip install -e .

Or with development dependencies:

pip install -e ".[dev]"

2. Install the Houdini Plugin

Option A: Houdini package (recommended)

  1. Copy houdini/fxhoudinimcp.json to your Houdini packages directory:

    • Windows: %USERPROFILE%/Documents/houdiniXX.X/packages/
    • Linux: ~/houdiniXX.X/packages/
    • macOS: ~/Library/Preferences/houdini/XX.X/packages/
  2. Edit the JSON file to set FXHOUDINIMCP to point to the houdini directory in this repo.

Option B: Manual copy

Copy the contents of houdini/ into your Houdini user preferences directory so that:

  • scripts/python/fxhoudinimcp_server/ is on Houdini's Python path
  • scripts/456.py runs on scene load
  • toolbar/fxhoudinimcp.shelf appears in your shelf

3. Configure Your MCP Client

Claude Desktop (claude_desktop_config.json):

{
  "mcpServers": {
    "fxhoudini": {
      "command": "python",
      "args": ["-m", "fxhoudinimcp"],
      "env": {
        "HOUDINI_HOST": "localhost",
        "HOUDINI_PORT": "8100"
      }
    }
  }
}

Claude Code (.mcp.json in project root):

{
  "mcpServers": {
    "fxhoudini": {
      "command": "python",
      "args": ["-m", "fxhoudinimcp"],
      "env": {
        "HOUDINI_HOST": "localhost",
        "HOUDINI_PORT": "8100"
      }
    }
  }
}

[!TIP] If Claude Desktop reports the server as disconnected, replace "python" with the full absolute path to your Python executable. Claude Desktop does not always inherit your system PATH. Find it with:

python -c "import sys; print(sys.executable)"

Then use the result in your config, e.g. "command": "C:\\Program Files\\Python311\\python.exe". After any config change, fully quit Claude Desktop (system tray → Quit) and relaunch.

Usage

Launch Houdini normally. The plugin auto-starts on scene load (controlled by FXHOUDINIMCP_AUTOSTART env var). You can also toggle it manually via the MCP Server shelf tool.

Once connected, your AI assistant can:

"Create a procedural rock generator with mountain displacement"
"Set up a Pyro simulation with a sphere source"
"Build a USD scene with a camera, dome light, and ground plane"
"Create an HDA from the selected subnet"
"Debug why my scene has cooking errors"

Environment Variables

Variable Default Description
HOUDINI_HOST localhost Houdini host address
HOUDINI_PORT 8100 Houdini hwebserver port
FXHOUDINIMCP_PORT 8100 Port for the Houdini plugin to listen on
FXHOUDINIMCP_AUTOSTART 1 Set to 0 to disable auto-start
MCP_TRANSPORT stdio MCP transport (stdio or streamable-http)
LOG_LEVEL INFO Logging level

Development

# Install dev dependencies
pip install -e ".[dev]"

# Run linter
ruff check python/

# Run tests
pytest

How It Works

  1. Houdini Plugin (houdini/): Runs inside Houdini's Python environment. Registers @hwebserver.apiFunction endpoints that receive JSON commands. Uses hdefereval.executeInMainThreadWithResult() to safely execute hou.* calls on the main thread.

  2. MCP Server (python/fxhoudinimcp/): A standalone Python process using FastMCP. Exposes 167 tools, 8 resources, and 6 prompts via the MCP protocol. Forwards tool calls to Houdini over HTTP.

  3. Bridge (python/fxhoudinimcp/bridge.py): Async HTTP client that sends commands to Houdini's hwebserver and deserializes responses. Handles connection errors and timeouts.

Contact

Project Link: fxhoudinimcp

GitHub   LinkedIn   Behance   Twitter   Instagram   Gumroad   Email   Buy Me A Coffee  

License

MIT

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

fxhoudinimcp-0.3.1.tar.gz (119.1 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

fxhoudinimcp-0.3.1-py3-none-any.whl (48.1 kB view details)

Uploaded Python 3

File details

Details for the file fxhoudinimcp-0.3.1.tar.gz.

File metadata

  • Download URL: fxhoudinimcp-0.3.1.tar.gz
  • Upload date:
  • Size: 119.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.11.14

File hashes

Hashes for fxhoudinimcp-0.3.1.tar.gz
Algorithm Hash digest
SHA256 e8d35492bdf3b0ace50a7c6f00c74af2328c6416d41ef4fe3ceeb4b7c70a3b33
MD5 b4c539833713e93e734931b8b901f484
BLAKE2b-256 cb2a1d4aad1024e2ae36cf3a526137113a9b8e6b1a096bfba5cd3a39386f5d6c

See more details on using hashes here.

File details

Details for the file fxhoudinimcp-0.3.1-py3-none-any.whl.

File metadata

  • Download URL: fxhoudinimcp-0.3.1-py3-none-any.whl
  • Upload date:
  • Size: 48.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.11.14

File hashes

Hashes for fxhoudinimcp-0.3.1-py3-none-any.whl
Algorithm Hash digest
SHA256 2f834e25c7d018443dba30468e1186cf50e23f10f3a47bbbaa1001b7f2339653
MD5 96e334d3962eb9f663f0311afc0601e3
BLAKE2b-256 ab26a282b713f935ed1f3035c324fa9d130b21e48e09f3ebdf82c59d7972e1d7

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page