Atlas / MCP servers / madeinoz67 / benchweave

benchweaveBLOCK

mcp/madeinoz67/benchweave

BenchWeave is a Python test-bench gateway for embedded systems, combining reusable instrument and DUT plugins, shared device profiles, and safety-aware automated testing using AI.

Verdict
BLOCK
Grade
F
Trust score
39 /100
Exposed tools
1 1r · 0w · 0d
Transport
streamable-http
License
MIT
Stars
0
01

Overview

From the repository's own README, as read at the audited commit. Badges and raw HTML are left out.

BenchWeave is a Python test-bench gateway for embedded systems, combining reusable instrument and DUT plugins, shared device profiles, and safety-aware automated testing.

Status: architecture baseline and Python scaffold. The repository includes versioned contracts, PoC/MVP plans and architecture validation in CI. The gateway, device plugins and hardware qualification remain to be implemented.

The plan

  • Connect instruments and devices under test through reusable plugins and typed device profiles.
  • Share profiles and implementations through a central registry, with local admission and offline execution.
  • Coordinate bounded test procedures with explicit ownership, measurement evidence and verified safe endings.
  • Expose a consistent REST and MCP interface for applications and coding agents.

The first PoC is simulator-first. The planned hardware MVP targets the FNIRSI DPS-150, with ESP32 as the provisional controller family. Unattended hardware testing requires separate bench commissioning and qualification.

Website and documentation

The public site is at — the standards, the guides and architecture record, and the benchweave CLI reference, rendered from this repository by the docs workflow (.github/workflows/docs.yml, scripts/assemble_docs_site.py). Docs serve versioned per-tag snapshots at docs/v// once a release tag exists, with the latest release at the docs root and the current tree at docs/v/dev/. The site's version claims are stamped at assembly from the standards manifest's active versions: claim sites in website/index.html carry {{stg-*}} tokens, and the hygiene pin refuses a three-component version literal anywhere under website/ or in index.qmd (two-component prose claims remain outside the pattern by desi

Read from source at commit b0ff393e1d04OBSERVED · 2026-10-12
Advertisement
02

Connect

Built from this server's own package name, version and transport as found in its source — not copied from anyone's documentation, so it cannot drift against a page we do not control. Replace the environment placeholders with a token scoped to the least it needs.

claude-code
claude mcp add benchweave --env BENCHWEAVE_SECRET=${BENCHWEAVE_SECRET} --env MUNINN_MCP_TOKEN=${MUNINN_MCP_TOKEN} --env MUNINN_TOKEN=${MUNINN_TOKEN} --env TYPESAFE_API_KEY=${TYPESAFE_API_KEY} -- uvx benchweave
claude-desktop
{
  "mcpServers": {
    "benchweave": {
      "command": "uvx",
      "args": [
        "benchweave"
      ],
      "env": {
        "BENCHWEAVE_SECRET": "${BENCHWEAVE_SECRET}",
        "MUNINN_MCP_TOKEN": "${MUNINN_MCP_TOKEN}",
        "MUNINN_TOKEN": "${MUNINN_TOKEN}",
        "TYPESAFE_API_KEY": "${TYPESAFE_API_KEY}"
      }
    }
  }
}
03

Exposed tools (1)

1 read · 0 write · 0 destructive.

ToolRiskDescription
stg_v1_gateway_inforeadSpike tool: empty-input gateway info.
04

Trust audit

BLOCKgrade F · trust 39/100 Do not install this without reading the findings. The audit found something that could harm you or your machine.

LayerWhat it checksResult
L0Provenance & inventoryPASS
L1Static analysis of the codeFAIL
L2Instruction surface (what it tells the agent)WARN
L3Class-specific surfacePASS
L4Behavioural (sandbox)SKIPPED

What the source does

Filesystem
declared (9 observation(s))
Network
declared (5 observation(s))
Shell
declared (2 observation(s))
Dependencies
pinned
Secrets in source
found

Findings (25)

HIGHCode injection · code.eval_exec · CWE-78, CWE-94, CWE-95
src/benchweave/registry/activation.py:185
exec(compile(entry_bytes, str(entry_path), "exec"), module.__dict__)  # noqa: S102
Why it matters. evaluates text as code
Fix. remove; use a parser or a dispatch table
HIGHCode injection · code.eval_exec · CWE-78, CWE-94, CWE-95
src/benchweave/registry/otdp_loading.py:165
exec(compile(self.inventory[path], module.__file__, "exec"), module.__dict__)  # noqa: S102
Why it matters. evaluates text as code
Fix. remove; use a parser or a dispatch table
HIGHObfuscation / stealth · obf.rtl_override · CWE-506, CWE-94
src/benchweave/cli/retention.py:945
_MD_CONTROL = re.compile(r"[\x00-\x1f\x7f

]")
MEDIUMNetwork egress · net.raw_ip · CWE-200, CWE-319
.claude/hooks/memory-drain.mjs:81
const BASE = argOf('--base') || process.env.MUNINN_MCP_URL || 'http://127.0.0.1:8750/mcp'
MEDIUMNetwork egress · net.raw_ip · CWE-200, CWE-319
.claude/hooks/memory-freshness.mjs:64
'node .claude/hooks/memory-drain.mjs --base http://127.0.0.1:8125/mcp',
MEDIUMObfuscation / stealth · obf.homoglyph · CWE-506, CWE-94
packages/ui-html/src/benchweave_ui_html/artifacts.py:1589
if "Δt = 7 μs" not in rendered.text_content:
MEDIUMObfuscation / stealth · obf.homoglyph · CWE-506, CWE-94
packages/ui-html/src/benchweave_ui_html/artifacts.py:1590
messages.append("the seconds-mode Δt readout scales the unit (Δt = 7 μs)")
MEDIUMObfuscation / stealth · obf.homoglyph · CWE-506, CWE-94
packages/ui-html/src/benchweave_ui_html/artifacts.py:1594
if "Δt = 7 samples" not in sample_render.text_content:
MEDIUMObfuscation / stealth · obf.homoglyph · CWE-506, CWE-94
packages/ui-html/src/benchweave_ui_html/artifacts.py:1595
messages.append("sample-index mode reads the raw difference (Δt = 7 samples)")
MEDIUMObfuscation / stealth · obf.homoglyph · CWE-506, CWE-94
packages/ui-html/src/benchweave_ui_html/artifacts.py:1597
"Δt = 7 μs" in sample_render.text_content
MEDIUMHard-coded secrets · secret.generic · CWE-798, CWE-321
tests/cli/test_diagnose.py:805
secret = "tok-do-not-print-5f3a"
MEDIUMHard-coded secrets · secret.generic · CWE-798, CWE-321
tests/cli/test_diagnose.py:890
secret = "tok-do-not-print-5f3a"
MEDIUMHard-coded secrets · secret.generic · CWE-798, CWE-321
tests/cli/test_diagnose.py:1103
secret = "tok-do-not-print-5f3a"
MEDIUMHard-coded secrets · secret.generic · CWE-798, CWE-321
tests/cli/test_diagnose.py:1123
secret = "tok-do-not-print-5f3a"
MEDIUMPrompt injection · prompt.hidden_style · CWE-94, CWE-1427
.claude/deep-review/2026-10-02-issue301-g1e-cutover-design.md:396
(row layer, run at the fold): `style="display:none"` planted on
MEDIUMPrompt injection · prompt.hidden_style · CWE-94, CWE-1427
.claude/deep-review/2026-10-02-issue301-g1e-cutover-design.md:398
`element <span> is hidden by inline style (style='display:none')`; restored →
LOWInventory / provenance · inv.binary · CWE-1104
fixtures/registry/origin-b/benchweave/sim-psu/1.0.0/manifest.sig
manifest.sig
Why it matters. a compiled or binary member cannot be reviewed from source
Fix. ship source, or explain the binary in the README
LOWInventory / provenance · inv.binary · CWE-1104
fixtures/registry/origin-b/benchweave/sim-psu/1.0.0/payload.zip
payload.zip
Why it matters. a compiled or binary member cannot be reviewed from source
Fix. ship source, or explain the binary in the README
LOWInventory / provenance · inv.binary · CWE-1104
fixtures/registry/origin-main/benchweave/dc-psu-profile/1.0.0/manifest.sig
manifest.sig
Why it matters. a compiled or binary member cannot be reviewed from source
Fix. ship source, or explain the binary in the README
LOWInventory / provenance · inv.binary · CWE-1104
fixtures/registry/origin-main/benchweave/dc-psu-profile/1.0.0/payload.zip
payload.zip
Why it matters. a compiled or binary member cannot be reviewed from source
Fix. ship source, or explain the binary in the README
LOWInventory / provenance · inv.binary · CWE-1104
fixtures/registry/origin-main/benchweave/sim-controller-descriptor/1.0.0/payload.zip
payload.zip
Why it matters. a compiled or binary member cannot be reviewed from source
Fix. ship source, or explain the binary in the README
LOWInventory / provenance · inv.hidden_file · CWE-1104
.gitmodules
.gitmodules
Why it matters. hidden member outside the usual dotfiles
Fix. review its purpose
LOWInventory / provenance · inv.suspicious_name · CWE-1104
fixtures/registry/origin-b/benchweave/sim-psu/1.0.0/payload.zip
payload.zip
Why it matters. member named after an attack tool
Fix. remove or justify
LOWInventory / provenance · inv.suspicious_name · CWE-1104
fixtures/registry/origin-main/benchweave/dc-psu-profile/1.0.0/payload.zip
payload.zip
Why it matters. member named after an attack tool
Fix. remove or justify
LOWInventory / provenance · inv.suspicious_name · CWE-1104
fixtures/registry/origin-main/benchweave/sim-controller-descriptor/1.0.0/payload.zip
payload.zip
Why it matters. member named after an attack tool
Fix. remove or justify

Gates applied: no_behavioural_pass.

Audited 2026-10-12 · audit v0.4.1 · source sha b0ff393e1d04full audit observations/trust-audit/mcp-server/madeinoz67__benchweave.json · Report an issue / request a re-scan
05

Audit history

Every audit this server has had. A grade with a past is a grade somebody is still checking.

DateSourceVerdictGradeScoreChange
2026-10-12b0ff393e1d04BLOCKF39first audit
06

Questions

What is the benchweave MCP server?

BenchWeave is a Python test-bench gateway for embedded systems, combining reusable instrument and DUT plugins, shared device profiles, and safety-aware automated testing using AI.

What tools does benchweave expose?

1 in total: 1 read-only, 0 that write, and 0 that can delete or overwrite. Every one is listed on this page with its risk.

Is benchweave safe to connect to an agent?

No — not without reading the findings first. The audit graded it F (39/100) and found 3 critical or high issues in the source. Each one is listed on this page with the file and line it is on.

What credentials does benchweave need?

It reads BENCHWEAVE_SECRET, MUNINN_MCP_TOKEN, MUNINN_TOKEN and TYPESAFE_API_KEY from the environment. Give it a token scoped to the least it needs — an agent that can be talked into calling a tool can be talked into calling it with your credentials.

How does benchweave run?

It speaks streamable-http, so it runs as a service you connect to over the network. It is published on PyPI as benchweave.

How current is this page?

The grade is for one exact copy of the source (b0ff393e1d04), read on 2026-10-12. The repository is watched and re-audited when it changes.

Advertisement