logs_read
Retrieve recent log entries from the Godot editor, plugin, or running game to identify script errors, game output, and plugin events.
Instructions
Read recent log lines from the Godot editor, plugin, or running game.
Resource form: godot://logs/recent — prefer for active-session reads.
Sources:
"plugin" (default): MCP plugin recv/send/event traffic. Buffer 500.
"game": stdout/stderr/push_error/push_warning from playing game via
_mcp_game_helperautoload (Godot 4.5+). Buffer 2000, with lines retained across runs and tagged by run_id. Default reads return current-run lines only; passsince_run_idfrom an earlier response to read that prior run. Entries: {source, level, text, run_id}; response carries run_id, current_run_id, game_status, helper_live, session_active, dropped_count, stale_run_id. helper_live and session_active mirror the same fields inside game_status; is_running is retained as a compatibility alias of session_active. Boot-time parse/load errors fire before the game helper's logger attaches, so they are NEVER in this buffer; when editor-side errors were recorded during the current run the response addseditor_errors_countandeditor_errors_hintpointing at source="editor" — treat a clean game log carrying that hint as a run that lost scripts, not a clean launch."editor": editor-process script errors and the Debugger dock's visible Errors-tab rows — parse errors, GDScript reload warnings, @tool/EditorPlugin runtime errors, push_error/push_warning. Logger-backed entries require Godot 4.5+; Errors-tab rows are read from the editor UI when available. Use when the editor Output or Debugger Errors panel shows red/yellow rows but other sources turned up nothing. Buffer 500 for logger-backed entries; Debugger rows are live UI state. Entries: {source, level, text, path, line, function}. Filtered to .gd/.cs in the user project for Logger-backed entries; addons/godot_ai/ dropped. Logger entries fired before plugin enable are not captured.
"all": plugin → editor → game lines (with source per entry).
Tail pattern: for game logs, poll the current run with offset=N and
keep the returned run_id. current_run_id identifies the active run;
run_id identifies the run being read. Passing
since_run_id=old_run_id reads retained lines for that prior run, and
stale_run_id: true means the requested run is not the current run.
For editor logs, read once to capture
next_cursor and pass it back as since_cursor on later calls.
since_cursor reads Logger-backed editor entries only; live Debugger
Errors-tab rows are included in regular source="editor" reads but do
not have stable cursors. When since_cursor is set, it supersedes
offset. truncated: true means older entries fell out of the
ring before the poll; continue from the returned next_cursor and
treat oldest_cursor as the earliest retained sequence.
Set include_details=True for Errors-tab style metadata on game/editor
entries: original code/rationale, error type, resolved source, and
stack frames. Default false preserves compact responses.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| count | No | Max lines to return. Default 50. | |
| offset | No | Lines to skip. Default 0. | |
| source | No | "plugin" | "game" | "editor" | "all". Default "plugin". | plugin |
| session_id | No | Optional Godot session to target. Empty = active session. | |
| since_cursor | No | Editor-log cursor from a previous source="editor" response. | |
| since_run_id | No | Game-log run id from a previous response; reads that retained run instead of the current run. | |
| include_details | No | Include rich error metadata for game/editor entries. |
Output Schema
| Name | Required | Description | Default |
|---|---|---|---|
No arguments | |||