godot-breakpoint-mcp
Health Uyari
- License — License: MIT
- Description — Repository has a description
- Active repo — Last push 0 days ago
- Low visibility — Only 5 GitHub stars
Code Basarisiz
- fs module — File system access in .github/workflows/ci.yml
- os.homedir — User home directory access in host/cs_demo_debugger_live.mjs
- process.env — Environment variable access in host/cs_demo_debugger_live.mjs
- os.homedir — User home directory access in host/cs_demo_verify_live.mjs
- process.env — Environment variable access in host/cs_demo_verify_live.mjs
- execSync — Synchronous shell command execution in host/cs_demo_verify_live_gif.mjs
- process.env — Environment variable access in host/cs_demo_verify_live_gif.mjs
Permissions Gecti
- Permissions — No dangerous permissions requested
Bu listing icin henuz AI raporu yok.
MCP for Godot (4.2+)
Breakpoint MCP
A Model Context Protocol server that brings the
Godot game engine into an AI assistant's development loop — authoring scenes,
writing type-checked GDScript, running the project, and debugging the live game.
Developed and tested with Claude; MCP is an open protocol, so other clients can
connect too (see Compatibility).npm 1.59.0 · addon 1.9.8 · full 291 / secure-default 278 tools · 6 MCP resources · MIT. The host builds against
the stable@modelcontextprotocol/sdk1.x API and is exercised by a 684-test suite plus
real-Godot integration jobs on Node 18/20/22.
Breakpoint MCP connects an MCP-compatible AI assistant to a running Godot editor and
game. Instead of only scaffolding files, the assistant can open a scene, add and wire
nodes with full undo/redo, write GDScript with type-aware completion and diagnostics,
set a breakpoint and step through a failure from real program state, and then drive the
running game — the same inner loop a human developer uses.
It speaks Godot's own protocols — the editor plugin's loopback bridge, and Godot's
built-in language server (LSP) and debug adapter (DAP) — rather than
reimplementing them, so behavior tracks the engine you already have.
Why Breakpoint?
Breakpoint is an MCP server that drives Godot through the engine's own interfaces: the
editor plugin's loopback bridge for scene/node/resource work, a runtime bridge inside the
running game, the headless CLI, and — the part that sets it apart — Godot's built-in
language server (LSP) and debug adapter (DAP), to which Breakpoint speaks as a real
client. Most Godot MCP servers stop at the first group: they create and edit scenes and
scripts, take screenshots, and read the output log. Several now add stepping too — but they
drive Godot's internal editor debugger and present it in "DAP-style" shapes rather than
speaking the Debug Adapter and language-server protocols as a client. Breakpoint is that
client, for GDScript and C#, and its breakpoints are proven to stop execution by
integration tests run against real Godot binaries in CI. That is the difference between
observing a running game from the outside and stopping inside it at real program state.
Two differentiating capabilities are the reason to reach for Breakpoint:
- A step-debugger for GDScript and C#. Set a breakpoint, step, read the real call stack
and variable values, watch expressions, and evaluate in the paused frame — over Godot's
Debug Adapter (andnetcoredbgfor C#). This is the difference between inspecting state
and reading logs: the assistant can stop at the failure and look at actual values instead
of inferring them fromprint()output and re-runs. A runnable example lives inexample/demo/: a buggy melting-snowman scene where the debugger stops
onice -= meltand revealsmelt = -2— a mild warm spell growing the ice instead of
melting it. The same bug is mirrored in C# atexample-csharp/demo/
(DemoSnowman.ApplyWarmth), diagnosed the same way overnetcoredbg— and verified the
same way on both tracks: the read-only assertion family below proves the one-line clamp
over the runtime bridge (GrewEver == false,"ALL MELTED"on screen), a check that
fails before the fix and passes after. - A language-server client for GDScript and C#. Completion, hover, go-to-definition, find
references, rename, and diagnostics — over Godot's LSP (and OmniSharp for C#). Edits are
symbol-accurate rather than text-substituted, and type errors surface before the project
runs.
Around those, the editing surface is built to be safe to hand to an agent: every edit goes
through EditorUndoRedoManager (Ctrl-Z reverts anything the assistant did), destructive
tools are confirmation-gated, and every tool result is validated against a frozen output
schema. A read-only verification family (assert node state, scene structure, on-screen text,
performance baselines, and screenshot diffs) lets the assistant check a running game the way
a test would — and because the same server also debugs, a failed assertion is one step from
the state that caused it. The editor, LSP, DAP, and runtime bridges are exercised together
against a real headless Godot in CI.
It is also secure by default, which is unusual in this field — and the mechanism matters
more than the label. A per-project shared secret authenticates every bridge (constant-time,
minted into the git-ignored res://.godot/), every socket binds to loopback only, and the
highest-blast tools — arbitrary code execution and network egress — are dropped at
registration, not merely flagged. They are absent from tools/list until you opt in, so the
default surface is 278 tools an agent can actually call, not 291 with a warning label on
13 of them. Destructive operations are confirmation-gated and fail closed on clients that
cannot prompt. Nothing runs in the cloud and no project data leaves the machine.
Every tool also publishes MCP risk annotations (readOnlyHint / destructiveHint /idempotentHint / openWorldHint), and breakpoint-mcp tools --json exports the whole
surface — so what the server can do, and how risky each tool is, is checkable without running
it or guessing from tool names.
When Breakpoint is the right tool — and when it isn't
It earns its keep on work that needs program state or real symbols:
- Diagnosing a live failure — a wrong value, a null reference, a crash in a signal
handler: breakpoint, step, and read the actual variables in the paused frame instead of
instrumenting with prints and re-running. - Refactoring against real symbols — rename a method or property project-wide, or find
every reference, over the LSP, so it's accurate rather than a text search. - Type-aware authoring — write GDScript or C# with completion and diagnostics, catching
type errors before the game runs. - C#/.NET projects — the LSP and DAP paths cover C# as well as GDScript.
- Verifying a running game in a loop — assert node/scene/screen/performance state after a
change, with a failed assertion one step from the debugger.
If you only need scene and script edits from inside the editor — scaffolding a scene,
generating a script from a prompt, quick one-shot changes — there are other good alternatives
to Breakpoint available in the Godot Asset Library. Breakpoint's value shows up when you need
to step through a bug, refactor against real symbols, or work in C#.
How it compares
The field has many capable Godot MCP servers, and it is growing quickly — most cluster on
authoring. Breakpoint is deliberately different on the axes that need real program state, real
symbols, and a surface that is safe to hand an agent by default:
| Capability | A typical Godot MCP server | Breakpoint |
|---|---|---|
| Author scenes / scripts, screenshots, read logs | ✅ | ✅ |
| Step-debugger (breakpoints, stack, variables, watch) | Some — via Godot's internal editor debugger | ✅ real DAP client; breakpoints proven to stop in CI |
| C# step-debugging | ✗ | ✅ over netcoredbg |
| Language-server client (completion, rename, references) | Rare | ✅ GDScript and C# |
| Runtime verification (assert node/scene/screen/perf, golden-image diff) | ✗ | ✅ runtime_assert_* + runtime_screenshot_diff |
| Deterministic playtesting (freeze time, step exact frames, seed RNG, state digest) | ✗ | ✅ frame-exact, verified on 4.3/4.5/4.7 |
| Arbitrary code execution in the default surface | Usually present and callable | ✅ absent — dropped at registration until opted in |
| Published risk annotations + machine-readable tool export | ✗ | ✅ all 291 tools, CI-enforced |
| Undo-safe + schema-frozen results | Rare | ✅ every mutation |
This describes capability classes, not specific projects. Several servers are strong at
authoring, some are actively adding debuggers, and if authoring is all you need there are good
alternatives in the Asset Library. The tool count is not the axis — ours is 289 because that
is what a static contract check asserts, and every one is schema-frozen and annotated.
Why a Node host?
Breakpoint runs a small Node process on purpose: it is what lets the server act as a real LSP
and DAP client (the two capabilities above), run long jobs on the MCP task model, and connect
from any stdio MCP client. The host is the price of the debugger and the language server, not
incidental plumbing. Setup is one command to install and one to verify:
npx breakpoint-mcp init # copies + enables the addon and writes your MCP-client config
npx breakpoint-mcp doctor # verifies the Godot binary and all four bridges are live
If you never step through a bug or refactor against real symbols, you may not need the host;
if you do, that is exactly what it buys.
What it does
Breakpoint MCP is organized into four capability planes (full 291 tools, or 278 with the privileged capability group off by default — see Safety & trust model — plus 6 resources):
Plane A — Live Editor Bridge (toolset
a→ 148 tools:editor_*,scene_*,node_*,signal_*,resource_*,filesystem_*,anim_*, and more): a GodotEditorPluginopens a loopback server the host drives for scene/node/resource CRUD
with full undo/redo, project settings,ClassDBintrospection, selection,
main-screen tab control, and editor screenshots. A read-only documentation / code-lookup family
(class_reference,docs_search) is part of that 148. Four sibling toolsets ride the
same bridge and are counted separately — native multiplayer authoring (netcode→
7), backend-SDK integration scaffolding (backend→ 5, includingleaderboard_scaffold,cloudsave_scaffoldandauth_scaffold), AI asset generation
(assetgen→ 7), and card/board/piece authoring (tabletop→ 14) — soa,netcode,backend,assetgen,tabletop→ 181 tools require the editor open, not the
148 alone.Plane B — Headless CLI & host-side tools (
godot_*,vcs_*, project search):
launch the editor, run the project, export, import, and run headless scripts or tests —
no editor window required. Long-running jobs (godot_export,godot_import,godot_run_headless_script) run on the formal MCP task model (create → poll → await
→ cancel), while simpler clients still get a blocking result.godot_run_managed/godot_outputcapture the game's full console. Version control (vcs_*) reads the
project's git repository (status, log, diff, show, branches, blame) and performs safe
local git actions (stage, commit, restore, stash, branch, switch) — destructive ops are
confirmation-gated, and no network operations are exposed (push/pull stay manual).Plane C — Runtime Bridge (
runtime_*): an autoload (BreakpointRuntimeBridge) the
plugin registers into every run opens a loopback server inside the running game —
live SceneTree, runtime property get/set, method calls, signal emission, input
injection for play-testing, performance monitors, and in-game frame capture — plus a
read-only verification family (runtime_assert_*andruntime_screenshot_diff) for
checking node state, scene structure, on-screen text, performance baselines, and
screenshot diffs against a running game. On Godot
4.5+ it also captures the game's console (print(), warnings, errors) with zero
configuration.Plane D — Semantic & Debugging (
gd_*,dbg_*, plus C#cs_*/cs_dbg_*): the
host connects as a client to Godot's built-in GDScript language server (port 6005)
and debug adapter (port 6006) — completion, hover, definition/references, rename,
symbols, signature help, diagnostics, plus real debugging: breakpoints, stepping,
stack/scopes/variables, watch expressions, and expression evaluation. A parallel C#
plane speaks OmniSharp (LSP) and netcoredbg (DAP). Capabilities are feature-detected
per engine build and degrade to a clear "unsupported" message rather than erroring.
Six MCP resources (godot://scene-tree, godot://editor-state,godot://runtime/tree, godot://runtime/log, godot://class/{name}, and the always-ongodot://capabilities) expose pull-on-demand context, and clients can subscribe to be
pushed updates when the editor selection, edited scene, or the live SceneTree changes.
Highlights
- Undo-safe by construction. Every edit-time mutation is wrapped in
EditorUndoRedoManager— Ctrl-Z reverts anything the assistant did. - Confirmation-gated destructive tools. Anything that deletes, overwrites, or writes
a file prompts for confirmation first (with aconfirm: trueoverride, and a safe
block when the client can't prompt). - Enforced output schemas. Tool results are validated against frozen output schemas.
- Local by design. All planes talk to
127.0.0.1; screenshots render real frames.
┌───────────────────── Claude (Code / Desktop) ─────────────────────┐
│ MCP over stdio │
└─────────────────────────────┬──────────────────────────────────────┘
host/ (TypeScript MCP server)
┌────────────┬──────────────┬──────────────┬────────────┬───────────┐
spawn CLI TCP :9080 TCP :9081 TCP :6005 TCP :6006
(headless) editor addon in-game Godot LSP Godot DAP
scenes/nodes autoload completion, breakpoints,
/undo live SceneTree diagnostics stepping, eval
/monitors/input
Requirements
- Node ≥ 18 (for the host).
- Godot 4.2+ for the editor addon (4.4+ recommended). A few runtime features use
Godot 4.5+, and some language-server / debug-adapter capabilities light up on newer
builds as the engine implements them.
Installation
Quick start (recommended)
From your Godot project folder, one command installs and enables the editor addon and
prints your MCP-client config:
npx breakpoint-mcp init
Then open the project in Godot and verify everything is wired up:
npx breakpoint-mcp doctor
init copies the addon into addons/breakpoint_mcp/, enables it in project.godot, and
prints the client config snippet — pass --client claude-desktop|cursor|windsurf|vscode
to write it into that client's config directly, or --client claude-code to get theclaude mcp add command. By default init installs the addon bundled in the package; add--from-github [ref] to fetch it from GitHub instead (e.g. --from-github main for the
latest, or a tag like --from-github v1.3.0; --repo <owner/repo> targets a fork).doctor checks the Godot binary, the addon, and the four bridges
(add --require-live once the editor is open to require them; --json for a machine-readable
report). The manual steps below do the same thing by hand.
1. Install the editor addon (manual)
These by-hand steps are for working from a checkout of this repository, or if you would
rather do it yourself. If you installed from npm, npx breakpoint-mcp init does all of
this for you — the addon ships bundled in the package, so you don't need the repository.
Copy addons/breakpoint_mcp/ into your project's addons/ folder, then enable it under
Project → Project Settings → Plugins → Breakpoint MCP. On enable it listens on127.0.0.1:9080 (override with BREAKPOINT_BRIDGE_PORT before launching Godot).
Enabling the plugin also auto-registers the runtime autoload
(BreakpointRuntimeBridge), so the runtime_* tools work as soon as the project runs
(it listens on 127.0.0.1:9081 inside the game). No manual autoload setup needed.
Once enabled, a Breakpoint MCP dock appears on the right-hand side of the editor. It
shows the live health of all four bridges (editor / runtime / GDScript LSP / DAP), the
configured ports and project path, and a one-click Copy MCP-client config button — the
in-editor twin of doctor + init. It is status/config only: the assistant still runs in
your MCP client, not in the editor.
Godot's language server (port 6005) and debug adapter (port 6006) are built in
and enabled by default while the editor is open — the gd_* and dbg_* tools use them
directly, no addon required. Ports are configurable under Editor → Editor Settings →
Network → Language Server / Debug Adapter.
2. Get the host
The host is published to npm as breakpoint-mcp:
npx breakpoint-mcp # run on demand
# or
npm i -g breakpoint-mcp # install the `breakpoint-mcp` command
To build from source instead:
cd host
npm install
npm run build # tsc -> dist/
3. Register with your MCP client
Claude is the primary, tested client. Claude Code:
claude mcp add godot -- npx -y breakpoint-mcp
Claude Desktop (claude_desktop_config.json):
{
"mcpServers": {
"godot": {
"command": "npx",
"args": ["-y", "breakpoint-mcp"],
"env": {
"GODOT_BIN": "/abs/path/to/Godot",
"GODOT_PROJECT": "/abs/path/to/your/project"
}
}
}
}
Using a different MCP client (Cursor, VS Code, Windsurf, etc.)? See
Compatibility below — the command is the same, only the config file
and wrapper key differ.
Configuration (environment variables)
| Var | Default | Meaning |
|---|---|---|
GODOT_BIN |
godot |
Path to the Godot editor binary |
GODOT_PROJECT |
cwd | Project directory (contains project.godot) |
BREAKPOINT_BRIDGE_HOST |
127.0.0.1 |
Editor-bridge host |
BREAKPOINT_BRIDGE_PORT |
9080 |
Editor-bridge port (must match the addon) |
BREAKPOINT_BRIDGE_TIMEOUT_MS |
15000 |
Per-request timeout for editor tools |
GODOT_LSP_HOST / GODOT_LSP_PORT |
127.0.0.1 / 6005 |
GDScript language server |
GODOT_DAP_HOST / GODOT_DAP_PORT |
127.0.0.1 / 6006 |
Debug adapter |
GODOT_LSP_TIMEOUT_MS / GODOT_DAP_TIMEOUT_MS |
15000 / 20000 |
LSP / DAP timeouts |
BREAKPOINT_RUNTIME_HOST / BREAKPOINT_RUNTIME_PORT |
127.0.0.1 / 9081 |
In-game runtime bridge (must match the autoload) |
BREAKPOINT_RUNTIME_TIMEOUT_MS |
15000 |
Runtime request timeout |
BREAKPOINT_TOOLSETS |
(unset → all) | Comma/space list of tool groups or planes to enable — see Toolsets |
BREAKPOINT_PRIVILEGED_GROUPS |
(unset → none) | Comma/space list of the default-OFF capability groups to enable: code-execution, or all. Off → secure-default 278 tools; opting in loads the full 291 — see Safety & trust model |
Renamed from
CLAUDE_*: theBREAKPOINT_*variables above (plusBREAKPOINT_RESOURCE_COALESCE_MS) were namedCLAUDE_*in earlier versions. The legacyCLAUDE_*names were honoured with a one-time deprecation warning in1.0.0and removed in1.1.0— use theBREAKPOINT_*names.GODOT_*variables are unchanged.
The full, annotated configuration reference is in the User Guide.
Toolsets (optional — load only the planes you need)
By default the server registers the full surface (291 tools). On Claude Code that costs
nothing at decision time: Tool Search defers the catalog and loads each schema on demand
(a measured ~86–98% upfront token reduction — the model never sees all 291 at once). For
clients that can't defer tools, or when you just want a smaller default menu, setBREAKPOINT_TOOLSETS to a comma- or space-separated list of groups; only those register. The
four planes already are the grouping, so the aliases mirror them:
| Token | Enables |
|---|---|
a |
Plane A — live editor authoring (editor) |
b |
Plane B — headless CLI (cli) |
c |
Plane C — running-game runtime + verification family (runtime) |
d |
Plane D — GDScript & C# LSP/DAP (lsp,cslsp,dap,csdap) |
csharp |
The C# language-server + debugger groups (cslsp,csdap) |
all |
The full surface (the default) |
…or any of the concrete group ids: cli editor lsp cslsp dap csdap runtime processes knowledge vcs assetgen netcode backend tabletop resources.
Examples: BREAKPOINT_TOOLSETS=c → 27 runtime tools; a,b → 154 (editor + CLI);editor,runtime,vcs → 187. Unknown tokens are ignored, and a filter that resolves to nothing
falls back to the full surface — a typo never yields an empty server. This is a menu filter,
not a capability cut: every tool that loads is the same typed, schema-validated, undoable
tool it always was.
Recipes (free, curated task workflows)
Breakpoint ships a set of recipes — short, opinionated workflows that drive its own
enforced tools to accomplish a common Godot task and then verify it. They're exposed as
standard MCP prompts (discoverable via prompts/list), so a client can pull one on demand:
recipe_2d_player_controller— a movableCharacterBody2Dwith input actions + camera, then a runtime check that it actually moved.recipe_wire_signal_and_assert— connect a signal and prove at runtime the handler fired.recipe_debug_inspect_variable— set a breakpoint, launch under the debugger, read real call-stack values.recipe_screenshot_regression— golden-image check for a scene viaruntime_screenshot_diff.recipe_type_safe_edit— edit GDScript with the language server (symbols, references, diagnostics) before running.recipe_csharp_fix_and_debug— the same inspect → fix → debug loop for C# via OmniSharp + netcoredbg.recipe_deterministic_playtest— freeze the game, step an exact number of frames, then assert a frame-exact state and a golden frame.recipe_multiplayer_scaffold_and_converge— scaffold netcode with themp_*family, then spawn real headless peers and prove they converge.
Recipes are skills which ride on top of typed, schema-validated, undoable tools — so the
contract is executed by the server, not merely described in prose which a model might
misapply. Recipes also add no tools (the count stays 289) and cost nothing until pulled.
Recipes are the extension point — and the open hatch is a deliberate decline
A recipe composes tools that already exist; it never adds one. That distinction is what
keeps this server's claims intact rather than nominal. Every tool here is typed, schema-frozen,
contract-checked, risk-annotated and capability-gated, and a recipe inherits all five for free,
because a recipe is a saved prompt over tools the caller could have typed by hand. It is
strictly less privileged than the agent driving it: it cannot bypass the confirmation gate,
cannot reach a tool that a disabled capability group dropped, and cannot add a name totools/list.
A "bring-your-own-tool" API — a config file or plugin that injects a new tool at runtime — is
therefore a deliberate decline, not a gap we haven't got to yet. An injected tool has no
frozen output schema, no catalog entry, no annotation and no capability tag, andscripts/contract_check.py cannot parse it to check for any of those. The gates would not be
weakened so much as rendered inapplicable, silently, for exactly the tools least likely to
deserve the benefit of the doubt.
So the extension story is the recipe shape and nothing wider. Today that means the curated set
above; loading user-authored recipes from a project directory is the one narrowing we would
build if people ask for it, and it would still add no tools. If you need a workflow Breakpoint
doesn't ship, open an issue —
that path costs you nothing and costs the trust model nothing.
Compatibility
Breakpoint MCP is a standard MCP server that talks over stdio, so in principle it works
with any MCP-compatible client. It is developed and tested with Claude (Claude
Code and Claude Desktop) — that's the supported path today. Other clients such as
Cursor, VS Code (Copilot agent mode), and Windsurf should work with the same command and
environment variables, but they are not yet tested with this server. If you try
Breakpoint MCP with another client — or a different model behind it — we'd genuinely love
to hear how it goes: please open an issue
describing your client and what worked or didn't.
Every client launches the host the same way: the command npx -y breakpoint-mcp with the
environment variables from the table above. Only the config file location and the wrapper
key differ.
| Client | Config file | Wrapper key | Notes |
|---|---|---|---|
| Claude Code | — | — | claude mcp add godot -- npx -y breakpoint-mcp |
| Claude Desktop | claude_desktop_config.json |
mcpServers |
see example above |
| Cursor | ~/.cursor/mcp.json (global) or .cursor/mcp.json (project) |
mcpServers |
same shape as Claude Desktop |
| VS Code (Copilot agent mode) | .vscode/mcp.json |
servers |
each entry also needs "type": "stdio" |
| Windsurf (Cascade) | ~/.codeium/windsurf/mcp_config.json |
mcpServers |
same shape as Claude Desktop |
| Any other MCP client | per its docs | — | point it at npx -y breakpoint-mcp as a stdio server + pass the env vars |
VS Code uses a slightly different shape (servers, with an explicit transport type):
{
"servers": {
"godot": {
"type": "stdio",
"command": "npx",
"args": ["-y", "breakpoint-mcp"],
"env": {
"GODOT_BIN": "/abs/path/to/Godot",
"GODOT_PROJECT": "/abs/path/to/your/project"
}
}
}
}
Because the tool descriptions were tuned with Claude, another model may drive the tools
differently; if you notice rough edges with a particular client or model, an issue with
details helps us improve the experience for everyone.
A typical session
godot_launch_editor(or open the project yourself).editor_ping→ confirm the bridge is live.scene_get_tree,classdb_get_class→ understand the scene and API.node_add,node_set_property, … → make changes (all undoable).gd_completion/gd_diagnostics→ write GDScript with type awareness and catch
errors before running.main_screen_set→screenshot_editor→ let Claude see the result. The tab has to
match the viewport you want; a fresh editor is on 3D and opening a scene does not switch it.dbg_set_breakpoints→dbg_launch→dbg_stack_trace/dbg_variables/dbg_evaluate→ debug from real program state.godot_run_project→runtime_get_tree/runtime_set_property/runtime_inject_input/runtime_screenshot→ drive and observe the running game.godot_run_headless_script→ run tests.
The User Guide walks through this end to end.
Safety & trust model
Breakpoint MCP is a local co-development tool and is built to keep you in control:
- Every edit-time mutation goes through
EditorUndoRedoManager— Ctrl-Z reverts
anything the assistant did — and through the editor API (preserving UIDs/refs),
never raw file writes. - All sockets bind to loopback (
127.0.0.1) only; handlers run on the editor main
thread, so there are no threading hazards. - Both bridges require a per-project shared secret (default-on since 1.17.0). The
addon mints a 64-char hex secret into the engine-managed, git-ignoredres://.godot/, and
the host authenticates as the first frame on connect — so another local process on a shared
machine can neither drive the bridge nor bypass the confirmation gate. The secret is
compared in constant time and a bad handshake is refused without echoing it. Opt out
withBREAKPOINT_BRIDGE_INSECURE=1. - Destructive tools are elicitation-gated: the host asks the client to confirm before
executing (for examplenode_delete,project_set_setting,scene_new,gd_rename
with apply, the file/resource/script writers, and theruntime_*mutators). Passconfirm: trueto auto-approve; if the client can't prompt, the tool blocks rather
than acting silently. - Least-privilege by default — capability groups (since 1.18.0). The higher-blast tools are
gathered into one default-OFF group:code-execution(runs GDScript, invokes arbitrary
methods, evaluates in a paused frame, or spawns the local asset-gencommandbackend). With it
off, those tools are dropped at registration and never appear intools/list, so the
secure-default surface is 278 tools; opt in withBREAKPOINT_PRIVILEGED_GROUPS=code-execution(orall, orbreakpoint-mcp init --trust full) to load the full 291. There is deliberately nonetwork
group — nothing on this surface egresses beyond loopback, andopenWorldHintisfalsefor
every tool. A group named for egress that gated two loopback-only tools misstated the risk in
both directions, so it was removed rather than left unused (1.28.0). The always-ongodot://capabilitiesresource lists every group, its state, and the exact tools it gates,
so a disabled tool is discoverable rather than a silent gap. Defense-in-depth and a legible
least-privilege story over an already typed / undoable / gated surface — not the closing of an
open hole. - Pause the agent on demand — two layered controls. In the editor, the Breakpoint status
dock has a "Pause Agent" toggle: while engaged, the editor and runtime bridges reject new
commands on those two planes (an op already running finishes; a bare livenesspingstill
answers), so one click freezes what the assistant can do to your project and the running game.
Headless or scripted, the host also honorsSIGUSR1(pause) /SIGUSR2(resume) — a finer
latch that holds only mutating actions but across the whole tool surface, withBREAKPOINT_START_PAUSED=1to start held. Neither is an "emergency stop": both hold entry to
a new action and never interrupt one already in flight, and the per-tool confirmation above
stays the primary control for destructive ops. - Higher-trust surfaces, stated plainly:
godot_run_headless_scriptandgodot_run_managedexecute GDScript, and the optional asset-gen command
backend runs a local command you configure (viaBREAKPOINT_ASSETGEN_CMDor the tool
argument). These sit in the default-OFFcode-executiongroup above and stay
elicitation-gated even once enabled — point them only at code you trust.
Security policy and how to report a vulnerability: see SECURITY.md.
What the automation actually verifies (W/R/E)
Breakpoint is explicit about what kind of evidence a result carries, using a three-tier
honesty vocabulary:
| Tier | Question | Evidence Breakpoint produces | Who asserts |
|---|---|---|---|
| W — Wired | Did the action actually happen? | Schema-frozen results, reversible via EditorUndoRedoManager |
Automation |
| R — Runtime | Does the running program behave? | Live assertions (runtime_assert_*), runtime_screenshot_diff, and a real DAP paused stack + variable values (GDScript and C#) |
Automation |
| E — Experience | Is it any good — fun, legible, the right feel? | Human perception; automation hands over evidence and leaves the verdict open | Human only |
Most of the field proves R with a screenshot or a console line; Breakpoint proves it with an
assertion, a diff, and a paused stack frame — and never lets automation claim E.
Documentation
- User Guide — the full manual: install, configure, concepts,
workflows, troubleshooting, and FAQ. - Tool Catalog — every tool with its input and output JSON
Schemas. - Runbook — step-by-step live-validation checklist.
- Changelog — release history.
- Contributing · Security ·
Code of Conduct
Development
# static checks (no Godot or registry needed for the parity check)
python3 scripts/contract_check.py # host <-> addon <-> catalog agree
cd host && npm ci && npm run build && npm run typecheck && npm test
CI runs the real build and test suite on Node 18/20/22 plus the parity check, and
exercises the CLI, runtime, C#, and editor/debug planes against a real Godot engine.
See CONTRIBUTING.md to get set up.
SDK note: the host targets the stable @modelcontextprotocol/sdk 1.x high-level
API (server.registerTool(name, { title, description, inputSchema }, handler)). If you
prefer the newer SDK v2 surface, adjust the import lines and wrap each inputSchema inz.object(...); the tool logic is unchanged.
Trademarks
Godot and the Godot logo are trademarks of the Godot Foundation. Claude and Anthropic
are trademarks of Anthropic, PBC. SilentWolf, Nakama (Heroic Labs), PlayFab (Microsoft),
and Photon (Exit Games) are trademarks of their respective owners. Breakpoint MCP is an
independent, community-built project and is not affiliated with, sponsored by, or
endorsed by any of them; their names are used only to describe interoperability.
License
MIT — see LICENSE.
Yorumlar (0)
Yorum birakmak icin giris yap.
Yorum birakSonuc bulunamadi