MCP bridge between Claude Code and Godot 4.x
Project description
Golem MCP
v0.9.0 — MCP open-source pour connecter Claude Code à Godot 4.x.
Claude Code ←stdio/MCP→ golem_mcp.py (FastMCP) ←TCP/JSON→ GolemServer (GDScript @tool)
Supporte aussi : Cursor, Windsurf, Continue.dev, Cline
Installation
Option 1 — CLI (recommended)
uvx golem-mcp install /path/to/your/godot-project
This copies the plugin, skills, hooks, and generates configs automatically.
Then enable the plugin in Godot > Project Settings > Plugins > Golem MCP.
Option 2 — ZIP Installer
- Download
golem-mcp-v0.9.0.zipfrom releases - Extract and run
install.bat(Windows) or./install.sh(macOS/Linux) - Enter your Godot project path
- Enable the plugin in Godot
CLI Options
# Choose your AI assistant
uvx golem-mcp install /path/to/project --agent cursor
uvx golem-mcp install /path/to/project --agent windsurf
# Force overwrite existing install
uvx golem-mcp install /path/to/project --force
# Use a local clone instead of uvx (for development)
uvx golem-mcp install /path/to/project --local /path/to/golem-mcp
# Skip skills installation
uvx golem-mcp install /path/to/project --skip-skills
Manual installation
If you prefer to install manually
1. Plugin Godot
Copier le dossier godot-plugin/ dans ton projet Godot :
ton-projet/addons/golem-mcp/ ← contenu de godot-plugin/
Activer le plugin : Project > Project Settings > Plugins > Golem MCP
2. Serveur MCP Python
cd golem-mcp
uv sync
3. Configuration Claude Code
Créer un .mcp.json à la racine de ton projet Godot :
{
"mcpServers": {
"godot": {
"type": "stdio",
"command": "uvx",
"args": ["golem-mcp"]
}
}
}
Auto-updates
The plugin checks for updates every 24h via GitHub Releases. When a new version is available, you'll get a dialog in the Godot editor to update in one click.
Tools disponibles
Phase 1 — Core
| Tool | Description |
|---|---|
godot_get_scene_tree |
Arbre de scène hiérarchique |
godot_inspect_node |
Propriétés d'un node |
godot_get_editor_screenshot |
Capture éditeur |
godot_get_game_screenshot |
Capture jeu en cours |
godot_play_scene |
Lancer une scène |
godot_stop_scene |
Stopper la scène |
godot_get_errors |
Récupérer erreurs |
godot_clear_logs |
Vider les logs |
godot_execute_script |
Exécuter GDScript dans l'éditeur |
godot_view_script |
Lire un script |
Phase 2 — Manipulation
| Tool | Description |
|---|---|
godot_add_node |
Créer un node |
godot_delete_node |
Supprimer un node |
godot_update_property |
Modifier une propriété |
godot_move_node |
Déplacer dans l'arbre |
godot_duplicate_node |
Dupliquer un node |
Phase 3 — Avancé
| Tool | Description |
|---|---|
godot_get_input_map |
Lire les actions input |
godot_project_settings |
Lire/modifier settings projet |
godot_save_scene |
Sauvegarder la scène |
Phase 3 — Avancé (suite)
| Tool | Description |
|---|---|
godot_write_script |
Écrire un fichier .gd |
godot_attach_script |
Attacher un script à un node |
godot_get_logs |
Logs jeu + engine |
godot_create_scene |
Créer une nouvelle scène |
godot_open_scene |
Ouvrir une scène existante |
godot_add_nodes |
Batch: créer une hiérarchie entière |
Skills (slash commands)
Copier .claude/commands/*.md dans .claude/commands/ de ton projet Godot.
Workflow Commands
| Skill | Rôle |
|---|---|
/init |
Bootstrap projet — vision, gameplay loop, livrables, structure (nouveau projet ou reprise) |
/golem-dev |
Mode MCP — switch contexte pour travailler sur Golem MCP lui-même |
/deliverable <nom> |
Focus livrable — implémenter UN livrable jusqu'à complétion |
/checkpoint |
Snapshot état — scanner le projet, générer CHECKPOINT.md |
/references |
Patterns projet — voir/éditer les conventions réutilisables |
Planification & Simulation
| Skill | Rôle |
|---|---|
/godot |
Routeur principal — analyse l'intention, scanne le projet, dispatche vers le bon skill |
/godot-plan |
Interroger l'idée, produire un mini-PRD + plan séquencé avant toute construction |
/godot-sequence |
Définir le game flow en YAML (loops, states, emotional arc, edge cases) |
/godot-simulate |
Paper prototyping : narrative/persona, balance/numbers, exhaustive/graph |
/godot-gate |
Validation pré-construction (auto-checks + questions qualitatives) |
Construction
| Skill | Rôle |
|---|---|
/godot-architecture |
Architecture modulaire pseudo-ECS : Core, Entities, Mechanics, Data |
/godot-scene |
Construire une scène Godot à partir d'une description |
/godot-composition |
Structure UI : tokens, rôles, containers, patterns, torture tests |
/godot-theme |
Design tokens via Theme resource : palette, fonts, spacing, StyleBox |
/godot-behavior |
Système nerveux UI : états 3 canaux, tweens, FX, son, fallback perf |
Game Feel, VFX & Audio
| Skill | Rôle |
|---|---|
/godot-juice |
Game feel : screenshake, freeze frame, squash & stretch, hit flash, trails, damage numbers |
/godot-vfx |
Effets visuels : GPUParticles2D, shaders 2D, WorldEnvironment, lighting |
/godot-audio |
Audio : bus layout, MusicManager, SFXPool, spatial 2D, volume settings |
/godot-save |
Sauvegarde : SettingsManager, SaveSystem, save slots, encryption, migration |
/godot-camera |
Caméra 2D : smooth follow, look-ahead, zoom dynamique, limites, cinematic |
Debug & Audit
| Skill | Rôle |
|---|---|
/godot-debug |
Diagnostic séquentiel en 5 étapes + table des bugs courants |
/godot-design-audit |
Audit UX via screenshots + inspection, rapport phasé d'améliorations |
/godot-status |
Scan projet, DEVLOG.md, progress.txt, suggestions d'amélioration |
Hooks
Golem MCP fournit 4 hooks Claude Code dans hooks/ (Python, cross-platform) :
| Hook | Event | Rôle |
|---|---|---|
check_connection.py |
PreToolUse (godot_*) | Vérifie la connexion TCP avant chaque appel MCP |
gdscript_lint.py |
PostToolUse (godot_write_script) | Lint basique GDScript après écriture |
copy_skills.py |
PostToolUse (Edit/Write) | Auto-copie les skills modifiés vers le projet test (dev) |
check_project_sync.py |
PostToolUse (Edit/Write) | Sync livrables, checkpoint, références |
Installation dans ton projet Godot
Copier le template et adapter les paths :
cp hooks/settings.example.json ton-projet/.claude/settings.json
# Éditer les paths dans le fichier
Ou ajouter manuellement dans .claude/settings.json :
{
"hooks": {
"PreToolUse": [{
"matcher": "mcp__godot__.*",
"hooks": [{"type": "command", "command": "python3 /chemin/vers/golem-mcp/hooks/check_connection.py", "timeout": 3}]
}],
"PostToolUse": [{
"matcher": "mcp__godot__godot_write_script",
"hooks": [{"type": "command", "command": "python3 /chemin/vers/golem-mcp/hooks/gdscript_lint.py", "timeout": 5}]
}]
}
}
Workflow recommandé
Nouveau projet (complet)
/init → /deliverable <premier> → /checkpoint → /deliverable <suivant> → ...
/init— Bootstrap complet : vision, gameplay loop, vertical slice, livrables, structure/deliverable <nom>— Implémenter UN livrable jusqu'à complétion/checkpoint— Snapshot état, valider les progrès- Répéter jusqu'au vertical slice complet
Reprise de projet
/init (détecte l'état) → /checkpoint → /deliverable <en_cours>
/init détecte automatiquement les fichiers existants et propose de reprendre.
Travailler sur Golem MCP
/golem-dev
Switch de contexte pour modifier le MCP lui-même. Revenir avec /init ou tout skill Godot.
Workflow classique (sans livrables)
/godot-plan → /godot-sequence → /godot-simulate → /godot-gate → /godot-architecture → /godot-scene
/godot-plan— Définir la vision, les mécaniques, le feeling visé. ProduitGAME_PLAN.md/godot-sequence— Formaliser le game flow en YAML (loops, states, données)/godot-simulate— Tester le jeu sur papier (3 modes : narrative, balance, exhaustive)/godot-gate— Valider que tout est prêt avant de coder/godot-architecture— Scaffolder Core (EventBus, GameState), structure dossiers/godot-scene— Construire les scènes une par une selon le plan
Construire une UI
/godot-composition → /godot-theme → /godot-behavior
La structure (containers, tokens, rôles) AVANT le thème AVANT le behavior (animations, états).
Debug
/godot-debug → fix → /godot-status
Route directe — pas de prérequis.
Prototypage rapide
/godot-scene (mode QUICK, sans plan ni archi)
Pour tester une idée vite. Transition vers le flow complet si le proto marche.
Troubleshooting
"Connection refused" / Port non disponible
Symptôme : Le hook check_connection.py bloque avec "Godot n'est pas connecté"
Causes possibles :
- Godot n'est pas ouvert
- Le plugin Golem MCP n'est pas activé
- Un autre process utilise le port 3571
Solutions :
# Vérifier si le port est utilisé
lsof -i :3571 # macOS/Linux
netstat -ano | findstr :3571 # Windows
# Changer de port (si conflit)
export GOLEM_PORT=3572 # Avant de lancer Claude Code
Dans Godot : Project > Project Settings > Plugins > Golem MCP doit être activé (checkbox cochée).
"No scene is currently running" (screenshot)
Symptôme : godot_get_game_screenshot retourne une erreur
Cause : Le jeu n'est pas lancé, ou la scène a crashé
Solution : Lancer le jeu avec godot_play_scene avant de capturer
Screenshot vide / erreur base64
Symptôme : "Screenshot file was empty or corrupted" ou erreur API "image cannot be empty"
Causes possibles :
GolemCaptureautoload non injecté dans le jeu- Le jeu a crashé avant la capture
- Race condition (capture trop rapide)
Solutions :
- Vérifier que
golem_capture.gdest bien copié dansaddons/golem-mcp/ - Le système retry automatiquement 3 fois — si ça échoue quand même, vérifier les logs Godot
- Utiliser
godot_get_errorspour voir si le jeu a crashé
Lint warnings après godot_write_script
Symptôme : Le hook gdscript_lint.py remonte des warnings
C'est normal — le lint est un filet de sécurité. Les warnings courants :
Missing 'extends'— ajouterextends Node(ou le bon type)print() found— remplacer parGolemCapture.log()pour voir les logs via MCPawait inside _process— interdit en @tool, utiliser un deferred patternCamera2D position modified— utiliseroffsetau lieu depositionpour le screenshake
Ghost connections dans les logs Godot
Symptôme : "Condition '!is_open()' is true" répété dans les logs
Cause : Connexions TCP fantômes (probes de port)
Solution : Déjà fixé dans v0.5.1 — le serveur ignore silencieusement ces connexions. Mettre à jour le plugin.
Protocole TCP
JSON lines sur port 3571 (configurable via GOLEM_PORT).
Request : {"id": "uuid", "tool": "get_scene_tree", "args": {}}\n
Response : {"id": "uuid", "ok": true, "result": "...", "type": "text"}\n
Licence
MIT
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file golem_mcp-0.9.0.tar.gz.
File metadata
- Download URL: golem_mcp-0.9.0.tar.gz
- Upload date:
- Size: 130.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.9.27 {"installer":{"name":"uv","version":"0.9.27","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":null,"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
851e014548e0a3a574f29b94efe092359a29cf02069a7a8b3d7e241308d6261c
|
|
| MD5 |
9aebe3ecbfae50c3aec4af61d0e73299
|
|
| BLAKE2b-256 |
1189b53b0c52ed59d96fac5b851d44f59c68879371f69d6c15470a2a6ee09119
|
File details
Details for the file golem_mcp-0.9.0-py3-none-any.whl.
File metadata
- Download URL: golem_mcp-0.9.0-py3-none-any.whl
- Upload date:
- Size: 155.2 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.9.27 {"installer":{"name":"uv","version":"0.9.27","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":null,"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
4056b0d3885c89e7dec4a01b940bb084559809e3381fedb2b168b29cc96f1a8b
|
|
| MD5 |
887f52f6790ff271f5b4b90b01fceb3b
|
|
| BLAKE2b-256 |
56858da4c072b3824b83d0295f04d31b69c63b606290804325a7657b08e23e60
|