Skip to main content
Glama

Circuitarium MCP

Local electronics tools for MCP-capable assistants, with support for CRUMB save files and Logisim-evolution projects.

CI npm MCP Registry License: Apache-2.0

Circuitarium lets an MCP host inspect circuit files without pretending that static analysis is a running simulator. It can trace CRUMB nets, build BOMs, run electrical rule checks, analyze Logisim projects, and optionally ask Logisim-evolution to produce truth tables or run test vectors.

Release 0.3.1 includes 22 tools, nine read-only Resources, and four workflow Prompts. The server is model-neutral: Codex, Claude Code/Desktop, VS Code, LM Studio, Jan, or another local MCP host supplies the model and launches Circuitarium over stdio. Circuitarium itself needs no OpenAI, Anthropic, or local-model API key.

Quick start

You need:

  • Node.js 22 or newer;

  • an MCP client that can launch a local stdio server; and

  • a dedicated folder containing only the circuit files you want the client to access.

Windows, macOS, and Linux are covered by CI. CRUMB analysis and the static Logisim tools need neither simulator nor Java.

To install and start the local stdio server from a terminal:

npx -y circuitarium-mcp@0.3.1

In an interactive terminal this prints a short status panel. In normal use, your MCP client runs the same command and keeps the server connected over stdio.

1. Add Circuitarium to your MCP client

Most clients ask for the same command, arguments, and environment variable:

Command: npx
Arguments: -y circuitarium-mcp@0.3.1
Environment:
  CIRCUITARIUM_MCP_ROOT=/absolute/path/to/circuit-workspace

The first launch can take longer while npm downloads the package. Later starts normally use npm's cache.

Replace the path with the smallest folder that should contain the .cru, .circ, .vec, and .txt files available to the model. Do not point it at your home directory or a drive root.

Copyable configurations are available for:

See the client setup guide for platform-specific examples and local-model guidance. The starter workspace recipe copies one synthetic CRUMB fixture plus the full-adder Logisim project into an isolated folder, so a first test does not require access to the rest of a source checkout. Restart or reload the client after adding the server.

Claude Desktop users can instead download circuitarium-mcp-0.3.1.mcpb directly and open it as a local bundle. The installer asks for a circuit workspace and offers optional Logisim JAR and Java settings. The release page also includes checksums and the matching npm tarball.

2. Try a circuit with no simulator installed

Paste this into the connected client:

Use Circuitarium. Call electronics_capabilities. Create the built-in breadboard-led fixture as demo/first-led.cru without overwriting anything, analyze it, and run crumb_check_design. Explain which findings are static inferences rather than simulation results.

Your client may ask you to approve creation of the synthetic file. The tool refuses to overwrite an existing path; on a repeat run, analyze the existing file or choose a new name.

A healthy connection creates a small synthetic file, recognizes its breadboard and LED, and reports two floating-terminal warnings. The fixture is independently authored and safe to redistribute; it is not a CRUMB asset.

3. Check the launcher from a terminal

These commands verify the published launcher without opening a server session:

npx -y circuitarium-mcp@0.3.1 --help
npx -y circuitarium-mcp@0.3.1 --version
npx -y circuitarium-mcp@0.3.1 doctor --smoke

If the bare npx -y circuitarium-mcp@0.3.1 command appears to wait, the server is working as designed: it is waiting for an MCP host on stdin. Press Ctrl+C and let the host launch the command itself.

Watch the terminal demo to see the source-checkout command runner inspect a synthetic fixture, build its BOM, and export its netlist. The public package exposes the MCP server, help, version, and doctor commands shown above.

Watch the MCP Inspector demo to see the server running in an independent MCP client, or read the reproducible 22-tool host verification and its sanitized evidence report.

Related MCP server: kicad-forge

What you can do

Area

Current capabilities

General electronics

Discover available backends, validate portable experiment descriptions, and plan what evidence is needed to verify circuit claims

CRUMBLE / CRUMB

Discover, inspect, validate, and compare Unity-era .cru saves; build BOMs and netlists; trace conductive nets; query supported IC pinouts; and run static electrical checks

Logisim-evolution

Discover and inspect .circ projects, export a deliberately partial neutral netlist, and optionally run component statistics, truth tables, and test vectors

Cross-model work

Preserve workspace-relative project references and raw-byte SHA-256 digests so another model can confirm it is reading the same artifact

CRUMBLE—Circuit Representation & Universal Model Bridge for Laboratory Electronics—is the unofficial CRUMB-specific integration inside Circuitarium. The simulator-neutral tools keep CRUMB-specific assumptions out of future adapters.

The current surface breaks down into three neutral electronics_* tools, thirteen crumb_* tools, and six logisim_* tools. All tool results use the electronics.mcp/0.2 result contract, independent of the package version.

Static analysis versus runtime execution

Operation

Simulator or Java required?

What it establishes

All crumb_* tools

No

Facts inferred from a saved Unity-era .cru file; never live CRUMB behavior

logisim_list_projects, logisim_analyze_design, logisim_export_netlist

No

Saved .circ structure and an explicitly partial neutral representation

logisim_component_stats

Java 21 and a user-supplied Logisim 4.1.0 all-JAR

The selected project and circuit loaded in one bounded subprocess

logisim_truth_table, logisim_run_test_vector

Java 21 and a user-supplied Logisim 4.1.0 all-JAR

Bounded behavioral evidence for the exact project digest; not a live GUI session

Resources and Prompts

No

Guidance and workflow templates only; they do not read a project or execute a simulator

Compatibility and honest limits

Target

Status

Boundary

CRUMB 1.3.5, Unity-era .cru format

Experimental support

Static, version-pinned file analysis under crumb.unity/1.3.5

Godot-era CRUMB 2.x

Not supported

Requires a separate evidence profile and controlled-save corpus

Live CRUMB control or simulation

Not implemented

No run, pause, step, signal-read, or GUI bridge

Arbitrary CRUMB editing

Not implemented

The only public write tool creates one of five fixed synthetic fixtures

Logisim-evolution 4.1.0 static analysis

Experimental support

Clean-room .circ parsing; neutral netlists remain explicitly partial

Logisim-evolution 4.1.0 execution

Optional

Bounded, one-shot JAR subprocesses; no live GUI session

CRUMB electrical rule checks operate on inferred net connectivity and saved component values. They can find supply shorts, an LED placed directly across both rails of one recognized supply, a directly connected resistor whose saved values imply excessive dissipation, and selected floating terminals or IC power pins. They do not trace series paths, prove polarity, calculate general circuit behavior, or certify a physical build.

WARNING

Circuitarium is experimental educational software, not a safety certification tool. Do not rely on its output alone for mains voltage, battery charging, medical, automotive, life-safety, high-energy, or regulatory work. Use authoritative component documentation, appropriate measurements, and qualified engineering review wherever consequences matter.

File parsing happens locally, but the MCP host may send returned data to a cloud model. Embedded firmware source is omitted by default, and binary EEPROM contents are never returned, but you should still use a narrow workspace with no secrets. Read the security policy for the full trust model.

Optional Logisim runtime

The three static Logisim tools work without Java. To enable component statistics, truth tables, and test vectors:

  1. Install Java 21 or newer.

  2. Download the official logisim-evolution-4.1.0-all.jar.

  3. Add the JAR path to the MCP host configuration.

CIRCUITARIUM_LOGISIM_JAR=/absolute/path/to/logisim-evolution-4.1.0-all.jar
CIRCUITARIUM_JAVA=java

CIRCUITARIUM_JAVA is optional when java already resolves to Java 21 or newer. On a headless Linux machine, test-vector execution also needs a working X11 display; Xvfb is sufficient.

Use only a trusted JAR. Circuitarium verifies that it self-reports version 4.1.0, but that response does not authenticate the file or its publisher. Runtime tools may update Logisim's per-user Java preferences and are not an operating-system sandbox.

The repository includes an independently authored full-adder project and vector for a first runtime test. Circuitarium does not bundle or download Logisim-evolution. See the Logisim adapter guide for setup, Linux notes, evidence levels, and subprocess safeguards.

Typical workflows

Review a CRUMB save

  1. Call electronics_capabilities.

  2. Call crumb_list_projects if the path is not known. Projects include a digest when requested and within the documented file and aggregate bounds; otherwise the result explains why it was omitted.

  3. Call crumb_analyze_design with view: "summary".

  4. Use crumb_export_netlist, crumb_trace_net, crumb_check_design, or crumb_bom only as the question requires.

Static findings remain file-format inference. Circuitarium does not observe whether CRUMB is running or how the circuit behaves.

Verify a Logisim project

  1. Call logisim_list_projects, then logisim_analyze_design.

  2. Treat logisim_export_netlist as partial static evidence and review its conversion-loss markers.

  3. If the optional runtime is available, select an exact circuit and call logisim_truth_table or logisim_run_test_vector.

  4. Use electronics_plan_verification when a claim needs several kinds of evidence or an explicit list of remaining gaps.

Hand work to another model

Keep projectRef, projectDigest, backendId, adapterVersion, and compatibilityProfile with the handoff. The receiving model should pass the recorded digest as expectedProjectDigest on its first read. If the bytes have changed, Circuitarium returns PROJECT_STATE_CONFLICT instead of silently reusing stale conclusions.

See the cross-model handoff example.

Tool reference

Neutral electronics tools

Tool

Purpose

electronics_capabilities

Report callable backends, limitations, and recommended workflows

electronics_validate_experiment

Validate a portable experiment description without claiming it ran

electronics_plan_verification

Build an evidence plan for explicit circuit claims

CRUMBLE tools

Tool

Purpose

crumb_component_catalog

Return the version-pinned CRUMB component catalog

crumb_analyze_design

Read bounded semantic views of a .cru save

crumb_compare_designs

Compare two digest-guarded saves without modifying either

crumb_inspect_design

Return a compact format-level inventory

crumb_validate_design

Check XML structure and known invariants

crumb_generate_fixture

Create one fixed synthetic fixture without overwriting

crumb_list_projects

Discover workspace .cru files and bounded artifact metadata

crumb_get_component

Fetch one component and optional bounded source window

crumb_bom

Group recognized components into a bill of materials

crumb_ic_reference

Query the version-pinned IC package and pin registry

crumb_export_netlist

Export static, jumper-collapsed inferred nets

crumb_trace_net

Produce a paged conductive witness for one terminal

crumb_check_design

Run scoped static electrical rule checks

Logisim-evolution tools

Tool

Purpose

logisim_list_projects

Discover workspace .circ files

logisim_analyze_design

Inspect static project, circuit, component, Pin, Clock, and wire structure

logisim_export_netlist

Export an explicitly partial coordinate-based neutral netlist

logisim_component_stats

Ask the configured JAR to load and inventory a circuit

logisim_truth_table

Evaluate a bounded combinational truth table

logisim_run_test_vector

Run a workspace-contained vector and return structured failures

The nine Resources provide capability metadata, compatibility profiles, synthetic-example metadata, electrical-review and digital-testing guidance, a neutral component-profile schema, and version-pinned component catalogs. The four user-invoked Prompts are:

  • review-circuit-design

  • compare-crumb-designs

  • verify-logisim-design

  • handoff-circuit-project

Resources and Prompts do not read a project or run a simulator by themselves. Clients that do not expose those MCP features can still use all 22 tools. The contract reference documents exact resource URIs, Prompt arguments, result envelopes, errors, output bounds, and tool schemas.

Contributing

Circuitarium is still early, and small, well-evidenced improvements are useful. Good starting points include client setup fixes, synthetic test circuits, source-cited component profiles, parser edge cases, controlled compatibility observations, and scoped roadmap work.

Before changing an adapter or public contract, read the contribution guide, architecture, and provenance policy. Questions and early design ideas belong in Discussions; reproducible bugs, scoped feature requests, and controlled interoperability evidence belong in the issue tracker.

git clone https://github.com/Craftiee/circuitarium-mcp.git
cd circuitarium-mcp
npm ci
npm run lint
npm run check

Use npm run test:coverage for behavioral changes, npm run package:check for package or launcher changes, and npm run logisim:e2e for Logisim runtime changes. The Logisim E2E test requires Java 21 and a separately supplied 4.1.0 all-JAR.

Fixtures must be small, synthetic, independently authored, and safe to redistribute. Do not submit private circuits, firmware, simulator binaries, extracted assets, or third-party circuit designs. Build a minimal synthetic reproduction instead. Report vulnerabilities through GitHub private vulnerability reporting, not a public issue. All contributors must follow the Code of Conduct.

Documentation

Document

Use it for

Client setup

Host-specific installation, subscriptions/APIs, and local models

CRUMBLE guide

Current CRUMB scope and evidence profiles

Logisim guide

JAR setup, runtime evidence, safety, and Linux notes

MCP contract

Exact tools, Resources, Prompts, envelopes, and limits

Architecture

Adapter boundaries and simulator-neutral design

Provenance

Evidence categories and redistribution rules

Roadmap

Shipped milestones and planned work

Changelog

Release history

Privacy Policy

Circuitarium runs locally over stdio, has no telemetry, and does not send circuit files to a maintainer-controlled service. The MCP host and model provider you choose may still process tool arguments and results under their own terms. Read the complete Privacy Policy before granting a host access to a workspace.

Project status and license

Circuitarium MCP is experimental community software released under the Apache License 2.0. Version 0.3.1 is available on npm and as a GitHub release, and its metadata is listed in the official MCP Registry. For help, see SUPPORT.md. Research and teaching users can cite the project with CITATION.cff.

Circuitarium MCP, CRUMBLE, and the Logisim-evolution adapter are independent, unofficial interoperability work. They are not affiliated with, endorsed by, or sponsored by CRUMB, Logisim-evolution, or their developers. This repository contains no CRUMB or Logisim-evolution simulator code, binaries, extracted assets, logos, or bundled third-party circuit designs. Product names and marks belong to their respective owners.

Available Tools

22 tools
crumb_analyze_designAnalyze a CRUMB design semanticallyA
Read-onlyIdempotent

Recognizes version-pinned component parameters, terminal attachments, and inferred connection groups. Summary is the bounded default; components and connections use opaque cursors. Embedded firmware and geometry require explicit opt-in.

Inputs: path (required), view, limit, cursor, +4 more. Returns: ok, data, error, context, +4 more

crumb_bomBuild a bill of materialsA
Read-onlyIdempotent

Groups recognized components by kind and decoded part values into quantities. State values such as switch positions are excluded from part identity; unknown and schema-mismatched components stay visible as their own lines.

Inputs: path (required), limit, expectedProjectDigest. Returns: ok, data, error, context, +4 more

crumb_check_designRun electrical rule checksA
Read-onlyIdempotent

Lints the inferred netlist: supply shorts, LEDs directly across the rails, shorted two-terminal parts, floating IC power pins, resistor power ratings, and floating terminals. Findings carry evidence confidence and rule basis; a rule violation returns ok=true with data.valid=false.

Inputs: path (required), topologyMode, applySwitchStates, expectedProjectDigest. Returns: ok, data, error, context, +4 more

crumb_compare_designsCompare CRUMB files under the Unity profileA
Read-onlyIdempotent

Read-only, GUID-matched comparison of a baseline and candidate .cru under crumb.unity/1.3.5. Distinguishes exact bytes, modeled equivalence, root changes, component changes, and unverified payload signatures without returning raw XML, firmware, EEPROM bytes, or thumbnails.

Inputs: baselinePath (required), candidatePath (required), view, limit, +6 more. Returns: ok, data, error, context, +4 more

crumb_component_catalogList recognized CRUMB component schemasA
Read-onlyIdempotent

Returns the version-pinned CRUMB tool-ID catalog, payload signatures, typed parameters, terminal labels, confidence values, and their machine-readable evidence vocabulary. Optionally filter by toolId.

Inputs: toolId. Returns: ok, data, error, context, +4 more

crumb_export_netlistExport named electrical netsA
Read-onlyIdempotent

Collapses jumper wires out of the inferred connection graph and returns paged electrical nets with component terminals, VCC/GND names inferred from DC supply terminals, and optional saved-switch-state merges. Provenance and confidence are explicit.

Inputs: path (required), limit, cursor, topologyMode, +2 more. Returns: ok, data, error, context, +4 more

crumb_generate_fixtureGenerate a synthetic CRUMB fixtureA

Creates one known fixture without overwriting. Provide outputPath for a file artifact; raw XML is returned only when includeXml=true.

Inputs: kind (required), name, includeXml, outputPath. Returns: ok, data, error, context, +4 more

crumb_get_componentFetch one CRUMB component in full detailA
Read-onlyIdempotent

Returns a single component by id with parameters, terminals, geometry, its inferred connection groups, and windowed access to embedded firmware source past the analyze cap. The read-back companion for iterative work on one part.

Inputs: path (required), componentId (required), sourceOffset, topologyMode, +3 more. Returns: ok, data, error, context, +4 more

crumb_ic_referenceLook up CRUMB IC packages and pinoutsA
Read-onlyIdempotent

Queries the version-pinned tool-5 IC registry by prefabId or by a label/package substring (for example "74HC138"). Returns package labels, ordered pin names, and explicit unresolved pins.

Inputs: query, prefabId. Returns: ok, data, error, context, +4 more

crumb_inspect_designInspect compact CRUMB metadataA
Read-onlyIdempotent

Returns a bounded save summary and tool-ID counts. Use crumb_analyze_design for paginated semantic component and connection details.

Inputs: path (required), expectedProjectDigest. Returns: ok, data, error, context, +4 more

crumb_list_projectsList CRUMB projects in the workspaceA
Read-onlyIdempotent

Enumerates .cru files under the workspace root (or one subdirectory) with size, modification time, and SHA-256 digest, so a model can discover projects without being handed a path.

Inputs: dir, limit, recursive, includeDigests. Returns: ok, data, error, context, +4 more

crumb_trace_netTrace one inferred CRUMB electrical netA
Read-onlyIdempotent

Selects one component terminal by stable index and returns a paged deterministic connectivity witness with structured attachment, board, jumper, and optional saved-switch provenance. It is static conductive inference, not current flow, path enumeration, or simulation.

Inputs: path (required), componentId (required), terminalIndex (required), limit, +5 more. Returns: ok, data, error, context, +4 more

crumb_validate_designValidate a CRUMB designA
Read-onlyIdempotent

Performs XML and CRUMB structural checks without launching the game. A bad design returns ok=true and data.valid=false.

Inputs: path (required), expectedProjectDigest. Returns: ok, data, error, context, +4 more

electronics_capabilitiesOrient to Circuitarium MCPA
Read-onlyIdempotent

Zero-argument onboarding for model-neutral conventions, callable backends, truthful limitations, and recommended workflows. Call this first when unsure.

Inputs: no named parameters. Returns: ok, data, error, context, +4 more

electronics_plan_verificationPlan evidence-aware electronics verificationA
Read-onlyIdempotent

Builds a deterministic, simulator-neutral plan for explicit claims using bounded caller-reported evidence. It reads no files, runs no tools or simulators, authenticates no receipts, and never certifies physical hardware.

Inputs: claims (required), target (required), evidence, declaredInterface. Returns: ok, data, error, context, +4 more

electronics_validate_experimentValidate a portable electronics experimentA
Read-onlyIdempotent

Checks an arbitrary JSON value against the simulator-neutral circuit, firmware, probe, assertion, and timing contract. Invalid input returns ok=true and data.valid=false with diagnostics.

Inputs: experiment (required). Returns: ok, data, error, context, +4 more

logisim_analyze_designAnalyze a Logisim-evolution projectA
Read-onlyIdempotent

Parses bounded .circ XML into project, circuit, pin, clock, component, and explicit conversion-loss summaries. Static parsing is not simulation evidence.

Inputs: path (required), circuit, expectedProjectDigest. Returns: ok, data, error, context, +4 more

logisim_component_statsLoad a project and count Logisim componentsB
Idempotent

Invokes the separately installed JAR, after it self-reports Logisim-evolution 4.1.0, with --tty stats. Success proves that configured process loaded the staged project, not behavioral simulation or binary authenticity.

Inputs: path (required), limit, circuit, timeoutMs, +1 more. Returns: ok, data, error, context, +4 more

logisim_export_netlistExport a partial Logisim netlistA
Read-onlyIdempotent

Exports simulator-neutral coordinate-endpoint nets with explicit loss markers. It does not infer unmodeled gate geometry, mid-segment junctions, or behavior.

Inputs: path (required), limit, cursor, circuit, +1 more. Returns: ok, data, error, context, +4 more

logisim_list_projectsList Logisim-evolution projectsA
Read-onlyIdempotent

Discovers workspace .circ projects with stable raw-byte digests. This is static file discovery and does not launch Logisim.

Inputs: dir, limit, recursive. Returns: ok, data, error, context, +4 more

logisim_run_test_vectorRun a Logisim test vectorB
Idempotent

Invokes the separately installed JAR, after it self-reports Logisim-evolution 4.1.0, with staged snapshots of a workspace-contained project and .vec/.txt file. Assertion failures return ok=true with data.valid=false.

Inputs: path (required), vectorPath (required), circuit, timeoutMs, +3 more. Returns: ok, data, error, context, +4 more

logisim_truth_tableSimulate a bounded Logisim truth tableC
Idempotent

Invokes the separately installed JAR, after it self-reports Logisim-evolution 4.1.0, in CSV/binary table mode after statically bounding declared input width.

Inputs: path (required), limit, circuit, timeoutMs, +2 more. Returns: ok, data, error, context, +4 more

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

Loading tool schema changelog…

    TDQS

    A3.8/5.0

    Scored across 22 tools

    Disambiguation5/5

    Every tool has a clearly distinct purpose, reinforced by consistent prefixes (crumb_, logisim_, electronics_) and explicit descriptions. Even closely related tools like crumb_validate_design (structural XML checks) and crumb_check_design (netlist linting) are unambiguously separated. Higher-level analysis tools (inspect vs analyze) are differentiated by summary vs paginated detail.

    Naming Consistency4/5

    The naming is mostly consistent with a predictable pattern: prefixes for simulators, and parallel names for shared operations (list_projects, analyze_design, export_netlist). Minor deviations exist, such as noun-phrase names (crumb_bom, crumb_ic_reference, electronics_capabilities) versus verb-first names, but the overall structure remains readable and coherent.

    Tool Count4/5

    At 22 tools, this exceeds the typical 3-15 range, but the count is justified by covering two distinct simulators (CRUMB and Logisim) plus a generic electronics validation layer. Each tool serves a unique function, and the number feels appropriate for the breadth of the domain.

    Completeness4/5

    The tool set provides comprehensive coverage for circuit analysis and validation: project discovery, design analysis, validation, netlist export, tracing, BOM generation, IC lookup, and simulation/test execution. Minor gaps exist, such as lack of design creation/editing tools, but these appear outside the server's stated analytical purpose.

    Maintenance

    ActivityInactive
    ResponsivenessNo recent community issues

    Related MCP Connectors

    Related MCP Servers

    • A
      license
      B
      quality
      C
      maintenance
      Provides schematic/PCB analysis, authoring, and SPICE simulation through MCP, enabling direct KiCad file manipulation and verification without requiring KiCad for reading.
      18
      MIT
    • A
      license
      Not graded
      quality
      C
      maintenance
      Provides read-only MCP tools for parsing KiCad netlists and schematics, running evidence-based audits, and generating deterministic sizing and BOMs.
      MIT
    • A
      license
      Not graded
      quality
      C
      maintenance
      Enables AI assistants to read and decode, generate from scratch, and reset Crocodile Physics 1.7 circuit files (.cyp) without opening the GUI, exposing components, wires, electrical nodes and saved voltages and currents as MCP tools. Generated circuits open and simulate directly in Crocodile, and the whole format is exposed byte by byte.
      MIT