3D-MCP
3D МКП
Обзор
3D-MCP — это универсальная реализация Model Context Protocol для 3D-программного обеспечения. Она создает унифицированный интерфейс TypeScript для LLM, позволяющий им взаимодействовать с Blender, Maya, Unreal Engine и другими 3D-приложениями через единый согласованный API.
// LLMs use the same interface regardless of underlying 3D software
await tools.animation.createKeyframe({
objectId: "cube_1",
property: "rotation.x",
time: 30,
value: Math.PI/2
});Related MCP server: lightfast-mcp
Основная философия и проектные решения
3D-MCP построен на четырех взаимосвязанных архитектурных принципах, которые вместе создают единую систему для создания 3D-контента:
Проектирование Entity-First : четко определенные сущности предметной области формируют основу всех операций, обеспечивая единообразное моделирование данных на разных платформах.
Типобезопасные CRUD-операции : автоматическая генерация операций создания, чтения, обновления, удаления с полной проверкой типов.
Уровень атомарных операций : минимальный набор платформенно-специфичных реализаций, которые обрабатывают основные операции.
Компонуемая архитектура инструментов : сложная функциональность, созданная путем объединения атомарных операций платформенно-независимым способом.
Такая архитектура создает инверсию зависимостей, при которой детали реализации, специфичные для платформы, изолируются до атомарных операций, в то время как большая часть кодовой базы остается независимой от платформы.
┌─────────────────────────────────────────────────────────────────────────┐
│ LLM / User API │
└───────────────────────────────────┬─────────────────────────────────────┘
│ MCP Tool API
▼
┌─────────────────────────────────────────────────────────────────────────┐
│ Compound Operations │
│ │
│ ┌─────────────────┐ ┌─────────────────┐ ┌─────────────────────────┐ │
│ │ Modeling Tools │ │ Animation Tools │ │ Rigging Tools │ │
│ └─────────────────┘ └─────────────────┘ └─────────────────────────┘ │
└───────────────────────────────────┬─────────────────────────────────────┘
│ Implemented by
▼
┌─────────────────────────────────────────────────────────────────────────┐
│ Atomic Operations │
│ │
│ ┌─────────── Entity CRUD ────────────┐ ┌────────── Non-CRUD ─────────┐ │
│ │ create{Entity}s update{Entity}s ...│ │ select, undo, redo, etc. │ │
│ └────────────────────────────────────┘ └─────────────────────────────┘ │
└───────────────────────────────────┬─────────────────────────────────────┘
│ Plug-in Server Request
▼
┌─────────────────────────────────────────────────────────────────────────┐
│ Platform-Specific Adapters │
│ │
│ ┌──── Blender ────┐ ┌────── Maya ─────┐ ┌─── Unreal Engine ────┐ │
│ │ createKeyframes │ │ createKeyframes │ │ createKeyframes │ │
│ └─────────────────┘ └─────────────────┘ └──────────────────────┘ │
└─────────────────────────────────────────────────────────────────────────┘Почему именно эти дизайнерские решения?
Проект Entity-First был выбран по следующим причинам:
3D-приложения используют разные объектные модели, но общие основные концепции (сетки, материалы, анимация)
Схемы Zod предоставляют единый источник истины для проверки, типизации и документирования.
Строгая типизация выявляет ошибки во время компиляции, а не во время выполнения
Богатые метаданные позволяют ИИ лучше понимать объекты домена
Операции CRUD как основа, потому что:
Они четко соответствуют тому, что 3D-приложениям необходимо делать с сущностями.
Стандартизированные шаблоны снижают когнитивные издержки
Автоматическая генерация устраняет повторяющийся код с помощью
createCrudOperationsКаждая сущность автоматически получает одинаковый согласованный интерфейс.
Разделение атомарного и составного инструмента по следующим причинам:
Только атомарные инструменты требуют реализации на конкретной платформе (~20% кодовой базы)
Составные инструменты работают на всех платформах без изменений (~80% кодовой базы)
Новым платформам необходимо реализовать только атомарные операции, чтобы получить всю функциональность
Поддерживаемая архитектура с четким разделением задач
Техническая Архитектура
1. Архитектура CRUD, ориентированная на сущности
Основой системы является богатая система типов доменных сущностей, которая генерирует операции CRUD:
// Define entities with rich metadata using Zod
export const Mesh = NodeBase.extend({
vertices: z.array(Tensor.VEC3).describe("Array of vertex positions [x, y, z]"),
normals: z.array(Tensor.VEC3).optional().describe("Array of normal vectors"),
// ... other properties
});
// CRUD operations generated automatically from entity schemas
const entityCruds = createCrudOperations(ModelEntities);
// => Creates createMeshs, getMeshs, updateMeshs, deleteMeshs, listMeshs
// All operations preserve complete type information
await tool.createRigControls.execute({
name: "arm_ctrl",
shape: "cube", // TypeScript error if not a valid enum value
targetJointIds: ["joint1"], // Must be string array
color: [0.2, 0.4, 1], // Must match Color schema format
// IDE autocomplete shows all required/optional fields
});Схемы сущностей обеспечивают:
Проверка схемы : проверка параметров во время выполнения с подробными сообщениями об ошибках
Информация о типе : Полные типы TypeScript для помощи IDE
Документация : Самодокументируемый API с описаниями
Генерация кода : шаблоны для платформенно-специфических реализаций
Схема архитектуры сущности
┌──────────────────────────────────────────────────────────────┐
│ Core Entity Definitions │
│ │
│ ┌─────────────┐ ┌─────────────┐ ┌─────────────────────┐ │
│ │ BaseEntity │ │ NodeBase │ │ Other Core Entities │ │
│ └─────────────┘ └─────────────┘ └─────────────────────┘ │
└──────────────────────────────────────────────────────────────┘
▲
│ extends
│
┌──────────────────────────────────────────────────────────────┐
│ Domain-Specific Entities │
│ │
│ ┌─────────────┐ ┌─────────────┐ ┌─────────────────────┐ │
│ │ Model │ │ Animation │ │ Rigging │ │
│ │ Entities │ │ Entities │ │ Entities │ │
│ └─────────────┘ └─────────────┘ └─────────────────────┘ │
└──────────────────────────────────────────────────────────────┘
│
│ input to
▼
┌──────────────────────────────────────────────────────────────┐
│ Automatic CRUD Generation │
│ │
│ ┌─────────────────────────────────────────────────────────┐ │
│ │ createCrudOperations(Entities) │ │
│ └─────────────────────────────────────────────────────────┘ │
└──────────────────────────────────────────────────────────────┘
│
│ generates
▼
┌──────────────────────────────────────────────────────────────┐
│ Atomic Operations │
│ │
│ ┌─────────────────┐ ┌──────────────┐ ┌─────────────────┐ │
│ │ create{Entity}s │ │ get{Entity}s │ │ update{Entity}s │ .. │
│ └─────────────────┘ └──────────────┘ └─────────────────┘ │
└──────────────────────────────────────────────────────────────┘
│
│ foundation for
▼
┌──────────────────────────────────────────────────────────────┐
│ Compound Operations │
│ │
│ ┌─────────────────────────────────────────────────────────┐ │
│ │ No need for platform-specific code. Use atomic ops only.│ │
│ └─────────────────────────────────────────────────────────┘ │
└──────────────────────────────────────────────────────────────┘2. Архитектура составного инструмента
Система создает четкое разделение между атомарными и составными операциями:
// From compounded.ts - Higher level operations composed from atomic operations
createIKFKSwitch: defineCompoundTool({
// ...parameter and return definitions...
execute: async (params) => {
// Create IK chain using atomic operations
const ikChainResult = await tool.createIKChains.execute({/*...*/});
// Create control with full type-checking
const ikControlResult = await tool.createRigControls.execute({
name: `${switchName}_IK_CTRL`,
shape: ikControlShape, // Type-checked against schema
targetJointIds: [jointIds[jointIds.length - 1]],
color: ikColor,
// ...other parameters
});
// Position the control at the end effector
await tool.batchTransform.execute({/*...*/});
// Create constraints to connect the system
await tool.createConstraint.execute({/*...*/});
// Return standardized response with created IDs
return {
success: true,
switchControlId: switchControlResult.id,
ikControlId: ikControlResult.id,
fkControlIds,
poleVectorId: poleVectorId || undefined,
};
}
})Такая архитектура обеспечивает ряд технических преимуществ:
Атомарные операции (~20% системы):
Напрямую взаимодействуйте с API платформы
Нужны реализации для конкретных платформ
Сосредоточьтесь на операциях с отдельными сущностями (создание, чтение, обновление, удаление)
Форма минимальной реализации, необходимой для новых платформ
Сложные операции (~80% системы):
Построен полностью из атомных операций
Никакого платформенно-специфического кода
Реализовать концепции доменов более высокого уровня
Работает на любой платформе без модификации
Поток композиции инструмента
┌─────────────────────────────────────────────────────────────────────────┐
│ High-Level Tool Definition │
└──────────────────────────────────────┬──────────────────────────────────┘
│
▼
┌─────────────────────────────────────────────────────────────────────────┐
│ Compound Tool Pattern │
│ │
│ ┌──────────────────────────────────────────────────────────────────┐ │
│ │ defineCompoundTool({ │ │
│ │ description: string, │ │
│ │ parameters: zod.Schema, │ │
│ │ returns: zod.Schema, │ │
│ │ execute: async (params) => { │ │
│ │ // Composed entirely from atomic operations │ │
│ │ await tool.atomicOperation1.execute({...}); │ │
│ │ await tool.atomicOperation2.execute({...}); │ │
│ │ return { success: true, ...results }; │ │
│ │ } │ │
│ │ }) │ │
│ └──────────────────────────────────────────────────────────────────┘ │
└───────────────────────────────────┬─────────────────────────────────────┘
│ Plug-in Server Request
▼
┌─────────────────────────────────────────────────────────────────────────┐
│ Platform Adaptation │
│ │
│ ┌──────────────────────────┐ ┌─────────────────────────────────────┐ │
│ │ Blender Implementation │ │ Maya Implementation │ │
│ │ of Atomic Operations │ │ of Atomic Operations │ │
│ └──────────────────────────┘ └─────────────────────────────────────┘ │
└─────────────────────────────────────────────────────────────────────────┘Ключевые файлы для архитектуры составного инструмента:
composited.ts: Инструменты моделирования составных частей
composited.ts: Инструменты для создания составной анимации
composited.ts: Инструменты для комбинированного такелажа
3. Конвейер генерации кода
Система автоматически генерирует реализации для конкретных платформ из определений TypeScript:
┌─────────────────┐ ┌────────────────────┐ ┌─────────────────────────┐
│ Entity Schemas │ │ Schema │ │ Platform-Specific Code │
│ & Tools (TS) │ ──> │ Extraction (TS) │ ──> │ (Python/C++/etc.) │
└─────────────────┘ └────────────────────┘ └─────────────────────────┘
│ │ │
│ │ │
▼ ▼ ▼
┌─────────────────┐ ┌────────────────────┐ ┌─────────────────────────┐
│ Type │ │ Parameter │ │ Implementation │
│ Definitions │ │ Validation │ │ Templates │
└─────────────────┘ └────────────────────┘ └─────────────────────────┘Ключевые аспекты системы генерации:
Извлечение сущностей : анализирует схемы Zod для понимания структуры сущностей.
Сопоставление параметров : преобразует типы TypeScript в собственные типы платформы.
Генерация проверки : создает проверку параметров на целевых языках.
Шаблоны реализации : предоставляют шаблоны кода, специфичные для платформы.
Система кодогенерации реализована в:
plugin-codegen.ts : Основной скрипт генерации кода
extract-schemas.ts : извлекает схемы Zod из файлов TypeScript во временные файлы JSON.
4. Организация домена
Система организована по доменам, которые отражают рабочие процессы создания 3D-контента:
Ядро : базовые сущности и операции, используемые во всех доменах.
Моделирование : создание сетки, редактирование и топологические операции
Анимация : ключевые кадры, кривые, клипы и управление анимацией
Оснастка : скелетные системы, элементы управления и деформации
Рендеринг : материалы, освещение и настройки рендеринга
Каждый домен следует одной и той же организационной схеме:
entity.ts: Определения сущностей, специфичные для доменаatomic.ts: Атомарные операции для доменных сущностейcompounded.ts: высокоуровневые операции, созданные на основе атомарных инструментов
Диаграмма структуры домена
packages/src/tool/
│
├── core/ # Core shared components
│ ├── entity.ts # Base entities all domains use
│ ├── utils.ts # Shared utilities including CRUD generation
│ └── ...
│
├── model/ # Modeling domain
│ ├── entity.ts # Mesh, Vertex, Face, etc.
│ ├── atomic.ts # Atomic modeling operations
│ ├── compounded.ts # Higher-level modeling tools
│ └── ...
│
├── animation/ # Animation domain
│ ├── entity.ts # Keyframe, AnimCurve, Clip, etc.
│ ├── atomic.ts # Atomic animation operations
│ ├── compounded.ts # Higher-level animation tools
│ └── ...
│
├── rig/ # Rigging domain
│ ├── entity.ts # Joint, IKChain, Control, etc.
│ ├── atomic.ts # Atomic rigging operations
│ ├── compounded.ts # Higher-level rigging tools
│ └── ...
│
└── rendering/ # Rendering domain
├── entity.ts # Camera, Light, RenderSettings, etc.
├── atomic.ts # Atomic rendering operations
├── compounded.ts # Higher-level rendering tools
└── ...5. Архитектура CRUD, ориентированная на сущности
Система реализует сложный подход, ориентированный на сущности, где:
Сущности как модели доменов : каждый домен (моделирование, анимация, оснастка) определяет свои основные сущности, которые представляют его фундаментальные концепции. Они реализованы как схемы Zod с богатой информацией о типах.
CRUD как основа : каждая сущность автоматически получает полный набор операций CRUD (создание, чтение, обновление, удаление) через утилиту
createCrudOperations:
// Each domain starts with CRUD operations for all its entities
const entityCruds = createCrudOperations(ModelEntities);
const modelAtomicTools = {
...entityCruds, // Foundation of all atomic tools
// Domain-specific operations build on this foundation
}Повторное использование и наследование сущностей : основные сущности, определенные в
core/entity.tsрасширяются сущностями, специфичными для домена, что способствует повторному использованию кода и единообразному проектированию во всех доменах.Архитектура, вдохновленная DDD : система следует принципам проектирования на основе предметной области, организуя код вокруг сущностей и агрегатов предметной области, а не технических проблем.
Такая архитектура обеспечивает несколько ключевых преимуществ:
Согласованность : все сущности имеют одинаковые шаблоны для основных операций.
Сокращенный шаблон : операции CRUD генерируются автоматически
Четкая организация : инструменты организованы вокруг доменных сущностей.
Разделение задач : каждый домен управляет своими собственными сущностями, используя при этом общие шаблоны.
Сочетание расширенных моделей сущностей с автоматическими операциями CRUD создает надежную основу, которая упрощает разработку, сохраняя при этом гибкость для операций, специфичных для предметной области.
Начиная
# Install dependencies
bun install
# Run the server
bun run index.ts
# Extract schemas and generate plugins
bun run packages/scripts/plugin-codegen.tsРабочий процесс разработки
Определение сущностей : создание или расширение схем сущностей в
src/tool/<domain>/entity.tsГенерация CRUD : использование
createCrudOperationsдля генерации атомарных операций.Создание составных инструментов : создание высокоуровневых операций из атомарных инструментов.
Генерация плагинов : запуск генератора кода для создания реализаций для конкретных платформ.
Внося вклад
Архитектурные решения 3D-MCP делают его уникально расширяемым:
Добавить новые сущности : определить новые сущности и автоматически получить операции CRUD
Добавить новые составные инструменты : объединить существующие атомарные операции для создания новых функций.
Добавить новые платформы : реализовать интерфейсы атомарных инструментов в новом плагине.
Более подробную информацию о том, как внести свой вклад, можно найти в нашем руководстве по внесению вклада.
3D-MCP: единый API для управления всем 3D-программным обеспечением
Available Tools
125 toolsassignMaterialsC
Assign materials to meshes or specific faces
Inputs: items (required).
batchGetPropertyC
Get property values from multiple objects
Inputs: items (required), recursive.
batchSetParentC
Set parent for multiple objects
Inputs: items (required), maintainWorldTransform.
batchSetPropertyC
Set properties on multiple objects
Inputs: items (required).
batchTransformC
Apply transformations to multiple objects
Inputs: items (required).
bevelC
Bevel edges or vertices
Inputs: items (required).
bridgeC
Create bridges between face loops
Inputs: items (required).
clearSelectionC
Clear current selection
Inputs: domain.
combineMeshesC
Combine multiple meshes into a single mesh
Inputs: meshIds (required), name, preserveSubMeshes, worldSpace.
createBlendShapesC
Create multiple BlendShapes
Inputs: items (required).
createChannelsC
Create multiple Channels
Inputs: items (required).
createClipsC
Create multiple Clips
Inputs: items (required).
createConstraintsC
Create multiple Constraints
Inputs: items (required).
createCurvesC
Create multiple Curves
Inputs: items (required).
createDriversC
Create multiple Drivers
Inputs: items (required).
createEdgesC
Create multiple Edges
Inputs: items (required).
createFacesC
Create multiple Faces
Inputs: items (required).
createGroupsC
Create multiple Groups
Inputs: items (required).
createIKChainsC
Create multiple IKChains
Inputs: items (required).
createJointsD
Create multiple Joints
Inputs: items (required).
createKeyframesC
Create multiple Keyframes
Inputs: items (required).
createLayersC
Create multiple Layers
Inputs: items (required).
createMaterialsC
Create multiple Materials
Inputs: items (required).
createMeshsC
Create multiple Meshs
Inputs: items (required).
createSubdivisionSurfacesC
Create multiple SubdivisionSurfaces
Inputs: items (required).
createUVMapsC
Create multiple UVMaps
Inputs: items (required).
createVertexsC
Create multiple Vertexs
Inputs: items (required).
deleteBlendShapesC
Delete multiple BlendShapes
Inputs: ids (required).
deleteChannelsC
Delete multiple Channels
Inputs: ids (required).
deleteClipsC
Delete multiple Clips
Inputs: ids (required).
deleteConstraintsC
Delete multiple Constraints
Inputs: ids (required).
deleteCurvesC
Delete multiple Curves
Inputs: ids (required).
deleteDriversC
Delete multiple Drivers
Inputs: ids (required).
deleteEdgesC
Delete multiple Edges
Inputs: ids (required).
deleteFacesC
Delete multiple Faces
Inputs: ids (required).
deleteGroupsC
Delete multiple Groups
Inputs: ids (required).
deleteIKChainsC
Delete multiple IKChains
Inputs: ids (required).
deleteJointsC
Delete multiple Joints
Inputs: ids (required).
deleteKeyframesC
Delete multiple Keyframes
Inputs: ids (required).
deleteLayersC
Delete multiple Layers
Inputs: ids (required).
deleteMaterialsC
Delete multiple Materials
Inputs: ids (required).
deleteMeshsC
Delete multiple Meshs
Inputs: ids (required).
deleteSubdivisionSurfacesC
Delete multiple SubdivisionSurfaces
Inputs: ids (required).
deleteUVMapsC
Delete multiple UVMaps
Inputs: ids (required).
deleteVertexsC
Delete multiple Vertexs
Inputs: ids (required).
duplicateC
Duplicate an entity
Inputs: id (required), duplicateChildren, duplicateDependencies, newName.
editCurveControlPointsC
Edit control points of curves
Inputs: items (required).
exportGeometryC
Export geometry collections to external formats
Inputs: items (required).
extrudeFacesD
Extrude faces
Inputs: items (required).
getBlendShapesB
Get multiple BlendShapes by IDs
Inputs: ids (required).
getChannelsB
Get multiple Channels by IDs
Inputs: ids (required).
getChildrenC
Get all children of an object
Inputs: id (required), recursive, typeFilter.
getClipsC
Get multiple Clips by IDs
Inputs: ids (required).
getConstraintsC
Get multiple Constraints by IDs
Inputs: ids (required).
getCurvesC
Get multiple Curves by IDs
Inputs: ids (required).
getDriversB
Get multiple Drivers by IDs
Inputs: ids (required).
getEdgesC
Get multiple Edges by IDs
Inputs: ids (required).
getFacesC
Get multiple Faces by IDs
Inputs: ids (required).
getGroupsC
Get multiple Groups by IDs
Inputs: ids (required).
getIKChainsC
Get multiple IKChains by IDs
Inputs: ids (required).
getJointsC
Get multiple Joints by IDs
Inputs: ids (required).
getKeyframesC
Get multiple Keyframes by IDs
Inputs: ids (required).
getLayersB
Get multiple Layers by IDs
Inputs: ids (required).
getMaterialsC
Get multiple Materials by IDs
Inputs: ids (required).
getMeshsC
Get multiple Meshs by IDs
Inputs: ids (required).
getMetadataC
Get metadata from an entity
Inputs: id (required), key.
getPropertyC
Get a property value from an object
Inputs: id (required), propertyPath (required).
getQuadViewC
Get top, front, right, and perspective views of the scene.
Inputs: auto_adjust_camera, name_visibility_predicate, shading_mode.
getSelectionC
Get currently selected objects
Inputs: domain.
getSubdivisionSurfacesC
Get multiple SubdivisionSurfaces by IDs
Inputs: ids (required).
getUVMapsC
Get multiple UVMaps by IDs
Inputs: ids (required).
getVertexsC
Get multiple Vertexs by IDs
Inputs: ids (required).
importGeometryC
Import geometry data sources
Inputs: items (required).
listBlendShapesC
List all BlendShapes
Inputs: filters, limit, offset, parentId.
listChannelsC
List all Channels
Inputs: filters, limit, offset, parentId.
listClipsC
List all Clips
Inputs: filters, limit, offset, parentId.
listConstraintsC
List all Constraints
Inputs: filters, limit, offset, parentId.
listCurvesC
List all Curves
Inputs: filters, limit, offset, parentId.
listDriversC
List all Drivers
Inputs: filters, limit, offset, parentId.
listEdgesC
List all Edges
Inputs: filters, limit, offset, parentId.
listFacesC
List all Faces
Inputs: filters, limit, offset, parentId.
listGroupsC
List all Groups
Inputs: filters, limit, offset, parentId.
listIKChainsC
List all IKChains
Inputs: filters, limit, offset, parentId.
listJointsC
List all Joints
Inputs: filters, limit, offset, parentId.
listKeyframesC
List all Keyframes
Inputs: filters, limit, offset, parentId.
listLayersC
List all Layers
Inputs: filters, limit, offset, parentId.
listMaterialsC
List all Materials
Inputs: filters, limit, offset, parentId.
listMeshsC
List all Meshs
Inputs: filters, limit, offset, parentId.
listSubdivisionSurfacesC
List all SubdivisionSurfaces
Inputs: filters, limit, offset, parentId.
listUVMapsD
List all UVMaps
Inputs: filters, limit, offset, parentId.
listVertexsC
List all Vertexs
Inputs: filters, limit, offset, parentId.
performGroupOperationsD
Perform operations on object groups
Inputs: items (required), operation (required).
quadrangulateC
Convert triangles to quads
Inputs: items (required).
queryC
Query entities based on criteria
Inputs: limit, offset, properties, type.
redoC
Redo the previously undone operation
Inputs: no named parameters.
renameC
Rename an entity
Inputs: id (required), name (required).
selectC
Select one or more objects
Inputs: ids (required), domain, mode.
setEdgeCreasesC
Set crease weights for edges
Inputs: items (required).
setMetadataC
Set metadata on an entity
Inputs: id (required), metadata (required), merge.
setSubdivisionLevelsC
Set subdivision levels for surfaces
Inputs: items (required).
splitMeshesC
Split meshes into separate objects
Inputs: items (required).
testD
Test tool
Inputs: no named parameters.
transformUVsC
Transform UV coordinates for vertices
Inputs: items (required).
transformVerticesC
Transform multiple vertices
Inputs: items (required).
triangulateC
Convert n-gons to triangles
Inputs: items (required).
undoC
Undo the last operation
Inputs: no named parameters.
unwrapUVsB
Generate UV coordinates using automatic unwrapping
Inputs: items (required).
updateBlendShapesC
Update multiple BlendShapes in a single operation
Inputs: items (required).
updateChannelsC
Update multiple Channels in a single operation
Inputs: items (required).
updateClipsC
Update multiple Clips in a single operation
Inputs: items (required).
updateConstraintsC
Update multiple Constraints in a single operation
Inputs: items (required).
updateCurvesC
Update multiple Curves in a single operation
Inputs: items (required).
updateDriversC
Update multiple Drivers in a single operation
Inputs: items (required).
updateEdgesC
Update multiple Edges in a single operation
Inputs: items (required).
updateFacesC
Update multiple Faces in a single operation
Inputs: items (required).
updateGroupsC
Update multiple Groups in a single operation
Inputs: items (required).
updateIKChainsC
Update multiple IKChains in a single operation
Inputs: items (required).
updateJointsC
Update multiple Joints in a single operation
Inputs: items (required).
updateKeyframesC
Update multiple Keyframes in a single operation
Inputs: items (required).
updateLayersC
Update multiple Layers in a single operation
Inputs: items (required).
updateMaterialsC
Update multiple Materials in a single operation
Inputs: items (required).
updateMeshsC
Update multiple Meshs in a single operation
Inputs: items (required).
updateSubdivisionSurfacesC
Update multiple SubdivisionSurfaces in a single operation
Inputs: items (required).
updateUVMapsC
Update multiple UVMaps in a single operation
Inputs: items (required).
updateVertexsC
Update multiple Vertexs in a single operation
Inputs: items (required).
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 125 tools
The tools are generally well-differentiated by resource type (e.g., BlendShapes, Materials) and action (create, delete, update), but there is some overlap in batch operations like batchSetProperty and individual update tools, which could cause confusion. However, descriptions help clarify the scope, preventing severe misselection.
Most tools follow a consistent verb_noun pattern (e.g., createBlendShapes, deleteMaterials, updateVertexs), with clear conventions for CRUD operations. Minor inconsistencies include 'getQuadView' (not pluralized) and 'performGroupOperations' (less specific), but overall naming is predictable and readable.
With 125 tools, the count is excessive for a typical MCP server, making it overwhelming and difficult to navigate. While it covers a broad 3D modeling domain, many tools could be consolidated or omitted without losing functionality, indicating poor scoping.
The tool set provides comprehensive coverage for 3D modeling, including full CRUD operations for various resources (e.g., meshes, materials, UV maps), transformation tools, import/export, and utility functions like undo/redo. No obvious gaps exist for the domain, ensuring agents can handle complex workflows.
Maintenance
Related MCP Connectors
A comprehensive Model Context Protocol (MCP) server that enables AI assistants to interact with yo…
A comprehensive Model Context Protocol (MCP) server that enables AI assistants to control Unreal E…
A Model Context Protocol server for Wix AI tools
Generate game-ready 3D models, textures, and audio from natural language, over MCP.
Related MCP Servers
- AlicenseNot gradedqualityBmaintenanceA bridge enabling seamless communication between Unity and Large Language Models via the Model Context Protocol, allowing developers to automate workflows, manipulate assets, and control the Unity Editor programmatically.15,927MIT

lightfast-mcpofficial
AlicenseNot gradedqualityNot gradedmaintenanceConnects creative applications like Blender and Adobe Creative Suite to AI models through the Model Context Protocol, enabling AI-driven creation, manipulation, and automation within these tools.10MIT- AlicenseNot gradedqualityCmaintenanceEnables interactive control of Blender for 3D scene manipulation, geometry creation, material application, and viewport rendering via natural language prompts through the Model Context Protocol.MIT
- AlicenseNot gradedqualityDmaintenanceEnables AI to control Blender 3D through the Model Context Protocol, allowing Python execution, scene state queries, and automation of 3D workflows.5GPL 3.0