Prototype · Preview: every server in the official registry, synced every 30 minutes. Reviews and accounts come in a later step.
PopNx MCPMCP servers for people who use AI · explained in plain words

Reashield

by HMAKT99version 0.7.1i★ –iRuns on your computer
Registry nameio.github.HMAKT99/reashield

Install

Overview

Description from the maker (original English)

Defensive hardening against automated reverse engineering - the defensive mirror of REA.

PopNx MCP’s three pillars

These three are never merged into one score: opinions, measurements and popularity are different things.

What you can do with it

We have not written a plain-language summary for this one yet. Below are the facts we read from the registry.

  • Connection: Runs on your computer
  • Transport: stdio
  • Category: Other

Install

Pick the AI app you use, then copy the settings.

Before you install

  • Basic checks: 1 of 1 passed
  • Runs on your computer with your user’s permissions (files, network, apps).
  • The registry lists no key to fill in.

You need

  • npmNode.js installed (for the npx command)

Which app do you use?

Pick your app above. We remember it, so next time the button says “Install in …”.

Open Claude Desktop → Settings → Developer → Edit Config, and paste this into claude_desktop_config.json

{
  "mcpServers": {
    "reashield": {
      "command": "npx",
      "args": [
        "-y",
        "reashield"
      ]
    }
  }
}

Run this in your terminal

claude mcp add reashield -- npx -y reashield

Open in Cursor

Or copy the settings yourself

Paste into .cursor/mcp.json in your project, or ~/.cursor/mcp.json

{
  "mcpServers": {
    "reashield": {
      "command": "npx",
      "args": [
        "-y",
        "reashield"
      ]
    }
  }
}

Your browser asks to open the app, then the app shows the settings and asks you to confirm. Key values are left empty for you to fill in.

Open in VS Code

Or copy the settings yourself

Paste into .vscode/mcp.json in your project

{
  "servers": {
    "reashield": {
      "type": "stdio",
      "command": "npx",
      "args": [
        "-y",
        "reashield"
      ]
    }
  }
}

Your browser asks to open the app, then the app shows the settings and asks you to confirm. Key values are left empty for you to fill in.

This one runs on your computer, and ChatGPT can only connect to servers on the internet. Pick another app.

Your choice stays on this device in a cookie; no account needed.

These settings are generated from the maker’s registry entry. If the README says otherwise, follow the README.

What it can do

Runs on your computer; the tool list appears in your AI app after you install it.

Basic checksi

We check information anyone can see; we have not read the code. Checks that do not apply are left out of the count. · Checked Nov 7, 2026

  • ✓ Pass

    Maker matches the repo

    The registry name was verified with the GitHub account HMAKT99, which owns the repo

  • … Not checked yet

    Still maintained

    We have not read this repo from GitHub yet

  • … Not checked yet

    Has a licence

    We have not read this repo from GitHub yet

  • – Not applicable

    Endpoint responds

    This one runs on your computer; there is no internet endpoint

  • – Not applicable

    Sign-in with OAuth

    Runs on your computer and uses local settings instead

  • … Not checked yet

    No hidden instructions in tool descriptions

    Runs on your computer; we can only read tool lists from internet endpoints

Compared with others in Otheri

  • More stars than 0% of the other 32688 servers in this category
  • Published to the registry more recently than 94% of the other 32688 servers in this category
  • Basic checks equal to or better than 100% of the other 32688 servers in this category

Compared with every active server in this category in the registry. Stars count only when the publisher owns the repo.

Common questions

Is Reashield safe?

It passed 1 of 1 applicable basic checks. We have not read the code. Before adding a key or token, see what access the server asks for and use a key with only the permissions you need.

What keys or codes does it need?

The registry does not list a required key, though some servers ask you to sign in on first use.

Does it run on my computer or in the cloud?

It runs on your computer. Your AI app starts it when needed, and data does not pass through the maker’s servers (unless it calls an online service itself).

Is it still maintained?

The GitHub repo last changed –, and the latest version (0.7.1) reached the registry 2 days ago.

Which apps can use it?

Apps that support MCP, such as Claude Desktop, Claude Code, Cursor and VS Code. You also need Node.js on your computer.

What can I use instead?

In the same category: Spec Driven Development, Remote Desktop Commander, 御府和田玉 在售作品查询

Alternatives

Servers in the same category from other makers, sorted by stars.

Reading a card:★ GitHub starsiThree pillars: reviews · checks · usageiUpdated = latest version published to the registryi

Spec Driven Development

by formulahendry

MCP Server that facilitates spec-driven development workflows, not just Vibe Coding.

Runs on your computer★ 440MITUpdated 14 months ago
Install

Remote Desktop Commander

by desktop-commander

Remote Desktop Commander: use files, terminal and processes on your own computers from any AI app.

Runs in the cloud★ 211Updated 2 days ago
Install

README from the maker

Open the README

Copied from the maker’s repo as written. PopNx MCP has not reviewed or endorsed it. HTML, images and scripts are removed. Links lead off this site.

REAShield

## REA reverse-engineers any app. REAShield makes it come back empty.

REA — the #1 trending repo on GitHub — lets an AI agent reverse-engineer your shipped app in one command, no source code needed. REAShield is the defensive counter: drop it into your build and it hardens what you ship (JavaScript / Electron / Python) so automated reverse engineering comes back empty.

Measured against the real attacker — not claimed
  • REA (rea-agents) recovered 6 protected tokens → 0 after hardening.
  • webcrack fully deobfuscated the hardened client (1103 changes, string array decoded) and *still* recovered 0 — because the secrets were relocated/sealed, not just obfuscated.
npm i -D reashield

npx reashield build # hardened client + generated server skeleton npx reashield test --rea # run the REAL REA on before/after; score what it recovers

Python front-end: pip install reashield (see python/).

### Honest promise & limits — read this

Offline code can never be made unbreakable. If a machine must run it, the

machine has it, so it can always be extracted given effort — obfuscation, WASM and

bytecode only raise the cost. REAShield's job is to defeat the automated attack

(the one REA just handed everyone) and raise a human analyst's cost from minutes to

days. The only *truly* unrecoverable code is code you don't ship — run it

server-side (mode: "relocate"). Defensive-only, behavior-preserving, transparent

(no phone-home). It hardens code you own and ship; it won't help bypass anyone

else's DRM, license checks, or anti-cheat.


Use it from an AI agent (MCP server)

REA is an MCP server that hands an agent *reverse-engineering* tools. REAShield ships the defensive mirror — an MCP server that hands an agent hardening tools, so Claude Code / Cursor can inspect, harden, and measure a project from chat.

Tools: `reashield_doctor` (what's exposed), `reashield_harden` (harden it), `reashield_measure` (run the real REA and report the recovery score).

# Claude Code

claude mcp add reashield -- npx -y reashield-mcp

Cursor / other MCP clients — add to your MCP config:

{ "mcpServers": { "reashield": { "command": "npx", "args": ["-y", "reashield-mcp"] } } }


Two front-ends, one architecture

REAShield is a monorepo. The same durable idea — move secrets off-device, turn static facts into runtime facts, and measure the result — is implemented for two ecosystems:

Front-endInstallProtectsStatus
JavaScript / npm / Electron (this package)npm i -D reashieldshipped JS bundles, app.asarpublished
Python (python/)pip install -e pythonshipped .py appsin this repo

Both share the pillar ordering below. The Python package mirrors relocation, sealing (AES-GCM), string indirection, name mangling, polymorphism, decoys, and a measurement harness — with a safety analyzer that refuses rather than miscompiles. See python/README.md.

Interpreted / source-shipped languages are the natural fit; compiled-to-native (Go, Rust, C/C++) ship no source and are a different reverse-engineering game.


Why this works (the threat model)

REA's JavaScript/Electron path is static — it never runs your app. It reads your bundle, rebuilds a graph of modules, imports, routes, IPC channels and strings, then hands a coding agent a compact summary to reason over. It honestly leaves anything computed at runtime unresolved and drops relationships when a graph gets too big.

So the durable defenses either move secrets off-device or turn static facts into runtime facts REA can't resolve. Plain obfuscation — the thing LLM-assisted deobfuscation erodes fastest — is the replaceable outer skin, not the foundation.

Defense pillars (ordered by durability)

Pillarmode / layerWhat it doesHonest limit
Server-side relocationrelocateMoves the real body to a generated server skeleton; ships only an opaque remote-call stub through one endpoint. The secret never ships.Needs a secured backend; the request/response boundary is observable.
Encrypted sealing (max)sealShips the module as ciphertext, decrypted at runtime with a key fetched from your server.Needs connectivity; does not stop a human dumping decrypted memory.
WASMwasmCompiles numeric-subset logic to a real WebAssembly module, off REA's JS graph path.Numeric subset only; falls back to obfuscate (reported) outside it; wasm can still be decompiled.
Dynamic graph (max)dynamicGraphComputed imports + runtime dispatch table — deletes the call/import edges REA recovers.CPU cost; scoped to protected regions.
Graph starvationflattenBundle, stripSourceMaps, stringIndirection, dynamicChannelsOne module, no maps, no semantic plaintext strings, computed channel names.Obfuscation erodes over time.
PolymorphismpolymorphicPer-build re-randomization of names, strings and structure — defeats version diffing.Cosmetic alone; pairs with the above.
DecoysdecoysInert fake "feature" clusters (hub + ring-linked members + a fake entry) with plausible route/IPC/key strings, shaped to look central in REA's summary.Experimental; measured, can add size.
Integrityintegrity (off)Fail-safe anti-tamper.Does not defend REA's static path (REA never runs your app).

Install

npm install --save-dev reashield

Quick start

npx reashield init          # scaffold shield.config.cjs

npx reashield build # emit hardened client + server skeleton npx reashield doctor # show config, layers, costs, deps npx reashield test # measure before vs after (static; add --rea for real REA)

Config (shield.config.cjs)

module.exports = {

input: "src/index.js", output: "dist-shielded", preset: "balanced", // low | balanced | max protect: [ { name: "licenseCheck", mode: "relocate" }, // strongest: off-device { name: "sealedCalc", mode: "seal" }, // ciphertext + remote key (max) { name: "pricingLogic", mode: "wasm" }, // off the JS graph (fast-follow) { name: "featureGate", mode: "obfuscate" }, // harden in place ], server: { enabled: true, out: "server-shielded", adapter: "express", endpoint: "/s", keyEndpoint: "/s/k", decoyCalls: false, }, polymorphic: { enabled: true, seed: "auto" }, // "auto" rotates every build layers: { stripSourceMaps: true, flattenBundle: true, obfuscate: true, stringIndirection: true, dynamicChannels: true, dynamicGraph: false, decoys: { enabled: true, count: 5 }, integrity: false, }, };

protect: ["a", "b"] (a plain string array) is also accepted; each defaults to mode: "obfuscate". You can also put the config under a reashield key in package.json.

Presets
  • low — strip maps, flatten, mangle. Fast, minimal size.
  • balanced (default) — + string indirection, name homogenization, computed channels, opaque relocation boundary, structural polymorphism, 5 decoys. Low cost.
  • max — + dynamic dispatch, encrypted sealing, decoy calls, control-flow flattening, dead-code injection, self-defending, ~15 decoys. Adds latency / CPU / size — doctor flags it.

Bundler plugins (run hardening inside your existing build)

Instead of the CLI, harden as part of an esbuild / Rollup / Vite build. The plugin runs the source-level pillars per module, then finalizes each output chunk (decoys + obfuscation + source-map stripping + client-runtime injection) and writes the server skeleton. flattenBundle is a no-op here — your bundler already bundles; the plugin hardens its output. Configure the relocated/sealed transport once via the global the plugin installs: globalThis.__configureShield({ transport, keyTransport }) (or let the default fetch transport call your endpoints).

// rollup.config.mjs

import { reashieldRollup } from "reashield/plugins"; export default { input: "src/index.js", output: { dir: "dist", format: "esm" }, plugins: [reashieldRollup({ configPath: "shield.config.cjs" })], };

// vite.config.mjs  (Vite consumes the Rollup plugin interface)

import { reashieldVite } from "reashield/plugins"; export default { plugins: [reashieldVite({ configPath: "shield.config.cjs" })] };

// esbuild build script

import { build } from "esbuild"; import { reashieldEsbuild } from "reashield/plugins"; await build({ entryPoints: ["src/index.js"], bundle: true, outdir: "dist", plugins: [reashieldEsbuild({ configPath: "shield.config.cjs" })], });

Each plugin accepts { config | configPath, cwd, seed }. Note: the plugin hardens every emitted JS chunk, so obfuscation cost applies to the whole output — scope your build accordingly.

The generated server skeleton

relocate and seal emit a server-shielded/ directory holding the real logic and keys. Never ship it to users. You run it behind your own auth + TLS. REAShield scaffolds the Express/Fastify wiring and an in-process handler for tests; securing the endpoint is your responsibility (it does not add auth for you).

Auth seam (you supply it). Until you call setAuthVerifier, the endpoint is open — secure it before shipping. The client attaches a token from a source you configure; the server verifies it:

// server

import { setAuthVerifier } from "./server-shielded/handlers.js"; setAuthVerifier(async (token, ctx) => (await myAuth.verify(token)) === true);

// client (wire once at startup) configureShield({ authToken: () => myAuth.currentToken() }); // (or globalThis.configureShield in plugin builds)

Adapters. adapter: "express" | "fastify" | "web" | "generic". The skeleton always exports a cross-runtime webHandler(request: Request): Promise that drops into Hono, Cloudflare Workers, Deno, Bun, or a Next.js route handler:

import { webHandler } from "./server-shielded/handlers.js";

export const POST = (req) => webHandler(req); // Next.js app route, Workers fetch, ...

Relocated/sealed functions become async (they do a round-trip). Make sure your call sites await them. They must be self-contained (no closure over client-only module state).

Behavior preservation

Hardening must never change what your program does. The bundled example (examples/sample-package) proves identical outputs before and after hardening — including relocated and sealed code, exercised through an in-process server — and asserts decoys never execute. Run it with npm run example:test.

Electron hardening

For Electron apps, REAShield adds an Electron-specific path (pair it with the JS pillars above):

  • Dynamic IPC channel rewriting — turns literal ipcMain/ipcRenderer/ webContents channel strings into runtime-computed ones. REA leaves dynamically-computed IPC names unresolved by design, so this directly starves its graph. Value-preserving: both sides compute the identical string. Enable with layers.ipcChannels: true, or run standa

Only the beginning is shown; read the rest in the repo

Ask PopNx