@VioletEverGarden-zc/dsh-rea-mcp-toggle avatar

@VioletEverGarden-zc/dsh-rea-mcp-toggle

在 DeepSeek Harness Web UI 中一键开关 REA MCP 服务器(rea-mcp),并向模型暴露配套的开关工具 rea_mcp_toggle;选择按 profile 持久化,重启后依然生效。

PluginDeveloperBrowserStorageAgent orchestrationWeb search
Verification
L4 · Install tested
Failed
Risk
LowRisk
Health
Active
Trust
Silver

Install verification: sandbox install ok, web smoke failed (L5) · tested on dsh 0.2.1-rc.2 · last checked Install verification details →

What it doesAI

One-click toggle for the REA MCP server in the DSH Web UI, exposing a rea_mcp_toggle tool and saving the choice per profile.

  • One-click on/off switch for the rea-mcp server in the Web UI
  • Exposes a rea_mcp_toggle tool so the model can flip it too
  • Toggle state is persisted per profile and survives restarts
developerAIagent-orchestrationAI

Capability tags are AI-inferred or rule-extracted from the README (see badge) — vocabulary-limited, not install-verified. AI = inferred; README = literal keyword from the readme.

Installation

dsh plugin --profile web add github:VioletEverGarden-zc/dsh-rea-mcp-toggle
verified

Install method: GitHub · sandbox install ok, web smoke failed (L5)

Verification & Compatibility

Grouped by plugin version: each card lists the dsh versions actually tested against that artifact version and their install verdicts (L5 wins). Untested combinations are omitted — absence means untested, never assumed compatible. L1–L3 are a plugin-level static archive (independent of the dsh version — the same verdict on every dsh row): they sit in each row's level grid next to L4/L5, marked "static", while their evidence is stored once per plugin inside that row's "checks & evidence" instead of being duplicated per version.

External credentials (plugin-level): none detected

Declared DSH compatibilityfrom package.json · peerDependencies
author declared no dsh version requirement

○ The author declares no dsh version requirement — install is not blocked by version.

Install compatibility matrix (rows = plugin versions〔latest 5〕, columns = dsh versions〔latest 5〕)
At-a-glance → evidence in the cards below
plugin \ dshdsh 0.2.1-rc.2dsh 0.2.1-alpha.4
v1.1.0··
Install compatibility (by plugin version, dsh versions within)
Legend:✓ L5 runtime verified○ ecosystem plugin◼ ecosystem app✗ failed
v1.1.0github2026-10-21

https://github.com/VioletEverGarden-zc/dsh-rea-mcp-toggle

No runtime install test for this version (static scan only) — compatibility unknown, never assumed.

Only the latest 3 published versions are shown; source-snapshot (commit hash) groups, unstated groups and older versions are omitted — the full archive stays in the data layer (snapshot/unstated groups appear only when a plugin has no published version).

Author badges

Embed the official badges in your README to showcase security & install-test status:

dsh.so risk
`[![dsh.so risk](https://www.dsh.so/badge/dsh-rea-mcp-toggle.svg)](https://www.dsh.so/artifact/dsh-rea-mcp-toggle/)`

Security Report

Two automated layers, neither a manual review: a static scan (per-plugin rule checks) and a model-driven dynamic security audit that covers only the subset static-flagged at warn or above and never executes plugin code.

dsh-rea-mcp-toggleAutomated review · daily

Static low, dynamic low — stricter wins → overall low.

static low→dynamic low→overall low
0 critical·0 high
lowoverall · low
1static scan · vet primaryvet AST static analysis (npm artifact or git source)
plugin versionv1.1.1dsh manifest
scanned versionv1.1.1git2026-10-21
current versionv1.1.1same version
vet verdictclean · git

Vet is an AST static scan (npm artifact or git source).

show static findings (7)
  • warningeval · code-execscripts/acceptance.mjs:52

    const evaluate = new Function('ctx', 'expr', 'with (ctx) {\n return eval(expr)\n}')

  • warningnewFunction · code-execscripts/acceptance.mjs:52

    const evaluate = new Function('ctx', 'expr', 'with (ctx) {\n return eval(expr)\n}')

  • warningeval · code-execscripts/check-tool-schema.mjs:58

    const parameters = eval('(' + balanced(source, source.indexOf('{', paramsKey)) + ')')

  • warningeval · code-execscripts/probe-roundtrip.mjs:33

    const evaluate = new Function('ctx', 'expr', 'with (ctx) {\n return eval(expr)\n}')

  • warningnewFunction · code-execscripts/probe-roundtrip.mjs:33

    const evaluate = new Function('ctx', 'expr', 'with (ctx) {\n return eval(expr)\n}')

  • warningeval · code-execscripts/probe-seam.mjs:45

    const evaluate = new Function('ctx', 'expr', 'with (ctx) {\n return eval(expr)\n}')

  • warningnewFunction · code-execscripts/probe-seam.mjs:45

    const evaluate = new Function('ctx', 'expr', 'with (ctx) {\n return eval(expr)\n}')

2model reads redacted source context · never executes plugin code
highest gradelow
merged intooverall low
audited at2026-10-19
findings0 critical·0 high0 medium / 3 low hidden
show 3 audit findings
  • lowDev-only acceptance/probe scripts eval `!!js` seam expressions via new Function + with/evalscripts/acceptance.mjs:52

    The evaluator runs a `!!js` expression read from the operator's own cordis.patch.yml/profile layer. This script is not referenced by package.json main/exports/files and is run manually by the operator. The Harness Loader already evaluates `!!js` expressions itself, so this is not a privilege escalation; it only affects someone who already controls the patch layer.

  • lowDev-only link-deps.mjs recursively deletes <pkg>/node_modules and junctions an env/config-supplied Harness rootscripts/link-deps.mjs:36

    The destructive delete targets only the package's own node_modules directory, and the Harness root used for the junction is validated against marker packages (cordis/dsh/dsh-tools/js-yaml) before linking. This is a manual dev setup step, not runtime-loaded; no attacker-controlled path is required for normal use.

  • lowAgent-callable `selftest` persists enabled:false when no prior state file existsindex.js:517

    On a fresh profile the state file is absent, so `before` is undefined; the test invokes setEnabled(false) via the gateway and the finally clause skips restore. The profile is left with a persisted `{ enabled: false }`, so the home-layer seam disables the REA row on the next boot, and the live MCP child is disposed/re-inited. This is within the tool's own authority (the `set` action can disable anyway), so it is an integrity/availability inconvenience rather than a privilege escalation, but the comment claiming it restores 'no matter how the probe ends' is inaccurate.

Runtime code is a narrow, guarded REA MCP toggle; the scan's warnings map to dev-only eval/symlink scripts and one diagnostic side effect, all low severity.

Rule: the dynamic audit can only raise risk, never lower it (raise-only, never an exemption); a wrong raise is withdrawn by human review and the tier falls back to the static verdict. Overall verdict = the stricter of the two layers.

Disclaimer: the static scan and the dynamic security audit are both automated analysis, not a security guarantee. Always review what you install.

Activity

Last commit 2026-10-21 · activity: Active

• Repo created: 2026-10-15

• Stars: ★ 0 · Forks: 0

• Health: Active — committed within last 30 days

Source

GitHub: github.com/VioletEverGarden-zc/dsh-rea-mcp-toggle

Was this page helpful?