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: circuit-sim-mcp
Installation
npm install -g circuitsnapAls 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 circuitAls 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 |
| 10 000 |
| 2.2e-6 |
| 4700 |
| 1e6 (Mega, nicht Milli) |
| 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 testDie 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.
This server cannot be deployed
Maintenance
Related MCP Connectors
AI electronics blueprint generator — BOM, wiring, firmware, renders for Arduino/ESP32/RPi.
Search real parts with datasheet-provenance specs, check compatibility and compose priced BOMs.
Conversational what-if simulation: build, diagnose and compare Petri-net models; CC0 catalog.
Build your own tools from chat: design, test and host them on a shareable MCP server URL.
1
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceGenerates, simulates, and inspects LTspice circuits via MCP tools and resources, providing structured JSON interfaces for AI agents.MIT
- FlicenseNot gradedqualityFmaintenanceProvides circuit simulation capabilities via MCP, enabling creation, simulation (DC, AC, transient), and analysis of electronic circuits using PySpice.1-
- AlicenseNot gradedqualityDmaintenanceEnables MCP-compatible agents to generate Qucs circuit schematics, run simulations, and parse results programmatically.1MIT
- AlicenseNot gradedqualityAmaintenanceEnables AI agents to automatically generate Multisim circuits, run simulations, extract experimental data, and export circuit diagrams, CSV, waveforms, and lab reports.19MIT