Skip to main content
Glama
3dprevis

HoudiniMCP Server

by 3dprevis

HoudiniMCP – Connect Houdini to Claude via Model Context Protocol

HoudiniMCP allows you to control SideFX Houdini from Claude using the Model Context Protocol (MCP). It consists of:

  1. A Houdini plugin (Python package) that listens on a local port (default localhost:9876) and handles commands (creating and modifying nodes, executing code, etc.).

  2. An MCP bridge script you run via uv (or system Python) that communicates via stdin/stdout with Claude and TCP with Houdini.

Below are the complete instructions for setting up Houdini, uv, and Claude Desktop.


Table of Contents

  1. Requirements

  2. Houdini MCP Plugin Installation

    1. Folder Layout

    2. Shelf Tool (Optional)

    3. Packages Integration (Optional)

  3. Installing the mcp Python Package

    1. Using uv on Windows

    2. Using pip Directly

  4. Bridging Script and Claude for Desktop

    1. The Bridging Script

    2. Telling Claude Desktop to Use Your Script

  5. Testing & Usage

  6. Troubleshooting


Related MCP server: HoudiniMCP

Requirements

  • SideFX Houdini

  • uv

  • Claude Desktop (latest version)


1. Houdini MCP Plugin Installation

1.1 Folder Layout

Create a folder in your Houdini scripts directory: C:/Users/YourUserName/Documents/houdini19.5/scripts/python/houdinimcp/

Inside houdinimcp/, place:

  • __init__.py – handles plugin initialization (start/stop server)

  • server.py – defines the HoudiniMCPServer (listening on port 9876)

  • houdini_mcp_server.py – optional bridging script (some prefer a separate location)

  • pyproject.toml

(If you prefer, houdini_mcp_server.py can live elsewhere. As long as you know its path for running with uv.)

1.2 Shelf Tool

create a Shelf Tool to toggle the server in Houdini:

  1. Right-click a shelf → "New Shelf..."

Name it "MCP" or something similar

  1. Right-click again → "New Tool..." Name: "Toggle MCP Server" Label: "MCP"

  2. Under Script, insert something like:

   import hou
   import houdinimcp

   if hasattr(hou.session, "houdinimcp_server") and hou.session.houdinimcp_server:
       houdinimcp.stop_server()
       hou.ui.displayMessage("Houdini MCP Server stopped")
   else:
       houdinimcp.start_server()
       hou.ui.displayMessage("Houdini MCP Server started on localhost:9876")

1.3 Packages Integration

If you want Houdini to auto-load your plugin at startup, create a package file named houdinimcp.json in the Houdini packages folder (e.g. C:/Users/YourUserName/Documents/houdini19.5/packages/):

{
  "path": "$HOME/houdini19.5/scripts/python/houdinimcp",
  "load_package_once": true,
  "version": "0.1",
  "env": [
    {
      "PYTHONPATH": "$PYTHONPATH;$HOME/houdini19.5/scripts/python"
    }
  ]
}

2 Using uv on Windows

  # 1) Install uv 
  powershell -c "irm https://astral.sh/uv/install.ps1 | iex"

  # 2) add uv to your PATH (depends on the user instructions) from cmd
  set Path=C:\Users\<YourUserName>\.local\bin;%Path%

  # 3) In a uv project or the plugin directory
  cd C:/Users/<YourUserName>/Documents/houdini19.5/scripts/python/houdinimcp/
  uv add "mcp[cli]"

  # 4) Verify
  uv run python -c "import mcp.server.fastmcp; print('MCP is installed!')"

3 Telling Claude for Desktop to Use Your Script

Go to File > Settings > Developer > Edit Config > Open or create: claude_desktop_config.json

Add an entry:

{
  "mcpServers": {
    "houdini": {
      "command": "uv",
      "args": [
        "run",
        "python",
        "C:/Users/<YourUserName>/Documents/houdini19.5/scripts/python/houdinimcp/houdini_mcp_server.py"
      ]
    }
  }
}

if uv run was successful and claude failed to load mcp, make sure claude is using the same python version, use:

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

to find python, and replace "python" with the path you got.

4 Acknowledgement

Houdini-MCP was built following blender-mcp. We thank them for the contribution.

Available Tools

3 tools
create_nodeC

Create a new node in Houdini (example).

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNo
node_typeYes
parent_pathNo/obj

TDQS

C2.4/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description must convey behavioral traits. It only states 'Create a new node' without disclosing side effects, permissions, or error conditions. The '(example)' further undermines clarity.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence, which is concise, but the parenthetical '(example)' adds noise without value. It could be more efficient by omitting that phrase.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness1/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With 3 parameters, no output schema, and no annotations, the description is severely incomplete. It does not explain what node types are available, how parent path works, or what the return value is. The tool's complexity is not addressed.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate. It does not mention any parameters (name, node_type, parent_path), their purpose, or constraints. The description adds no value beyond the schema's structural definition.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states 'Create a new node in Houdini', which clearly identifies the verb (create) and resource (node in Houdini). It is distinguishable from siblings (get_scene_info, execute_houdini_code), but the '(example)' suffix adds ambiguity and reduces specificity.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool versus alternatives, no prerequisites, and no exclusions. The description provides no context for appropriate usage.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

execute_houdini_codeC

Execute arbitrary Python code in Houdini's environment.

ParametersJSON Schema
NameRequiredDescriptionDefault
codeYes

TDQS

C2.8/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries full burden. It merely says 'execute arbitrary Python code' without disclosing side effects, security implications, return behavior, or error handling. This is insufficient for a potentially powerful tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is very concise with a single sentence, which is efficient. However, it could be more informative without sacrificing brevity. The lacking structure is due to under-specification rather than tautology.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool has only one parameter and no output schema, the description should at least mention what the tool returns or does with the code. It does not cover these basics, making it incomplete for an agent to use correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, and the description adds no meaning beyond the parameter name 'code'. It does not explain what the code should do, any expected format, or constraints. The agent receives no additional insight.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states it executes arbitrary Python code in Houdini's environment, using a specific verb ('execute') and resource ('Python code in Houdini'). It distinguishes from sibling tools (get_scene_info, create_node) which have different purposes.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives, no prerequisites, no when-to-use or when-not-to-use information. The agent is left to infer usage from context alone.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_scene_infoA

Ask Houdini for scene info. Returns JSON as a string.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided. The description discloses that the tool returns JSON as a string, implying a read-only operation, but does not elaborate on what scene info is retrieved or any potential side effects.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Extremely concise with two sentences. First sentence states purpose, second adds return format. No unnecessary words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's simplicity (zero parameters, no output schema), the description is mostly complete. However, 'scene info' is vague and could benefit from a brief example of what is returned.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

No parameters exist, so schema coverage is 100%. The description does not need to add param details. Baseline score of 4 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The tool name and description clearly state it retrieves scene info from Houdini. It distinguishes well from sibling tools like create_node and execute_houdini_code, which perform different actions.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool vs alternatives. The description does not mention any prerequisites or typical use cases.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.

  1. 3 tool updatesv0.1.0
    • First observedcreate_node
    • First observedexecute_houdini_code
    • First observedget_scene_info

TDQS

B3.1/5.0
Disambiguation5/5

Each tool has a distinct purpose: getting scene info, creating a node, and executing arbitrary code. No overlap in functionality, so an agent can easily differentiate them.

Naming Consistency5/5

All tools follow a consistent verb_noun pattern: get_scene_info, create_node, execute_houdini_code. No mixing of conventions or vague verbs.

Tool Count3/5

With only 3 tools, the server feels thin for a comprehensive Houdini integration. However, the generic execute_houdini_code tool expands the scope, making the count borderline acceptable.

Completeness2/5

The tool surface is severely incomplete for typical Houdini workflows (e.g., no delete, modify, or connect node tools). The execute_houdini_code tool provides a workaround but undermines the purpose of dedicated tools.

Maintenance

ActivityInactive
ResponsivenessSyncing

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

  • F
    license
    Not graded
    quality
    D
    maintenance
    Connects Houdini to Claude AI through Model Context Protocol, enabling AI-assisted 3D modeling, scene creation, simulation setup, and rendering through natural language commands.
    60
    -
  • A
    license
    Not graded
    quality
    D
    maintenance
    Connects Claude AI to Houdini via the Model Context Protocol, enabling prompt-assisted 3D modeling, scene manipulation, and rendering within Houdini.
    11
    GPL 3.0
  • A
    license
    Not graded
    quality
    D
    maintenance
    Connects Claude AI to Houdini through the Model Context Protocol, enabling direct interaction and control for 3D modeling, scene creation, simulation, and rendering.
    20
    MIT
  • F
    license
    Not graded
    quality
    B
    maintenance
    Enables AI assistants to control Houdini by executing Python code, querying scene information, and creating nodes via the Model Context Protocol.
    2
    -

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/3dprevis/h_c_mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server