GodotLens
PYPI · GODOTLENS-MCP · 2 COMPONENTS
Godot's own view of your GDScript project: code, scenes, and the running game
Available components
Last scanned (17 hours ago)
Scores higher than 97% of PyPI servers
Category Developer Tools
How this component scores in each security and reliability category. Every signal is checked automatically from public evidence about the published package, including repeated runs of it in an isolated sandbox, and we only credit what we can confirm. How we score → Why this is hard to score →
Supply Chain Security100
- No malware found by supply-chain analysis.Pass
- No known CVEs affecting this package version or its production dependencies.Pass
- Runs hatchling.build at install time, a recognised build step with no custom scripting around it. View diagnostics → Pass
- No production dependencies, so there is no dependency health to assess. View diagnostics → Pass
Provenance & Transparency97
- Source repository is publicly reachable at the declared URL. View diagnostics → Pass
- Cryptographically verified build provenance (signed, bound to pzalutski-pixel/godotlens-mcp). View diagnostics → Pass
- Clear OSI-approved license (Apache-2.0).Pass
- Actively maintained (last published 17 days ago).Pass
- Disclosure check failed: no security disclosure policy was found in the source repository. See how to fix → Fail
Schema Quality & AI Usability80
- AI-judged instruction clarity (excellent).Pass
- Context-footprint check failed: tool/resource definitions use about 5414 tokens (~110/item across 49 items; 49 tools + 0 resources), over budget; trim descriptions and params. See how to fix → Fail
- Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management90
- Stability observed for 27 of 30 days with no destabilising changes; credit accrues until the full window elapses.Partial
Tool Coverage100
- 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
- 100% of tool parameters carry a description.Pass
Tool Safety100
- No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.Pass
- All 2 tool(s) whose name or description implies an irreversible operation declare an MCP destructiveHint annotation.Pass
- An AI judge read all 50 captured unit(s) of tool text and found none that tries to manipulate the model reading it.Pass
Capabilities100
- Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.Pass
Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.
- 4 Nov 26 −2
- Stability: pass → 0.90 functional
- 29 Oct 26 +1
- Stability: 0.97 → pass security
- 28 Oct 26 −1
- Stability: pass → 0.97 functional
- 22 Oct 26 +1
- Stability: 0.97 → pass security
- 21 Oct 26 −1
- Stability: pass → 0.97 functional
- 18 Oct 26 +15
- Malware scan: unverified → pass ▲ security
- 17 Oct 26 −3
- Malware scan: pass → unverified ▼ security
- Provenance: fail → pass ▲ security
- Stability: 0.80 → pass security
- The attested source repository moved: pzalutski-pixel/godotlens-mcp security
- Schema quality: 3410 → 5414 ▼ functional
- Package version: 1.1.1 → 1.2.0 functional
- 16 Oct 26 −2
- Stability: pass → 0.80 functional
Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.
Captured 4 Nov 2026 · Analysed pypi/godotlens-mcp@1.2.0
Provenance Verified
A signed build attestation was found and verified, binding this exact artifact to the source repository it claims to come from.
| Result | Verified |
|---|---|
| Ecosystem | pypi |
| Reason | Verified |
| Discovered via | Registry attestation endpoint |
| Source repo | pzalutski-pixel/godotlens-mcp |
| Certificate issuer | https://token.actions.githubusercontent.com |
| Certificate SAN | https://github.com/pzalutski-pixel/godotlens-mcp/.github/workflows/release.yml@refs/tags/v1.2.0 |
| Rekor log index | 3300737129 |
| Predicate type | PyPI publish attestation https://docs.pypi.org/attestations/publish/v1 |
| Subject digest | sha256:85e5af5d8af01d0dff8758132bc47f60271cba04fa46ed437bd82a52fe500102 |
Background: How many MCP packages publish verified provenance →
Install scripts 1 script
| Hook | Tier | Command |
|---|---|---|
| build_backend | allowlisted | hatchling.build |
Background: Why install scripts are a supply-chain risk →
Dependencies 0 packages
| Packages resolved | 0 |
|---|---|
| Tree resolution | Complete |
Background: SBOMs and build attestations, explained →
The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability. A tool's description is untrusted text the model reads on every call, which is what makes this list a security surface and not just an inventory: how tool poisoning works →
debug_continue ~31
Resume a paused game. Returns: confirmation.
| Name | Type | Req | Description |
|---|---|---|---|
| thread_id | integer | – | Thread id (default 1) |
No output schema declared.
No examples provided.
debug_evaluate ~73
Evaluate a GDScript expression in the context of a paused frame. Returns: the resulting value and its type. Use to check state at a breakpoint without adding print() calls and re-running.
| Name | Type | Req | Description |
|---|---|---|---|
| expression | string | yes | GDScript expression |
| frame_id | integer | – | Frame id from debug_stack_trace |
No output schema declared.
No examples provided.
debug_inspect ~66
Inspect variables visible in a stack frame. Returns: each scope (locals, members, globals) with its variables, values and types. Use the frame_id from debug_stack_trace. Only meaningful while execution is paused.
| Name | Type | Req | Description |
|---|---|---|---|
| frame_id | integer | yes | Frame id from debug_stack_trace |
No output schema declared.
No examples provided.
debug_output ~143
Read what a game started with debug_run produced: print() output and stdout/stderr lines, plus structured errors - push_error, push_warning, engine errors and runtime script errors - each with file, function, ZERO-BASED line and call stack. Returns: lines, errors, and their counts. THIS IS THE ONLY WAY to see what the game actually did; the language server reports whether code compiles, not what it printed. Output and errors are drained on each call, so successive calls return only what is new.
| Name | Type | Req | Description |
|---|---|---|---|
| clear | boolean | – | Drain the buffer (default true) |
| wait | number | – | Seconds to wait for output (default 1) |
No output schema declared.
No examples provided.
debug_pause ~47
Pause the running game. Returns: where it stopped. Use to inspect state at an arbitrary moment rather than a preset breakpoint.
| Name | Type | Req | Description |
|---|---|---|---|
| thread_id | integer | – | Thread id (default 1) |
No output schema declared.
No examples provided.
debug_run ~240
Run the project from the open Godot editor and collect what it prints. Returns: captured output, structured errors with call stacks, whether the game exited, and any stop reason. THIS CLOSES THE LOOP: edit, sync, run, and read the actual behaviour, without the developer pressing F5 or pasting console output back. The editor has ONE run slot: a second debug_run stops the first game. Set breakpoints with debug_set_breakpoints BEFORE calling this if you want execution to pause. Long-running games keep going - use debug_output to keep reading and debug_terminate to stop.
| Name | Type | Req | Description |
|---|---|---|---|
| args | array | – | Extra engine flags appended to the game's command line, e.g. ["--headless"] to run with no window, ["--fixed-fps", "60"], ["--debug-collisions"] |
| collect | number | – | Seconds to collect output before returning (default 10) |
| scene | string | – | Which scene to run: 'main' (default), 'current', 'pinned', or a res:// path |
| timeout | number | – | Seconds to wait for the game to start (default 60) |
No output schema declared.
No examples provided.
debug_set_breakpoints ~115
Set breakpoints in a GDScript file, replacing any previously set in that file. Returns: each breakpoint with whether Godot verified it and the line it bound to. IMPORTANT: lines are ZERO-BASED, matching every other tool here. Set these before running the game, then use debug_stack_trace and debug_inspect once execution stops.
| Name | Type | Req | Description |
|---|---|---|---|
| file | string | yes | Path to the .gd file |
| lines | array | yes | Zero-based line numbers. Pass [] to clear all breakpoints in the file. |
No output schema declared.
No examples provided.
debug_stack_trace ~76
Get the call stack where execution is currently paused. Returns: frames with function name, file and ZERO-BASED line, plus why it stopped. An empty frame list means execution is not paused - frames exist only while stopped at a breakpoint or a runtime error.
| Name | Type | Req | Description |
|---|---|---|---|
| thread_id | integer | – | Thread id (default 1) |
No output schema declared.
No examples provided.
debug_status ~60
Check the connection to Godot's debug adapter and report whether the game is running, paused, or finished. The adapter is served by the Godot editor on port 6006 and needs no addon. Use this first if any debug_* tool behaves unexpectedly.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
debug_step_over ~39
Step over one line in the paused game. Returns: the new stop location.
| Name | Type | Req | Description |
|---|---|---|---|
| thread_id | integer | – | Thread id (default 1) |
No output schema declared.
No examples provided.
debug_terminate ~18
Stop the running game. Returns: confirmation.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
gdscript_complete ~152
Get valid completions at a cursor position, from Godot's own completion engine. Returns: candidate labels with kind and detail. IMPORTANT: Uses ZERO-BASED coordinates. This is the only SCENE-AWARE query available: Godot resolves the scene that owns this script and completes against the real node, so $NodePath entries and the signals actually present on that node are included. No analysis of the .gd file alone can reproduce that.
| Name | Type | Req | Description |
|---|---|---|---|
| character | integer | yes | Zero-based character position |
| file | string | yes | Absolute or relative path to the .gd file |
| limit | integer | – | Max items to return (default 100) |
| line | integer | yes | Zero-based line number |
No output schema declared.
No examples provided.
gdscript_definition ~114
Navigate to the definition of a symbol at a given position. Returns: file path and line number where the symbol is defined. IMPORTANT: Uses ZERO-BASED coordinates (editor line 1 = pass line 0). Use when you need to find where a function, variable, or class is defined.
| Name | Type | Req | Description |
|---|---|---|---|
| character | integer | yes | Zero-based character position |
| file | string | yes | Absolute or relative path to the .gd file |
| line | integer | yes | Zero-based line number (editor line - 1) |
No output schema declared.
No examples provided.
gdscript_definitions_batch ~65
Get definitions for multiple symbol positions in a single call. Returns: list of definition locations for each position. IMPORTANT: Uses ZERO-BASED coordinates. More efficient than calling gdscript_definition repeatedly.
| Name | Type | Req | Description |
|---|---|---|---|
| positions | array | yes | List of positions to look up definitions for |
No output schema declared.
No examples provided.
gdscript_diagnostics ~111
Get compiler errors and warnings for one or more files. Returns: list of diagnostics with line, severity (1=Error, 2=Warning, 3=Info, 4=Hint), and message. WORKFLOW: (1) Edit files, (2) gdscript_sync_files to refresh, (3) gdscript_diagnostics to check for errors. Use before committing to catch issues early.
| Name | Type | Req | Description |
|---|---|---|---|
| files | array | yes | List of absolute or relative paths to .gd files to check |
No output schema declared.
No examples provided.
gdscript_engine_api ~126
Get authoritative documentation for a Godot ENGINE class or member, from the exact editor build in use. Returns: signature with argument names, types and defaults, plus documentation. USE THIS instead of recalling Godot's API from memory - it is the ground truth for the user's version and prevents inventing methods that do not exist. Pass 'member' for a specific method/property/signal; omit it to check a class exists.
| Name | Type | Req | Description |
|---|---|---|---|
| class_name | string | yes | Engine class, e.g. CharacterBody2D |
| member | string | – | Method, property or signal name |
No output schema declared.
No examples provided.
gdscript_find ~196
Find where a symbol is declared BY NAME, without needing its position. Returns: declaration sites with file, ZERO-BASED line and character, kind, and containing class. USE THIS FIRST when you know a name but not its location - the returned line/character feed directly into gdscript_references, gdscript_hover and gdscript_rename. Guessing a character offset and landing one column off returns an empty result that looks identical to 'no such symbol'. Positions come from the language server, not from text matching.
| Name | Type | Req | Description |
|---|---|---|---|
| file | string | – | Optional: restrict the search to one file instead of the project |
| include_references | boolean | – | Also return every reference to the first declaration found |
| max_files | integer | – | Cap on files inspected when searching the whole project (default 60). The response reports when the cap applied. |
| name | string | yes | Exact symbol name, e.g. take_damage |
No output schema declared.
No examples provided.
gdscript_hover ~104
Get type information and documentation for a symbol at a given position. Returns: type signature, documentation string, or description of the symbol. IMPORTANT: Uses ZERO-BASED coordinates. Use to understand what type a variable is, or what a function returns.
| Name | Type | Req | Description |
|---|---|---|---|
| character | integer | yes | Zero-based character position |
| file | string | yes | Absolute or relative path to the .gd file |
| line | integer | yes | Zero-based line number (editor line - 1) |
No output schema declared.
No examples provided.
gdscript_references ~108
Find all references to a symbol across the entire project. Returns: list of locations (file, line, character) where the symbol is used. IMPORTANT: Uses ZERO-BASED coordinates. Essential for impact analysis before refactoring: 'What code uses this symbol?'
| Name | Type | Req | Description |
|---|---|---|---|
| character | integer | yes | Zero-based character position |
| file | string | yes | Absolute or relative path to the .gd file |
| line | integer | yes | Zero-based line number (editor line - 1) |
No output schema declared.
No examples provided.
gdscript_references_batch ~73
Find references for multiple symbols in a single call. Returns: list of reference locations for each position. IMPORTANT: Uses ZERO-BASED coordinates. More efficient than calling gdscript_references repeatedly. Use for bulk impact analysis across multiple symbols.
| Name | Type | Req | Description |
|---|---|---|---|
| positions | array | yes | List of positions to find references for |
No output schema declared.
No examples provided.
gdscript_references_in_file ~116
Find occurrences of a symbol within ONE file. Returns: list of line/char positions. IMPORTANT: Uses ZERO-BASED coordinates. Much cheaper than gdscript_references, which reparses every .gd file in the project on Godot 4.6+. Requires Godot 4.7+; reports unsupported otherwise.
| Name | Type | Req | Description |
|---|---|---|---|
| character | integer | yes | Zero-based character position |
| file | string | yes | Absolute or relative path to the .gd file |
| line | integer | yes | Zero-based line number |
No output schema declared.
No examples provided.
gdscript_release_file ~122
Release a file from the LSP session, so Godot stops serving the copy this session opened and reads from disk again. Returns: whether the file was open, and what was actually done. WHEN TO CALL: after deleting a .gd file, or when you want the LSP to forget content you synced earlier. NOTE: Godot removed its file-deletion notification in 4.6, so this cannot purge project-wide state; that clears when the editor rescans.
| Name | Type | Req | Description |
|---|---|---|---|
| file | string | yes | Absolute or relative path to the .gd file |
No output schema declared.
No examples provided.
gdscript_rename ~167
Rename a symbol across all files in the project. Returns: workspace edit with all changes needed. IMPORTANT: Uses ZERO-BASED coordinates. WORKFLOW: (1) gdscript_references to preview impact, (2) gdscript_rename to rename, (3) gdscript_sync_files to refresh LSP state.
| Name | Type | Req | Description |
|---|---|---|---|
| character | integer | yes | Zero-based character position |
| file | string | yes | Absolute or relative path to the .gd file |
| line | integer | yes | Zero-based line number (editor line - 1) |
| new_name | string | yes | New name for the symbol |
| old_name | string | – | Current name of the symbol. Optional but recommended: enables scanning .tscn/.tres files for references Godot cannot see or update. |
No output schema declared.
No examples provided.
gdscript_signature_help ~101
Get function signature and parameter information at a call site. Returns: function name, parameters with types, and return type. IMPORTANT: Uses ZERO-BASED coordinates. Use when you need to know the correct parameters for a function call.
| Name | Type | Req | Description |
|---|---|---|---|
| character | integer | yes | Zero-based character position |
| file | string | yes | Absolute or relative path to the .gd file |
| line | integer | yes | Zero-based line number (editor line - 1) |
No output schema declared.
No examples provided.
gdscript_status ~56
Check connection status to the Godot LSP server. Returns: connection status, host, and port. Use this to verify Godot editor is running before using other tools. If disconnected, start Godot editor with your project open.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
gdscript_symbols ~91
List all symbols (classes, functions, variables, signals, enums) in a file. Returns: symbol tree with name, kind, and line number for each symbol. Use to understand the structure of a file before making changes. WORKFLOW: gdscript_symbols to explore, then gdscript_hover or gdscript_definition for details.
| Name | Type | Req | Description |
|---|---|---|---|
| file | string | yes | Absolute or relative path to the .gd file |
No output schema declared.
No examples provided.
gdscript_symbols_batch ~70
Get symbols from multiple files in a single call. Returns: map of file path to symbol tree for each file. More efficient than calling gdscript_symbols repeatedly. Use to understand the structure of multiple files at once.
| Name | Type | Req | Description |
|---|---|---|---|
| files | array | yes | List of absolute or relative paths to .gd files |
No output schema declared.
No examples provided.
gdscript_sync_file ~121
Notify Godot's LSP that a file was modified and get updated diagnostics. Returns: diagnostics (errors/warnings) for the synced file. WHEN TO CALL: After using Edit/Write tools to modify a .gd file. The LSP does not watch files, so you must call this to refresh analysis. Optionally pass content directly to avoid reading from disk.
| Name | Type | Req | Description |
|---|---|---|---|
| content | string | – | File content to sync (optional, reads from disk if not provided) |
| file | string | yes | Absolute or relative path to the modified .gd file |
No output schema declared.
No examples provided.
gdscript_sync_files ~83
Batch sync multiple modified files with Godot's LSP. Returns: diagnostics for all synced files. WHEN TO CALL: After modifying multiple .gd files with Edit/Write tools. More efficient than calling gdscript_sync_file repeatedly. Reads content from disk for all specified files.
| Name | Type | Req | Description |
|---|---|---|---|
| files | array | yes | List of absolute or relative paths to modified .gd files |
No output schema declared.
No examples provided.
gdscript_validate ~84
Check proposed file content for errors WITHOUT writing it to disk. Returns: valid flag, errors and warnings. WHEN TO CALL: before writing an edit, so broken code never reaches the project. The LSP is restored to the on-disk content afterwards.
| Name | Type | Req | Description |
|---|---|---|---|
| content | string | yes | Full proposed file content |
| file | string | yes | Path the content is intended for |
No output schema declared.
No examples provided.
project_config ~120
Get the project's resolved configuration: autoload singletons, input action names, class_name globals, and the main scene. Autoload and input action names are BARE STRINGS at the point of use - GameState.add_score(1), Input.is_action_pressed("jump") - and nothing validates them. Neither the compiler nor the language server catches a typo; it is a silent runtime no-op. Check names here before writing them. Values come from ProjectSettings via the engine, so defaults and feature-tagged overrides resolve correctly. Requires a Godot binary.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
project_validate ~136
Find references that no longer resolve, project-wide: scene and resource dependencies pointing at moved or deleted files, missing autoload scripts, and a missing main scene. Returns: broken references with the file that holds each, plus stale UIDs (Godot falls back to the text path and warns). WHEN TO CALL: after moving, renaming or deleting files. Nothing else reports these until the reference is loaded at runtime. Uses the engine's own resolution: a reference whose UID still resolves is not broken. Script preload()/extends paths are compile errors - gdscript_diagnostics reports them. Requires a Godot binary; runs no project code.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
runtime_eval ~156
Evaluate an expression in a running game, while it runs - no breakpoint needed. Uses Godot's Expression: calls, operators, member access and constructors, no statements or assignment. Names available: the base node's members (default the current scene), autoloads, engine singletons such as Input, and class_name globals. Calls run for real and may change the game. Returns: the value, or the engine's error text.
| Name | Type | Req | Description |
|---|---|---|---|
| expression | string | yes | e.g. get_tree().get_nodes_in_group("enemies").size() |
| node | string | – | Base node path for member lookups (default: current scene) |
| session_id | string | – | Session from runtime_run. Required only when several games run. |
No output schema declared.
No examples provided.
runtime_input ~138
Press an input action in a running game, as a player would: pressed for the given number of frames, then released, through the normal input path, so is_action_just_pressed and _unhandled_input see it. Actions come from the project's Input Map (project_config lists them). Returns: once released.
| Name | Type | Req | Description |
|---|---|---|---|
| action | string | yes | Input Map action, e.g. jump |
| frames | integer | – | Frames to hold it (default 2) |
| session_id | string | – | Session from runtime_run. Required only when several games run. |
| strength | number | – | 0..1 for analog actions (default 1) |
No output schema declared.
No examples provided.
runtime_inspect ~119
Current property values of one node or object in a running game, as the engine reports them. Returns: class and each property's type and value.
| Name | Type | Req | Description |
|---|---|---|---|
| node | string | – | Node path: '/root/Main/Player', 'Main/Player', or an unambiguous tail such as 'Player' |
| object_id | integer | – | Object id from runtime_tree or runtime_inspect |
| properties | array | – | Only these properties (default: all) |
| session_id | string | – | Session from runtime_run. Required only when several games run. |
No output schema declared.
No examples provided.
runtime_monitors ~117
Performance monitors of a running game, about once a second: FPS, frame times, object, node and orphan-node counts, memory, draw calls, physics, plus any custom monitors the game registers. Returns: latest values, and a history of the requested monitors - a rising orphan count is the usual sign of a leak.
| Name | Type | Req | Description |
|---|---|---|---|
| names | array | – | Monitors to return history for, e.g. ['OBJECT_ORPHAN_NODE_COUNT'] |
| session_id | string | – | Session from runtime_run. Required only when several games run. |
No output schema declared.
No examples provided.
runtime_output ~95
Read what a running game printed and every structured error it reported since the last call - push_error, push_warning, engine and script errors, each with file, function, ZERO-BASED line and call stack. Drained on each call.
| Name | Type | Req | Description |
|---|---|---|---|
| session_id | string | – | Session from runtime_run. Required only when several games run. |
| wait | number | – | Seconds to wait for more first (default 0.5) |
No output schema declared.
No examples provided.
runtime_pause ~53
Freeze or unfreeze a running game's scene tree. Returns: the new state.
| Name | Type | Req | Description |
|---|---|---|---|
| paused | boolean | yes | true to freeze |
| session_id | string | – | Session from runtime_run. Required only when several games run. |
No output schema declared.
No examples provided.
runtime_reload ~95
Hot-reload changed scripts into a running game, keeping its state. Refuses when the language server reports errors in them: a script that fails to compile is disabled in the running game. Covers .gd scripts only - edited .tscn files and new or changed assets need a restart.
| Name | Type | Req | Description |
|---|---|---|---|
| files | array | yes | Scripts to reload |
| session_id | string | – | Session from runtime_run. Required only when several games run. |
No output schema declared.
No examples provided.
runtime_run ~283
Launch the game as its own process, connected straight back to GodotLens - no editor run slot, so several agents can each run one at once. Returns: session_id, and the output and structured errors from the first seconds. Runs HEADLESS by default (no window, no sound); pass windowed=true only when you need runtime_screenshot - the window is placed off-screen and takes no focus. Script errors are reported, never stop the game. Then use runtime_tree, runtime_inspect and runtime_output to see what the game is doing. The game runs through GodotLens's helper (loaded for this run only, nothing is written to the project), which adds runtime_eval and runtime_input.
| Name | Type | Req | Description |
|---|---|---|---|
| args | array | – | Extra engine flags, e.g. ['--fixed-fps', '60'] |
| collect | number | – | Seconds of output to wait for (default 2) |
| helper | boolean | – | Run through the helper for runtime_eval/runtime_input (default true) |
| resolution | string | – | Window size for windowed runs, e.g. '1280x720' |
| scene | string | – | res:// scene to run (default: the main scene) |
| timeout | number | – | Seconds to wait for the game to connect (default 30) |
| windowed | boolean | – | Render a real window (needed for screenshots) |
No output schema declared.
No examples provided.
runtime_screenshot ~63
Capture what a windowed game is drawing. Returns: the image, with its size. Needs a session started with windowed=true; a headless game has no pixels.
| Name | Type | Req | Description |
|---|---|---|---|
| session_id | string | – | Session from runtime_run. Required only when several games run. |
No output schema declared.
No examples provided.
runtime_set ~169
Change a property on a node in a running game, then read it back. Values are converted to the property's own type: pass [1, 2] or 'Vector2(1, 2)' for a Vector2, '#ff0000' for a Color, a res:// path for a resource. Returns: the value the engine now reports.
| Name | Type | Req | Description |
|---|---|---|---|
| node | string | – | Node path: '/root/Main/Player', 'Main/Player', or an unambiguous tail such as 'Player' |
| object_id | integer | – | Object id from runtime_tree or runtime_inspect |
| property | string | yes | Property name, e.g. position |
| session_id | string | – | Session from runtime_run. Required only when several games run. |
| value | – | yes | New value |
No output schema declared.
No examples provided.
runtime_status ~42
List the games GodotLens is running. Returns: each session with pid, scene, whether it is headless, running and connected, plus this server's pid.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
runtime_step ~61
Advance a paused game by one frame. Windowed sessions only: a headless game never draws a frame, and Godot re-pauses after the next drawn frame.
| Name | Type | Req | Description |
|---|---|---|---|
| session_id | string | – | Session from runtime_run. Required only when several games run. |
No output schema declared.
No examples provided.
runtime_stop ~40
Stop a game started with runtime_run. Returns: exit code.
| Name | Type | Req | Description |
|---|---|---|---|
| session_id | string | – | Session from runtime_run. Required only when several games run. |
No output schema declared.
No examples provided.
runtime_time_scale ~57
Speed up or slow down a running game. Returns: the new scale.
| Name | Type | Req | Description |
|---|---|---|---|
| scale | number | yes | 1.0 is normal speed |
| session_id | string | – | Session from runtime_run. Required only when several games run. |
No output schema declared.
No examples provided.
runtime_tree ~114
The live scene tree of a running game, including nodes created at runtime. Returns: nested nodes with name, type (script class_name or path when scripted), path, object_id and visibility. Use the path or object_id with runtime_inspect.
| Name | Type | Req | Description |
|---|---|---|---|
| max_depth | integer | – | Levels below the start to include (default 8) |
| path | string | – | Only this subtree, e.g. '/root/Main/Enemies' |
| session_id | string | – | Session from runtime_run. Required only when several games run. |
No output schema declared.
No examples provided.
scene_state ~130
Get Godot's own resolved view of a scene: node tree with types, script attachments, unique_name_in_owner flags, exported property values, and the signal connections declared in the scene. Godot's LSP reads .gd files only, so NONE of this is visible to gdscript_references or gdscript_rename. Runs the engine to resolve the scene, so inherited scenes and instanced children are resolved the way Godot actually instantiates them. Requires a Godot binary (GODOT_BIN or ./godot/).
| Name | Type | Req | Description |
|---|---|---|---|
| files | array | yes | Scene paths, res:// or filesystem |
No output schema declared.
No examples provided.
scene_validate ~203
Check a scene for what Godot gets silently wrong when it loads or runs it. Errors: connections to handlers or nodes that do not exist, signals the source does not have, handlers taking the wrong number of arguments, unknown node types, scripts whose base type does not fit the node, missing parents, duplicate names and duplicate unique names, and changes to nodes that do not exist in an instanced scene. Warnings: unknown properties, values of the wrong type, and NodePaths to nodes not in the scene. Returns: per-scene problems with kind, severity and detail; valid means no errors. WHEN TO CALL: after editing a .tscn, or after renaming or removing a signal handler in GDScript. Godot accepts all of these with no error or only a console warning. Facts come from the engine; handler existence from the LSP's parse of the attached script.
| Name | Type | Req | Description |
|---|---|---|---|
| files | array | yes | Scene paths, res:// or filesystem |
No output schema declared.
No examples provided.
How do I install the GodotLens MCP server?
GodotLens runs locally as a PyPI package, launched with uvx godotlens-mcp. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.
pypi · godotlens-mcp
claude mcp add pzalutski-pixel-godotlens -- uvx godotlens-mcp
What is the GodotLens MCP server?
GodotLens is an MCP server listed in the public MCP registry as io.github.pzalutski-pixel/godotlens. Godot's own view of your GDScript project: code, scenes, and the running game. This page covers its PyPI package (godotlens-mcp).
Is the GodotLens MCP server safe to use?
GodotLens scores 94 out of 100 on VerifyMCP. We found no known CVEs affecting it as of 4 November 2026. Its build provenance is signed and verified. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.
What tools does the GodotLens MCP server expose?
GodotLens exposes 49 tools: gdscript_status, gdscript_definition, gdscript_references, gdscript_hover, gdscript_symbols, and 44 more. Their descriptions and schemas cost roughly 5,159 tokens of context every time the server is loaded.
Is the GodotLens MCP server still maintained?
GodotLens is still listed as active in the MCP registry. We last reached this channel on 4 November 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.
What licence is the GodotLens MCP server under?
GodotLens declares the Apache-2.0 licence, which is OSI-approved. That covers the source only, and says nothing about the cost of any service it calls.