Skip to main content
Glama

3D-MCP

by team-plask

3D-MCP

Plugin-TestsTyposkriptLizenz

Überblick

3D-MCP ist eine universelle Implementierung des Model Context Protocol für 3D-Software. Es erstellt eine einheitliche TypeScript-Schnittstelle für LLMs zur Interaktion mit Blender, Maya, Unreal Engine und anderen 3D-Anwendungen über eine einzige, kohärente 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 });

Kernphilosophie und Designentscheidungen

3D-MCP basiert auf vier miteinander verbundenen Architekturprinzipien, die zusammen ein einheitliches System für die Erstellung von 3D-Inhalten bilden:

  1. Entity-First-Design : Gut definierte Domänenentitäten bilden die Grundlage aller Vorgänge und ermöglichen eine konsistente Datenmodellierung über alle Plattformen hinweg
  2. Typsichere CRUD-Operationen : Automatisierte Generierung von Erstellungs-, Lese-, Aktualisierungs- und Löschoperationen mit vollständiger Typvalidierung
  3. Atomic Operation Layer : Ein minimaler Satz plattformspezifischer Implementierungen, die grundlegende Operationen handhaben
  4. Zusammensetzbare Tool-Architektur : Komplexe Funktionalität, die durch die plattformunabhängige Kombination atomarer Operationen entsteht

Diese Architektur erzeugt eine Abhängigkeitsumkehr, bei der plattformspezifische Implementierungsdetails auf atomare Operationen beschränkt bleiben, während der Großteil der Codebasis plattformunabhängig bleibt.

┌─────────────────────────────────────────────────────────────────────────┐ │ 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 │ │ │ └─────────────────┘ └─────────────────┘ └──────────────────────┘ │ └─────────────────────────────────────────────────────────────────────────┘

Warum diese Designentscheidungen?

Entity-First-Design wurde gewählt, weil:

  • 3D-Anwendungen verwenden unterschiedliche Objektmodelle, teilen aber Kernkonzepte (Netze, Materialien, Animationen).
  • Zod-Schemata bieten eine zentrale Informationsquelle für Validierung, Typisierung und Dokumentation
  • Durch strenge Typisierung werden Fehler zur Kompilierzeit und nicht zur Laufzeit erkannt
  • Umfangreiche Metadaten ermöglichen ein besseres KI-Verständnis von Domänenobjekten

CRUD-Operationen als Grundlage, weil:

  • Sie bilden klar ab, was 3D-Anwendungen mit Entitäten tun müssen
  • Standardisierte Muster reduzieren den kognitiven Aufwand
  • Automatische Generierung eliminiert repetitiven Code mithilfe von createCrudOperations
  • Jede Entität erhält automatisch die gleiche konsistente Schnittstelle

Trennung von atomaren und zusammengesetzten Werkzeugen, weil:

  • Nur atomare Tools benötigen eine plattformspezifische Implementierung (~20 % der Codebasis)
  • Compound-Tools funktionieren auf allen Plattformen ohne Änderungen (~80 % der Codebasis)
  • Neue Plattformen müssen nur atomare Operationen implementieren, um alle Funktionen zu erhalten
  • Wartbare Architektur mit klarer Trennung der Belange

Technische Architektur

1. Entity-Centric CRUD-Architektur

Die Grundlage des Systems ist ein umfangreiches Typsystem von Domänenentitäten, das CRUD-Operationen generiert:

// 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 });

Entitätsschemata bieten:

  • Schemavalidierung : Laufzeitparameterprüfung mit detaillierten Fehlermeldungen
  • Typinformationen : Vollständige TypeScript-Typen zur IDE-Unterstützung
  • Dokumentation : Selbstdokumentierende API mit Beschreibungen
  • Codegenerierung : Vorlagen für plattformspezifische Implementierungen
Entity-Architekturdiagramm
┌──────────────────────────────────────────────────────────────┐ │ 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. Zusammengesetzte Werkzeugarchitektur

Das System schafft eine klare Trennung zwischen atomaren und zusammengesetzten Operationen:

// 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, }; } })

Diese Architektur bietet mehrere technische Vorteile:

  1. Atomare Operationen (~20 % des Systems):
    • Direkte Interaktion mit Plattform-APIs
    • Benötigen plattformspezifische Implementierungen
    • Konzentrieren Sie sich auf einzelne Entitätsvorgänge (Erstellen, Lesen, Aktualisieren, Löschen).
    • Für neue Plattformen ist nur eine minimale Implementierung erforderlich
  2. Zusammengesetzte Operationen (~80 % des Systems):
    • Vollständig aus atomaren Operationen aufgebaut
    • Kein plattformspezifischer Code
    • Implementieren übergeordneter Domänenkonzepte
    • Funktioniert auf jeder Plattform ohne Änderungen
Werkzeugzusammensetzungsfluss
┌─────────────────────────────────────────────────────────────────────────┐ │ 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 │ │ │ └──────────────────────────┘ └─────────────────────────────────────┘ │ └─────────────────────────────────────────────────────────────────────────┘

Schlüsseldateien für die zusammengesetzte Toolarchitektur:

  • compounded.ts: Werkzeuge zur zusammengesetzten Modellierung
  • compounded.ts: Zusammengesetzte Animationstools
  • compounded.ts: Werkzeuge für zusammengesetzte Takelage

3. Codegenerierungs-Pipeline

Das System generiert automatisch plattformspezifische Implementierungen aus TypeScript-Definitionen:

┌─────────────────┐ ┌────────────────────┐ ┌─────────────────────────┐ │ Entity Schemas │ │ Schema │ │ Platform-Specific Code │ │ & Tools (TS) │ ──> │ Extraction (TS) │ ──> │ (Python/C++/etc.) │ └─────────────────┘ └────────────────────┘ └─────────────────────────┘ │ │ │ │ │ │ ▼ ▼ ▼ ┌─────────────────┐ ┌────────────────────┐ ┌─────────────────────────┐ │ Type │ │ Parameter │ │ Implementation │ │ Definitions │ │ Validation │ │ Templates │ └─────────────────┘ └────────────────────┘ └─────────────────────────┘

Wesentliche Aspekte des Erzeugungssystems:

  • Entitätsextraktion : Analysiert Zod-Schemata, um die Entitätsstruktur zu verstehen
  • Parameterzuordnung : Konvertiert TypeScript-Typen in plattformnative Typen
  • Validierungsgenerierung : Erstellt Parametervalidierungen in Zielsprachen
  • Implementierungsvorlagen : Bietet plattformspezifische Codemuster

Das Codegenerierungssystem ist implementiert in:

4. Domänenorganisation

Das System ist in Domänen organisiert, die die Arbeitsabläufe zur Erstellung von 3D-Inhalten widerspiegeln:

  • Kern : Grundlegende Entitäten und Operationen, die in allen Domänen verwendet werden
  • Modellierung : Netzerstellung, Bearbeitung und Topologieoperationen
  • Animation : Keyframes, Kurven, Clips und Animationssteuerung
  • Takelage : Skelettsysteme, Steuerungen und Deformation
  • Rendering : Materialien, Lichter und Rendereinstellungen

Jede Domäne folgt demselben Organisationsmuster:

  • entity.ts : Domänenspezifische Entitätsdefinitionen
  • atomic.ts : Atomare Operationen für Domänenentitäten
  • compounded.ts : Höherstufige Operationen, die aus atomaren Tools erstellt wurden
Domänenstrukturdiagramm
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. Entity-Centric CRUD-Architektur

Das System implementiert einen ausgeklügelten entitätszentrierten Ansatz, bei dem:

  1. Entitäten als Domänenmodelle : Jede Domäne (Modellierung, Animation, Rigging) definiert ihre Kernentitäten, die ihre grundlegenden Konzepte darstellen. Diese werden als Zod-Schemata mit umfangreichen Typinformationen implementiert.
  2. CRUD als Grundlage : Jede Entität erhält automatisch einen vollständigen Satz von CRUD-Operationen (Erstellen, Lesen, Aktualisieren, Löschen) über das Dienstprogramm 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 }
  1. Wiederverwendung und Vererbung von Entitäten : In core/entity.ts definierte Kernentitäten werden durch domänenspezifische Entitäten erweitert, was die Wiederverwendung von Code und ein konsistentes Design über Domänen hinweg fördert.
  2. DDD-inspirierte Architektur : Das System folgt den Prinzipien des domänengesteuerten Designs, indem es den Code um Domänenentitäten und -aggregate herum organisiert, anstatt um technische Belange.

Diese Architektur bietet mehrere wichtige Vorteile:

  • Konsistenz : Alle Entitäten haben die gleichen Muster für grundlegende Operationen
  • Reduzierter Boilerplate : CRUD-Operationen werden automatisch generiert
  • Klare Organisation : Die Tools sind um Domänenentitäten herum organisiert
  • Trennung der Belange : Jede Domäne verwaltet ihre eigenen Entitäten und teilt dabei gemeinsame Muster

Die Kombination umfangreicher Entitätsmodelle mit automatischen CRUD-Operationen schafft eine robuste Grundlage, die die Entwicklung vereinfacht und gleichzeitig die Flexibilität für domänenspezifische Operationen aufrechterhält.

Erste Schritte

# Install dependencies bun install # Run the server bun run index.ts # Extract schemas and generate plugins bun run packages/scripts/plugin-codegen.ts

Entwicklungs-Workflow

  1. Entitäten definieren : Erstellen oder erweitern Sie Entitätsschemata in src/tool/<domain>/entity.ts
  2. CRUD generieren : Verwenden Sie createCrudOperations , um atomare Operationen zu generieren
  3. Zusammengesetzte Tools erstellen : Erstellen Sie Operationen auf höherer Ebene aus atomaren Tools
  4. Plugins generieren : Führen Sie den Codegenerator aus, um plattformspezifische Implementierungen zu erstellen

Beitragen

Die architektonischen Entscheidungen in 3D-MCP machen es einzigartig erweiterbar:

  1. Neue Entitäten hinzufügen : Definieren Sie neue Entitäten und erhalten Sie automatisch CRUD-Operationen
  2. Neue zusammengesetzte Tools hinzufügen : Kombinieren Sie vorhandene atomare Operationen, um neue Funktionen zu erstellen
  3. Neue Plattformen hinzufügen : Implementieren Sie die atomaren Tool-Schnittstellen in einem neuen Plugin

Weitere Einzelheiten zum Beitragen finden Sie in unserem Leitfaden zum Beitragen.


3D-MCP: Eine API für alle 3D-Software

Install Server
A
security – no known vulnerabilities
A
license - permissive license
A
quality - confirmed to work

Eine universelle Implementierung des Model Context Protocol, die als semantische Schicht zwischen LLMs und 3D-Kreativsoftware dient und über eine einheitliche API eine standardisierte Schnittstelle für die Interaktion mit verschiedenen Tools zur Erstellung digitaler Inhalte bietet.

  1. Überblick
    1. Kernphilosophie und Designentscheidungen
      1. Warum diese Designentscheidungen?
        1. Technische Architektur
          1. Entity-Centric CRUD-Architektur
          2. Zusammengesetzte Werkzeugarchitektur
          3. Codegenerierungs-Pipeline
          4. Domänenorganisation
          5. Entity-Centric CRUD-Architektur
        2. Erste Schritte
          1. Entwicklungs-Workflow
            1. Beitragen

              Related MCP Servers

              • -
                security
                A
                license
                -
                quality
                A 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 -
                17
                Python
                Apache 2.0
                • Linux
                • Apple
              • -
                security
                F
                license
                -
                quality
                A generic Model Context Protocol framework for building AI-powered applications that provides standardized ways to create MCP servers and clients for integrating LLMs with support for Ollama and Supabase.
                Last updated -
                TypeScript
              • -
                security
                A
                license
                -
                quality
                A 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.
                Last updated -
                1,449
                MIT License
                • Linux
                • Apple
              • -
                security
                F
                license
                -
                quality
                A GitHub-based implementation of the Model Context Protocol that enables LLMs to access and manipulate data in a Universal Object Reference (UOR) framework, providing standardized interfaces for object management with decentralized storage.
                Last updated -
                TypeScript
                • Linux
                • Apple

              View all related MCP servers

              MCP directory API

              We provide all the information about MCP servers via our MCP API.

              curl -X GET 'https://glama.ai/api/mcp/v1/servers/team-plask/3d-mcp'

              If you have feedback or need assistance with the MCP directory API, please join our Discord server