Skip to main content
Glama
MABAAM

VFX Parsers MCP Server

by MABAAM

mcp-vfx-parsers

MCP-сервер для парсинга форматов файлов VFX. Выполняйте парсинг и генерацию файлов Nuke .nk, MaterialX .mtlx и USD ASCII .usda — всё через протокол MCP stdio. Стабильность при обратном преобразовании.

Инструменты

Инструмент

Описание

parse_nuke

Парсинг скрипта .nk → JSON AST (узлы, свойства, связи DAG)

parse_mtlx

Парсинг XML .mtlx → JSON AST (графы узлов, входы, материалы)

parse_usda

Парсинг текста .usda → JSON AST (примитивы, атрибуты, варианты, соединения)

generate_nuke

JSON AST → скрипт .nk (стабильно при обратном преобразовании)

generate_mtlx

JSON AST → XML .mtlx (стабильно при обратном преобразовании)

generate_usda

JSON AST → текст .usda (семантически стабильно при обратном преобразовании)

Все инструменты работают только для чтения — они преобразуют текст и никогда не обращаются к файловой системе.

Related MCP server: YAML to JSON Converter MCP Server

Установка

npx -y mcp-vfx-parsers

Использование с Claude Code

Добавьте в настройки MCP Claude Code (~/.claude/settings.json):

{
  "mcpServers": {
    "vfx-parsers": {
      "command": "npx",
      "args": ["-y", "mcp-vfx-parsers"]
    }
  }
}

Использование с Claude Desktop

Добавьте в claude_desktop_config.json:

{
  "mcpServers": {
    "vfx-parsers": {
      "command": "npx",
      "args": ["-y", "mcp-vfx-parsers"]
    }
  }
}

Поддерживаемые форматы

Nuke .nk

Композитинговые скрипты Foundry Nuke. Парсинг формата графа узлов на основе TCL:

  • Типы узлов, свойства, позиции

  • Соединения входов через директивы стека set/push

  • Корневые настройки (объединение дублирующихся блоков Root)

  • TCL-выражения и блоки UserKnob (сохраняются как непрозрачный текст)

  • Escape-последовательности в значениях в кавычках (\", \\, \n, \t, \r, \0)

MaterialX .mtlx

Определения сетей шейдинга MaterialX. Парсинг формата на основе XML:

  • Графы узлов с типизированными входами/выходами

  • Назначения материалов

  • Ссылки на соединения nodename (извлечение ребер DAG)

  • Сохранение атрибутов (стиль кавычек, порядок)

  • Комментарии и XML-пролог

  • Кодирование/декодирование XML-сущностей (&, {, )

USD ASCII .usda

Pixar Universal Scene Description (формат слоев ASCII). Полная поддержка грамматики:

  • Иерархия примитивов (def, over, class)

  • Типизированные атрибуты с модификаторами uniform/custom

  • Соединения .connect (графы узлов UsdShade)

  • Данные анимации .timeSamples

  • Отношения (одиночные цели + массивы)

  • VariantSets с вложенными телами вариантов

  • Композиционные дуги: ссылки (references), payloads, inherits, specializes

  • Метаданные слоев и примитивов

  • Строки в тройных кавычках и пути к ассетам (@...@, @@@...@@@)

Гарантия обратного преобразования

Все парсеры поддерживают строгий инвариант обратного преобразования:

parse(generate(parse(input))) === parse(input)

Nuke и MaterialX создают побайтово идентичный вывод. USDA создает семантически идентичный вывод в канонической форме (комментарии удаляются — задокументированное ограничение).

Безопасность и надежность

  • Ограничение размера входных данных: Все инструменты отклоняют ввод размером более 10 МБ

  • Некорректный JSON: Инструменты генерации возвращают понятные сообщения об ошибках вместо аварийного завершения

  • Отсутствие доступа к файловой системе: Чистые текстовые преобразования, безопасны для песочницы

  • Без eval/exec: Нет выполнения динамического кода

  • Без внешних зависимостей: Только @modelcontextprotocol/sdk

  • Безопасность XXE: Парсер MaterialX не выполняет оценку объявлений DOCTYPE/сущностей

  • Unicode: Полная поддержка UTF-8 во всех трех парсерах

Разработка

git clone https://github.com/MABAAM/mcp-vfx-parsers.git
cd mcp-vfx-parsers
npm install
npm test
node src/server.mjs

Журнал изменений

v0.2.0

  • Усиление сервера: JSON.parse() обернут в безопасный обработчик — некорректный ввод возвращает ошибку вместо аварийного завершения MCP-сервера

  • Ограничения размера ввода: Все 6 инструментов отклоняют ввод > 10 МБ для предотвращения исчерпания памяти

  • Дубликаты Root в Nuke: Несколько блоков Root объединяются (побеждают последние значения) вместо молчаливого отбрасывания первого

  • Escape-последовательности Nuke: unquote() теперь обрабатывает \n, \t, \r, \0 в дополнение к \" и \\

  • Сохранение данных USDA: Значения, не являющиеся путями, в массивах .connect и целях отношений сохраняются как <INVALID:kind:value> вместо молчаливого удаления

v0.1.0

  • Первый выпуск: 3 парсера (Nuke, MaterialX, USDA), 6 инструментов MCP, 13 тестов

Лицензия

MIT

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    D
    maintenance
    Enables AI assistants to read, inspect, and manipulate OpenUSD 3D scenes, including scene graph traversal, property querying, mesh export, and variant switching.
    10
    MIT
  • F
    license
    Not graded
    quality
    D
    maintenance
    Provides deterministic conversion between YAML and JSON formats, enabling autonomous agents to flawlessly translate complex configurations without LLM formatting errors.
    6 npm
    3
    -
  • A
    license
    B
    quality
    D
    maintenance
    A production-grade MCP server for Foundry Nuke that enables AI assistants to understand and manipulate compositing environments, including AOVs, deep workflows, distortion, tracking, OCIO/ACEScct, and CopyCat ML.
    45
    MIT