godot-mcp
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@godot-mcpcheck the connection status of the Godot editor"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
đ«đ· Français · đŹđ§ English
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 GodotPourquoi 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 parEditorUndoRedoManagerâ 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 unjob_idĂ relire viagodot_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_datadu 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-jeuActivez-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 |
| Appelle n'importe quelle méthode du catalogue ( |
| Liste les méthodes par catégorie (en direct depuis l'éditeur connecté) |
| Schéma complet (paramÚtres, types, annotations) d'une ou plusieurs méthodes |
| Infos projet |
| Capture éditeur en PNG |
| Exécute du GDScript |
| Vérifie la connexion, épingle un éditeur ( |
| Relit le résultat d'un appel |
| Diagnostic complet : port, connexion, auth, contrat addon/serveur, binaire Godot |
| 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, modifientproject.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-32009tant queparams.confirmn'est pastrue.godot_describeliste 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 parEditorUndoRedoManageret un simple Ctrl-Z suffit Ă les annuler.
godot_assetseffectue des requĂȘtes rĂ©seau sortantes verspolyhaven.cometambientcg.com.importĂ©crit les fichiers dans<projet>/assets/<provider>/<id>/(chemin obtenu viaget_project_info) puis dĂ©clenche un rescan du projet. Sources CC0 uniquement (domaine public, aucune attribution lĂ©galement requise) ; une noteNOTICE.txtest Ă©crite Ă cĂŽtĂ© de chaque asset importĂ©.
Chemins de nodes : les paramĂštres
parent_pathetnode_pathdegodot_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_pathaccepte aussi un handle (chaĂźne"@id:<n>", renvoyĂ©e sous"handle"parget_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 ; rappelezget_scene_treepour en obtenir un nouveau.
godot_screenshotné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 â MITDĂ©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 PluginWhy 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 throughEditorUndoRedoManagerâ 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 ajob_idimmediately, polled viagodot_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_datasignal.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-gameEnable 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 |
| Call any method in the catalog ( |
| List methods by category (live from the connected editor) |
| Full schema (params, types, annotations) for one or more methods |
| Project info |
| Editor screenshot in PNG |
| Run GDScript |
| Check connection, pin an editor ( |
| Poll the result of an |
| End-to-end diagnostic: port, connection, auth, addon/server contract, Godot binary |
| Search/preview/import CC0 assets (Poly Haven, ambientCG) |
Confirmation required (
confirm: true): methods that write to or delete a file on disk, modifyproject.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-32009error untilparams.confirmistrue.godot_describelists 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 throughEditorUndoRedoManager, so a plain Ctrl-Z undoes them.
godot_assetsmakes outbound network requests topolyhaven.comandambientcg.com.importwrites files under<project>/assets/<provider>/<id>/(path learned viaget_project_info) and then triggers a project rescan. CC0 sources only (public domain, no attribution legally required); aNOTICE.txtis written next to each imported asset regardless.
Node paths:
parent_pathandnode_pathparameters ofgodot_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_pathparameter also accepts a handle (an"@id:<n>"string, returned as"handle"byget_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; callget_scene_treeagain for a fresh one.
godot_screenshotrequires an editor with active rendering: it does not work in--headlessmode ("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 â MITLicense
MIT
Available Tools
10 toolsgodot_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.
| Name | Required | Description | Default |
|---|---|---|---|
| id | No | preview/import: an asset id from a prior search result | |
| type | No | search: provider-specific category filter â 'hdris'/'textures'/'models' for Poly Haven, 'Material'/'HDRI'/'Decal'/etc. for ambientCG | |
| limit | No | search: max results, default 20 | |
| query | No | search: text matched against name/tags/categories | |
| action | Yes | ||
| format | No | import, Poly Haven only: file format to fetch, e.g. 'jpg'/'exr'/'gltf'; a sensible default is used if omitted | |
| provider | No | Restrict to one provider; omit to use both (search) or when unambiguous | |
| resolution | No | import: resolution to fetch, e.g. '1k'/'2k' (Poly Haven) or '1K'/'2K' (ambientCG); a small default is used if omitted |
TDQS
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.
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.
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.
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.
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.
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_callADestructive
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.
| Name | Required | Description | Default |
|---|---|---|---|
| async | No | Return 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. | |
| method | Yes | Method name, e.g. get_project_info, get_scene_tree, add_node | |
| params | No | Parameters for the method (varies per method) |
TDQS
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.
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.
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.
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.
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.
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_describeARead-onlyIdempotent
Get the full parameter schema (types, required/optional, defaults, annotations) for one or more godot_call methods.
| Name | Required | Description | Default |
|---|---|---|---|
| methods | Yes | Method names, e.g. ["add_node", "update_property"] |
TDQS
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.
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.
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.
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.
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.
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_doctorARead-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.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
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.
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.
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.
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.
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.
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_executeADestructive
Execute GDScript code in the Godot editor (shorthand for godot_call method=execute_editor_script).
| Name | Required | Description | Default |
|---|---|---|---|
| code | Yes | GDScript code to execute in the editor |
TDQS
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.
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.
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.
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.
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.
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_infoARead-onlyIdempotent
Get project info from the Godot editor (shorthand for godot_call method=get_project_info).
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
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.
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.
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.
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.
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.
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_jobARead-onlyIdempotent
Check an async job started by godot_call with async:true. Returns its status and, once finished, its result or error.
| Name | Required | Description | Default |
|---|---|---|---|
| job_id | Yes | The job_id returned by godot_call |
TDQS
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.
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.
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.
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.
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.
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_methodsARead-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.
| Name | Required | Description | Default |
|---|---|---|---|
| category | No | Optional category filter, e.g. project, scene, node, script, editor, 3d, physics â call with no category first to see what's available |
TDQS
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.
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.
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.
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.
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.
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_screenshotARead-onlyIdempotent
Capture the Godot editor viewport. Returns base64 PNG image data.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
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.
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.
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.
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.
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.
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_statusAIdempotent
Check connection status to the Godot editor. With 'select', pins which editor subsequent calls go to when several are connected.
| Name | Required | Description | Default |
|---|---|---|---|
| select | No | Project name or path fragment of the editor to pin for subsequent calls |
TDQS
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.
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.
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.
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.
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.
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.
10 tool updates
v1.0.0- First observed
godot_assets - First observed
godot_call - First observed
godot_describe - First observed
godot_doctor - First observed
godot_execute - First observed
godot_info - First observed
godot_job - First observed
godot_list_methods - First observed
godot_screenshot - First observed
godot_status
TDQS
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.
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.
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.
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
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
A comprehensive Model Context Protocol (MCP) server that enables AI assistants to control Unreal EâŠ
Live browser debugging for AI assistants â DOM, console, network via MCP.
Nifty's MCP server â exposes tasks, projects, messages, and files as tools for AI agents.
Self-hosted MCP gateway: turn any API, database or MCP server into AI connectors â no code.
Related MCP Servers
- FlicenseCqualityFmaintenanceEnables 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.1001-
- AlicenseNot gradedqualityAmaintenanceEnables AI assistants to edit, run, inspect, and fix Godot 4 projects through an MCP server with dynamic tool groups and setup-gated capabilities.231248MIT
- FlicenseAqualityCmaintenanceProvides 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-
- AlicenseCqualityAmaintenanceGodot 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.1007220MIT
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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