Skip to main content
Glama

đŸ‡«đŸ‡· Français · 🇬🇧 English

License: MIT npm Godot 4.3+ Node >=18 Zero runtime deps


godot-hands

Donnez les mains Ă  votre assistant IA sur l'Ă©diteur Godot — avec 10 outils au lieu de 100.

Assistant IA <---stdio/MCP---> godot-hands <---WebSocket:6505---> Plugin Godot

Pourquoi celui-ci

La plupart des serveurs MCP Godot exposent chaque mĂ©thode de l'addon comme un tool MCP sĂ©parĂ© — 50, 80, parfois plus de 100 entrĂ©es dans le catalogue que le modĂšle doit lire et trier avant chaque appel. Plus la surface est large, moins un LLM choisit le bon outil de façon fiable, et plus chaque requĂȘte coĂ»te cher en tokens rien que pour dĂ©crire les outils disponibles.

godot-hands prend le pari inverse : 10 outils, dont un seul (godot_call) donne accÚs à un catalogue de 210 méthodes réparties en ~25 catégories (scÚne, nodes, 3D, physique, animation, shaders, tilemap, particules, audio, navigation, export Android, tests
), découvert en direct auprÚs de l'éditeur connecté plutÎt que figé dans ce dépÎt. Le modÚle demande le schéma dont il a besoin (godot_describe) au lieu de tout charger d'un coup. Résultat mesuré (npm run token-cost) : ~1460 tokens pour toute la surface d'outils.

Le reste tient en une phrase : zĂ©ro dĂ©pendance runtime en dehors du SDK MCP, aucun service externe, le plugin Godot est un simple client WebSocket — vous savez exactement ce qui tourne et oĂč.

Ce qui distingue ce pont d'un simple exécuteur de commandes

  • Garde-fous, pas juste des fonctions. Les opĂ©rations destructrices (suppression de fichier, Ă©dition de script, code arbitraire) exigent confirm: true ; les Ă©ditions de script portent un garde optimiste par SHA-256 pour ne pas Ă©craser silencieusement un changement fait entre-temps dans l'Ă©diteur ; les mutations de scĂšne passent par EditorUndoRedoManager — un Ctrl-Z suffit toujours Ă  annuler.

  • Multi-Ă©diteur. Plusieurs projets Godot peuvent se connecter en mĂȘme temps ; godot_status {"select": "..."} Ă©pingle celui qui doit recevoir les appels au lieu de tomber sur le premier connectĂ© par hasard.

  • Les opĂ©rations longues ne timeout plus. godot_call {"async": true} rend la main immĂ©diatement avec un job_id Ă  relire via godot_job — un stress test de 60s ne meurt plus au bout de 30.

  • CompatibilitĂ© de version fine. Chaque mĂ©thode dĂ©clare la version Godot minimale qu'elle requiert ; sur un moteur plus ancien, seules ces mĂ©thodes-lĂ  disparaissent du catalogue au lieu de faire Ă©chouer tout l'addon.

  • Capture d'erreurs structurĂ©e, pas du scraping d'UI : les erreurs runtime sont interceptĂ©es via le signal debug_data du debugger Godot.

  • Playtesting dĂ©terministe : seed RNG fixĂ©e, tick de simulation fixe, snapshots d'Ă©tat, avance frame-par-frame (step_frames) ou jusqu'Ă  condition (wait_for_condition) — pour reproduire un bug plutĂŽt que le chasser Ă  l'aveugle.

  • Perception 3D : modes de rendu debug (wireframe, overdraw, Ă©clairage seul
) sur les captures d'Ă©cran, dĂ©tection d'objets qui se chevauchent ou flottent, test de frustum camĂ©ra, couverture des lumiĂšres — un lint spatial pour repĂ©rer ce qu'un screenshot seul ne montre pas.

  • Assets CC0 intĂ©grĂ©s : recherche, prĂ©visualisation et import direct depuis Poly Haven et ambientCG, sans quitter la conversation.

Related MCP server: GoPeak

Installation

Deux commandes, zéro build, pas de clone de dépÎt :

# 1. Pose l'addon Godot dans votre projet (addons/godot_mcp/)
npx godot-hands install ./mon-jeu

Activez-le : Projet → Paramùtres du projet → Plugins → godot-hands → Activer

{
  "mcpServers": {
    "godot-hands": {
      "command": "npx",
      "args": ["-y", "godot-hands"]
    }
  }
}

Préférez installer une bonne fois pour toutes ? npm install -g godot-hands, puis "command": "godot-hands" dans la config. Le paquet npm embarque le plugin Godot : la sous-commande install le copie depuis node_modules (ou copiez manuellement node_modules/godot-hands/plugin/ vers addons/godot_mcp/, c'est équivalent).

Outils

Outil

Description

godot_call

Appelle n'importe quelle méthode du catalogue (async: true pour les appels longs)

godot_list_methods

Liste les méthodes par catégorie (en direct depuis l'éditeur connecté)

godot_describe

Schéma complet (paramÚtres, types, annotations) d'une ou plusieurs méthodes

godot_info

Infos projet

godot_screenshot

Capture éditeur en PNG

godot_execute

Exécute du GDScript

godot_status

Vérifie la connexion, épingle un éditeur (select) si plusieurs sont connectés

godot_job

Relit le résultat d'un appel async: true

godot_doctor

Diagnostic complet : port, connexion, auth, contrat addon/serveur, binaire Godot

godot_assets

Recherche/prévisualise/importe des assets CC0 (Poly Haven, ambientCG)

Confirmation obligatoire (confirm: true) : les méthodes qui écrivent ou suppriment un fichier sur disque, modifient project.godot, ou exécutent du code arbitraire dans le process éditeur/jeu (create_scene, delete_scene, edit_script, execute_editor_script, set_project_setting, etc.) refusent l'appel avec l'erreur -32009 tant que params.confirm n'est pas true. godot_describe liste ce paramÚtre dans le schéma de chaque méthode concernée. Les mutations de la scÚne éditée (ajout/suppression de nodes, changement de propriétés, CSG, scatter
) ne sont pas gatées : elles passent par EditorUndoRedoManager et un simple Ctrl-Z suffit à les annuler.

godot_assets effectue des requĂȘtes rĂ©seau sortantes vers polyhaven.com et ambientcg.com. import Ă©crit les fichiers dans <projet>/assets/<provider>/<id>/ (chemin obtenu via get_project_info) puis dĂ©clenche un rescan du projet. Sources CC0 uniquement (domaine public, aucune attribution lĂ©galement requise) ; une note NOTICE.txt est Ă©crite Ă  cĂŽtĂ© de chaque asset importĂ©.

Chemins de nodes : les paramĂštres parent_path et node_path de godot_call (ex. add_node, update_property, delete_node) sont toujours relatifs Ă  la racine de la scĂšne actuellement Ă©ditĂ©e ("." = racine de la scĂšne). Les chemins absolus Godot ("/root", "../...") sont rejetĂ©s — ils cibleraient l'arbre interne de l'Ă©diteur au lieu de la scĂšne.

Handles de session : tout paramĂštre node_path accepte aussi un handle (chaĂźne "@id:<n>", renvoyĂ©e sous "handle" par get_scene_tree, add_node, rename_node, etc.) Ă  la place d'un chemin. Un handle continue de dĂ©signer le mĂȘme node aprĂšs un renommage ou un dĂ©placement dans la scĂšne, contrairement Ă  un chemin qui casse dĂšs que l'un des deux se produit — utile pour enchaĂźner plusieurs appels sur le node qu'on vient de crĂ©er/modifier. Un handle expire si la scĂšne est rechargĂ©e/refermĂ©e ; rappelez get_scene_tree pour en obtenir un nouveau.

godot_screenshot nécessite un éditeur avec rendu actif : il ne fonctionne pas en mode --headless (erreur "Could not get image from viewport").

Ressources et prompts MCP

En plus des outils, le serveur expose l'Ă©tat du projet en ressources (gratuites en tokens tant qu'elles ne sont pas lues, contrairement aux outils) : godot://scene/current, godot://project/info, godot://project/settings, godot://logs/recent, et le template godot://class/{name} (rĂ©flexion ClassDB, mise en cache 5 min — les classes du moteur ne changent pas en cours de session).

Quatre prompts réutilisables guident les workflows pour lesquels ce serveur a été conçu : blockout-3d-level, diagnose-crash, audit-scene-perf, asset-strategy.

godot_assets {action: "import"} envoie des notifications de progression (notifications/progress) si le client fournit un progressToken — le tĂ©lĂ©chargement peut prendre du temps sur une connexion lente.

Arborescence

godot-hands/
├── plugin/              ← Plugin Godot (embarquĂ© dans le paquet npm)
├── src/index.ts         ← Serveur MCP (Node.js)
├── src/assets/          ← Sourcing d'assets CC0 (Poly Haven, ambientCG)
├── package.json
├── tsconfig.json
├── README.md
└── LICENSE              ← MIT

Développement

npm test           # tests unitaires (vitest), y compris le contract-check addon/serveur
npm run contract    # contract-check seul : get_commands()/get_command_schemas() alignés, modules enregistrés
npm run test:godot  # tests GDScript en --headless (nécessite `godot`/`godot4` sur le PATH ou GODOT_BIN)
npm run token-cost  # mesure le poids en tokens de la surface d'outils (et le contrefactuel si un éditeur est connecté)

Licence

MIT


godot-hands

Give your AI assistant real control of the Godot editor — with 10 tools instead of 100.

AI Assistant <---stdio/MCP---> godot-hands <---WebSocket:6505---> Godot Plugin

Why this one

Most Godot MCP servers expose every addon method as its own MCP tool — 50, 80, sometimes 100+ entries the model has to read and sort through before every single call. The bigger that surface gets, the less reliably an LLM picks the right tool, and the more tokens get burned on tool descriptions before the conversation even starts.

godot-hands takes the opposite bet: 10 tools, one of which (godot_call) opens onto a catalog of 210 methods across ~25 categories (scene, nodes, 3D, physics, animation, shaders, tilemaps, particles, audio, navigation, Android export, testing
), discovered live from the connected editor instead of hardcoded in this repo. The model asks for the schema it actually needs (godot_describe) instead of loading everything up front. Measured result (npm run token-cost): ~1460 tokens for the whole tool surface.

Everything else fits in one sentence: zero runtime dependencies beyond the MCP SDK, no external services, the Godot plugin is a plain WebSocket client — you know exactly what's running and where.

What sets this apart from a plain command runner

  • Guardrails, not just functions. Destructive operations (deleting a file, editing a script, running arbitrary code) require confirm: true; script edits carry an optimistic SHA-256 guard so they can't silently clobber a change made in the editor in the meantime; scene mutations go through EditorUndoRedoManager — a plain Ctrl-Z always undoes them.

  • Multi-editor aware. Several Godot projects can stay connected at once; godot_status {"select": "..."} pins which one receives calls instead of falling back to whichever connected first.

  • Long operations stop timing out. godot_call {"async": true} returns a job_id immediately, polled via godot_job — a 60-second stress test no longer dies at the 30-second mark.

  • Fine-grained version compatibility. Every method declares the minimum Godot version it needs; on an older engine, only those specific methods drop out of the catalog instead of the whole addon failing to load.

  • Structured error capture, not UI scraping: runtime errors are intercepted through Godot's debugger debug_data signal.

  • Deterministic playtesting: fixed RNG seed, fixed simulation tick, state snapshots, frame-by-frame stepping (step_frames) or stepping until a condition holds (wait_for_condition) — reproduce a bug instead of hunting it blind.

  • 3D perception: debug render modes (wireframe, overdraw, lighting only
) on screenshots, overlapping/floating object detection, camera frustum testing, light coverage — a spatial lint for what a single screenshot won't show you.

  • Built-in CC0 assets: search, preview, and import directly from Poly Haven and ambientCG without leaving the conversation.

Setup

Two commands, zero build, no repo clone:

# 1. Drops the Godot addon into your project (addons/godot_mcp/)
npx godot-hands install ./my-game

Enable it: Project → Project Settings → Plugins → godot-hands → Enable

{
  "mcpServers": {
    "godot-hands": {
      "command": "npx",
      "args": ["-y", "godot-hands"]
    }
  }
}

Prefer a permanent install? npm install -g godot-hands, then use "command": "godot-hands" in the config. The npm package ships the Godot plugin itself: the install subcommand copies it out of node_modules (or manually copy node_modules/godot-hands/plugin/ to addons/godot_mcp/ — same thing).

Tools

Tool

Description

godot_call

Call any method in the catalog (async: true for long-running calls)

godot_list_methods

List methods by category (live from the connected editor)

godot_describe

Full schema (params, types, annotations) for one or more methods

godot_info

Project info

godot_screenshot

Editor screenshot in PNG

godot_execute

Run GDScript

godot_status

Check connection, pin an editor (select) when several are connected

godot_job

Poll the result of an async: true call

godot_doctor

End-to-end diagnostic: port, connection, auth, addon/server contract, Godot binary

godot_assets

Search/preview/import CC0 assets (Poly Haven, ambientCG)

Confirmation required (confirm: true): methods that write to or delete a file on disk, modify project.godot, or run arbitrary code in the editor/game process (create_scene, delete_scene, edit_script, execute_editor_script, set_project_setting, etc.) refuse the call with a -32009 error until params.confirm is true. godot_describe lists this parameter in the schema of every gated method. Mutations to the edited scene (adding/removing nodes, property changes, CSG, scatter
) are not gated: they go through EditorUndoRedoManager, so a plain Ctrl-Z undoes them.

godot_assets makes outbound network requests to polyhaven.com and ambientcg.com. import writes files under <project>/assets/<provider>/<id>/ (path learned via get_project_info) and then triggers a project rescan. CC0 sources only (public domain, no attribution legally required); a NOTICE.txt is written next to each imported asset regardless.

Node paths: parent_path and node_path parameters of godot_call (e.g. add_node, update_property, delete_node) are always relative to the root of the currently edited scene ("." = scene root). Absolute Godot paths ("/root", "../...") are rejected — they would target the editor's internal tree instead of the scene.

Session handles: any node_path parameter also accepts a handle (an "@id:<n>" string, returned as "handle" by get_scene_tree, add_node, rename_node, etc.) instead of a path. A handle keeps addressing the same node across a rename or reparent, where a path would break — useful for chaining several calls against the node you just created/modified. A handle goes stale when the scene is reloaded/reopened; call get_scene_tree again for a fresh one.

godot_screenshot requires an editor with active rendering: it does not work in --headless mode ("Could not get image from viewport" error).

MCP resources and prompts

Besides tools, the server exposes project state as resources (free in tokens until actually read, unlike tools): godot://scene/current, godot://project/info, godot://project/settings, godot://logs/recent, and the template godot://class/{name} (ClassDB reflection, cached for 5 minutes — engine classes don't change mid-session).

Four reusable prompts guide the workflows this server was built for: blockout-3d-level, diagnose-crash, audit-scene-perf, asset-strategy.

godot_assets {action: "import"} sends notifications/progress updates if the client supplies a progressToken — the download can take a while on a slow connection.

Development

npm test           # unit tests (vitest), including the addon/server contract-check
npm run contract    # contract-check alone: get_commands()/get_command_schemas() agree, every module registered
npm run test:godot  # headless GDScript tests (needs `godot`/`godot4` on PATH or GODOT_BIN)
npm run token-cost  # measures the tool surface's token weight (and the counterfactual if an editor is connected)

Structure

godot-hands/
├── plugin/              ← Godot plugin (bundled in the npm package)
├── src/index.ts         ← MCP server (Node.js)
├── src/assets/          ← CC0 asset sourcing (Poly Haven, ambientCG)
├── test/                ← vitest suite + headless GDScript fixture project
├── package.json
├── tsconfig.json
├── README.md
└── LICENSE              ← MIT

License

MIT

Available Tools

10 tools
godot_assetsA

Search, preview, and import free CC0 3D assets (Poly Haven, ambientCG) straight into the Godot project. 'search' finds candidates by name/tag; 'preview' returns a thumbnail so you can pick by sight instead of guessing from an id; 'import' downloads into res://assets/// and rescans the project filesystem.

ParametersJSON Schema
NameRequiredDescriptionDefault
idNopreview/import: an asset id from a prior search result
typeNosearch: provider-specific category filter — 'hdris'/'textures'/'models' for Poly Haven, 'Material'/'HDRI'/'Decal'/etc. for ambientCG
limitNosearch: max results, default 20
queryNosearch: text matched against name/tags/categories
actionYes
formatNoimport, Poly Haven only: file format to fetch, e.g. 'jpg'/'exr'/'gltf'; a sensible default is used if omitted
providerNoRestrict to one provider; omit to use both (search) or when unambiguous
resolutionNoimport: resolution to fetch, e.g. '1k'/'2k' (Poly Haven) or '1K'/'2K' (ambientCG); a small default is used if omitted

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description discloses that import downloads files into res://assets/<provider>/<id>/ and rescans the project filesystem, which is meaningful behavioral context beyond the readOnlyHint=false and idempotentHint=false annotations. It does not mention overwrite behavior, network dependency, or auth, but the key side effect of import is clearly stated.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences carry the full purpose and usage: the first gives the high-level capability, the second breaks down each action with its specific behavior. It is front-loaded, contains no fluff, and every phrase adds information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool with three actions, two providers, and eight parameters, the description covers the end-to-end workflow well and gives concrete import destination details. It does not describe the return shape of search or import results, and there is no output schema, which is a minor gap for an agent relying on the returned asset id.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is high (88%), so the schema already documents most parameters. The description adds workflow-level meaning by tying id/provider to preview/import and showing the import path, but it does not significantly elaborate on parameters like format, resolution, or limit beyond what the schema provides.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's three verbs—search, preview, and import—and the resource (free CC0 3D assets from Poly Haven and ambientCG). It also explains the different purpose of each action, distinguishing this asset-management tool from the sibling godot_* tools.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives a clear workflow: use 'search' to find candidates, 'preview' to choose by sight instead of guessing from an id, and 'import' to download into the project. It does not explicitly compare against alternative sibling tools, but within this tool the action-selection guidance is clear and practical.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

godot_callA
Destructive

Call any method on the Godot editor addon. See godot_list_methods to browse what's available and godot_describe for a method's full parameter schema. Any 'node_path' parameter also accepts a session handle (the "@id:..." string returned as "handle" by get_scene_tree, add_node, and similar methods) instead of a path — a handle keeps addressing the same node across a rename or reparent, where a path would break. Handles go stale when the scene is reloaded/reopened; get_scene_tree again for fresh ones.

ParametersJSON Schema
NameRequiredDescriptionDefault
asyncNoReturn a job_id immediately instead of blocking. Use for long operations (run_stress_test, run_test_scenario, bake_navigation_mesh, headless commands) which otherwise exceed the 30s request timeout. Poll the result with godot_job.
methodYesMethod name, e.g. get_project_info, get_scene_tree, add_node
paramsNoParameters for the method (varies per method)

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already indicate destructive and non-idempotent behavior, so the bar is lower. The description adds meaningful behavioral context beyond annotations: node_path parameters can accept session handles that survive renames/reparents but go stale on scene reload, and async mode returns a job_id for long operations. This clarifies real operational edge cases.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is front-loaded with the core purpose, then guides the agent to the correct discovery tools, then explains the nontrivial handle behavior and async usage. Every sentence earns its place, and there is no redundant restatement of the schema or annotations.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a generic dispatch tool with no output schema, the description is quite complete: it explains how to discover methods, how to get parameter schemas, how to handle long operations, and the special node_path handle semantics. It does not explicitly state that a non-async call returns the method's result, but this is largely implied and hard to specify generically.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3. The description adds genuine value by explaining the special handle syntax for any node_path parameter, the async boolean's behavior, and pointing to godot_describe for method-specific params. This goes beyond what the schema alone communicates.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific action ('Call any method') on a specific resource ('the Godot editor addon'). It also distinguishes itself from the sibling tools by pointing to godot_list_methods and godot_describe as exploration/preparation tools, making it clear godot_call is the execution entry point.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives clear context: use godot_list_methods to browse and godot_describe for parameter schemas, and use async for long operations that would exceed the 30s timeout. However, it does not explicitly discuss when to prefer godot_call over other execution-like siblings such as godot_execute, so it lacks full exclusion guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

godot_describeA
Read-onlyIdempotent

Get the full parameter schema (types, required/optional, defaults, annotations) for one or more godot_call methods.

ParametersJSON Schema
NameRequiredDescriptionDefault
methodsYesMethod names, e.g. ["add_node", "update_property"]

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already establish read-only, idempotent, and non-destructive behavior. The description adds useful context beyond those annotations by specifying what is returned: types, required/optional status, defaults, and annotations. This clarifies the tool's output scope without contradicting the safety hints.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, well-structured sentence with no filler. It front-loads the action and resource, then packs the relevant detail about output contents and batch support.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple introspection tool with one parameter and rich annotations, the description covers what the tool returns and what input it expects. It does not explain the exact response structure, but the phrase 'full parameter schema' with enumerated components is sufficient for an agent to call the tool correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with a descriptive methods field, but the description adds meaning by clarifying that the method names are 'godot_call methods' and that the result is a full parameter schema. This helps an agent understand what to pass and what to expect, going slightly beyond the bare schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses the specific verb 'Get' and names the exact resource: 'full parameter schema' for godot_call methods. It clearly distinguishes this tool from siblings like godot_call (execution) and godot_list_methods (listing), making the intent unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies the tool should be used when an agent needs parameter schema details for godot_call methods, but it never explicitly states when to use it versus alternatives, nor mentions exclusions. There is no direct comparison with sibling tools such as godot_list_methods or godot_call, so the agent must infer the selection logic.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

godot_doctorA
Read-onlyIdempotent

Diagnose the MCP bridge end-to-end (port, editor connection, auth, addon/server contract, Godot binary for headless tests) with a checklist and fix suggestions for anything failing.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already mark it read-only and idempotent, and the description is consistent with that by saying it diagnoses and suggests fixes rather than applying them. It adds useful behavioral context by enumerating the bridge layers inspected and the checklist/fix-suggestion output form.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is one dense sentence that front-loads the main action and resource, then uses a parenthetical list to communicate the scope without padding. Every clause contributes information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a no-parameter diagnostic tool with safety annotations, the description is complete: an agent knows what will be checked, what the output will look like at a high level, and that the operation is safe. No output schema exists, but the description's checklist/fix-suggestion statement gives enough expectation of return content.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With zero parameters, the schema is fully covered and no parameter documentation is needed. The description's specification of exactly what is diagnosed compensates for any lack of input details; baseline 4 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with the specific verb 'Diagnose' and a concrete resource, 'the MCP bridge', then scopes it end-to-end with named layers (port, editor connection, auth, addon/server contract, Godot binary). This distinguishes it from siblings like godot_status or godot_info by promising a full diagnostic checklist plus fix suggestions.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It clearly conveys when to use it: when a full end-to-end diagnosis of the MCP bridge is needed, including port, connection, auth, contract, and binary. It stops short of explicitly naming alternatives or stating when not to use it, so no exclusions; that is why it doesn't get a 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

godot_executeA
Destructive

Execute GDScript code in the Godot editor (shorthand for godot_call method=execute_editor_script).

ParametersJSON Schema
NameRequiredDescriptionDefault
codeYesGDScript code to execute in the editor

TDQS

A3.9/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The annotations already declare destructiveHint=true and readOnlyHint=false, so the safety profile is explicit. The description itself adds no warning about arbitrary code side effects or a caution to use carefully; it only adds the shorthand routing detail, so it contributes limited behavioral context beyond the annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

One clean, front-loaded sentence conveys the core action and the parenthetical adds a useful routing note without filler. Every word earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For an arbitrary-code execution tool there is no output schema and no mention of return values, failures, or side-effect warnings beyond the annotation. It is sufficient to select and invoke, but for an execution primitive it leaves result/error behavior unspecified.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%; the code parameter already has a full description. The tool description does not add further parameter-level meaning, so it does not need to compensate and the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description states a specific verb and resource: 'Execute GDScript code in the Godot editor'. It also clarifies that this is a shorthand wrapper for godot_call method=execute_editor_script, which distinguishes it from the other godot_* siblings.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives a clear usage context: this tool is the shorthand form for godot_call with method=execute_editor_script. It does not explicitly state when to avoid it or list alternatives beyond godot_call, so it misses a small amount of routing guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

godot_infoA
Read-onlyIdempotent

Get project info from the Godot editor (shorthand for godot_call method=get_project_info).

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, openWorldHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is fully covered. The description adds that it delegates to godot_call with method=get_project_info, which is mildly useful, but it does not describe what 'project info' contains or how the result is returned. With annotations covering the main behavior, this is adequate but not rich.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single, front-loaded sentence that conveys purpose and the delegation relationship with no wasted words. It is appropriately concise for a zero-parameter tool.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a zero-parameter, read-only info retrieval tool, the description provides enough to understand its role and invocation path. The lack of an output schema and any detail about the structure of 'project info' is a minor gap, but not critical for such a simple shorthand wrapper.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has zero parameters, and schema description coverage is 100%, so there is no parameter burden for the description to carry. Baseline for zero parameters is 4, and the description adds no parameter-specific clutter.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('Get') and resource ('project info from the Godot editor'), and explicitly identifies itself as a shorthand for godot_call method=get_project_info, clearly distinguishing it from sibling tools. An agent can understand exactly what this tool does without inspecting schemas.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description clarifies that this tool is a shorthand for a specific godot_call invocation, implying it should be used when the agent wants project info without crafting a full method call. It does not explicitly describe when to prefer godot_call or other siblings, but the convenience-wrapper relationship gives sufficient routing context.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

godot_jobA
Read-onlyIdempotent

Check an async job started by godot_call with async:true. Returns its status and, once finished, its result or error.

ParametersJSON Schema
NameRequiredDescriptionDefault
job_idYesThe job_id returned by godot_call

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already provide the safety profile (read-only, idempotent, non-destructive), and the description adds meaningful behavioral detail: the tool returns status first, then result or error once finished. This goes beyond the schema and annotations, though it leaves polling semantics implicit.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short, dense sentences lead with the action and then describe the result behavior. There is no filler or redundancy; every word contributes.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple one-parameter, read-only tool with robust annotations, the description covers what it checks and what it returns. It does not detail status formats or polling behavior, but that is not essential for an agent to invoke it correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The single parameter, job_id, is fully documented in the schema ('The job_id returned by godot_call'), so schema coverage is 100%. The description reinforces the linkage to godot_call but does not add new parameter-level meaning. Baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the operation ('Check'), the resource ('an async job'), and the originating call ('godot_call with async:true'). This separates it from sibling tools like godot_call and godot_execute without ambiguity.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives a clear trigger for using this tool: after starting an async job with godot_call's async:true. It does not explicitly list exclusion cases or name alternatives, but the intended usage context is unmistakable.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

godot_list_methodsA
Read-onlyIdempotent

List available Godot addon methods, live from the connected editor. Call with no arguments for category counts, or with a category to list its methods and one-line summaries.

ParametersJSON Schema
NameRequiredDescriptionDefault
categoryNoOptional category filter, e.g. project, scene, node, script, editor, 3d, physics — call with no category first to see what's available

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already establish safe read-only, idempotent behavior. The description adds meaningful behavioral context: results are 'live from the connected editor' and output differs based on whether a category is supplied. No contradiction with annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two concise sentences with no filler. The core purpose is front-loaded, and the two usage modes are clearly separated. Every sentence earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple single-parameter listing tool, the description is complete: it states what is returned in both invocation modes, and the annotations cover safety and side-effect behavior. No output schema exists, but the description adequately conveys the shape of results.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema already covers the single optional parameter at 100%, including examples. The description reinforces this by explaining the no-argument vs. with-category behavior and reiterates the discovery workflow, adding value beyond the raw schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource: 'List available Godot addon methods, live from the connected editor.' This is clear and unambiguous, though it does not explicitly differentiate itself from sibling tools like godot_describe or godot_info.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives concrete call patterns: 'Call with no arguments for category counts, or with a category to list its methods and one-line summaries.' However, it does not explain when to choose this tool over alternatives or mention scenarios where another sibling would be more appropriate.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

godot_screenshotA
Read-onlyIdempotent

Capture the Godot editor viewport. Returns base64 PNG image data.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, openWorldHint, idempotentHint, and non-destructive behavior, so the safety profile is covered. The description adds only the output format and does not disclose conditions like whether the editor must be running or whether the capture can fail, but this is acceptable given the simple read-only nature.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short sentences with the action and target front-loaded, followed by the return format. There is no filler, repetition, or irrelevant information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a no-parameter, read-only tool with annotations covering the safety profile, this description is complete enough for an agent to select and invoke it. It names the action, the target, and the output encoding, so no critical information is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has zero parameters, so there are no parameter semantics to document. The 0-params baseline applies, and the description neither adds nor needs parameter details.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific action ('Capture'), a specific target ('the Godot editor viewport'), and a concrete output contract ('Returns base64 PNG image data'). This clearly differentiates it from sibling tools like godot_execute or godot_status, which handle actions or status rather than visual snapshots.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description makes the use case obvious: use it when a visual snapshot of the editor viewport is needed. It does not explicitly name alternatives or exclusions, but no sibling tool appears to compete with screenshot functionality, so the omission is minor.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

godot_statusA
Idempotent

Check connection status to the Godot editor. With 'select', pins which editor subsequent calls go to when several are connected.

ParametersJSON Schema
NameRequiredDescriptionDefault
selectNoProject name or path fragment of the editor to pin for subsequent calls

TDQS

A3.9/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already provide idempotentHint=true and destructiveHint=false. The description adds useful behavioral context by disclosing that the 'select' parameter pins a specific editor for subsequent calls when multiple editors are connected. It does not contradict the annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences with no filler. The primary purpose is stated first, and the optional selection behavior is added in the second sentence without redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple tool with one optional parameter and no output schema, the description is nearly complete: it states the core function and the selection side effect. A minor gap is that it does not describe what the status output includes, but this is not critical given the lack of an output schema.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema already documents 'select' as a project name or path fragment for pinning an editor. The description adds the condition 'when several are connected', clarifying the situational effect of the parameter beyond the raw schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('Check') and resource ('connection status to the Godot editor'), and also describes the optional 'select' behavior that pins an editor. This distinguishes it from sibling tools like godot_info or godot_execute, though it does not explicitly name an alternative.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies when to use the tool: to check connection status and optionally select which editor subsequent calls target. However, it does not explicitly state when to prefer this over siblings or provide exclusion criteria, leaving some usage context to inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.

  1. 10 tool updatesv1.0.0
    • First observedgodot_assets
    • First observedgodot_call
    • First observedgodot_describe
    • First observedgodot_doctor
    • First observedgodot_execute
    • First observedgodot_info
    • First observedgodot_job
    • First observedgodot_list_methods
    • First observedgodot_screenshot
    • First observedgodot_status

TDQS

A4.2/5.0
Disambiguation4/5

Each tool has a clearly identifiable role: browsing, describing, calling, executing, capturing, status checking, job polling, diagnostics, and asset management. The main ambiguity is between the generic godot_call and the shorthands like godot_execute and godot_info, but their descriptions explicitly frame them as shorthands, which mitigates confusion.

Naming Consistency4/5

All tools share a consistent godot_ prefix and snake_case style, making them easy to group and predict. However, naming mixes verb-based names like godot_call and godot_execute with noun-based names like godot_info, godot_status, and godot_assets, so it is not a strict verb_noun pattern throughout.

Tool Count5/5

With 10 tools, the server is well-scoped: it covers generic invocation, method discovery, descriptions, project info, screenshots, script execution, connection status, async jobs, diagnostics, and asset import. Each tool earns its place, and the count is appropriate for a Godot editor integration surface.

Completeness5/5

The generic godot_call plus godot_list_methods and godot_describe provide comprehensive access to the addon API, while shorthands cover the most common operations. Async job handling, connection diagnostics, and asset search/preview/import fill out the workflow with no obvious dead ends.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

  • F
    license
    C
    quality
    F
    maintenance
    Enables AI assistants to control Godot game engine projects through a WebSocket bridge. Supports scene editing, node manipulation, script management, and project introspection via 163 registered tools.
    100
    1
    -
  • A
    license
    Not graded
    quality
    A
    maintenance
    Enables AI assistants to edit, run, inspect, and fix Godot 4 projects through an MCP server with dynamic tool groups and setup-gated capabilities.
    231
    248
    MIT
  • F
    license
    A
    quality
    C
    maintenance
    Provides AI assistants with tools to launch the Godot editor, run projects, manipulate scenes, manage scripts, and control node properties through a standardized MCP interface.
    21
    -
  • A
    license
    C
    quality
    A
    maintenance
    Godot MCP connects AI assistants directly to the Godot editor, exposing 300+ tools for scene construction, node manipulation, runtime inspection, input recording, physics setup, animation authoring, and more.
    100
    72
    20
    MIT

Latest Blog Posts

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/WindSeries83/godot-mcp'

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