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
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:
| Points | Adoption-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.
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
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
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
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
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
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
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
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
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
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
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
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
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
Each tool and what it can reach — statically extracted from the published source.
asset_gen_configureruns code / shellleaderboard_scaffoldingests untrusted inputanim_add_trackno sensitive capabilityanim_createno sensitive capabilityanim_deleteno sensitive capabilityanim_get_track_keysno sensitive capabilityanim_insert_keyno sensitive capabilityanim_listno sensitive capabilityanim_player_createno sensitive capabilityanim_remove_keyno sensitive capabilityanim_set_lengthno sensitive capabilityanim_set_loopno sensitive capabilityanim_statemachine_add_stateno sensitive capabilityanim_statemachine_add_transitionno sensitive capabilityanim_tree_add_nodeno sensitive capabilityanim_tree_createno sensitive capabilityarea_set_gravityno sensitive capabilityarea_set_monitoringno sensitive capabilityasset_gen_audio_sfxno sensitive capabilityasset_gen_iconno sensitive capabilityasset_gen_modelno sensitive capabilityasset_gen_placeholderno sensitive capabilityasset_gen_spriteno sensitive capabilityasset_gen_textureno sensitive capabilityaudio_bus_addno sensitive capabilityaudio_bus_add_effectno sensitive capabilityaudio_bus_set_volumeno sensitive capabilityaudio_player_createno sensitive capabilityaudio_set_bus_layoutno sensitive capabilityaudio_set_streamno sensitive capabilityauth_scaffoldno sensitive capabilitybackend_configureno sensitive capabilitybackend_detectno sensitive capabilitybody_createno sensitive capabilitybody_set_collision_layerno sensitive capabilitybody_set_collision_maskno sensitive capabilitybody_set_physics_materialno sensitive capabilitybreakpoint_doctorno sensitive capabilitycamera_createno sensitive capabilityclass_referenceno sensitive capabilityclassdb_get_classno sensitive capabilitycloudsave_scaffoldno sensitive capabilitycollisionpolygon_addno sensitive capabilitycollisionshape_addno sensitive capabilitycontainer_add_childno sensitive capabilitycontrol_createno sensitive capabilitycontrol_set_anchorsno sensitive capabilitycontrol_set_layout_presetno sensitive capabilitycontrol_set_size_flagsno sensitive capabilitycontrol_set_themeno sensitive capabilitycs_code_actionno sensitive capabilitycs_completionno sensitive capabilitycs_dbg_attachno sensitive capabilitycs_dbg_continueno sensitive capabilitycs_dbg_evaluateno sensitive capabilitycs_dbg_launchno sensitive capabilitycs_dbg_restartno sensitive capabilitycs_dbg_scopesno sensitive capabilitycs_dbg_set_breakpointsno sensitive capabilitycs_dbg_set_exception_breakpointsno sensitive capabilitycs_dbg_set_variableno sensitive capabilitycs_dbg_stack_traceno sensitive capabilitycs_dbg_stepno sensitive capabilitycs_dbg_variablesno sensitive capabilitycs_dbg_watchno sensitive capabilitycs_definitionno sensitive capabilitycs_diagnosticsno sensitive capabilitycs_document_symbolsno sensitive capabilitycs_hoverno sensitive capabilitycs_referencesno sensitive capabilitycs_renameno sensitive capabilitycs_signature_helpno sensitive capabilitycs_workspace_symbolsno sensitive capabilitycsg_createno sensitive capabilitydbg_attachno sensitive capabilitydbg_continueno sensitive capabilitydbg_data_breakpointsno sensitive capabilitydbg_evaluateno sensitive capabilitydbg_gotono sensitive capabilitydbg_launchno sensitive capabilitydbg_restartno sensitive capabilitydbg_scopesno sensitive capabilitydbg_set_breakpointsno sensitive capabilitydbg_set_exception_breakpointsno sensitive capabilitydbg_set_variableno sensitive capabilitydbg_stack_traceno sensitive capabilitydbg_stepno sensitive capabilitydbg_variablesno sensitive capabilitydbg_watchno sensitive capabilitydocs_searchno sensitive capabilityeditor_get_stateno sensitive capabilityeditor_pingno sensitive capabilityeditor_redono sensitive capabilityeditor_undono sensitive capabilityeditorsettings_get_setno sensitive capabilityenvironment_createno sensitive capabilityenvironment_set_skyno sensitive capabilityfilesystem_create_dirno sensitive capabilityfilesystem_listno sensitive capabilityfilesystem_moveno sensitive capabilityfilesystem_scanno sensitive capabilitygodot_launch_editorno sensitive capabilitygodot_run_projectno sensitive capabilitygodot_versionno sensitive capabilityinputmap_add_actionno sensitive capabilityinputmap_add_eventno sensitive capabilityinputmap_erase_actionno sensitive capabilityinputmap_listno sensitive capabilityjoint_createno sensitive capabilityjoint_set_bodiesno sensitive capabilitylight_createno sensitive capabilitymain_screen_getno sensitive capabilitymain_screen_setno sensitive capabilitymesh_set_surface_materialno sensitive capabilitymeshinstance_createno sensitive capabilitynavagent_configureno sensitive capabilitynavregion_createno sensitive capabilitynode_addno sensitive capabilitynode_add_to_groupno sensitive capabilitynode_call_methodno sensitive capabilitynode_change_typeno sensitive capabilitynode_deleteno sensitive capabilitynode_duplicateno sensitive capabilitynode_findno sensitive capabilitynode_get_childrenno sensitive capabilitynode_get_pathno sensitive capabilitynode_get_propertyno sensitive capabilitynode_instantiate_sceneno sensitive capabilitynode_list_groupsno sensitive capabilitynode_list_propertiesno sensitive capabilitynode_move_childno sensitive capabilitynode_remove_from_groupno sensitive capabilitynode_renameno sensitive capabilitynode_reparentno sensitive capabilitynode_set_editable_instanceno sensitive capabilitynode_set_ownerno sensitive capabilitynode_set_propertyno sensitive capabilityparticles_createno sensitive capabilityparticles_set_amountno sensitive capabilityparticles_set_emittingno sensitive capabilityparticles_set_lifetimeno sensitive capabilityparticles_set_process_materialno sensitive capabilityparticles_set_textureno sensitive capabilityphysics_set_gravityno sensitive capabilityprimitive_mesh_createno sensitive capabilityproject_add_autoloadno sensitive capabilityproject_add_export_presetno sensitive capabilityproject_get_infono sensitive capabilityproject_get_settingno sensitive capabilityproject_list_settingsno sensitive capabilityproject_remove_autoloadno sensitive capabilityproject_set_main_sceneno sensitive capabilityproject_set_settingno sensitive capabilityresource_createno sensitive capabilityresource_duplicateno sensitive capabilityresource_get_import_settingsno sensitive capabilityresource_get_propertyno sensitive capabilityresource_loadno sensitive capabilityresource_saveno sensitive capabilityresource_set_import_settingsno sensitive capabilityresource_set_propertyno sensitive capabilityrigidbody_set_propertiesno sensitive capabilityscene_closeno sensitive capabilityscene_get_dependenciesno sensitive capabilityscene_get_treeno sensitive capabilityscene_list_openno sensitive capabilityscene_newno sensitive capabilityscene_openno sensitive capabilityscene_packno sensitive capabilityscene_reloadno sensitive capabilityscene_saveno sensitive capabilityscene_save_asno sensitive capabilityscreenshot_editorno sensitive capabilityselection_getno sensitive capabilityselection_setno sensitive capabilityshader_createno sensitive capabilityshader_set_codeno sensitive capabilityshadermaterial_createno sensitive capabilityshadermaterial_set_paramno sensitive capabilityshadermaterial_set_shaderno sensitive capabilitysignal_add_user_signalno sensitive capabilitysignal_connectno sensitive capabilitysignal_disconnectno sensitive capabilitysignal_emitno sensitive capabilitysignal_listno sensitive capabilitysignal_list_connectionsno sensitive capabilitytest_detectno sensitive capabilitytest_listno sensitive capabilitytheme_createno sensitive capabilitytheme_set_colorno sensitive capabilitytheme_set_fontno sensitive capabilitytilemap_clearno sensitive capabilitytilemap_get_cellno sensitive capabilitytilemap_set_cellno sensitive capabilitytilemap_set_cells_rectno sensitive capabilitytilemaplayer_createno sensitive capabilitytileset_add_sourceno sensitive capabilitytileset_add_tileno sensitive capabilitytileset_createno sensitive capabilitytileset_set_tile_collisionno sensitive capabilityCross-tool combinations that form a data-exfiltration primitive (untrusted input → sensitive source → external sink).
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.
| Version | Score | Findings | Engine | Scanned |
|---|---|---|---|---|
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 |
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 |
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.
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
Uncensored AI tools (chat, image, RE/malware analysis, JS deobfuscation, multi-step research) for Claude Desktop, Cursor, Cline, Zed, and any MCP client.
儿童故事 MCP 服务 - 提供故事列表和搜索功能
Grade any bet against thousands of play-by-play game simulations: win probability, odds, edge.
World Cup MCP server for the 2026 men's football tournament — live scores, fixtures, standings, read-only prediction-market signals, and paste-ready match cards. Works with Claude Code, Cursor, Codex, Windsurf, Zed. Not affiliated with FIFA or Anthropic.
MCP server exposing a live Dwarf Fortress fort to an AI agent as curated, semantic tools
MCP Server for Arknights: Endfield (TypeScript / stdio + Streamable HTTP)