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"
      }
    }
  }
}

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.1.0.tar.gz (113.4 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.1.0-py3-none-any.whl (50.9 kB view details)

Uploaded Python 3

File details

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

File metadata

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

File hashes

Hashes for fxhoudinimcp-0.1.0.tar.gz
Algorithm Hash digest
SHA256 29c01ae99706d3687900fff82cc18b8585c3d27653e6027c87491688aa23f531
MD5 3eba0a1dfc5eed8d418785e1d416df78
BLAKE2b-256 4c3468f9d8e7a24c29a9b2dac8cee106d26ec7855ea2f5be6303286947be1ba5

See more details on using hashes here.

File details

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

File metadata

  • Download URL: fxhoudinimcp-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 50.9 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.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 e31340fb30f9985836e639e393eb49c6cb051cc4b48d6eadf60d3656e8b9048b
MD5 81c2447ca7a4abf0f0b71fb69588c627
BLAKE2b-256 e057e021b6e42e7bd717ff9653df7813ee8d3e1f38f1ab1e8c47314dc52d8bda

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