Skip to main content
Glama
gambhirsharma

circuitsnap

circuitsnap

Snap it, sim it. Mach aus einer Schaltkreiszeichnung – einem Foto, einer Skizze oder einfach einer Beschreibung – eine Live-Simulation in Falstad's CircuitJS1.

Erhältlich als MCP-Server (damit Claude und andere Assistenten Schaltkreise bauen können), als CLI und als Bibliothek.

$ circuitsnap build rc.json
https://www.falstad.com/circuit/circuitjs.html?ctz=CQAgjCAMB0l3BWcMBMcUHYMGZIA4UA2ATmIxAUgo...

$ 1 0.000005 10.20027730826997 50 5 50
v 128 64 192 64 0 0 40 5 0 0 0.5
r 384 64 448 64 0 10000
c 128 176 192 176 0 0.000001 0 0
...

Öffne die URL und der Schaltkreis läuft.

Warum

Ein Sprachmodell direkt dazu aufzufordern, CircuitJS1s Dateiformat zu erzeugen, funktioniert nicht. Das Format ist positional und unnachgiebig – v 128 64 192 64 0 0 40 5 0 0 0.5 hat sechs nachgestellte Parameter, deren Reihenfolge, Einheiten und Flag-Bits nur durch Lesen des Java-Quellcodes des Simulators herauszufinden sind. Eine falsche Vermutung erzeugt einen Schaltkreis, der ohne Probleme lädt und trotzdem falsch simuliert, was der schlimmstmögliche Fehlschlag ist: Der Benutzer kann es nicht erkennen.

circuitsnap verlagert diese Aufgabe in getesteten Code. Das Modell beschreibt was mit was verbunden ist; diese Bibliothek übernimmt Format, Geometrie, Escaping und Enkodierung.

Related MCP server: KiCAD Schematic Manipulation MCP Server

Installation

npm install -g circuitsnap

Als MCP-Server

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

(circuitsnap ist die CLI; circuitsnap-mcp ist der stdio-Server. circuitsnap mcp startet den Server ebenfalls, falls du eine einzelne Binärdatei bevorzugst.)

Kopiere für Claude Code außerdem skills/circuitsnap/ in .claude/skills/, um den /circuitsnap-Workflow zu erhalten, der das Lesen einer Zeichnung und die Verifizierung des Ergebnisses abdeckt.

Verwendung

Beschreibe den Schaltkreis als Netlist – Bauteile und Netznamen, keine Koordinaten:

{
  "title": "RC lowpass",
  "components": [
    { "id": "V1", "kind": "voltage",   "nodes": ["gnd", "in"],  "value": 5 },
    { "id": "R1", "kind": "resistor",  "nodes": ["in", "out"],  "value": "10k" },
    { "id": "C1", "kind": "capacitor", "nodes": ["out", "gnd"], "value": "1uF" }
  ]
}

Terminals, die denselben Netznamen teilen, sind verbunden. Das ist das ganze Modell.

circuitsnap build rc.json          # URL + circuit text
circuitsnap build rc.json --url    # just the URL
circuitsnap elements               # pin order and parameters for every kind
circuitsnap decode "<share-url>"   # read someone else's circuit

Als als Bibliothek:

import { snap } from 'circuitsnap';

const { url, text, diagnostics } = snap({
  components: [
    { id: 'V1', kind: 'voltage',  nodes: ['gnd', 'in'], value: 5 },
    { id: 'R1', kind: 'resistor', nodes: ['in', 'gnd'], value: '1k' },
  ],
});
console.log(url.url);

Werte sind

Technische Schreibweise, wie man sie auf einem Schaltplan notiert:

Eingabe

Wert

"10k"

10 000

"2.2uF"

2.2e-6

"4k7"

4700

"1M"

1e6 (Mega, nicht Milli)

"1R2"

1.2

M ist Mega und m ist Milli – die Schaltplan-Konvention. SPICs M-bedeutet-Milli würde einen handbeschrifteten "10M"-Widerstand in 10 Milliohm verwandeln.

Elemente #### wire, resistor, capacitor, inductor, voltage, rail, ground, switch,

diode, led, current, labeledNode, transistor, opamp, output, probe, text.

Führe circuitsnap elements aus, um Pinstelligkeit, Parameter, Einheiten und Standardwerte zu erhalten. Die Pin Pin-Reihenfolge macht einen Unterschied: Ein Transistor ist [base, collector, emitter], ein Op-Amperer ist [minus, plus, out].

Masse

Verwende den Netnamen gnd (oder ground, 0, vss). Diese Terminalserhalten ein echtes Massesymbol, kein Label – ein beschrifteter Knoten namens "gnd" trägt nicht den 0-Volt-Bezugspunkt-Referenz und würde den Solver ohne Datum lassen. circuitsnap warnt, wenn ein Schaltkreis überhaupt keine Masse hat.

So funktioniert's

Die Pipeline ist: Netlist → validieren → Layout → ausgeben → URL, wobei nur der Schritt ein Zeichnung lesen ein Modell erfordert. Zwei Entscheidungen sind wichtig zu wissen:

  • Nets runkommen über benannte Labels, nicht geroutete Drähte. Ein Auto-Router mit 95% Zuverlässigkeit erzeugt Schaltkreise, die richtig aussehen und falsch simulieren. Ein Label neben einem Pin ist verifizierbar. Die Ausgabe ist wie ein hierarchischer Schaltplan.

  • Wir erzeugen das Legacy-Textformat, nicht XML. Der aktuelle Upstream schreibt XML, liest aber Text – Text ist also die einzige Kodierung, die in alten und neuen Builds lädt.

Siehe docs/ARCHITECTURE.md für die Begründung und docs/FORMAT.md für die Dateiformat-Referenz, abgeleitet aus dem Upstream-Quellcode mit

Zeilenangaben.

Korrektheit

Das Format ist Reverse-Engineered, daher ist die Korrektheit tragend:

  • 372 Upstream-Schaltkreise werden über den Parser byte-identisch zurückgespielt.

  • Erzeugte Ausgabe wird auf Terminals-Zusammenfall, Escaping und die Flag-Bits geprüft, die vom Upstream aufgezwungen werden.

  • Live-Verifizierung: Erzeugte Schaltkreise werden in den echten Simulator geladen und berücksichtigt dieaddesbackgelesenen. So wurde die Geometrie der mehrpinigen Bauteile validiert – ein OpAmp-Followerz muss tatsächlich folgen, und ein als Transistor muss werden.

npm run reference:fetch   # clone upstream (not vendored; see docs/LICENSING.md)
npm test

Die Testsuite benötigt keine Netzwerke.

Lizenz

circuitsnap ist MIT. CircuitJS1 ist GPL-2.0-or-later von Paul Falstad and Iain Sharp und wird hier weder gebündelt noch modifiziert – circuitsnap erzeugt Dateien in seinem Format und öffnet seine URL. Die volle Begründung inklusive der Handhabung von falstad.coms AI-Crawler-Signaturen findest du in docs/LICENSING.md (kurz: kein Crawling, kein Scraping, Tests völlig, @base-url Standard)

Nicht verbunden mit dem CircuitJS1-Team, noch durch es unterstützt.

A
license - permissive license
Not graded
quality - not tested
C
maintenance

Maintenance

Maintainers
Response time
Release cycle
Releases (12mo)
Commit activity

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Servers

  • F
    license
    C
    quality
    C
    maintenance
    This server enables LLMs to design, simulate, and debug electronic circuits using LTspice via natural language commands. It automates netlist generation, library component validation, and iterative error correction for SPICE simulations.
    2
    1
  • A
    license
    Not graded
    quality
    B
    maintenance
    Generates, simulates, and inspects LTspice circuits via MCP tools and resources, providing structured JSON interfaces for AI agents.
    MIT
  • F
    license
    Not graded
    quality
    F
    maintenance
    Provides circuit simulation capabilities via MCP, enabling creation, simulation (DC, AC, transient), and analysis of electronic circuits using PySpice.

View all related MCP servers

Related MCP Connectors

  • Build, version, review, and export websites, web apps, and games from a conversation.

  • Create and manage short links, track clicks, and automate URL management

  • Create, validate, edit, export (markdown/svg/png/mermaid), and search JSON Canvas files.

View all MCP Connectors

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/gambhirsharma/circuitsnap'

If you have feedback or need assistance with the MCP directory API, please join our Discord server