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.
164 lines
6.1 KiB
Markdown
164 lines
6.1 KiB
Markdown
# 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
|
|
|
|
```bash
|
|
# 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](#ltspice-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:
|
|
|
|
```bash
|
|
# 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](https://www.analog.com/en/resources/design-tools-and-calculators/ltspice-simulator-software.html). 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](https://git.supported.systems/MCP/mcltspice)
|
|
|
|
## License
|
|
|
|
MIT
|