Breakpoint MCP Server

breakpoint-mcp npm v1.85.0

Published by jlivingston-cipher — no publish provenance, so origin is unverified, but the source is public: the repository link below is self-declared yet readable, so you can inspect the code before adopting it.

MCP server exposing Godot to AI coding assistants over the Model Context Protocol — developed and tested with Claude — across four planes (CLI, live editor, LSP+DAP, runtime) with elicitation-gated destructive tools, long jobs on the formal MCP task model

Trust grade
A
93/100
Last scanned get badge →
Trust
A · 93/100
Adoption risk for you: the threat score, then adjusted down for blast radius, publisher verification and how much the scan could see. Deterministic; every point is auditable.
Capability
High
Blast radius if it went rogue — what the server’s tools could reach. Independent of trust.
Coverage
Source
How much the scan could actually inspect. Shallow coverage is stated, never hidden.
Share this Trust Score
𝕏 Share LinkedIn Reddit
A Why this grade threat 100 − adoption risk = 93/100

The grade answers one question — how safe is this server for you to adopt — so it is computed in two auditable stages. Nothing below is an opinion or an LLM's guess; every line is a real term the deterministic engine applied, and the same input always yields the same number.

1. Threat score — 100 − 0 = 100. What the published surface and source actually contain:

The deterministic scan raised no scored threat in the surface it inspected — the threat score stayed at 100. Capability observations and advisory notes are recorded but never lower it.

2. Client adoption risk — 100 − 7 = 93. Three small, subtract-only factors that reflect your risk in adopting it — a clean scan proves less on a powerful, unverified or barely-inspectable package, so the grade says so plainly:

PointsAdoption-risk factor
−6 capability blast radius (high) — client exposure if the model is manipulated
−1 publisher verification (public source) — no provenance, but the source is public and inspectable

Capability observations and info notes are shown under Findings but never scored. Open any row's finding below for the file, line and evidence behind a deduction.

Findings 13

high Tool "asset_gen_configure" exposes command/code executionMTC-CAP-001

Tool "asset_gen_configure" appears to run shell commands or evaluate code (parameter "command"). Arbitrary execution driven by model input is one of the most dangerous MCP capabilities; combined with any untrusted input it becomes RCE.

Fix: Sandbox execution, allowlist commands/arguments, and never pass model output to a shell unescaped.

Location: tool asset_gen_configure

high Shell/command execution in server code (dist/cli/doctor.js)MTC-SRC-002

In the server's implementation (`dist/cli/doctor.js:35`): Spawning a shell/process is command-execution capability; with unsanitized tool input it is command injection / RCE. This is read from the code itself — not from the tool description — so a poisoned server cannot hide it behind honest-looking metadata.

Evidence: spawnSync } from "node:child_process"; import { loadConfig } from "../config.js"; import { CAPABILITY_GROUPS, droppedTo

Fix: Review this call path: confirm it never receives unsanitized tool input, constrain it, or remove it. Treat a server whose code reaches these sinks as high-capability regardless of what its tools claim.

Location: server dist/cli/doctor.js

high Shell/command execution in server code (dist/peers.js)MTC-SRC-002

In the server's implementation (`dist/peers.js:160`): Spawning a shell/process is command-execution capability; with unsanitized tool input it is command injection / RCE. This is read from the code itself — not from the tool description — so a poisoned server cannot hide it behind honest-looking metadata.

Evidence: akes. */ async spawn(opts) { const liveCount = this.live().length; if (liveCount + opts.count >

Fix: Review this call path: confirm it never receives unsanitized tool input, constrain it, or remove it. Treat a server whose code reaches these sinks as high-capability regardless of what its tools claim.

Location: server dist/peers.js

high Shell/command execution in server code (dist/recipes.js)MTC-SRC-002

In the server's implementation (`dist/recipes.js:206`): Spawning a shell/process is command-execution capability; with unsanitized tool input it is command injection / RCE. This is read from the code itself — not from the tool description — so a poisoned server cannot hide it behind honest-looking metadata.

Evidence: ribe("Headless peers to spawn (1-4; default 3)"), seed: z.string().optional().describe("RNG seed given to ev

Fix: Review this call path: confirm it never receives unsanitized tool input, constrain it, or remove it. Treat a server whose code reaches these sinks as high-capability regardless of what its tools claim.

Location: server dist/recipes.js

high Shell/command execution in server code (dist/spawn-guard.js)MTC-SRC-002

In the server's implementation (`dist/spawn-guard.js:1`): Spawning a shell/process is command-execution capability; with unsanitized tool input it is command injection / RCE. This is read from the code itself — not from the tool description — so a poisoned server cannot hide it behind honest-looking metadata.

Evidence: rt { spawn } from "node:child_process"; /** * The remedy sentence for a Godot binary that would not start. * * Kept s

Fix: Review this call path: confirm it never receives unsanitized tool input, constrain it, or remove it. Treat a server whose code reaches these sinks as high-capability regardless of what its tools claim.

Location: server dist/spawn-guard.js

high Shell/command execution in server code (dist/stdio.js)MTC-SRC-002

In the server's implementation (`dist/stdio.js:1`): Spawning a shell/process is command-execution capability; with unsanitized tool input it is command injection / RCE. This is read from the code itself — not from the tool description — so a poisoned server cannot hide it behind honest-looking metadata.

Evidence: rt { spawn } from "node:child_process"; import { FrameDecoder, encodeFrame } from "./framing.js"; import { log } from ".

Fix: Review this call path: confirm it never receives unsanitized tool input, constrain it, or remove it. Treat a server whose code reaches these sinks as high-capability regardless of what its tools claim.

Location: server dist/stdio.js

high Shell/command execution in server code (dist/tools/assetgen.js)MTC-SRC-002

In the server's implementation (`dist/tools/assetgen.js:1`): Spawning a shell/process is command-execution capability; with unsanitized tool input it is command injection / RCE. This is read from the code itself — not from the tool description — so a poisoned server cannot hide it behind honest-looking metadata.

Evidence: rt { spawn } from "node:child_process"; import fs from "node:fs"; import { z } from "zod"; import { gate } from "../conf

Fix: Review this call path: confirm it never receives unsanitized tool input, constrain it, or remove it. Treat a server whose code reaches these sinks as high-capability regardless of what its tools claim.

Location: server dist/tools/assetgen.js

high Shell/command execution in server code (dist/tools/cli.js)MTC-SRC-002

In the server's implementation (`dist/tools/cli.js:1`): Spawning a shell/process is command-execution capability; with unsanitized tool input it is command injection / RCE. This is read from the code itself — not from the tool description — so a poisoned server cannot hide it behind honest-looking metadata.

Evidence: { execFile } from "node:child_process"; import { promisify } from "node:util"; import { z } from "zod"; import { log } f

Fix: Review this call path: confirm it never receives unsanitized tool input, constrain it, or remove it. Treat a server whose code reaches these sinks as high-capability regardless of what its tools claim.

Location: server dist/tools/cli.js

high Shell/command execution in server code (dist/tools/runtime.js)MTC-SRC-002

In the server's implementation (`dist/tools/runtime.js:625`): Spawning a shell/process is command-execution capability; with unsanitized tool input it is command injection / RCE. This is read from the code itself — not from the tool description — so a poisoned server cannot hide it behind honest-looking metadata.

Evidence: ribe(`How many peers to spawn (1-${MAX_PEERS}; ${MAX_PEERS} live peers is the ceiling)`), scene: z.string().

Fix: Review this call path: confirm it never receives unsanitized tool input, constrain it, or remove it. Treat a server whose code reaches these sinks as high-capability regardless of what its tools claim.

Location: server dist/tools/runtime.js

high Shell/command execution in server code (dist/tools/vcs.js)MTC-SRC-002

In the server's implementation (`dist/tools/vcs.js:1`): Spawning a shell/process is command-execution capability; with unsanitized tool input it is command injection / RCE. This is read from the code itself — not from the tool description — so a poisoned server cannot hide it behind honest-looking metadata.

Evidence: { execFile } from "node:child_process"; import { promisify } from "node:util"; import { z } from "zod"; import { ok } fr

Fix: Review this call path: confirm it never receives unsanitized tool input, constrain it, or remove it. Treat a server whose code reaches these sinks as high-capability regardless of what its tools claim.

Location: server dist/tools/vcs.js

medium Untrusted input can drive an external actionMTC-FLOW-005

Untrusted-input tools ([leaderboard_scaffold]) co-exist with external-action tools ([asset_gen_configure]). A prompt injection could cause unwanted external actions, though no direct sensitive-data leak path was found.

Evidence: untrusted [leaderboard_scaffold] → sinks [asset_gen_configure]

Fix: Require confirmation for state-changing/egress actions triggered after processing untrusted content.

Location: flow leaderboard_scaffold → asset_gen_configure

medium Unconstrained command parameter "command" on "asset_gen_configure"MTC-CAP-006

Tool "asset_gen_configure" takes a command-shaped parameter "command" with no enum/pattern constraint. Free-form, model- or attacker-controlled arguments reaching a shell is the command-injection precondition.

Fix: Constrain the parameter (enum/pattern), or build the command from a fixed template with escaped args.

Location: tool asset_gen_configure · inputSchema.properties.command

low Mutating tool "asset_gen_configure" declares no destructiveHintMTC-CAP-005

Tool "asset_gen_configure" can mutate/egress but declares no destructiveHint. Clients that don't default to spec-safe behavior may not prompt before running it.

Fix: Declare accurate annotations, and gate destructive tools on user confirmation regardless.

Location: tool asset_gen_configure

Tools 200

Each tool and what it can reach — statically extracted from the published source.

  • asset_gen_configureruns code / shell
  • leaderboard_scaffoldingests untrusted input
  • anim_add_trackno sensitive capability
  • anim_createno sensitive capability
  • anim_deleteno sensitive capability
  • anim_get_track_keysno sensitive capability
  • anim_insert_keyno sensitive capability
  • anim_listno sensitive capability
  • anim_player_createno sensitive capability
  • anim_remove_keyno sensitive capability
Show 190 more tools ↓
  • anim_set_lengthno sensitive capability
  • anim_set_loopno sensitive capability
  • anim_statemachine_add_stateno sensitive capability
  • anim_statemachine_add_transitionno sensitive capability
  • anim_tree_add_nodeno sensitive capability
  • anim_tree_createno sensitive capability
  • area_set_gravityno sensitive capability
  • area_set_monitoringno sensitive capability
  • asset_gen_audio_sfxno sensitive capability
  • asset_gen_iconno sensitive capability
  • asset_gen_modelno sensitive capability
  • asset_gen_placeholderno sensitive capability
  • asset_gen_spriteno sensitive capability
  • asset_gen_textureno sensitive capability
  • audio_bus_addno sensitive capability
  • audio_bus_add_effectno sensitive capability
  • audio_bus_set_volumeno sensitive capability
  • audio_player_createno sensitive capability
  • audio_set_bus_layoutno sensitive capability
  • audio_set_streamno sensitive capability
  • auth_scaffoldno sensitive capability
  • backend_configureno sensitive capability
  • backend_detectno sensitive capability
  • body_createno sensitive capability
  • body_set_collision_layerno sensitive capability
  • body_set_collision_maskno sensitive capability
  • body_set_physics_materialno sensitive capability
  • breakpoint_doctorno sensitive capability
  • camera_createno sensitive capability
  • class_referenceno sensitive capability
  • classdb_get_classno sensitive capability
  • cloudsave_scaffoldno sensitive capability
  • collisionpolygon_addno sensitive capability
  • collisionshape_addno sensitive capability
  • container_add_childno sensitive capability
  • control_createno sensitive capability
  • control_set_anchorsno sensitive capability
  • control_set_layout_presetno sensitive capability
  • control_set_size_flagsno sensitive capability
  • control_set_themeno sensitive capability
  • cs_code_actionno sensitive capability
  • cs_completionno sensitive capability
  • cs_dbg_attachno sensitive capability
  • cs_dbg_continueno sensitive capability
  • cs_dbg_evaluateno sensitive capability
  • cs_dbg_launchno sensitive capability
  • cs_dbg_restartno sensitive capability
  • cs_dbg_scopesno sensitive capability
  • cs_dbg_set_breakpointsno sensitive capability
  • cs_dbg_set_exception_breakpointsno sensitive capability
  • cs_dbg_set_variableno sensitive capability
  • cs_dbg_stack_traceno sensitive capability
  • cs_dbg_stepno sensitive capability
  • cs_dbg_variablesno sensitive capability
  • cs_dbg_watchno sensitive capability
  • cs_definitionno sensitive capability
  • cs_diagnosticsno sensitive capability
  • cs_document_symbolsno sensitive capability
  • cs_hoverno sensitive capability
  • cs_referencesno sensitive capability
  • cs_renameno sensitive capability
  • cs_signature_helpno sensitive capability
  • cs_workspace_symbolsno sensitive capability
  • csg_createno sensitive capability
  • dbg_attachno sensitive capability
  • dbg_continueno sensitive capability
  • dbg_data_breakpointsno sensitive capability
  • dbg_evaluateno sensitive capability
  • dbg_gotono sensitive capability
  • dbg_launchno sensitive capability
  • dbg_restartno sensitive capability
  • dbg_scopesno sensitive capability
  • dbg_set_breakpointsno sensitive capability
  • dbg_set_exception_breakpointsno sensitive capability
  • dbg_set_variableno sensitive capability
  • dbg_stack_traceno sensitive capability
  • dbg_stepno sensitive capability
  • dbg_variablesno sensitive capability
  • dbg_watchno sensitive capability
  • docs_searchno sensitive capability
  • editor_get_stateno sensitive capability
  • editor_pingno sensitive capability
  • editor_redono sensitive capability
  • editor_undono sensitive capability
  • editorsettings_get_setno sensitive capability
  • environment_createno sensitive capability
  • environment_set_skyno sensitive capability
  • filesystem_create_dirno sensitive capability
  • filesystem_listno sensitive capability
  • filesystem_moveno sensitive capability
  • filesystem_scanno sensitive capability
  • godot_launch_editorno sensitive capability
  • godot_run_projectno sensitive capability
  • godot_versionno sensitive capability
  • inputmap_add_actionno sensitive capability
  • inputmap_add_eventno sensitive capability
  • inputmap_erase_actionno sensitive capability
  • inputmap_listno sensitive capability
  • joint_createno sensitive capability
  • joint_set_bodiesno sensitive capability
  • light_createno sensitive capability
  • main_screen_getno sensitive capability
  • main_screen_setno sensitive capability
  • mesh_set_surface_materialno sensitive capability
  • meshinstance_createno sensitive capability
  • navagent_configureno sensitive capability
  • navregion_createno sensitive capability
  • node_addno sensitive capability
  • node_add_to_groupno sensitive capability
  • node_call_methodno sensitive capability
  • node_change_typeno sensitive capability
  • node_deleteno sensitive capability
  • node_duplicateno sensitive capability
  • node_findno sensitive capability
  • node_get_childrenno sensitive capability
  • node_get_pathno sensitive capability
  • node_get_propertyno sensitive capability
  • node_instantiate_sceneno sensitive capability
  • node_list_groupsno sensitive capability
  • node_list_propertiesno sensitive capability
  • node_move_childno sensitive capability
  • node_remove_from_groupno sensitive capability
  • node_renameno sensitive capability
  • node_reparentno sensitive capability
  • node_set_editable_instanceno sensitive capability
  • node_set_ownerno sensitive capability
  • node_set_propertyno sensitive capability
  • particles_createno sensitive capability
  • particles_set_amountno sensitive capability
  • particles_set_emittingno sensitive capability
  • particles_set_lifetimeno sensitive capability
  • particles_set_process_materialno sensitive capability
  • particles_set_textureno sensitive capability
  • physics_set_gravityno sensitive capability
  • primitive_mesh_createno sensitive capability
  • project_add_autoloadno sensitive capability
  • project_add_export_presetno sensitive capability
  • project_get_infono sensitive capability
  • project_get_settingno sensitive capability
  • project_list_settingsno sensitive capability
  • project_remove_autoloadno sensitive capability
  • project_set_main_sceneno sensitive capability
  • project_set_settingno sensitive capability
  • resource_createno sensitive capability
  • resource_duplicateno sensitive capability
  • resource_get_import_settingsno sensitive capability
  • resource_get_propertyno sensitive capability
  • resource_loadno sensitive capability
  • resource_saveno sensitive capability
  • resource_set_import_settingsno sensitive capability
  • resource_set_propertyno sensitive capability
  • rigidbody_set_propertiesno sensitive capability
  • scene_closeno sensitive capability
  • scene_get_dependenciesno sensitive capability
  • scene_get_treeno sensitive capability
  • scene_list_openno sensitive capability
  • scene_newno sensitive capability
  • scene_openno sensitive capability
  • scene_packno sensitive capability
  • scene_reloadno sensitive capability
  • scene_saveno sensitive capability
  • scene_save_asno sensitive capability
  • screenshot_editorno sensitive capability
  • selection_getno sensitive capability
  • selection_setno sensitive capability
  • shader_createno sensitive capability
  • shader_set_codeno sensitive capability
  • shadermaterial_createno sensitive capability
  • shadermaterial_set_paramno sensitive capability
  • shadermaterial_set_shaderno sensitive capability
  • signal_add_user_signalno sensitive capability
  • signal_connectno sensitive capability
  • signal_disconnectno sensitive capability
  • signal_emitno sensitive capability
  • signal_listno sensitive capability
  • signal_list_connectionsno sensitive capability
  • test_detectno sensitive capability
  • test_listno sensitive capability
  • theme_createno sensitive capability
  • theme_set_colorno sensitive capability
  • theme_set_fontno sensitive capability
  • tilemap_clearno sensitive capability
  • tilemap_get_cellno sensitive capability
  • tilemap_set_cellno sensitive capability
  • tilemap_set_cells_rectno sensitive capability
  • tilemaplayer_createno sensitive capability
  • tileset_add_sourceno sensitive capability
  • tileset_add_tileno sensitive capability
  • tileset_createno sensitive capability
  • tileset_set_tile_collisionno sensitive capability

Toxic flows 1

Cross-tool combinations that form a data-exfiltration primitive (untrusted input → sensitive source → external sink).

What this scan could not see

Versions 10

Scan history per published version. The engine is deterministic — the same version always yields the same score, so a changed score means the package itself changed.

VersionScoreFindingsEngineScanned
v1.85.0 latest A 93/100 13 1.13.0 2026-09-07
v1.84.1 A 93/100 13 1.13.0 2026-09-05
v1.83.0 A 93/100 13 1.13.0 2026-09-01
v1.82.1 A 93/100 13 1.13.0 2026-08-25
v1.82.0 A 93/100 13 1.12.1 2026-08-24
Show 5 more versions ↓
v1.81.0 A 93/100 13 1.12.1 2026-08-19
v1.78.1 A 93/100 13 1.12.1 2026-08-18
v1.76.0 A 93/100 13 1.12.1 2026-08-17
v1.74.1 A 93/100 13 1.12.1 2026-08-16
v1.74.0 A 93/100 13 1.12.1 2026-08-13

Embed this score

Show this server's live Trust Score in your README, docs or website. The badge is served straight from the registry and updates automatically after every rescan — no API key needed. It links back to this page, so anyone who sees the grade can also read the findings behind it instead of taking a number on faith.

MCP Trust Score: A · 93/100
Markdown (GitHub README)
[![MCP Trust Score](https://mcptrustchecker.com/registry/breakpoint-mcp/badge.svg)](https://mcptrustchecker.com/registry/breakpoint-mcp)
HTML
<a href="https://mcptrustchecker.com/registry/breakpoint-mcp"><img src="https://mcptrustchecker.com/registry/breakpoint-mcp/badge.svg" alt="MCP Trust Score" height="20"></a>
Prefer shields.io styling? Point it at https://mcptrustchecker.com/registry/breakpoint-mcp/badge.json via https://img.shields.io/endpoint?url=…

Verify this score yourself

The score above is reproducible: the same package version always yields the same result. Run it locally or over the free API — no account, no LLM, fully deterministic.

npx mcptrustchecker scan breakpoint-mcp --online

Use the free API → How scoring works

More in Gaming & Entertainment