Integrations
Enables LLMs to interact with Blender through a unified TypeScript interface, allowing for animation creation, keyframe manipulation, and other 3D operations with automatically generated native plugins.
Provides C++ code generation for native implementations in 3D applications like Unreal Engine, translating the abstract tool definitions into platform-specific code.
Generates Python implementations for 3D software like Blender, enabling animation control, object manipulation, and other 3D operations through native code.
3D MCP
Overview
3D-MCP is a universal implementation of the Model Context Protocol for 3D software. It creates a unified TypeScript interface for LLMs to interact with Blender, Maya, Unreal Engine, and other 3D applications through a single coherent API.
Core Philosophy & Design Decisions
3D-MCP is built on four interconnected architectural principles that together create a unified system for 3D content creation:
- Entity-First Design: Well-defined domain entities form the foundation of all operations, enabling consistent data modeling across platforms
- Type-Safe CRUD Operations: Automated generation of create, read, update, delete operations with complete type validation
- Atomic Operation Layer: A minimal set of platform-specific implementations that handle fundamental operations
- Composable Tool Architecture: Complex functionality built by combining atomic operations in a platform-agnostic way
This architecture creates a dependency inversion where platform-specific implementation details are isolated to atomic operations, while the majority of the codebase remains platform-independent.
Why These Design Decisions?
Entity-First Design was chosen because:
- 3D applications use different object models but share core concepts (meshes, materials, animations)
- Zod schemas provide single-source-of-truth for validation, typing, and documentation
- Strong typing catches errors at compile time rather than runtime
- Rich metadata enables better AI understanding of domain objects
CRUD Operations as Foundation because:
- They map cleanly to what 3D applications need to do with entities
- Standardized patterns reduce cognitive overhead
- Auto-generation eliminates repetitive code using
createCrudOperations
- Every entity automatically gets the same consistent interface
Atomic and Compound Tool Separation because:
- Only atomic tools need platform-specific implementation (~20% of codebase)
- Compound tools work across all platforms without modification (~80% of codebase)
- New platforms only need to implement atomic operations to gain all functionality
- Maintainable architecture with clear separation of concerns
Technical Architecture
1. Entity-Centric CRUD Architecture
The system's foundation is a rich type system of domain entities that generates CRUD operations:
Entity schemas provide:
- Schema Validation: Runtime parameter checking with detailed error messages
- Type Information: Complete TypeScript types for IDE assistance
- Documentation: Self-documenting API with descriptions
- Code Generation: Templates for platform-specific implementations
Entity Architecture Diagram
2. Compound Tool Architecture
The system creates a clear separation between atomic and compound operations:
This architecture provides several technical advantages:
- Atomic Operations (~20% of the system):
- Directly interact with platform APIs
- Need platform-specific implementations
- Focus on single entity operations (create, read, update, delete)
- Form minimal implementation required for new platforms
- Compound Operations (~80% of the system):
- Built entirely from atomic operations
- Zero platform-specific code
- Implement higher-level domain concepts
- Work on any platform without modification
Tool Composition Flow
Key files for the compound tool architecture:
- compounded.ts: Compound modeling tools
- compounded.ts: Compound animation tools
- compounded.ts: Compound rigging tools
3. Code Generation Pipeline
The system automatically generates platform-specific implementations from TypeScript definitions:
Key aspects of the generation system:
- Entity Extraction: Analyzes Zod schemas to understand entity structure
- Parameter Mapping: Converts TypeScript types to platform-native types
- Validation Generation: Creates parameter validation in target languages
- Implementation Templates: Provides platform-specific code patterns
The codegen system is implemented in:
- plugin-codegen.ts: Main code generation script
- extract-schemas.ts: Extracts Zod schemas from TypeScript files into temporary JSON files.
4. Domain Organization
The system is organized into domains that mirror 3D content creation workflows:
- Core: Base entities and operations used across all domains
- Modeling: Mesh creation, editing, and topology operations
- Animation: Keyframes, curves, clips, and animation control
- Rigging: Skeletal systems, controls, and deformation
- Rendering: Materials, lights, and render settings
Each domain follows the same organizational pattern:
entity.ts
: Domain-specific entity definitionsatomic.ts
: Atomic operations for domain entitiescompounded.ts
: Higher-level operations built from atomic tools
Domain Structure Diagram
5. Entity-Centric CRUD Architecture
The system implements a sophisticated entity-centric approach where:
- Entities as Domain Models: Each domain (modeling, animation, rigging) defines its core entities that represent its fundamental concepts. These are implemented as Zod schemas with rich type information.
- CRUD as Foundation: Every entity automatically receives a complete set of CRUD operations (Create, Read, Update, Delete) through the
createCrudOperations
utility:
- Entity Reuse and Inheritance: Core entities defined in
core/entity.ts
are extended by domain-specific entities, promoting code reuse and consistent design across domains. - DDD-Inspired Architecture: The system follows Domain-Driven Design principles by organizing code around domain entities and aggregates rather than technical concerns.
This architecture provides several key benefits:
- Consistency: All entities have the same patterns for basic operations
- Reduced Boilerplate: CRUD operations are generated automatically
- Clear Organization: Tools are organized around domain entities
- Separation of Concerns: Each domain manages its own entities while sharing common patterns
The combination of rich entity models with automatic CRUD operations creates a robust foundation that simplifies development while maintaining flexibility for domain-specific operations.
Getting Started
Development Workflow
- Define Entities: Create or extend entity schemas in
src/tool/<domain>/entity.ts
- Generate CRUD: Use
createCrudOperations
to generate atomic operations - Create Compound Tools: Build higher-level operations from atomic tools
- Generate Plugins: Run the code generator to create platform-specific implementations
Contributing
The architectural decisions in 3D-MCP make it uniquely extensible:
- Add New Entities: Define new entities and automatically get CRUD operations
- Add New Compound Tools: Combine existing atomic operations to create new functionality
- Add New Platforms: Implement the atomic tool interfaces in a new plugin
See our contributing guide for more details on how to contribute.
3D-MCP: One API to rule all 3D software
You must be authenticated.
Tools
A universal Model Context Protocol implementation that serves as a semantic layer between LLMs and 3D creative software, providing a standardized interface for interacting with various Digital Content Creation tools through a unified API.
- Overview
- Core Philosophy & Design Decisions
- Why These Design Decisions?
- Technical Architecture
- Getting Started
- Development Workflow
- Contributing
Related Resources
Related MCP Servers
- -securityAlicense-qualityA comprehensive toolkit that enhances LLM capabilities through the Model Context Protocol, allowing LLMs to interact with external services including command-line operations, file management, Figma integration, and audio processing.Last updated -14PythonApache 2.0
- -securityFlicense-qualityA Model Context Protocol server that enables LLMs to create, modify, and manipulate Excalidraw diagrams through a structured API.Last updated -7JavaScript
- -securityFlicense-qualityA simple application demonstrating Model Context Protocol (MCP) integration with FastAPI and Streamlit, allowing users to interact with LLMs through a clean interface.Last updated -3Python
- -securityFlicense-qualityA Model Context Protocol server that connects AI tools and LLMs to Figma designs, enabling them to extract design data, analyze design systems, and generate development documentation.Last updated -TypeScript