How-To: ChatGPT Astra mit Blender über das Model Context Protocol (MCP) verbinden
Das Model Context Protocol (MCP) ist ein offener Standard, der es KI-Modellen wie ChatGPT ermöglicht, sicher und direkt mit lokalen Programmen, Daten und Entwicklungsumgebungen zu interagieren. In Kombination mit Blender verwandelt dieses Setup die KI in einen 3D-Assistenten: Du beschreibst einfach per Sprache oder Text, was du willst, und die KI manipuliert Objekte, Materialien und Szenen live in Blender.
In diesem Tutorial erfährst du Schritt für Schritt, wie du die Brücke zwischen ChatGPT (Astra) und Blender über MCP schlägst.
Voraussetzungen
Bevor du beginnst, stelle sicher, dass Folgendes installiert ist:
- Blender (eine aktuelle Version)
- Python (auf deinem System installiert)
- Ein MCP-fähiges Interface / Client (z. B. eine lokale Host-App oder Entwickler-Tools, die ChatGPT/Astra mit MCP-Servern verbinden)
- Grundkenntnisse im Ausführen von Terminal-Befehlen
Schritt 1: Blender für externe Verbindungen vorbereiten
Blender verfügt über eine mächtige Python-API (bpy), hört aber standardmäßig nicht auf externe Befehle. Wir richten einen kleinen Listener ein.
- Öffne Blender.
- Wechsle in den Tab Scripting und erstelle ein neues Skript.
- Füge folgenden Code ein, um einen einfachen lokalen Socket-Server in Blender zu starten, der Python-Befehle empfangen und ausführen kann:
import bpy
import socket
import threading
def run_server():
host = '127.0.0.1'
port = 9999
server = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
server.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
server.bind((host, port))
server.listen(1)
print(f"[Blender] Hört auf {host}:{port}...")
while True:
client, addr = server.accept()
data = client.recv(4096).decode('utf-8')
if data:
try:
# Führt den empfangenen Python-Code im Blender-Kontext aus
exec(data, {'bpy': bpy})
client.send(b"Erfolg")
except Exception as e:
client.send(f"Fehler: {str(e)}".encode('utf-8'))
client.close()
# Server in separatem Thread starten, damit die Blender-UI nicht blockiert
thread = threading.Thread(target=run_server, daemon=True)
thread.start()
- Klicke auf Run Script. Blender wartet nun auf Port
9999auf Steuerbefehle.
Schritt 2: Den Blender-MCP-Server erstellen
Jetzt bauen wir den eigentlichen MCP-Server. Dieser vermittelt zwischen ChatGPT/Astra (dem MCP-Client) und Blender.
- Erstelle einen neuen Ordner auf deinem PC (z. B.
blender-mcp). - Installiere das MCP-Python-SDK über das Terminal:
pip install mcp - Erstelle in dem Ordner eine Datei namens
server.pymit folgendem Inhalt:
import socket
from mcp.server.fastmcp import FastMCP
# MCP-Server initialisieren
mcp = FastMCP("Blender-Bridge")
def send_to_blender(code: str) -> str:
"""Sendet Python-Code an den Blender-Socket."""
host = '127.0.0.1'
port = 9999
try:
with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s:
s.connect((host, port))
s.sendall(code.encode('utf-8'))
response = s.recv(4096).decode('utf-8')
return response
except ConnectionRefusedError:
return "Fehler: Verbindung zu Blender fehlgeschlagen. Läuft das Blender-Skript?"
@mcp.tool()
def execute_blender_script(code: str) -> str:
"""Führt ein Python-Skript in Blender aus, um 3D-Objekte zu generieren oder zu verändern."""
result = send_to_blender(code)
return f"Blender-Rückmeldung: {result}"
if __name__ == "__main__":
mcp.run()
Schritt 3: ChatGPT Astra mit dem MCP-Server verbinden
Damit ChatGPT weiß, dass es Blender-Befehle ausführen kann, musst du den MCP-Server in deiner MCP-Client-Konfiguration registrieren.
- Öffne die Konfigurationsdatei deines MCP-Clients (z. B.
mcp_config.json). - Füge den Server unter
mcpServershinzu:
{
"mcpServers": {
"blender": {
"command": "python",
"args": ["PFAD/ZU/DEINEM/ORDNER/server.py"]
}
}
}
(Ersetze PFAD/ZU/DEINEM/ORDNER/server.py durch den absoluten Pfad zu deiner Datei).
- Starte deine MCP-Umgebung bzw. die ChatGPT-Astra-Verbindung neu. Das System sollte nun das Tool
execute_blender_scripterkennen.
Schritt 4: Der Praxistest
Wenn alles eingerichtet ist, kannst du mit ChatGPT Astra über natürliche Sprache 3D-Inhalte erzeugen.
Typische Prompts zum Testen:
- "Erstelle eine UV-Sphere in Blender, skaliere sie um den Faktor 2 und platziere sie an den Koordinaten (0, 0, 5)."
- "Lösche alle Würfel in der aktuellen Szene und erstelle ein Raster aus 5x5 bunten Zylindern."
- "Füge eine Kamera hinzu, die auf das Zentrum gerichtet ist, und erstelle eine warme Punktlichtquelle."
Was im Hintergrund passiert:
- ChatGPT versteht deine Anforderung.
- Es generiert den passenden
bpy-Python-Code (z. B.bpy.ops.mesh.primitive_uv_sphere_add(...)). - ChatGPT ruft das MCP-Tool
execute_blender_scriptauf. - Der MCP-Server schickt den Code via Socket an Blender.
- Die Änderung erscheint in Echtzeit in deinem Blender-Viewport.
Tipps zur Fehlerbehebung
- Verbindung abgelehnt (
ConnectionRefusedError): Stelle sicher, dass du das Server-Skript in Blender nach jedem Neustart der Software erneut ausführst. - UI friert ein: Achte darauf, dass der Socket-Server in Blender über das Modul
threadingläuft, da Blender sonst keine Benutzereingaben mehr zulässt. - Ungültiger Code: Komplexe Operationen (z. B. Geometrie-Nodes oder Shader-Netzwerke) erfordern präzise Prompts. Wenn ein Fehler zurückgemeldet wird, kann ChatGPT den Code selbstständig korrigieren, da die Fehlermeldung über MCP direkt an das Sprachmodell zurückfließt.