REA
Reverse engineer anything from your terminal or agent with one CLI and MCP server.
Contextual blast-radius scoring for shell commands an AI agent is about to run
Wähle die KI-App, die du nutzt, und kopiere die Einstellungen.
3/3 Prüfungen bestanden · Läuft auf deinem Computer · ✓ Befehle geprüft am 13. Nov. 2026
Zuerst: Welche KI nutzt du?
Wähle deine App, dann erscheinen die Schritte unten.
Klappt mit Claude, aber erst etwas vorbereiten
Installiere zuerst Python (uv) auf deinem Computer (nur einmal) · Nur in der Claude-App für den Computer (Windows oder Mac), nicht im Web oder auf dem Handy
Nur einmal; gilt für alle Server, die Python (uv) brauchen
SettingsDeveloperEdit Config
{
"mcpServers": {
"blast-scope": {
"command": "uvx",
"args": [
"blast-scope"
]
}
}
}Nutze Blast Scope und sag mir, was du für mich tun kannst; zeig mir dann eine Sache✓ Wenn Claude sagt, dass es Blast Scope nutzt, oder ein Werkzeug von Blast Scope in der Antwort zeigt, bist du verbunden
Menünamen am 11. Nov. 2026 mit der Hilfe von Anthropic abgeglichen · dein Bildschirm kann je nach App-Version leicht abweichen
ChatGPT kann Blast Scope noch nicht verbinden
Blast Scope läuft auf deinem Computer, aber ChatGPT verbindet nur Server, die im Web laufen
A · Eine App nutzen, die Blast Scope verbinden kann
B · Andere in Entwicklertools, die mit ChatGPT funktionieren
Aus den meistgenutzten derselben Kategorie, nur solche, die per Adresse ohne Schlüssel verbinden
Klappt mit Claude Code, aber erst etwas vorbereiten
Installiere zuerst Python (uv) auf deinem Computer (nur einmal)
Nur einmal; gilt für alle Server, die Python (uv) brauchen
Mac: Command+Leertaste drücken und Terminal tippen · Windows: PowerShell öffnen
claude mcp add --scope user blast-scope -- uvx blast-scopeBlast Scope sollte in der Liste als verbunden erscheinen
Nutze Blast Scope und sag mir, was du für mich tun kannst; zeig mir dann eine Sache✓ Wenn Claude Code sagt, dass es Blast Scope nutzt, oder ein Werkzeug von Blast Scope in der Antwort zeigt, bist du verbunden
Menünamen am 11. Nov. 2026 mit der Hilfe von Anthropic abgeglichen · dein Bildschirm kann je nach App-Version leicht abweichen
Klappt mit Cursor, aber erst etwas vorbereiten
Installiere zuerst Python (uv) auf deinem Computer (nur einmal)
Nur einmal; gilt für alle Server, die Python (uv) brauchen
Nutze Blast Scope und sag mir, was du für mich tun kannst; zeig mir dann eine Sache✓ Wenn Cursor sagt, dass es Blast Scope nutzt, oder ein Werkzeug von Blast Scope in der Antwort zeigt, bist du verbunden
Menünamen am 11. Nov. 2026 mit der Hilfe von Cursor abgeglichen · dein Bildschirm kann je nach App-Version leicht abweichen
Klappt mit VS Code, aber erst etwas vorbereiten
Installiere zuerst Python (uv) auf deinem Computer (nur einmal)
Nur einmal; gilt für alle Server, die Python (uv) brauchen
VS Code fragt nach einer Bestätigung; klicke Install
Nutze Blast Scope und sag mir, was du für mich tun kannst; zeig mir dann eine Sache✓ Wenn VS Code sagt, dass es Blast Scope nutzt, oder ein Werkzeug von Blast Scope in der Antwort zeigt, bist du verbunden
Menünamen am 11. Nov. 2026 mit der Hilfe von VS Code abgeglichen · dein Bildschirm kann je nach App-Version leicht abweichen
Claude Code
claude mcp add --scope user blast-scope -- uvx blast-scopeClaude Desktop (claude_desktop_config.json)
{
"mcpServers": {
"blast-scope": {
"command": "uvx",
"args": [
"blast-scope"
]
}
}
}Cursor (~/.cursor/mcp.json)
{
"mcpServers": {
"blast-scope": {
"command": "uvx",
"args": [
"blast-scope"
]
}
}
}VS Code (mcp.json)
{
"servers": {
"blast-scope": {
"type": "stdio",
"command": "uvx",
"args": [
"blast-scope"
]
}
}
}Diese Einstellungen werden aus dem Registry-Eintrag des Entwicklers erzeugt. Wenn in der README etwas anderes steht, folge der README.
Basierend darauf, wie sich dieser Server verbindet, und auf der eigenen Doku jeder App, geprüft am 10. Nov. 2026.
Laufen auf deinem Computer in
ClaudeGooseLM StudioMsty StudioCherry StudioCursorVS Code + GitHub CopilotVisual StudioWindsurf (Devin Desktop)ZedKiroClineContinueJetBrains AI AssistantClaude CodeCodex CLIGemini CLIOpenCodenodecodeWarpLibreChatRaycast
Läuft auf deinem Computer; die Tool-Liste erscheint nach der Installation in deiner KI-App.
Wir prüfen Informationen, die jeder sehen kann; den Code haben wir nicht gelesen. Checks, die nicht zutreffen, werden nicht mitgezählt. · Geprüft am 14. Nov. 2026
Der Registry-Name wurde mit dem GitHub-Konto Atharva-Jayappa bestätigt, dem das Repo gehört
Code zuletzt geändert: vor 3 Monaten
Nutzt Apache-2.0
Dieser Server läuft auf deinem Computer; es gibt keinen Endpunkt im Internet
Läuft auf deinem Computer und nutzt stattdessen lokale Einstellungen
Läuft auf deinem Computer; Tool-Listen können wir nur von Endpunkten im Internet lesen
Fragen, Tipps teilen oder melden, dass etwas nicht geht. Sortiert nach „hilfreich“.
Noch keine Beiträge. Stell die erste Frage oder teile einen Tipp.
Beiträge hier stammen von Nutzern, nicht vom PopNx-Team.
Noch keine Bewertungen
Verglichen mit allen aktiven Servern dieser Kategorie in der Registry. Sterne zählen nur, wenn dem Herausgeber das Repo gehört.
Er hat 3 von 3 zutreffenden Basischecks bestanden. Den Code haben wir nicht gelesen. Bevor du einen Schlüssel oder Token hinzufügst, sieh nach, welche Zugriffe der Server verlangt, und nutze einen Schlüssel, der nur die Berechtigungen hat, die du brauchst.
Die Registry nennt keinen erforderlichen Schlüssel, manche Server bitten dich aber bei der ersten Nutzung, dich anzumelden.
Er läuft auf deinem Computer. Deine KI-App startet ihn bei Bedarf, und die Daten laufen nicht über die Server des Entwicklers (außer der Server ruft selbst einen Onlinedienst auf).
Das GitHub-Repo wurde zuletzt vor 3 Monaten geändert, und die neueste Version (0.6.1) kam vor 3 Monaten in die Registry.
Apps, die MCP unterstützen, etwa Claude Desktop, Claude Code, Cursor und VS Code. Außerdem brauchst du Python (uv) auf deinem Computer.
In derselben Kategorie: REA, GitHub, Serena MCP: the IDE for your agent
Server derselben Kategorie von anderen Entwicklern, sortiert nach Sternen.
So liest du eine Karte:↓ Downloads pro Wochei★ GitHub-SterneiDrei Säulen: Bewertungen · Checks · NutzungiAktualisiert = neueste Version in der Registry veröffentlichti
Reverse engineer anything from your terminal or agent with one CLI and MCP server.
Connect AI assistants to GitHub - manage repos, issues, PRs, and workflows through natural language.
A powerful toolkit for coding, providing semantic retrieval and editing capabilities.
Unverändert aus dem Repo des Entwicklers übernommen. PopNx MCP hat den Inhalt weder geprüft noch empfiehlt es ihn. HTML, Bilder und Skripte wurden entfernt. Links führen von dieser Website weg.
A consequence engine for shell commands. Blast Scope scores what a command would actually *do* — before an AI agent (or you) runs it. It doesn't pattern-match syntax into a blocklist; it figures out the command's real target, observes that target with a safe, read-only probe, and returns a structured risk score with evidence.
The whole point is *contextual* blast radius. The same command gets a completely different score depending on what it would actually hit:
COMMAND SEVERITY WHY ADVICE
───────────────────────────────── ──────── ────────────────────────────────────────── ─────── rm -rf ./logs LOW 0 importers · regenerable · outside src proceed rm -rf ./config CRITICAL 8 modules import it · high PageRank hub block git reset --hard (clean tree) LOW nothing uncommitted to discard proceed git reset --hard (4 dirty files) HIGH would throw away 4 files of uncommitted work confirm git push --force (protected) CRITICAL would orphan commits on a protected branch block docker volume rm cache (absent) LOW volume doesn't exist — nothing to remove proceed docker volume rm pgdata (in use) CRITICAL holds data · in use · no image to rebuild block pip uninstall flask (uv.lock) LOW regenerable — exact version pinned in lock proceed DROP TABLE users (42 rows) CRITICAL schema + 42 rows · irreversible block DELETE FROM logs (in txn) HIGH no WHERE — but inside a txn, ROLLBACK-able confirm
Two commands can be byte-identical and score four bands apart. That gap is the product.
Not a blocklist. Not a replacement for Shellfirm. Not a syscall monitor. It
scores *structural consequence* — advisory, never blocking — and for the rare
critical command it captures an undo snapshot first.
A command flows through a cheap funnel: almost everything is recognized as non-destructive in microseconds and exits silent. Only a flagged *destructive candidate* pays for a probe.
shell command
│ split chains (&& || ; |) · de-alias PowerShell · parse flags/targets ▼ ┌──────────────────────────────────────────────────────────────────────┐ │ STAGE 1 · triage (near-free regex — runs on every command) │ │ which class? git · docker · pip/uv · sql · else filesystem │ │ destructive? git status → no. git reset --hard → yes ↓ │ └───────────────────────────────┬──────────────────────────────────────┘ destructive candidate │ (everything else exits here, silent) ▼ ┌──────────────────────────────────────────────────────────────────────┐ │ ELIGIBILITY FILTER safe read-only probe? AND undo authorable? │ └──────────────┬──────────────────────────────────────┬─────────────────┘ yes, probe it │ no probe here / now │ ▼ ▼ STAGE 2 · safe probe (read-only) heuristic estimate git status · reflog · rev-list from a static per-class docker inspect · ps · ls table — and LABELED sqlite SELECT count(*) [mode=ro] "(estimated)" so you pip/uv read lockfiles know it wasn't probed │ │ └─────────────────────┬─────────────────────┘ ▼ blast radius × reversibility (combined PER CLASS — no global formula) filesystem also folds in: dependency-graph centrality + recoverability ▼ score 0.0–1.0 → severity (low / medium / high / critical) ▼ PreToolUse hook: silent (low/med) · advise (high) · advise + snapshot (critical)
The eligibility filter is the design boundary. A command class earns a *live probe* only when both hold: (1) its impact is observable by a strictly side-effect-free read (HTTP-GET sense — never mutate state to assess state), and (2) its undo story is well-known enough to encode in a static table. When a probe can't run here and now (no docker daemon, no DB driver, no creds), the tool degrades to a labeled estimate — it never guesses silently, and it never blocks.
See docs/heuristics.md for the per-class tables, the exact filesystem formula, and calibration.
| Class | Destructive ops it scores | Safe (read-only) probe | Reversibility signal |
|---|---|---|---|
| Filesystem | rm -rf, mv, > truncate | dependency graph + git status | git-tracked? regenerable? secret? precious? |
| Git | reset --hard, push --force, branch -D, clean -fdx | status · reflog · rev-list · rev-parse @{u} | reflog window · remote ahead · protected branch |
| Docker | volume rm, system prune -a, rm -f | volume inspect · ps -a · volume ls | volume → none · container → recreatable from image |
| pip / uv | pip uninstall, uv pip uninstall | read lockfile / manifest (no subprocess) | lockfile present → fully regenerable |
| SQL | DROP, TRUNCATE, DELETE without WHERE | SQLite: SELECT count(*) mode=ro; transaction check | inside a transaction? backup posture? |
New classes drop in behind one protocol (triage / assess) in src/blast_scope/classes/; each class confines assess to strictly side-effect-free reads.
Calibrated multi-class guardrail with command resolution and a precise dependency graph.
| Capability | Module |
|---|---|
| Flag/operand-sensitive command model (POSIX and PowerShell) | command_effects.py, command_parser.py |
Command resolution — env/tilde/brace/glob expansion, unset-var hazards, script transparency (sh -c, npm run + pre/post hooks, script files, Makefile targets), read-only $(...) substitution | resolution.py |
Dry-run oracles — git clean -n exact lists, reset divergence, checkout clobber preview, find -delete→-print rewrite, sqlite scoped-DELETE counts, rsync --dry-run; oracle targets feed the undo snapshot | classes/git.py, classes/find.py, classes/rsync.py, classes/sql.py |
| Recoverability classification (git state, secrets, regenerable, precious data) | recoverability.py |
| Dependency graph + weighted PageRank centrality, incremental indexing | graph_resolver.py, centrality.py |
| Two-axis, evidence-based filesystem scoring | risk_scorer.py |
| Command-class probes — git / docker / pip·uv / SQL, behind one protocol | classes/ |
| Out-of-graph path analyzers (infra / config-by-path) + git base | consequences.py, vcs.py, infra.py, config_refs.py |
| PreToolUse hook + tarball snapshot/undo | hook.py, snapshot.py |
| Eval harness + labeled corpus + calibration | eval.py, tests/fixtures/eval_corpus.jsonl |
Calibration. Two harnesses, both run-it-yourself:
tests/fixtures/eval_corpus.jsonl, 58 cases spanning every recoverability category, git working-tree state, infra/config, rm -rf .git, a graph-indexed central module, the git/docker/pip/SQL classes, and the resolution layer — unset-var collapses, glob/env-var targets, sh -c payloads, npm pre-hooks, opaque wrappers, mass destruction of tracked source) — 58/58 exact severity, gate F1 1.00, pinned by tests/test_eval.py with headroom so changes can't silently regress.data_destruction) it catches 82.4% of injected attacks on realistic workspaces — on the fast hook path, no graph required, thanks to command resolution (env/glob binding + script transparency). Wrapper transparency also lifts code_tampering from ~0% to 50%. The per-category recall is deliberately uneven, and the table says so: blast-scope scores *destructive consequence* — filesystem/data loss plus git/docker/pip/SQL state. Network exfiltration and persistence are a different threat model, out of scope by design — not an unfinished corner. That's the boundary, drawn on purpose. See bench/.uv run python -m blast_scope.eval # in-repo corpus
python bench/saber_eval.py --tasks /dataset/data/tasks.jsonl # SABER
The fastest path for any MCP client is zero-install via uvx (no clone, no venv):
uvx blast-scope # runs the MCP server on stdio
Claude Code users — one line wires up both the MCP tools and the advisory hook:
/plugin marketplace add Atharva-Jayappa/blast-scope
/plugin install blast-scope
For development, or to pin a checkout:
git clone https://github.com/Atharva-Jayappa/blast-scope.git
cd blast-scope && uv sync --all-extras
Add to your MCP client config (e.g. Claude Code settings.json):
{
"mcpServers": { "blast-scope": { "command": "uvx", "args": ["blast-scope"], "type": "stdio" } } }
Tools exposed:
| Tool | Purpose |
|---|---|
assess_command(command, cwd?, project_root?) | Score a (possibly chained) command. Returns score, severity, rationale, evidence, recoverability, affected nodes, and a per-segment chain breakdown. |
index_project(project_root) | Force a dependency-graph rebuild (auto-built on first use otherwise). |
list_snapshots(project_root) | List undo snapshots, newest first. |
restore_snapshot(snapshot_id, project_root) | Undo a risky command by restoring its snapshot. |
Intercept Bash commands *before* they run — advisory, never blocking. Volume scales with stakes: silent on low/medium, advise on high, advise + snapshot on critical. The snapshot skips what's already recoverable (git-clean, regenerable) and warns rather than tars anything over a hard size cap, so the undo net stays fast and trustworthy.
The hooks also keep the dependency graph alive on their own — no MCP call needed: SessionStart cold-builds it in a detached background process, and every PreToolUse refreshes it incrementally before scoring (a ~20 ms stat sweep when nothing changed), so verdicts track the current tree even after a burst of agent edits. Add to .claude/settings.json:
{
"hooks": { "SessionStart": [ { "hooks": [{ "type": "command", "command": "python -m blast_scope.hook" }] } ], "PreToolUse": [ { "matcher": "Bash", "hooks": [{ "type": "command", "command": "python -m blast_scope.hook" }] } ] } }
Full details and the undo flow: docs/hook.md.
A filesystem command, scored against the dependency graph:
// assess_command("rm -rf ./config", project_root="/proj")
{ "score": 0.93, "severity": "critical", "recommendation": "block", "recoverability": "untracked", "rationale": "rm targets config. 8 direct importer(s), 14 total affected. not git-tracked. recursive deletion. CRITICAL risk.", "evidence": [ "8 importer(s), 14 affected node(s)", "high centrality (PageRank 0.91) — a hub other code routes through", "untracked — not in git history", "recursive — applies to every file underneath" ], "affected_nodes": [ /* ... */ ], "chain": [ /* per-segment breakdown */ ] }
A command class