Skip to main content
Glama
Suzu-Gears

circuitjs-mcp

by Suzu-Gears

circuitjs-mcp

Dies ist ein MCP-Server, der es KI-Agenten ermöglicht, den Falstad-CircuitJS1-Schaltungssimulator zu steuern. Da es sich um einen standardmäßigen stdio-MCP-Server handelt, funktioniert er mit jedem MCP-fähigen Client wie Claude Code, Codex CLI, Claude Desktop, Cursor usw.

CircuitJS1 ist die HTML5/JavaScript-Version des Schaltungssimulators von Paul Falstad – früher als Java-Applet-Version „Circuit Simulator Applet“ bekannt, der heute unter falstad.com/circuit im Browser läuft. Nachdem die Browser die Unterstützung für Java-Applets beendet hatten, portierte Iain Sharp sie mit GWT nach JavaScript. Sowohl die Simulationsengine als auch das Schaltungstextformat sind mit der Applet-Version identisch (Schaltungsdateien aus der Applet-Ära lassen sich direkt lesen). Die von diesem Server verwendete JavaScript-Schnittstelle wurde erst mit CircuitJS1 hinzugefügt und ist in der Applet-Version nicht vorhanden.

Er startet die kompilierte CircuitJS1-Webanwendung (webapp/ ist beigelegt, offline nutzbar) in einem Headless-Chromium (Playwright) und stellt deren JavaScript-Schnittstelle als MCP-Tools bereit. Der Zustand des Simulators bleibt über Tool-Aufrufe hinweg erhalten (Schaltung laden → laufen lassen → messen → Schaltung ändern ist interaktiv möglich).

Einrichtung

Voraussetzung: Node.js 18 oder höher.

cd circuitjs-mcp
npm install          # postinstall で Playwright の Chromium も入ります
npm test             # スモークテスト(RC回路の過渡応答が理論値と一致するか等を検証)

Falls playwright install chromium in Ihrer Umgebung schwierig ist, können Sie ein vorhandenes Chrome/Chromium verwenden:

export CIRCUITJS_CHROMIUM="/usr/bin/google-chrome"   # 例

Related MCP server: circuit-sim-mcp

Registrierung bei MCP-Clients

Der Startbefehl ist bei allen Clients gleich: node /絶対パス/circuitjs-mcp/server.mjs

Mit der Umgebungsvariable CIRCUITJS_HEADFUL=1 wird das Browserfenster angezeigt und ein Mensch kann den Simulator direkt genauso bedienen wie der Agent (Kollaborationsmodus). Alle folgenden Beispiele enthalten diese Variable. Wenn Sie sie nicht benötigen, lassen Sie sie weg.

Claude Code:

claude mcp add circuitjs -e CIRCUITJS_HEADFUL=1 -- node /絶対パス/circuitjs-mcp/server.mjs

Codex CLI:

codex mcp add circuitjs --env CIRCUITJS_HEADFUL=1 -- node /絶対パス/circuitjs-mcp/server.mjs

Clients mit Konfigurationsdatei (z. B. claude_desktop_config.json bei Claude Desktop, mcp.json bei Cursor):

{
  "mcpServers": {
    "circuitjs": {
      "command": "node",
      "args": ["/絶対パス/circuitjs-mcp/server.mjs"],
      "env": { "CIRCUITJS_HEADFUL": "1" }
    }
  }
}

Das screenshot-Tool gibt ein PNG als MCP-Bildinhalt zurück. Bei Clients ohne Bildunterstützung sollte es über das Argument save_path in eine Datei gespeichert werden.

Tool-Liste

Tool

Funktion

circuit_load

Schaltung im Falstad-Textformat laden (mit Validierung). Gibt eine Elementliste zurück

circuit_state

Zeit, Spannungsdifferenzen/Ströme/Klemmenspannungen aller Elemente sowie Spannungen beschrifteter Knoten abrufen

run_transient

Für die angegebene Simulationszeit ausführen und Zeitreihen der Sonden (Knotenspannungen, Elementströme/-spannungen/-leistungen) abtasten und zurückgeben

sim_control

run / stop / reset / status, Einstellung des maximalen Zeitschritts, Wert externer Spannungsquellen setzen

circuit_export

Schaltung als Falstad-Text oder SVG exportieren

circuit_link

Erzeugt eine URL (?ctz=-Link), mit der sich die aktuelle Schaltung (oder ein angegebener Text) direkt auf falstad.com öffnen lässt – für interaktives Prüfen und Bearbeiten im Browser

screenshot

PNG-Screenshot des aktuellen Schaltplans (als Bild zurückgegeben, auch als Datei speicherbar)

eval_js

Escape-Hatch für Vorgänge, die oben nicht abgedeckt sind. Führt beliebiges JS auf dem sim-Objekt aus

Anwendungsbeispiele (Beispielanweisungen für den Agenten)

  • „Baue einen RC-Tiefpass aus 1 kΩ und 1 µF und erfasse die Ausgangswellenform für 5 ms bei einem 1-kHz-Rechtecksignal.“

  • „Lade diese Schaltung (eingefügter Text) und liste die Verlustleistung jedes Widerstands auf.“

  • „Zeig mir einen Screenshot der Schaltung.“

Legen Sie an den zu messenden Stellen einen beschrifteten Knoten an (Elementtyp 207, z. B. 207 336 128 400 128 4 out). Dann lässt sich die Spannung über eine {"node":"out"}-Sonde oder über nodes in circuit_state auslesen. Ströme und Spannungen einzelner Elemente werden über den von circuit_load / circuit_state zurückgegebenen index angegeben.

Direkte Steuerung über Skripte

Wenn Sie die Tools ohne MCP-Client direkt aus einem Skript aufrufen möchten, können Sie drive.mjs verwenden. Es startet den Server als Unterprozess, führt die im Befehlsverzeichnis abgelegten JSON-Dateien (cmd-1.json, cmd-2.json, ...) der Reihe nach aus und schreibt die Ergebnisse nach res-N.json:

node drive.mjs /tmp/cjs-commands
# 別プロセスから: echo '{"tool":"circuit_state","args":{}}' > /tmp/cjs-commands/cmd-1.json

Dateien erst unter einem temporären Namen schreiben und dann per rename ablegen (um zu vermeiden, dass während des Schreibens gelesen wird).

Umgebungsvariablen

Variable

Bedeutung

CIRCUITJS_CHROMIUM

Pfad zur zu verwendenden Chrome/Chromium-Programmdatei (Standard: von Playwright verwaltetes Chromium; bei Fehlern Fallback auf System-Chrome)

CIRCUITJS_URL

Statt der gebündelten webapp zu ladende CircuitJS1-URL (z. B. https://www.falstad.com/circuit/circuitjs.html)

CIRCUITJS_HEADFUL

Mit 1 wird das Browserfenster angezeigt (zum Debuggen)

Einschränkungen

  • Die Simulationsgeschwindigkeit von run_transient hängt von der Simulationsgeschwindigkeitseinstellung in der $-Zeile der Schaltung und der CPU ab. Dauert es in Echtzeit zu lange, wird die Ausführung durch wallTimeoutMs abgebrochen und es werden Teildaten zurückgegeben (erkennbar am Feld reason).

  • Eine „Bearbeitung“ der Schaltung erfolgt im Wesentlichen durch Umschreiben des Falstad-Texts und erneutes Laden per circuit_load (beim Import wird die Zeit zurückgesetzt).

  • Nur transiente Analyse (da CircuitJS1 selbst keine AC-Kleinsignalanalyse usw. besitzt). Der Frequenzgang lässt sich durch Variieren der Frequenz und wiederholtes run_transient ermitteln.

Lizenz

Das gesamte Repository wird unter GPL-2.0-or-later bereitgestellt (COPYING.txt).

  • CircuitJS1 ist eine Software von Paul Falstad / Iain Sharp unter GPLv2+. webapp/ ist dessen kompilierter Build (unverändert); der zugehörige Quellcode ist in pfalstad/circuitjs1 (Original) und im pages-Zweig von code4fukui/circuitjs1 (Bezugsquelle dieses Builds) verfügbar.

  • Servercode (server.mjs, drive.mjs, test-client.mjs) © 2026 Suzu (涼鈴), GPL-2.0-or-later.

A
license - permissive license
A
quality
C
maintenance

Maintenance

0Releases (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 Connectors

Related MCP Servers

  • 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.
  • A
    license
    Not graded
    quality
    B
    maintenance
    Enables MCP-compatible agents to generate Qucs circuit schematics, run simulations, and parse results programmatically.
    MIT
  • A
    license
    A
    quality
    B
    maintenance
    MCP server for Micro-Cap 12 SPICE simulator enabling LLM agents to run analog circuit simulations, including analyses, sweeps, and retrieval of curve data and plots.
    20
    1
    MIT

View all related MCP servers

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/Suzu-Gears/circuitjs-mcp'

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