Platform-branches the Wine-specific execution so Linux behaves identically while macOS drives LTspice.app natively. Implemented from muel9560's measured spec + validated where possible against a Wine -netlist oracle on Linux. - config.py: get_launch() abstraction (argv prefix + env + path translator); IS_DARWIN, LTSPICE_BIN (env-overridable), LTSPICE_LIB_ROOT under ~/Library/Application Support/LTspice on macOS. Linux resolves to the historical Wine paths unchanged. - runner.py: darwin branch uses the native binary, POSIX paths (no Z: map), plain -b (never -Run), and completion by polling for a stable .raw (the Mac GUI app's exit code is unreliable). Linux keeps communicate()+wait_for. - netlister.py (new): asc_to_netlist() converts a schematic to a netlist on macOS, since the Mac CLI can't netlist a .asc. Union-find net extraction; all 15 templates netlist, topology matches the Wine -netlist oracle. - library_tools.py: check_installation reports platform/binary/lib-root/ version/gui-session on macOS. - packaging/docs: drop 'Linux only'; document LTSPICE_BIN + GUI-session need. Adversarial review fixes: restore kill+reap of the Wine subprocess on Linux timeout (was orphaning the process -- a real regression); alias duplicate net labels instead of aborting (sallen-key); synthesize NC_xx nodes for floating pins (op-amps) to match the oracle; use asyncio.get_running_loop(). Linux unaffected: 476 unit + 10 integration (real Wine) still pass; +48 unit +8 integration for the platform/netlister paths. macOS runtime (LTspice.app invocation, GUI session, poll timing) needs validation on Kevin's hardware.
6.1 KiB
mcltspice
MCP server for LTspice circuit simulation automation on Linux (via Wine) and native macOS. Drives LTspice in batch mode, parses binary .raw results, and exposes 37 tools for end-to-end circuit design workflows.
Note: macOS (native, no Wine) support is new and under active validation. The Linux/Wine path is the mature, battle-tested one.
Quick Start
# Install and run
uvx mcltspice
# Add to Claude Code
claude mcp add mcltspice -- uvx mcltspice
# Local development
claude mcp add mcltspice -- uv run --directory /path/to/mcltspice mcltspice
Requirements
- Linux with Wine installed, OR macOS (Apple Silicon or Intel) with LTspice.app
- LTspice — on Linux, extracted from the Windows installer; on macOS, the native app (see Setup)
- Python 3.11+
Tools
Simulation
| Tool | Description |
|---|---|
simulate |
Run simulation on a .asc schematic |
simulate_netlist |
Run simulation on a .cir / .net netlist |
parameter_sweep |
Sweep a parameter across a range of values |
temperature_sweep |
Run simulations at different temperatures |
monte_carlo |
Monte Carlo analysis with component tolerances |
optimize_circuit |
Automatically optimize component values to hit target specs |
tune_circuit |
Measure performance and suggest parameter adjustments |
Waveform Extraction & Visualization
| Tool | Description |
|---|---|
get_waveform |
Extract signal data from a .raw file |
list_simulation_runs |
List runs in a stepped/Monte Carlo simulation |
evaluate_waveform_expression |
Evaluate math expressions on waveforms (V*I, dB, etc.) |
export_csv |
Export waveform data to CSV |
plot_waveform |
Generate SVG plots from simulation results |
Signal Analysis
| Tool | Description |
|---|---|
analyze_waveform |
FFT, THD, RMS, settling time, and more |
measure_bandwidth |
Measure -3dB bandwidth from AC analysis |
get_operating_point |
Extract DC operating point (.op) results |
get_transfer_function |
Extract .tf (transfer function) results |
Noise Analysis
| Tool | Description |
|---|---|
analyze_noise |
Comprehensive noise analysis from .noise simulation |
get_spot_noise |
Noise spectral density at a specific frequency |
get_total_noise |
Integrated RMS noise over a frequency band |
Stability & Power
| Tool | Description |
|---|---|
analyze_stability |
Gain margin and phase margin from AC loop gain |
analyze_power |
Power metrics from voltage and current waveforms |
compute_efficiency_tool |
Power conversion efficiency |
Schematic & Netlist
| Tool | Description |
|---|---|
read_schematic |
Parse schematic components and nets |
edit_component |
Modify component values in a schematic |
diff_schematics |
Compare two schematics and show changes |
run_drc |
Design rule checks on a schematic |
create_netlist |
Build a SPICE netlist programmatically |
create_from_template |
Create a circuit from a pre-built template |
generate_schematic |
Generate a graphical .asc schematic from a template |
read_touchstone |
Parse Touchstone S-parameter files (.s1p, .s2p) |
Library & Templates
| Tool | Description |
|---|---|
list_templates |
Available circuit templates with parameters and defaults |
list_symbols |
Browse LTspice's 6500+ component symbols |
list_examples |
Browse 4000+ example circuits |
get_symbol_info |
Pin details and attributes for a component symbol |
search_spice_models |
Search .model definitions in the library |
search_spice_subcircuits |
Search .subckt definitions (op-amps, ICs, etc.) |
check_installation |
Verify LTspice installation (Wine on Linux, native on macOS) |
Resources
| URI | Description |
|---|---|
ltspice://symbols |
All component symbols by category |
ltspice://examples |
All example circuits |
ltspice://status |
Installation status |
ltspice://templates |
All circuit templates with parameters |
ltspice://template/{name} |
Detail for a specific template |
Prompts
| Prompt | Description |
|---|---|
design_filter |
Walk through filter design (type, topology, specs) |
analyze_power_supply |
Guide through power supply analysis |
debug_circuit |
Systematic circuit debugging workflow |
optimize_design |
Iterative design optimization |
monte_carlo_analysis |
Statistical yield analysis |
circuit_from_scratch |
Build a circuit from a description |
troubleshoot_simulation |
Diagnose simulation errors |
LTspice Setup
Linux (Wine)
Extract LTspice from the Windows MSI installer:
# Download LTspice64.msi from analog.com
cd /path/to/downloads
7z x LTspice64.msi -oltspice
cd ltspice
7z x disk1.cab
# Set up Wine prefix
export WINEPREFIX=$PWD/.wine
export WINEARCH=win64
wineboot --init
Set LTSPICE_DIR to point at your extracted directory, or use the default ~/claude/ltspice/extracted/ltspice.
macOS (native)
macOS has a native universal LTspice build, so no Wine is involved. Install LTspice.app from the Mac App Store or analog.com. The binary lives at:
/Applications/LTspice.app/Contents/MacOS/LTspice
The component library lives outside the app bundle, at ~/Library/Application Support/LTspice/, with lib/{sym,sub,cmp} underneath. This is unpacked from lib.zip the first time you launch LTspice.app from the GUI, so launch the app once interactively before running batch simulations.
Set LTSPICE_BIN to override the binary path (it defaults to the path above). This mirrors how LTSPICE_DIR works on Linux.
GUI-session requirement: Mac LTspice is an Aqua GUI application. It runs batch simulations, but it needs an active login/GUI session to do so — it will not run over a bare SSH connection with no logged-in desktop. This differs from the Linux/Wine path, which runs fully headless.
Repository
git.supported.systems/MCP/mcltspice
License
MIT