MaxForge MCP
Enables AI agents to control a live 3ds Max session directly, including creating and editing objects, materials, animation, and scene inspection, with undo support.
README
MaxForge MCP
Lets an AI agent (Claude, or anything else that speaks MCP) drive a live 3ds Max session — not by generating scripts for a human to paste in, but by actually creating, editing, and animating objects in real time while Max is open.
Normally, getting an AI to help in 3ds Max means it writes a script and you run it yourself, blind to whether it actually worked. This closes that loop: the agent can query the real scene state before and after every action, catch its own mistakes, and iterate live instead of guessing.
What it can do
| Inspect the scene | list objects, read the current selection, query units / frame rate / frame range |
| Create & transform | primitives, position / rotation / scale |
| Materials & textures | create a material, load a bitmap texture, assign it to objects |
| Animation | keyframe position/rotation/scale across frames with real spline interpolation |
| Collision proxies | generate a basic bounding-box proxy for an object |
| Export & save | export selected objects or the whole scene, save the .max file |
| Escape hatch | run arbitrary raw MaxScript or Python for anything not covered above |
Every mutation is wrapped in a real undo block — anything the agent does is a normal Ctrl+Z away from being undone.
How it works
AI agent (MCP client) --stdio--> server/max_mcp_server.py --TCP, localhost only--> max_side/bridge.py (inside 3ds Max)
A small Python bridge runs inside 3ds Max, loaded via a startup script, and opens a socket bound to 127.0.0.1 only. An MCP server outside Max connects to it and exposes the tools above. Every command runs on Max's main thread via a Qt timer — the 3ds Max SDK isn't thread-safe, so commands arriving on a socket thread are queued and drained on the main loop rather than executed directly.
max_side/
bridge.py socket + main-thread queue (the only place pymxs is touched)
commands.py one function per tool, each wrapped in an undo block
serialize.py converts pymxs values (Point3, Matrix3, nodes, ...) to JSON
startup_stub.ms drop into Max's startup scripts folder
server/
client.py TCP client, newline-delimited JSON
tools.py MCP tool definitions
max_mcp_server.py the MCP server itself (stdio transport)
Setup
Requirements: 3ds Max 2022+ (pymxs), Python 3.10+ on the machine running the MCP server, uv.
1. Install dependencies
uv sync
2. Load the bridge into 3ds Max
Copy max_side/startup_stub.ms into Max's startup scripts folder — typically:
%LOCALAPPDATA%\Autodesk\3dsMax\<version>\ENU\scripts\startup\
Open the copied startup_stub.ms and set MAXFORGE_REPO_PATH to wherever you cloned this repo. It starts the bridge on port 47823 automatically the next time Max launches. Three macroscripts (category "MaxForge MCP") are also registered for manual control — Start / Stop / Reload — so you can pick up code changes without restarting Max.
3. Point an MCP client at it
For Claude Code:
claude mcp add maxforge -- <repo>\.venv\Scripts\python.exe <repo>\server\max_mcp_server.py
Or wire server/max_mcp_server.py into any other MCP-compatible client's config the same way.
Safety
The socket only ever binds to 127.0.0.1 — never the network. This is a code-execution endpoint sitting inside a modeling app; it's designed to only be reachable from the same machine it runs on.
Status
Live-tested against a running Max 2025 session with a full assertion-based suite (29/29 checks) covering every tool, every error path, and an undo/redo round trip.
create_collision_proxy currently only builds a generic axis-aligned box — it isn't tuned to any specific game engine's collision format yet.
Adding a new tool
- Add a handler in
max_side/commands.py, wrapped inundoable("MCP: ..."), registered in theCOMMANDSdict. - Add a matching wrapper in
server/tools.py— its docstring is what the agent sees. - Register it in the loop at the top of
server/max_mcp_server.py. - Run the "Reload MaxForge Bridge" macroscript in Max instead of restarting.
License
Copyright (c) 2026 .bluntman420. — see LICENSE.md. Free to use as-is; modification and redistribution of modified versions is not permitted.
Recommended Servers
playwright-mcp
A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.
Magic Component Platform (MCP)
An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.
Audiense Insights MCP Server
Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.
VeyraX MCP
Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.
graphlit-mcp-server
The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.
Kagi MCP Server
An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.
E2B
Using MCP to run code via e2b.
Neon Database
MCP server for interacting with Neon Management API and databases
Exa Search
A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.
Qdrant Server
This repository is an example of how to create a MCP server for Qdrant, a vector search engine.