MCP server for interacting with the Scryfall MTG API
Godotwright is installed from its publisher's own source and answers where it runs, so this marketplace is not in the path of a single call. There is no address here to send one to, and a panel that pretended otherwise would be showing you an answer we made up. Install it and call it from your own client — the Installation tab has the entry for each one.
What it does
Godot 4.7 for coding agents: offline API, checks, review, safe edits, tests, play, 3D models.
Quickstart
# 1 — add it to Claude Code
claude mcp add --scope user godotwright-mcp '--' npx -y godotwright mcp
# 2 — ask your agent for something these tools do
# godot_scan, godot_api, godot_api_search and 30 more
Godotwright costs nothing on mcprush: there is no plan to choose here, no cap to set and nothing mcprush can bill you for.
Collected from a public index. Nobody has claimed this account, so nothing here was written by its author — claim it if it is yours.
Where are you running it?
Every route below installs the same thing and ends at the same approval screen. This one runs on your machine: your client starts Godotwright as a process under your own user, with your files and your network, so the tool surface below is what it can do to your computer rather than to a server somewhere else. Its scan result is on the Security tab — read the surface before you approve it.
This is a public server: you run it yourself and this marketplace is not in the path. You need Node.js — the current LTS (24) is the safe choice; npx comes with it. Claude Code registers it in one command; --scope user makes it available in every project. The '--' is in quotes so that PowerShell passes it on.
claude mcp add --scope user godotwright-mcp '--' npx -y godotwright mcpReconnect, or start a new session, and the tools appear in the model’s tool list.
Nothing is required, but it can take GODOT (Godot 4.7 binary for godot_check (default: godot on PATH)) if you want to set it.
One config entry your client uses to start the process locally. A local server runs with your file system and your network, which is why it is priced without metering.
33 tools, with what each one reads, writes and reaches shown before you agree — the same list on every route above. Read the tool surface.
Tool surface
What the model actually sees. Descriptions are diffed on every release — see version history.
Read from its source code. A server that builds its tool list when it starts can list more tools than this.
Map a Godot 4 project without running Godot: scenes with node trees, scripts with class_name, signals, functions and exports, autoloads, input actions, key settings, and broken references. Call this first.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| path | string | no | Project directory or a path inside it (default: the current project). |
| detail | string | no | Output detail (default for this … profile: …). |
Exact lookup in the official Godot 4.7 class reference (offline): Class, Class.member, Class.Enum.VALUE, @annotation or a global function. Follows inheritance, gives the exact signature, and translates Godot 3 names. Use it before calling any engine API you are not sure about.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| query | string | yes | e.g. CharacterBody2D.move_and_slide, Node.ready, @export_range, lerp, Tween |
| detail | string | no | Output detail (default for this … profile: …). |
Search class, method, property and signal names, keywords and descriptions in the Godot 4.7 class reference, best matches first.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| query | string | yes | words, e.g. 'raycast 3d', 'change scene', 'is on floor' |
| limit | integer | no | max results (default 10) |
Static AAA review of the project, no Godot needed: API correctness (Godot 3 code, unknown classes, functions, members, signals, wrong argument counts, missing input actions), performance, code quality and structure, with a 0-100 score per category. Pass files to list only findings in files you…
| Parameter | Type | Required | Notes |
|---|---|---|---|
| path | string | no | Project directory or a path inside it (default: the current project). |
| files | array | no | only show findings in these res:// files |
| code | string | no | unsaved GDScript to review in place of the file on disk |
| file | string | no | res:// path the code belongs to (required with code) |
| only_new | boolean | no | show only what changed since the last review of this project (saves tokens in a fix loop) |
| detail | string | no | Output detail (default for this … profile: …). |
Find every place a name is used in the project, offline and without the editor: a function, signal, variable, constant, class_name, autoload, input action, group or node name, or a res:// path / uid:// (which files refer to it, and whether it exists). Looks in GDScript code (not comments), in…
| Parameter | Type | Required | Notes |
|---|---|---|---|
| name | string | yes | what to look for, e.g. take_damage, health_changed, Player, jump, res://scenes/enemy.tscn |
| path | string | no | Project directory or a path inside it (default: the current project). |
Rename a function, signal, variable, class_name, autoload, input action, group or node name everywhere it is used (GDScript, scene connections, node paths, groups, project settings), or move a res:// file together with its .uid and .import files and every reference to it. Without write it…
| Parameter | Type | Required | Notes |
|---|---|---|---|
| from | string | yes | the current name, or a res:// path |
| to | string | yes | the new name, or the new res:// path |
| write | boolean | no | apply the rename (default false: show the plan only) |
| path | string | no | Project directory or a path inside it (default: the current project). |
Change project.godot safely, without the editor: set or unset a setting (name and type checked against the Godot 4.7 reference), add events to an input action or remove it, add or remove an autoload (the file must exist and be a Node script or a scene; the name must not clash with a class). Only…
| Parameter | Type | Required | Notes |
|---|---|---|---|
| op | string | yes | what to change |
| key | string | no | set/unset: the setting path, e.g. display/window/size/viewport_width |
| value | string | no | set: the value, e.g. 1920, true, 1.5, a text, res://main.tscn or Vector2i(1920, 1080) |
| action | string | no | input_add/input_remove: the action name, e.g. jump |
| events | array | no | input_add: events such as Key:Space, Mouse:Left, JoyButton:0, JoyAxis:1- |
| deadzone | number | no | input_add: deadzone of a new action (default 0.2) |
| name | string | no | autoload_add/autoload_remove: the autoload name, e.g. Game |
| file | string | no | autoload_add: res:// path of the script or scene |
| global | boolean | no | autoload_add: make a global variable (default true) |
| write | boolean | no | write the change (default false: show the diff only) |
| path | string | no | Project directory or a path inside it (default: the current project). |
Change a .tscn safely, without the editor: add a node (a Godot class or an instanced scene), remove a node (with its children, connections and the resources only it used), set a property (name and type checked against Godot 4.7; enums by name, resources as res:// files), connect or disconnect a…
| Parameter | Type | Required | Notes |
|---|---|---|---|
| scene | string | yes | the scene: res://main.tscn, or a path |
| op | string | yes | what to change |
| node | string | no | remove_node/set/attach_script: path of the node ("." is the root) |
| parent | string | no | add_node: path of the parent ("." is the root) |
| name | string | no | add_node: name of the new node |
| type | string | no | add_node: a Godot node class, e.g. Sprite2D |
| instance | string | no | add_node: a res:// scene to instance instead of a type |
| property | string | no | set: property name, e.g. position |
| value | string | no | set: the value, e.g. Vector2(10, 20), 3, true, ALWAYS, res://icon.svg, null |
| from | string | no | connect/disconnect: path of the node that emits |
| signal | string | no | connect/disconnect: signal name |
| to | string | no | connect/disconnect: path of the node that receives |
| method | string | no | connect/disconnect: method name |
| script | string | no | attach_script: res:// path of the script |
| write | boolean | no | write the change (default false: show the diff only) |
Rewrite Godot 3 GDScript to Godot 4 where that is mechanical: @export/@onready/@tool, renamed classes, functions, properties and constants, yield() to await, connect()/emit_signal() to signals, funcref() to callables, members that moved (OS.get_ticks_msec() to Time). Strings, comments and node…
| Parameter | Type | Required | Notes |
|---|---|---|---|
| path | string | no | Project directory or a path inside it (default: the current project). |
| write | boolean | no | rewrite the scripts on disk (default false: report only) |
| files | array | no | only these res:// scripts |
| detail | string | no | Output detail (default for this … profile: …). |
Run Godot 4.7 headless on the project: import, load and instantiate every script and scene, and optionally run the main scene (or the scene you name) for run_frames frames and return what it printed. Reports engine errors as res://file:line. Put print() calls in the code you are testing and…
| Parameter | Type | Required | Notes |
|---|---|---|---|
| path | string | no | Project directory or a path inside it (default: the current project). |
| run_frames | integer | no | also run the main scene for this many frames and return its output (default 0; 120 when scene is given) |
| scene | string | no | run this scene (a res:// path) instead of the main scene |
| timeout_seconds | integer | no | timeout per Godot run (default 600) |
Render a scene, or a .glb/.gltf model framed by a camera and lit, to a PNG with Godot 4.7 (Compatibility renderer, works on software OpenGL; on Linux without a display it uses xvfb-run). Returns the picture and a short text: how much of each view is drawn and where, so you can tell an empty or…
| Parameter | Type | Required | Notes |
|---|---|---|---|
| path | string | no | Project directory or a path inside it (default: the current project). |
| scene | string | no | the res:// scene to render (default: the main scene) |
| model | string | no | a .glb or .gltf file to look at instead of a scene |
| views | array | no | camera views for a model or a 3D scene without a camera (default [iso]) |
| width | integer | no | width of one view (default 640) |
| height | integer | no | height of one view (default 360) |
| frames | integer | no | frames to run before the picture (default 10) |
Run a scene in Godot 4.7 headless for a number of physics frames, press and release input actions (or keys, mouse and joypad buttons) on the frames you give, and return a table of the values you watch per frame, plus errors and prints. The game sees each input on exactly that physics frame, and…
| Parameter | Type | Required | Notes |
|---|---|---|---|
| path | string | no | Project directory or a path inside it (default: the current project). |
| scene | string | no | the res:// scene to run (default: the main scene) |
| input | string | no | timeline: "10 press jump; 30 release jump; 40 hold right 20; 50 tap Key:Space" |
| watch | array | no | values to sample: Player.position, Player.velocity.y, Player.is_on_floor() |
| frames | integer | no | physics frames to run (default 120) |
| every | integer | no | sample every n frames (default 10); frames with input and the last frame are always sampled |
| timeout_seconds | integer | no | timeout of the run (default 300) |
Run the project's GUT or GdUnit4 tests in Godot 4.7 headless and return only the totals and the failing tests, each with res://file:line and the failure message, plus script errors from the run. Use it after a change to see whether the tests still pass. Needs Godot on this machine and GUT…
| Parameter | Type | Required | Notes |
|---|---|---|---|
| path | string | no | Project directory or a path inside it (default: the current project). |
| framework | string | no | which framework (default: whichever is installed) |
| dirs | array | no | test folders or scripts as res:// paths (default: the framework's config, else res://test and res://tests) |
| filter | string | no | GUT only: run only tests whose name contains this text |
| timeout_seconds | integer | no | timeout of the run (default 600) |
Tell Godotwright that a godot_review finding was wrong (a false alarm you verified) or right. Pass the finding line exactly as godot_review printed it. Wrong findings are hidden in later reviews on this machine, and Godotwright learns which rules to trust.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| finding | string | yes | the finding line, e.g. res://player.gd:12: error [api/unknown-member] ... |
| verdict | string | yes | — |
The fixed AAA checklist Godotwright reviews against: every rule per category with its fix.
No parameter schema on file.
Say what a thing is before you build or check a 3D model of it: its family, the parts a model needs (and which move, about which axis, with the pivot where), a typical size range with its source and a confidence class, variants, Godot conventions (+Y up, front faces +Z), what to anticipate and the…
| Parameter | Type | Required | Notes |
|---|---|---|---|
| text | string | yes | what you want to make or check, e.g. 'a tractor', 'helikopter', 'wind turbine' |
One page to read before building a 3D model, made for small models: what the thing is, the ready-made kind to start from (with its build command), the parts to name your nodes after, typical size, rules, the usual mistakes, the order of tools to call, and a short spec cheat sheet. Replaces calling…
| Parameter | Type | Required | Notes |
|---|---|---|---|
| text | string | yes | what you want to make, e.g. 'a rowing boat', 'dragon', 'castle wall' |
Explain the model spec: a JSON tree of named parts that godot_model_build turns into a .glb. Includes an example (a small car) and the ready-made kinds with their parameters.
No parameter schema on file.
Build a clean .glb (UVs, tangents, one node per part, same bytes every time) from a ready-made kind or a model spec, write it to out, and lint it. Pass collision so Godot adds collision shapes when it imports the file (most models need one; nobody remembers to add it by hand). If the spec…
| Parameter | Type | Required | Notes |
|---|---|---|---|
| out | string | yes | where to write the .glb, inside the project, e.g. models/car.glb |
| kind | string | no | a ready-made kind: … |
| spec | object | no | a full model spec as a JSON object |
| spec_file | string | no | or a path to a spec JSON file inside the project |
| params | object | no | parameter values, e.g. { width: 9, roof: 'hip' } |
| contract_out | string | no | also write a model.contract.json here (inside the project) |
| collision | string | no | name the meshes so Godot makes collision shapes on import: convex (a hull per mesh, for props and vehicles) or trimesh (exact triangles, for buildings and terrain) |
| detail | string | no | Output detail (default for this … profile: …). |
Score a .glb or .gltf without Godot: flipped faces, open edges, missing normals, UVs or tangents, textures, node names, budgets. Pass archetype (a name such as 'car' or 'helikopter', or an id) to also check it is what it should be: required parts, pivots, wheel axes, size (unit mistakes),…
| Parameter | Type | Required | Notes |
|---|---|---|---|
| file | string | yes | Path to a .glb or .gltf file, inside the project. |
| archetype | string | no | what the model should be, e.g. car, helikopter, vehicle.wheeled.car |
| contract | string | no | a model.contract.json inside the project |
| max_triangles | integer | no | flag a model with more triangles than this |
| detail | string | no | Output detail (default for this … profile: …). |
Look at a .glb or .gltf without Godot or a picture: three views (front, side, top) drawn with letters, one letter per part, then a list of the parts with their sizes and heights, and which parts do not touch the rest of the model (a ladder away from its tree, a wheel without an axle, something…
| Parameter | Type | Required | Notes |
|---|---|---|---|
| file | string | yes | Path to a .glb or .gltf file, inside the project. |
| only | string | no | show one view only |
| width | integer | no | width of the views in characters (default 48) |
Show what is in a .glb or .gltf: the node tree, triangles, materials, textures with a memory estimate, size and lowest point. No Godot needed.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| file | string | yes | Path to a .glb or .gltf file, inside the project. |
| detail | string | no | Output detail (default for this … profile: …). |
No parameter schema on file.
No parameter schema on file.
No parameter schema on file.
No parameter schema on file.
No parameter schema on file.
No parameter schema on file.
No parameter schema on file.
No parameter schema on file.
No parameter schema on file.
No parameter schema on file.
No parameter schema on file.
- Every tool, no call limit
- No card, and mcprush charges nothing for it
- Source published under MIT
- Runs on your machine — nothing of it reaches our gateway
- Nothing to cap, because mcprush bills nothing
What counts against your monthly calls
| Tool | Unit | Calls used | Out of the allowance |
|---|
Nothing here is billable: mcprush charges nothing to install Godotwright or to call it, at any volume.
Two independent axes, because powerful and malicious are different questions. The grade is threat only. The capability level is blast radius, and it is never a penalty on the grade — it is priced as one subtract-only term in the score, where you can see it.
| Term | Level | What it prices | Points |
|---|---|---|---|
| capability-exposure | high | capability blast radius (high) — client exposure if the model is manipulated | −6 |
| verification-discount | source | publisher verification (provenance) — cryptographic build provenance ties the artifact to its source | −0 |
| coverage-honesty | source | inspection depth (source) — how much of the target the scan could see | −0 |
What the scan could actually read
A grade is only as meaningful as its coverage, so the scanner publishes its own depth before it publishes its result.
No tools were enumerated, so prompt-injection, capability and toxic-flow analysis had no tool surface to inspect. To grade a package’s real runtime tools, scan the running server: --command "npx -y <package>".
Capability — what it could do if the model were manipulated
Tags derived from each tool’s schema and the implementation, not from what the tool calls itself. high is the level these add up to.
| Tool | Capability tags | Why the tag was assigned |
|---|---|---|
| No per-tool rows for this release — see the note below. | ||
Toxic-flow graph
The lethal trifecta, checked as a graph rather than as a checklist: untrusted input, a sensitive source and an external sink have to meet before there is a path worth worrying about.
The public result for this release does not print the flow graph, so there is nothing to show here. That is not the same as "no paths were found": what the scan did read is above, under coverage.
Supply chain and provenance
This is the first scan of this surface here, so there is nothing yet to compare it against.
Every result on this tab comes from one deterministic pass over the published package — offline, rule by rule, and auditable line by line above. Same methodology version, same bytes, same score.
Release history
Always latest — the install command names no version, so it installs the newest release when it runs; the current release on file is 0.6.0. Pin a release below and the command asks for exactly that one.
No release note was published with this version.
No release note was published with this version.
No release note was published with this version.
No release note was published with this version.
No release note was published with this version.
No release note was published with this version.
- The version this listing was on when mcprush began following its releases. The registry was not asked when it shipped, so this row carries no date.
One review per account, from a signed-in account that does not publish this listing. Nothing else is asked — you can say what you think before you install it. Publishers can reply once per review, and a review can be edited or deleted by whoever wrote it.
Any signed-in account that does not publish Godotwright can review it, once — before installing it or after. A review from an account that has installed it is marked as one.
Nobody has reviewed this listing. The rating on the card is the mean of the reviews written here and nothing else, so there is no rating until somebody writes the first — which takes a signed-in account that does not publish it, and nothing else.