npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

@labwired/mcp

v0.7.1

Published

Model Context Protocol server exposing the LabWired deterministic firmware simulator as agent tools.

Downloads

255

Readme

@labwired/mcp

Model Context Protocol server exposing the LabWired deterministic firmware simulator as tools your AI coding agent can call.

One-line install (Claude Code)

claude mcp add labwired -- npx -y @labwired/mcp

That's it. Restart Claude Code if the tools don't appear, then ask: "List LabWired boards and run my ELF on stm32f103-blinky."

Cursor / other MCP clients: see Other clients below.


LabWired runs ARM Cortex-M / RISC-V / Xtensa firmware against a silicon-validated, deterministic simulator. This MCP server lets your agent (Claude Code, Cursor, Continue, etc.) verify firmware behaviour without lying to itself — same inputs always produce the same outputs, so the agent can iterate against a real oracle.

What it gives your agent

Core workflow:

| Tool | What it does | |---|---| | labwired_list_boards | High-level: list pre-wired boards (chip + peripherals + demo firmware). Start here. | | labwired_run_lab | High-level: run an ELF on a board by id. Synthesizes the test script, returns cycles + serial + a snapshot_id. | | labwired_fuzz | Coverage-guided fuzz a firmware ELF and return the crashing inputs. Silicon-validated sim → crashes are replayable on real hardware (HIL-confirm), not emulation false positives. Deterministic for a fixed seed. | | labwired_inspect_run | Fetch detail from a prior snapshot_idsummary, serial, gpio, raw. 10-min TTL. | | labwired_catalog | Low-level: list raw chip descriptors. | | labwired_simulate | Low-level: run firmware against a custom System Manifest + test script YAML. Full control. | | labwired_validate_system | Validate a System Manifest YAML before simulating. Fast schema check. | | labwired_validate_diagram | Structurally validate a wired diagram (parts + wires) before running. Returns machine-readable diagnostics (PIN_NOT_ON_CHIP, PIN_LACKS_I2C, BOARDIO_NOT_TO_MCU, NO_MCU, COMPONENT_DANGLING, …) with suggested fixes. | | labwired_compile_diagram | Compile a validated diagram to a runnable board manifest (ERC-gated; net-derived I2C bus binding). Persists the manifest to .labwired/boards/<name>.yaml and returns board_path + system_yaml. Errors abort with diagnostics; warnings are included in the response. | | labwired_validate_device | Validate a declarative DeviceDescriptor spec (i2c_device / spi primitives) before proposing it as a new device in labwired-core. Validate-only — no persistence; devices ship compile-time embedded via a core PR. |

Live agent → browser bridge (optional — for showing humans what the agent is doing):

| Tool | What it does | |---|---| | labwired_create_session | Open a watch session; returns a watch_url like https://app.labwired.com/?watch=<id>. Subsequent runs mirror to it automatically over WebSocket. | | labwired_set_diagram | Push the current circuit (parts + wires) to the watch session. | | labwired_set_source | Push the current source code to the watch session. | | labwired_end_session | Close the watch session. |

Prerequisites

You need the labwired CLI on your PATH. Install via:

curl -fsSL https://labwired.com/install.sh | sh

Verify with labwired --help.

Install in Cursor

Add to ~/.cursor/mcp.json:

{
  "mcpServers": {
    "labwired": {
      "command": "npx",
      "args": ["-y", "@labwired/mcp"]
    }
  }
}

Install globally (any MCP client)

npm install -g @labwired/mcp
labwired-mcp   # speaks MCP over stdio

Example agent prompts

Once installed, ask your agent things like:

"My STM32F1 blinky firmware hangs after about 100k cycles. Here's the ELF (base64-encoded) and my system.yaml. Use LabWired to simulate it with a 200k cycle budget and tell me where it stops."

"Generate a System Manifest for the Nucleo-F401RE with UART2 routed to PA2/PA3 at 115200 baud, then validate it with labwired_validate_system before I commit."

"Here are two versions of my ADC interrupt handler. Run each through labwired_simulate against my regression script and tell me which one passes all assertions."

Environment variables

  • LABWIRED_CLI — override the CLI binary path. Defaults to labwired on PATH.
  • LABWIRED_REPO_ROOT — absolute path to your labwired checkout. The high-level labwired_run_lab tool resolves board YAMLs from core/configs/. Auto-detected when the MCP server is run from inside the repo; required when running globally.

Why deterministic matters for agents

Agents that propose firmware fixes hit a fundamental problem: there's no fast, reliable oracle to verify whether a fix actually works. Physical HIL benches are slow and flaky. Best-effort simulators give different results on different runs. LLMs hallucinate "yes I think that fixes it."

LabWired is bit-accurate and reproducible by design: the same firmware + same system config + same test script produce the same result.json every time. The agent can propose, verify, iterate, and trust the answer.

Status

v0.7 — sixteen tools (fifteen plus the labwired_search_tools meta-tool), stdio transport, no auth required for local use (the simulator runs on your machine).

Shipped:

  • v0.1labwired_catalog / labwired_simulate / labwired_validate_system (raw chip + YAML workflow).
  • v0.2 — high-level board-centric workflow: labwired_list_boards / labwired_run_lab / labwired_inspect_run. ELF-in only — agents compile locally.
  • v0.3 — live agent → browser bridge: labwired_create_session / labwired_set_diagram / labwired_set_source / labwired_end_session. Runs stream over WebSocket to https://app.labwired.com/?watch=<id>.
  • v0.4labwired_validate_diagram with machine-readable diagnostics (pin/wire/bus errors + suggested fixes).
  • v0.5labwired_fuzz: coverage-guided firmware fuzzing in the silicon-validated sim; crashes are HIL-replayable, not emulation false positives.
  • v0.6labwired_validate_device: validate a declarative DeviceDescriptor (the i2c_device / spi primitives) before proposing it as a new device in labwired-core. (Supersedes the retired labwired_define_component/IR-spec flow; the IR component engine is gone — devices now ship compile-time embedded from core/configs/devices/*.yaml via a core PR, so there is no runtime type: ir / spec_path escape hatch to persist into.)
  • v0.7 — Wiring kernel: named nets, electrical rule checks (ERC), and ERC-gated diagram compilation on both MCP surfaces. labwired_validate_diagram upgraded with full kernel ERC (I2C bus rules, driver conflicts, voltage mismatches, IRQ ordinal validation). New labwired_compile_diagram compiles a diagram to a runnable board manifest with net-derived I2C bus binding.

Next:

  • v0.8 — Worker-side metering for hosted runs.

Issues / requests: https://github.com/w1ne/labwired/issues.

License

MIT.