Vfx Parsers
MCP server for VFX file formats: parse and generate Nuke .nk, MaterialX .mtlx, and USD .usda files
Ask AI about Vfx Parsers
Powered by Claude Β· Grounded in docs
I know everything about Vfx Parsers. Ask me about installation, configuration, usage, or troubleshooting.
0/500
Reviews
Documentation
mcp-vfx-parsers
MCP server for VFX file format parsing. Parse and generate Nuke .nk, MaterialX .mtlx, and USD ASCII .usda files β all via the MCP stdio protocol. Round-trip stable.
Tools
| Tool | Description |
|---|---|
parse_nuke | Parse .nk script β JSON AST (nodes, properties, DAG wiring) |
parse_mtlx | Parse .mtlx XML β JSON AST (node graphs, inputs, materials) |
parse_usda | Parse .usda text β JSON AST (prims, attributes, variants, connections) |
generate_nuke | JSON AST β .nk script (round-trip stable) |
generate_mtlx | JSON AST β .mtlx XML (round-trip stable) |
generate_usda | JSON AST β .usda text (semantic round-trip) |
All tools are read-only β they transform text, never touch the filesystem.
Install
npx -y mcp-vfx-parsers
Usage with Claude Code
Add to your Claude Code MCP settings (~/.claude/settings.json):
{
"mcpServers": {
"vfx-parsers": {
"command": "npx",
"args": ["-y", "mcp-vfx-parsers"]
}
}
}
Usage with Claude Desktop
Add to claude_desktop_config.json:
{
"mcpServers": {
"vfx-parsers": {
"command": "npx",
"args": ["-y", "mcp-vfx-parsers"]
}
}
}
Supported Formats
Nuke .nk
Foundry Nuke compositing scripts. Parses the TCL-based stack-wired node graph format:
- Node types, properties, positions
- Input wiring via
set/pushstack directives - Root settings (merges duplicate Root blocks)
- TCL expressions and UserKnob blocks (preserved as opaque text)
- Escape sequences in quoted values (
\",\\,\n,\t,\r,\0)
MaterialX .mtlx
MaterialX shading network definitions. Parses the XML-based format:
- Node graphs with typed inputs/outputs
- Material assignments
nodenameconnection references (DAG edge extraction)- Attribute preservation (quote style, order)
- Comments and XML prolog
- XML entity encoding/decoding (
&,{,)
USD ASCII .usda
Pixar Universal Scene Description (ASCII layer format). Full grammar support:
- Prim hierarchy (
def,over,class) - Typed attributes with
uniform/custommodifiers .connectconnections (UsdShade node graphs).timeSamplesanimation data- Relationships (single + array targets)
- VariantSets with nested variant bodies
- Composition arcs: references, payloads, inherits, specializes
- Layer and prim metadata
- Triple-quoted strings and asset paths (
@...@,@@@...@@@)
Round-Trip Guarantee
All parsers maintain a strict round-trip invariant:
parse(generate(parse(input))) === parse(input)
Nuke and MaterialX produce byte-identical output. USDA produces semantically identical output in canonical pretty-print form (comments stripped β documented limitation).
Safety & Robustness
- Input size limit: All tools reject inputs larger than 10 MB
- Malformed JSON: Generate tools return clear error messages instead of crashing
- No filesystem access: Pure text transforms, safe for sandboxing
- No eval/exec: No dynamic code execution
- No external dependencies: Only
@modelcontextprotocol/sdk - XXE-safe: MaterialX parser does not evaluate DOCTYPE/entity declarations
- Unicode: Full UTF-8 support across all three parsers
Development
git clone https://github.com/MABAAM/mcp-vfx-parsers.git
cd mcp-vfx-parsers
npm install
npm test
node src/server.mjs
Changelog
v0.2.0
- Server hardening:
JSON.parse()wrapped in safe handler β malformed input returns error instead of crashing the MCP server - Input size limits: All 6 tools reject inputs > 10 MB to prevent memory exhaustion
- Nuke duplicate Root: Multiple Root blocks are merged (later values win) instead of silently discarding the first
- Nuke escape sequences:
unquote()now handles\n,\t,\r,\0in addition to\"and\\ - USDA data preservation: Non-path values in
.connectarrays and relationship targets are preserved as<INVALID:kind:value>instead of silently dropped
v0.1.0
- Initial release: 3 parsers (Nuke, MaterialX, USDA), 6 MCP tools, 13 tests
License
MIT
