spicelib-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| SPICE_PATH | No | Override the simulator binary location | |
| SPICE_SIMULATOR | No | The simulator to use: ngspice, ltspice, or qspice (default: ngspice) | ngspice |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": false
} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| run_ac_analysisA | Run an AC frequency sweep on a SPICE netlist. Injects a Results are saved to a .npz file next to the netlist. Load with: data = np.load('netlist_ac.npz') freq = data['frequency_hz'] # traces are stored as complex values, e.g. data['v(out)'] For sweeping a component value or parameter across multiple AC runs in parallel, use run_sweep(analysis_cmd=".ac dec N fstart fstop") instead. Args: netlist_path: Absolute path to the netlist file (.net, .sp, .cir, etc.) start_freq: Start frequency with optional SPICE suffix, e.g. "1", "1k", "100" stop_freq: Stop frequency, e.g. "1G", "100meg" points_per_decade: Points per decade (default 20) Returns: JSON summary with data_file path, frequency range, and trace names. |
| run_transientA | Run a transient simulation on a SPICE netlist. Injects a Results are saved to a .npz file next to the netlist. Load with: data = np.load('netlist_tran.npz') time = data['time_s'] vout = data['v(out)'] For sweeping a component value or parameter across multiple transient runs in parallel, use run_sweep(analysis_cmd=".tran step stop") instead. Args: netlist_path: Absolute path to the netlist file step_time: Time step with SPICE suffix, e.g. "1n", "10u", "1m" stop_time: Simulation end time, e.g. "1m", "100u" start_time: Time at which to start saving data (default "0") Returns: JSON summary with data_file path, time range, and trace names. |
| run_dc_opA | Run a DC operating point analysis on a SPICE netlist. Injects a Args: netlist_path: Absolute path to the netlist file Returns: JSON string with keys: type — "dc_op" nodes — dict of node_name → voltage (V) currents — dict of device_name → current (A) |
| run_sweepA | Run multiple SPICE simulations in parallel, sweeping component values. Uses spicelib's SimRunner to execute runs concurrently. Each run gets its own .npz file. Use this instead of calling run_ac_analysis / run_transient in a loop — it's significantly faster for multi-run sweeps. Example — sweep capacitor C1 across three values with a transient analysis: run_sweep( netlist_path="/path/to/filter.cir", analysis_cmd=".tran 1n 1u", runs=[{"C1": "1p"}, {"C1": "10p"}, {"C1": "100p"}], ) Output files: filter_sweep_001.npz, filter_sweep_002.npz, filter_sweep_003.npz Each dict in Args: netlist_path: Absolute path to the netlist file analysis_cmd: Full SPICE analysis line, e.g. ".tran 1n 1u" or ".ac dec 20 1 1G" runs: List of dicts, one per simulation. Keys are component names or parameter names; values are the new value strings. parallel: Maximum number of simultaneous ngspice processes (default 4) Returns: JSON list of per-run summaries, each with keys: run — 1-indexed run number data_file — path to the .npz file values — the component/parameter values used for this run traces — list of trace names in the .npz |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 4 tools
Each tool targets a distinct SPICE analysis type (AC, DC op, transient) or a sweep that combines them. The descriptions clearly state when to use run_sweep instead of individual calls, eliminating ambiguity.
All tools follow the consistent 'run_<analysis>' pattern with snake_case. The naming is predictable and makes the purpose immediately clear.
With 4 tools covering the core SPICE analyses and a parallel sweep utility, the count is well-scoped for a simulation-focused server. No extraneous or redundant tools.
The core transient, AC, and DC op analyses are covered, and the sweep tool fills the gap for multi-run parameter sweeps. Missing a dedicated DC sweep tool, but the sweep tool can handle that via analysis_cmd, so the gap is minor.