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 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 installed
Maintenance
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
- FlicenseCqualityCmaintenanceThis 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.21
- AlicenseNot gradedqualityDmaintenanceEnables AI tools to create, edit, and inspect KiCAD schematic files, including components, wires, labels, and sheets.MIT
- AlicenseNot gradedqualityBmaintenanceGenerates, 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.
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.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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