ltspice-mcp
Repository-Herkunft: Dieser öffentliche Integrations-Fork basiert auf dem Upstream
cognitohazard/ltspice-mcpTagv0.5.0(Commit4dc456000e1a436ef37a585c23ab35954a8caf04e). Die Ergänzungen in diesem Branch bieten installationsunabhängige Bereitstellungsbeispiele und Dokumentation. Am Upstream-Server-Quellcode wurde nichts geändert.
ltspice-mcp
In Arbeit. Die Kernfunktionalität ist nutzbar, aber es sind noch raue Kanten und breaking changes zu erwarten.
Ein MCP-Server, der LLM-Assistenten (Claude und jeden anderen MCP-Client) mit echter Schaltungssimulation verbindet: LTspice und ngspice, plus direkte Bearbeitung von LTspice-.asc-Schaltplänen. Simulationsergebnisse kommen als strukturierte Zahlen zurück – Grenzfrequenzen, Überschwingen, Phasenreserve, Anstiegszeiten und Kleinsignal-Arbeitspunktparameter pro Bauelement (gm, gds, vth, …), die namentlich zurückgelesen werden —, sodass der Assistent Schaltungen in denselben Dateien entwerfen, verifizieren und iterieren kann, die Sie in LTspice öffnen, ohne jemals eine Raw-Datei von Hand zu parsen. Basiert auf spicelib.
Schnellstart
In Claude Code installieren Sie das Plugin:
/plugin marketplace add cognitohazard/ltspice-mcp
/plugin install ltspice-mcpSie benötigen außerdem LTspice oder ngspice auf dem Host (automatisch erkannt unter Windows, Linux und macOS; unter WSL setzen Sie den LTspice-Pfad explizit — WSL-Hinweise). Die Schaltungsbearbeitung funktioniert ganz ohne Simulator. uv ist erforderlich; der Server selbst wird bei der ersten Verwendung von PyPI geholt.
Manuelle Installation (beliebiger MCP-Client)
Installieren Sie den Server und richten Sie dann Ihren Client darauf aus:
uv tool install ltspice-mcp # or: pip install ltspice-mcp / pipx install ltspice-mcpClaude Code — ein Befehl (lassen Sie -s project weg, um global zu installieren):
claude mcp add -s project ltspice -- ltspice-mcpAndere Clients — Claude Desktop, Cursor, Windsurf, Gemini CLI, Continue, Cline, Zed und andere — fügen Sie diese mcpServers-Strophe zur MCP-Konfigurationsdatei des Clients hinzu (jeder Client dokumentiert seinen eigenen Pfad):
{
"mcpServers": {
"ltspice": { "command": "ltspice-mcp", "args": [] }
}
}Python 3.11+ erforderlich. Überprüfen Sie mit ltspice-mcp --help. Derselbe Server wird auch unter zwei Aliasnamen veröffentlicht — circuit-mcp und ngspice-mcp —, sodass uvx circuit-mcp / uvx ngspice-mcp gleichwertige Alternativen zu uvx ltspice-mcp sind, falls einer dieser Namen für Sie besser auffindbar ist.
Web-Clients (claude.ai, ChatGPT) benötigen eine stdio→HTTP-Brücke wie mcp-proxy — setzen Sie diesen Server nur in einem Netzwerk ein, das Sie vollständig kontrollieren, da er Dateien schreibt und Prozesse innerhalb von allowed_paths startet.
Eine Claude-Desktop-Erweiterung ist ebenfalls verfügbar: Erstellen Sie die .mcpb in packaging/mcpb/ und ziehen Sie sie auf Claude Desktop für eine Ein-Klick-Installation mit einem nativen Ordnerauswahl-Dialog für Ihr Schaltungsverzeichnis. Wie das Plugin umschließt sie das PyPI-Paket und benötigt uv und einen Simulator auf dem Host (sie bündelt LTspice oder ngspice nicht).
Related MCP server: ltspice-mcp
Verwendung
Sobald die Verbindung steht, können Sie Schaltungsarbeiten in natürlicher Sprache anfragen. Der Assistent entwirft die Schaltung und entscheidet, was gemessen werden soll; der Server führt den Simulator aus, parst die binäre Ausgabe und liefert die Zahlen zurück. Er berichtet, was der Lauf erzeugt hat, einschließlich der eigenen Warnungen des Simulators, und überlässt die Beurteilung, ob ein Ergebnis gut ist, Ihnen und dem Assistenten.
"Biasen Sie diese NMOS-Common-Source-Stufe in die Sättigung beim Ziel-Drainstrom und melden Sie gm/ID."
Der Assistent schreibt das Netzlist, löst den Arbeitspunkt auf LTspice und liest den Arbeitspunkt des Geräts namentlich zurück — Drainstrom, gm, gds, VDS gegen VDSAT, um die Sättigung zu bestätigen, und das gm/ID, auf das Analogdesigner dimensionieren. Wenn der Bias nicht stimmt, justiert er die Gate-Referenz oder W/L nach und führt erneut aus, ein paar Sekunden pro Durchlauf.
Andere Anfragen, die auf dieselbe Weise funktionieren:
"Wie hoch sind Überschwingen und Einschwingzeit der Sprungantwort dieses Reglers?" — führt eine transiente Analyse durch und misst beides aus der Wellenform, plus Anstiegszeit, Klingelfrequenz und den Endwert.
"Führen Sie einen Monte-Carlo-Lauf mit 200 Läufen und 5 %-Widerständen durch und nennen Sie mir die Streuung der Ausgabe." — verändert Komponenten pro Lauf, simuliert die Stapelverarbeitung und meldet Mittelwert, Sigma und Worst-Case-Werte pro Messung.
"Sweepen Sie die Last von 100 Ω bis 10 kΩ und finden Sie heraus, wo der Wirkungsgrad abfällt." — Parametersweep mit Ergebnissen pro Lauf.
"Charakterisieren Sie diesen NMOS: gm und gm/ID über VGS." — schreibt ein
.dc Vgs-Deck mit.save @m1[gm] @m1[id], führt es auf ngspice aus und gibt die gm/ID-Tabelle als eine CSV zurück (kein.control-Block, kein Rawfile-Parsing)."Finden Sie einen N-Kanal-Power-MOSFET für einen Low-Side-Schalter und messen Sie den Einschaltverlust." — durchsucht die geladenen Bibliotheken nach einem Bauteil (
find_model), setzt es in eine transiente Analyse mit gepulstem Gate ein und liest Vds(on) und Laststrom aus den.meas-Ergebnissen zurück."Bauen Sie diese Differenzstufe als Schaltplan, den ich in LTspice öffnen kann." — platziert und verbindet die Komponenten in einer echten
.asc, mit orthogonaler Verdrahtung und Pin-Kollisionsprüfungen."Ist diese Schleife stabil?" — AC-Analyse der Schleifenverstärkung; meldet Phasen- und Verstärkungsreserve an jedem Übergang, nicht nur am ersten.
"Wie hoch sind Resonanzfrequenz und Q dieser Reihen-RLC?" — führt einen AC-Sweep durch und meldet für jeden Peak die Mittenfrequenz, Q und die −3-dB-Bandbreite.
Die Warnung reist mit der Zahl, die sie betrifft. Ein Simulator wie ngspice kann "singuläre Matrix" einmal ausgeben, tief in einem Log, das Sie nie öffnen würden, und dann den Lauf beenden und trotzdem perfekt plausible Zahlen schreiben — lesen Sie sie von Hand, und nichts sieht verdächtig aus. Fragen Sie den Server nach einer dieser Zahlen, und die vergrabene Zeile wird daran angehängt, in einem observations-Feld direkt neben dem Wert, sodass der Fehler dort auftaucht, wo Sie bereits hinschauen, statt dort, wo man leicht darüber hinwegscrollt.
Co-Design an denselben Dateien
Alles arbeitet mit gewöhnlichen LTspice- und SPICE-Dateien, sodass die Arbeit zwischen Ihnen und dem Assistenten hin- und hergeht, statt in einem Chat zu leben:
Skizzieren Sie einen Schaltplan in LTspice und übergeben Sie ihn dann: "Wie ist der Arbeitspunkt?", "Warum bewegt sich der Ausgang nicht?", "Fügen Sie eine Kompensation hinzu und prüfen Sie die Phasenreserve."
Oder umgekehrt: Der Assistent entwirft und verifiziert die Schaltung und schreibt die
.asc; Sie öffnen sie in LTspice, prüfen sie und passen sie von Hand an. Ihre manuellen Änderungen sind einfach der neue Zustand der Datei — der Assistent übernimmt von dort beim nächsten Request.Änderungen können während des Entwurfs in beide Richtungen fließen: Passen Sie einen Wert in der GUI an und bitten Sie um erneute Verifizierung, oder lassen Sie den Assistenten eine Änderung durchsweepen, die Sie in Betracht ziehen, bevor Sie sich darauf festlegen.
Was es tut
Simulation und Messung. Führt LTspice oder ngspice aus und parst die binäre Ausgabe direkt. Messungen werden serverseitig berechnet und als Zahlen zurückgegeben: Zeitbereich (Anstieg/Abfall, Überschwingen, Einschwingzeit, Verzögerung, Periode/Tastverhältnis/Jitter, RMS, THD), Frequenzbereich (Filtergrenzfrequenzen und Flankensteilheit, Verstärkung und Phase bei jeder Frequenz, Stabilitätsreserven, Resonanzpeaks mit Q, integriertes Rauschen), DC-Arbeitspunkte und .MEAS-Direktiven-Ergebnisse, einschließlich der fehlgeschlagenen. Kleinsignal-Arbeitspunktparameter pro Gerät (gm, gds, vth, …) kommen auf beiden Simulatoren namentlich zurück — LTspice über einen automatisch hinzugefügten .options logopinfo-Block im Log, ngspice über .save @dev[param]-Spuren. Lesen Sie den Satz über einen .dc-Sweep als gm/ID-Tabelle mit export_waveform oder einen einzelnen Arbeitspunkt mit operating_point (adressieren Sie sie als m1.gm / @m1[gm], kein Rawfile-Parsing).
Schaltplan- und Netzlistenbearbeitung. Erstellt und bearbeitet echte LTspice-.asc-Dateien — platziert Komponenten, verbindet Pins, beschriftet Netze — mit Validierung, bevor etwas geschrieben wird: Verdrahtung, die mit einem Pin kollidieren, einen Knoten überlappen oder diagonal verlaufen würde, wird abgelehnt, und jede Bearbeitung gibt Warnungen zu schwebenden Pins oder losen Beschriftungen zurück. Die Bearbeitungen einer Sitzung können rückgängig gemacht werden. Einfache Netlisten (.cir/.net) erhalten dieselben Operationen auf Textebene, plus einen statischen Validierungslauf, der fehlerhafte Karten erkennt, bevor eine Simulation verschwendet wird.
Sweeps und Monte Carlo. Mehrdimensionale Parametersweeps und Monte Carlo mit Toleranzen pro Komponente, .MODEL-Prozessvariation und Pelgrom-W·L-Geräte-Mismatch. Statistiken pro Messung werden über die Läufe aggregiert, und jeder einzelne Lauf kann herausgezogen und wie eine eigenständige Simulation analysiert werden.
Jobs und Vertrauen. Simulationen laufen als abbrechbare Jobs mit Timeouts und einem Parallelitätslimit; lange Läufe geben sofort eine Job-ID zurück, und der Jobstatus überlebt einen Serverneustart. Ergebnisse berichten Fakten, keine Urteile: Ein abgeschlossener Lauf trägt die eigenen Warnungen des Simulators, Messungen, die nichts erzeugt haben, und extreme Knotenwerte als strukturierte Beobachtungen. Die Beurteilung, ob ein Ergebnis vertrauenswürdig ist, bleibt dem Modell überlassen, das es liest.
Unterstützte Simulatoren
Simulator | Status |
LTspice | Primär. Windows nativ, WSL2 (Windows LTspice.exe über Interop), Linux über Wine. Erforderlich für die |
ngspice | Erstklassig: simulieren, parsen, diagnostizieren, analysieren. Open-Source-Pfad ohne LTspice-Installation. |
QSPICE, Xyce | Unterstützt, aber sekundär. |
Konfiguration
Funktioniert mit den Standardeinstellungen out of the box. Zum Anpassen kopieren Sie ltspice-mcp.example.toml nach ltspice-mcp.toml; jede Einstellung kann mit einer LTSPICE_MCP_-präfixierten Umgebungsvariable überschrieben werden, und --config PFAD oder LTSPICE_MCP_CONFIG wählt die Datei. Wichtige Optionen:
[simulator]
default = "ltspice" # ltspice, ngspice, qspice, xyce (null = auto-detect)
path = "" # explicit executable path (required on WSL)
ngbehavior = "hsa" # ngspice compat mode; unset = spicelib default, "hsa" fixes sectioned .lib corner select
[security]
allowed_paths = ["."] # sandbox: only these directories are accessible
[simulation]
max_parallel = 4
timeout = 300.0 # seconds
[tools]
profile = "full" # or "agentic"
[state]
persist_jobs = trueSiehe src/ltspice_mcp/config.py für die vollständige Optionsliste ([analysis], [schematic], [logging], ...).
Unter WSL läuft LTspice.exe über Windows-Interop (nicht Wine), und spicelib kann es nicht über die WSL-Grenze hinweg automatisch erkennen. Setzen Sie den Windows-seitigen Pfad explizit:
[simulator]
path = "/mnt/c/Program Files/ADI/LTspice/LTspice.exe"Die Simulationsausgabe wird automatisch in ein Windows-Temp-Verzeichnis umgeleitet: Die .MEAS-Ergebnisse von LTspice laufen über SQLite-.db-Dateien, die auf UNC-Pfaden (\\wsl.localhost\...) fehlschlagen, und ohne die Umleitung verschwinden die Messdaten stillschweigend aus den Logs.
.asy-Symbolpfade für die .asc-Bearbeitung werden unter Windows und WSL automatisch erkannt; überschreiben Sie sie mit [schematic] symbol_paths oder LTSPICE_MCP_SYMBOL_PATHS.
Tool-Profile
Profil | Tools | Anwendungsfall |
| 49 | Beliebiger MCP-Client, Automatisierung, nicht-agentische LLMs |
| 41 | LLM-Agenten mit nativem Dateizugriff (Read/Edit/Write) |
Das agentic-Profil entfernt die Netlisting-Bearbeitungswrapper und die Bibliotheks-Sitzungsverwaltung — Arbeit, die ein fähiger Agent über direkte Dateibearbeitung erledigt — und behält den Simulationslebenszyklus, das binäre .raw-Parsing, die Stapelverwaltung und die .asc-Geometrie-Tools. Das Verzeichnis skills/ (skills/ltspice/SKILL.md, skills/ngspice/SKILL.md) enthält das Domänenwissen, das dazu passt: Kopieren Sie die relevante Skill in den Speicherort für persistente Anweisungen Ihres Clients.
Wo es läuft. Der Server ruft ein lokales LTspice/ngspice auf und liest Schaltungsdateien von der Festplatte, muss also dort laufen, wo sich Simulator und Dateien befinden. Zwei Setups funktionieren: ein lokaler MCP-Host (Claude Desktop, Claude Code, Cursor, Gemini CLI, Codex, …) auf dem eigenen Rechner oder ein browserbasierter Cloud-Agent, dessen Sandbox ngspice installieren und den Server registrieren kann (mit Claude verifiziert). LTspice ist nur lokal verfügbar (eine Windows-App); ngspice ist Open Source und funktioniert an beiden Orten. Consumer-Web-Chat ohne Sandbox hat weder Simulator noch Dateizugriff und kann diesen Server daher nicht direkt ausführen; verbinde ihn mit einem Rechner, den du kontrollierst (z. B. mcp-proxy), wenn du diese UI möchtest.
Unter der Haube: die Schleife auf Tool-Ebene
Was der Assistent tatsächlich für „einen 1-kHz-RC-Tiefpass entwerfen und verifizieren" tut. Er schreibt die Netlist (R=1k, C=159.155n → fc = 1 kHz):
* rc.cir — RC low-pass
V1 in 0 AC 1
R1 in out 1k
C1 out 0 159.155n
.ac dec 50 1 1Meg
.enddann steuert er drei Tools an:
validate_netlist(path="rc.cir")
→ OK: directives valid, element arities check out — safe to simulate
run_simulation(netlist="rc.cir")
→ {"job_id": "sim_a3f1", "status": "completed", "raw_file": ".../rc.raw", ...}
bode_metrics(raw_file=".../rc.raw", signal="V(out)", mode="filter")und erhält Skalare zurück, keinen Plot:
{
"signal": "V(out)",
"filter_type": "lowpass",
"passband_gain_db": 0.0,
"passband_ripple_db": 0.02,
"cutoff_low_hz": null,
"cutoff_high_hz": 1000.4,
"stopband_rejection_db": 59.97,
"rolloff_slope_db_per_decade": -19.9,
"estimated_order": 1,
"warnings": []
}(gekürzt — die vollständige Antwort enthält auch Durchlassband-Grenzen und Übergangsbandbreite)
Nicht im Zielbereich → set_component_value, erneut ausführen, erneut messen. Lange Simulationen geben eine Job-ID zurück, statt zu blockieren; check_job/cancel_job verwalten sie. Job-Metadaten bleiben in Sidecars pro Schaltung erhalten ({dir}/.ltspice-mcp/jobs/ — füge .ltspice-mcp/ zu deiner .gitignore hinzu), und MCP-Ressourcen (spice://results/..., spice://netlists/..., spice://config) legen Jobs, Signale, Messungen und Konfiguration zum Durchsuchen offen.
Jedes Tool deklariert MCP-Annotationen (readOnlyHint, destructiveHint, idempotentHint, openWorldHint); datenrückgebende Tools deklarieren ein outputSchema für die structuredContent-Introspektion.
Tool | Beschreibung |
| Erstellt eine neue Netzliste aus einem Inhaltsstring |
| Erstellt ein leeres |
| Liest eine Schaltungsdatei (Netzlistentext für |
| Listet Komponenten auf (optional mit Präfixfilter) oder sucht eine einzelne per Referenz |
| Setzt einen Komponentenwert oder setzt mehrere per |
| Liest alle |
| Fügt SPICE-Direktiven hinzu oder entfernt sie ( |
| Fügt eine Komponente hinzu; gibt Pin-Positionen, Begrenzungsrahmen und Überlappungswarnungen zurück |
| Verbindet zwei Pins per Referenz mit Wegfindung; validiert Pin-Kollisionen, Verbindungen und Diagonalen |
| Symbol-Pin-Positionen, Richtungen, Begrenzungsrahmen, Beschreibung |
| Platzierte Komponenten-Pin-Positionen, Begrenzungsrahmen, Attribute |
| Exportiert |
| Statische Vorabprüfungen an Netzliste oder Schaltplan vor der Simulation |
| Jeder Pin/ jedes Label/ jede Verbindung auf einem Netz an einem Pin / |
| Setzt ein |
| Struktureller Vergleich zwischen zwei Schaltungsdateien |
| Wendet viele |
| Führt eine Simulation aus — synchron für kurze Läufe, asynchron (Job-ID) für lange; setzt Batch-Flags, verarbeitet das ngspice-Headerless-Raw-Dialekt, leitet Raw/Log-Artefakte weiter, deckt Konvergenz-/Timeout-Fehler auf (kein manuelles Parsen einer Raw-Datei) |
| Prüft den Status eines Jobs per ID oder listet alle Jobs auf |
| Bricht eine laufende Simulation oder einen Batch ab; beendet die Simulator-Prozesse |
| Min, Max, Mittelwert, RMS, Spitze-Spitze (dB/Phase für AC) |
| Dezimierte Min/Max-Statistik-Hüllkurve eines Signals über ein Fenster — siehe die Form, dann erneut mit schmalerem Fenster anfragen zum Zoomen |
| Vollauflösender CSV-Export eines oder mehrerer Signale auf die Festplatte (alle Analysetypen; lang/breit für |
| Interaktives HTML-Diagramm (transient / Bode / Doppelpanel mit |
| Signalwert zu einem bestimmten Zeitpunkt/ einer bestimmten Frequenz (oder ein Bauelement-Arbeitspunktparameter, |
| DC-Arbeitspunkt: alle Knotenspannungen, Zweigströme und Bauelement-Arbeitspunktparameter (gm/gds/vth/…) bei LTspice (automatische |
| Vollständige Zusammenfassung: Simulationstyp, Signale, Messungen, Warnungen |
| Anstiegs-/Abfallzeit und Slew-Rate für eine transiente Flanke |
| Überschwingen, Unterschwingen, Einschwingzeit für eine Sprungantwort |
| Signallaufzeit zwischen zwei transienten Signalen |
| Periode, Frequenz, Tastverhältnis, Jitter eines oszillierenden Signals |
| Gesamte harmonische Verzerrung (THD/THD+N) einer periodischen transienten Analyse über FFT; kohärentes Abtasten für ein exaktes Ergebnis; deckt jeden Zustand auf |
| Aggregiert |
| AC/Bode-Analyse nach |
| Schleifenverstärkungs-Stabilität: alle 0-dB-/180°-Kreuzungen mit Phasen-/Verstärkungsreserve pro Kreuzung |
| AC-Spitzen mit Gütefaktor und -3-dB-Bandbreite pro Spitze |
| Pol-/Nullstellenstruktur einer AC-Antwort: Netzordnung, Eckfrequenzbereiche + Güte, Nicht-Minimum-Phasen-/RHP-Nullstellen, Gruppenlaufzeit (Fakten für die menschliche Bewertung) |
| Integriert eine |
| Konfiguriert einen Mehrparameter-Sweep (linear oder logarithmisch) |
| Führt einen konfigurierten Sweep aus (asynchron, gibt Job-ID zurück) |
| Konfiguriert Monte Carlo: Toleranzen, |
| Führt eine konfigurierte Monte-Carlo-Analyse aus (asynchron, gibt Job-ID zurück) |
| Sweep-/MC-Jobfortschritt, Statistiken pro Signal oder Daten pro Lauf |
| Findet Modellkandidaten per Name (unscharf standardmäßig, |
| Lädt eine |
| Entlädt eine zuvor geladene Bibliothek |
| Listet geladene Bibliotheken auf, optional mit Modellnamen |
| Erkannte Simulatoren, Konfiguration, Sandbox-Pfade, Laufzeitstatus |
| Zuletzt verwendete Schaltungen und Jobs aus dem persistenten Index |
{"type": "text"}
Entwicklung
uv sync # install runtime + dev dependencies
uv run pytest tests/ -v # tests
uv run pyright # type checking
uv run ruff check src/ tests/ # lint
uv run ltspice-mcp # run the server (stdio)Mehr: docs/DESIGN.md (Umfang, Architektur, Nicht-Ziele) und docs/spice_lex.md (SPICE-Parser-Interna).
Lizenz
GPL-3.0
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
- AlicenseBqualityDmaintenanceAI-powered circuit design through simulation — an MCP server that gives language models direct access to SPICE circuit simulation via ngspice, enabling natural language circuit description and automated netlist generation, simulation, measurement, and spec verification.2828GPL 3.0
- FlicenseCqualityDmaintenanceMCP server for automating LTspice on macOS, enabling simulation, schematic generation, data extraction, verification, and rendering via natural language or agents.7115
- AlicenseNot gradedqualityBmaintenanceThis MCP server enables agents to control LTspice on macOS for running simulations, generating schematics, extracting data, and automating verification workflows.MIT
- AlicenseAqualityBmaintenanceAn MCP server that connects LLM assistants to real circuit simulation: LTspice and ngspice, plus direct editing of LTspice .asc schematics. Simulation results come back as structured numbers so the assistant can design, verify, and iterate on circuits.4826GPL 3.0
Related MCP Connectors
MCP server for AI dialogue using various LLM models via AceDataCloud
A comprehensive Model Context Protocol (MCP) server that enables AI assistants to interact with yo…
MCP server providing access to the Scorecard API to evaluate and optimize LLM systems.
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/ossenna-hq/MCP_LTSpice'
If you have feedback or need assistance with the MCP directory API, please join our Discord server