Skip to main content
Glama

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 context_servers / this extension directly

External Agents (Cursor, Claude ACP, Goose, Cline, OpenCode, Qwen Code, …)

Zed forwards configured MCP servers over ACP

Terminal / other MCP clients

python -m houdini_mcp (stdio) or Streamable HTTP

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 smoke

Zed

.\scripts\install_zed.ps1

Then 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.ps1

Restart 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

HOUDINI_MCP_NO_BRIDGE=1

Never autostart

HOUDINI_MCP_BRIDGE=1

Force autostart even in hython

Tools (OpenAI-style)

Focused tools with input schemas + safety annotations (readOnlyHint / destructiveHint):

  • get_scene_info, list_nodes, get_node

  • create_node, set_parameter, connect_nodes, delete_node

  • execute_python, save_hip, load_hip, list_node_types

  • OpenAI company-knowledge pair: search, fetch

  • Workflow skills: list_skills, get_skill — load SKILL.md from the public repo alexantoshuk/houdini-mcp (raw.githubusercontent.com / Contents API, ref main). Local .cursor/skills/ is offline fallback only.

Also exposes resources houdini://scene/info, houdini://skills/index, and prompt houdini_starter_network.

Env

Meaning

HOUDINI_MCP_SKILLS_REPO

GitHub owner/repo (default alexantoshuk/houdini-mcp)

HOUDINI_MCP_SKILLS_REF

Branch/tag/commit (default main)

HOUDINI_MCP_SKILLS_SOURCE

auto (github→local), github, or local

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)

python -m houdini_mcp

Zed, Claude Desktop, Cursor, Codex

Streamable HTTP

python -m houdini_mcp --transport streamable-http

OpenAI remote MCP / Inspector

Tests

pip install -e ".[dev]"
pytest -q

Skills (Cursor / agents)

Project skills live in .cursor/skills/houdini-*/SKILL.md (33 skills):

  • Solaris / assets / model / VEX — houdini-solaris, houdini-assets, houdini-model, houdini-vex

  • Sims — 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

HOUDINI_MCP_HOST

Bridge host (default 127.0.0.1)

HOUDINI_MCP_PORT

Bridge port (default 18812)

HOUDINI_MCP_NO_BRIDGE

1 → skip autostart hooks

HOUDINI_MCP_BRIDGE

1 → force autostart in hython too

HOUDINI_MCP_MOCK

1 → in-process mock scene

HOUDINI_MCP_TRANSPORT

stdio / streamable-http

Available Tools

15 tools
connect_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 nodeA
Destructive

Delete a node and its descendants. Refuses to delete /obj.

Inputs: path (required). Returns: object

execute_pythonExecute PythonA
Destructive

Run Python in the Houdini process with hou available. Prefer typed tools when possible.

Inputs: code (required). Returns: object

fetchFetch Houdini docA
Read-only

OpenAI-compatible fetch of a documentation item by id from search results.

Inputs: id (required). Returns: object

get_nodeGet nodeB
Read-only

Fetch details for one node: type, parms, inputs, outputs, children.

Inputs: path (required). Returns: object

get_scene_infoGet scene infoA
Read-only

Use when you need Houdini session status: hip path, version, frame, fps.

Inputs: no named parameters. Returns: object

get_skillGet workflow skillA
Read-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 nodesB
Read-only

List child nodes under a parent path. Set recursive=true to walk descendants.

Inputs: path, recursive. Returns: object

list_node_typesList node typesA
Read-only

List available Houdini node types, optionally filtered by category (Object, Sop, Dop, ...).

Inputs: category. Returns: object

list_skillsList workflow skillsA
Read-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 hipC
Destructive

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

set_parameterSet parameterC
Idempotent

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

    A3.5/5.0

    Scored across 15 tools

    Disambiguation4/5

    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.

    Naming Consistency4/5

    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.

    Tool Count5/5

    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.

    Completeness4/5

    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

    ActivityMaintained
    ResponsivenessOutdated data

    Related MCP Connectors

    Related MCP Servers

    • A
      license
      Not graded
      quality
      D
      maintenance
      Enables 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
    • A
      license
      Not graded
      quality
      C
      maintenance
      An 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
    • A
      license
      Not graded
      quality
      C
      maintenance
      Enables language models to inspect the current Houdini scene, create and modify nodes, and run VEX/Python code in the running Houdini session via MCP.
      1
      MIT