SPICEBridge
Uses Cloudflare tunnels to securely expose the MCP server to the internet, with automated setup via cloudflared.
Exports circuit designs to KiCad schematic format (.kicad_sch).
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@SPICEBridge Design a 1kHz RC low-pass filter"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
SPICEBridge
AI-powered circuit design through simulation — an MCP server that gives language models direct access to SPICE circuit simulation via ngspice. Describe a circuit in plain English and let the AI handle netlist generation, simulation, measurement, and spec verification.
Features
28 tools covering the full circuit design workflow
11 built-in templates with automatic component value calculation (E24 series)
Simulation: AC sweep, transient, DC operating point
Measurement: bandwidth, gain, DC levels, transient metrics, power
Monte Carlo & worst-case analysis under component tolerances
Multi-stage composition — connect circuit stages with automatic port mapping
Model wizard — generate SPICE
.libmodels from datasheet parametersKiCad export — output
.kicad_schschematicsWeb viewer — interactive schematic viewer in the browser
Cloud setup wizard — one-command deployment with Cloudflare tunnels (
spicebridge setup-cloud)Spec verification — compare results against design targets
Related MCP server: ltspice-mcp
Install
pip install spicebridgeRequirements
Python 3.10+
ngspice installed and on PATH
Quick Start
Local (Claude Code / stdio)
Add to your .mcp.json:
{
"mcpServers": {
"spicebridge": {
"command": "spicebridge"
}
}
}Cloud (Streamable HTTP)
spicebridge --transport streamable-http --port 8000Cloud Setup Wizard
One command to go from a local install to a public MCP endpoint:
spicebridge setup-cloud # interactive (named tunnel, permanent URL)
spicebridge setup-cloud --quick # quick tunnel (temporary URL, no account needed)The wizard handles the full deployment pipeline:
Installs cloudflared automatically (macOS via Homebrew, Linux via APT) if not found
Authenticates with Cloudflare (browser-based OAuth, named tunnel mode only)
Creates or reuses a tunnel — prompts to pick an existing one or make a new one
Configures DNS routing for your custom domain (named tunnel mode)
Generates an API key for authentication
Starts the SPICEBridge server and tunnel together
Prints connection info with a ready-to-paste JSON config for Claude.ai
Quick tunnels give you a temporary trycloudflare.com URL instantly — no Cloudflare account required. Named tunnels give you a permanent custom domain (e.g. spicebridge.example.com).
Additional options:
spicebridge setup-cloud --domain mcp.example.com # specify custom domain
spicebridge setup-cloud --port 9000 # custom port
spicebridge setup-cloud --no-install # skip cloudflared installationExample
1. load_template("rc_lowpass_1st", specs={"f_3dB_hz": 1000})
-> netlist with R=1.6k, C=100nF, circuit_id: "a1b2c3d4"
2. run_ac_analysis(circuit_id, start_freq=1, stop_freq=1e6)
-> frequency response data
3. measure_bandwidth(circuit_id)
-> f_3dB_hz: 995
4. compare_specs(circuit_id, specs={"f_3dB_hz": {"target": 1000, "tolerance_pct": 5}})
-> PASS
5. draw_schematic(circuit_id)
-> schematic SVGTools
Create & Configure
Tool | Description |
| Store a SPICE netlist, returns a circuit ID |
| Delete a stored circuit and clean up resources |
| List available circuit templates |
| Load a template with parameter substitution |
| Calculate component values from target specs |
| Change a component value in a stored circuit |
| Check a netlist for errors before simulation |
Simulate
Tool | Description |
| AC frequency sweep |
| Transient (time-domain) analysis |
| DC operating point analysis |
Measure
Tool | Description |
| Find -3 dB bandwidth from AC results |
| Measure gain at a specific frequency |
| Extract DC operating point values |
| Measure time-domain characteristics |
| Calculate power dissipation |
Evaluate & Export
Tool | Description |
| Retrieve last simulation results |
| Check measurements against target specs |
| Generate a schematic diagram (PNG/SVG) |
| Export as KiCad 8 schematic (.kicad_sch) |
| Start the interactive web schematic viewer |
Composition & Ports
Tool | Description |
| Define port-to-node mappings for a circuit |
| Return port definitions (auto-detect if unset) |
| Compose multiple stages into a single circuit |
Advanced Analysis
Tool | Description |
| Monte Carlo analysis under component tolerances |
| Worst-case analysis at tolerance extremes |
| Full design loop in one call: template + simulate + verify |
Model Management
Tool | Description |
| Generate a SPICE .lib model from datasheet parameters |
| List all saved models in the model library |
Development
git clone https://github.com/clanker-lover/spicebridge.git
cd spicebridge
pip install -e ".[dev]"
pytestLicense
GPL-3.0-or-later
Available Tools
28 toolsauto_designA
Run the full design loop in one call: load template, simulate, and verify.
specs uses compare_specs format: {"f_3dB_hz": {"target": 1000, "tolerance_pct": 5}}
sim_type is one of "ac", "transient", or "dc". sim_params optionally overrides default simulation parameters.
Returns accumulated results including circuit_id, simulation data,
measurements, and spec comparison. On failure at any step, returns
partial results with an error key and failed_step.
When a schematic_url is present in the response, ALWAYS include it as a clickable link in your message to the user. Users cannot see inline images. The schematic_url in the response is a public internet-accessible URL, not a sandbox or localhost URL. Always share it directly with the user.
Inputs: template_id (required), specs (required), sim_type, sim_params.
calculate_componentsBRead-onlyIdempotent
Calculate component values for a circuit topology from target specs.
Inputs: topology_id (required), specs (required).
compare_specsARead-onlyIdempotent
Compare simulation results against design specifications.
specs format: {"spec_name": {"target": N, "tolerance_pct": P}} or {"spec_name": {"min": N, "max": M}}.
Inputs: circuit_id (required), specs (required).
connect_stagesA
Compose multiple circuit stages into a single combined circuit.
Each element of stages is {"circuit_id": str, "label": str (optional)}.
If connections is omitted, stages are auto-wired in order
(out of stage N → in of stage N+1).
shared_ports defaults to ["gnd"] — those nodes are never prefixed.
Inputs: stages (required), connections, shared_ports.
create_circuitB
Store a SPICE netlist and return a circuit ID for subsequent analyses.
Inputs: netlist (required), models.
create_modelA
Generate a SPICE .lib model file from datasheet parameters.
component_type: "opamp", "bjt", "mosfet", "diode" name: model name (e.g. "OPA2134") parameters: type-specific datasheet values; omitted keys use defaults.
Inputs: component_type (required), name (required), parameters.
delete_circuitBDestructiveIdempotent
Delete a stored circuit and clean up its output directory.
Inputs: circuit_id (required).
draw_schematicAIdempotent
Generate a schematic diagram from a stored circuit's netlist.
When a schematic_url is present in the response, ALWAYS include it as a clickable link in your message to the user. Users cannot see inline images. The schematic_url in the response is a public internet-accessible URL, not a sandbox or localhost URL. Always share it directly with the user.
Inputs: circuit_id (required), fmt.
export_kicadBIdempotent
Export circuit as KiCad 8 schematic (.kicad_sch) file.
Inputs: circuit_id (required), filename.
get_portsARead-onlyIdempotent
Return port definitions for a circuit, auto-detecting if none are set.
Inputs: circuit_id (required).
get_resultsBRead-onlyIdempotent
Return the last simulation results for a circuit.
Inputs: circuit_id (required), summary.
list_modelsARead-onlyIdempotent
Return all saved SPICE models from the model library.
Inputs: no named parameters.
list_templatesBRead-onlyIdempotent
List available circuit templates, optionally filtered by category.
Inputs: category.
load_templateA
Load a circuit template and create a circuit from it.
If specs is provided, the design-equation solver runs automatically,
results are snapped to E24 standard values, and the netlist .param
lines are updated. Explicit params override solver-calculated values.
Inputs: template_id (required), params, specs, models.
measure_bandwidthBRead-onlyIdempotent
Measure the bandwidth (cutoff frequency) of an AC analysis result.
Uses -3dB by default; specify threshold_db for custom cutoff levels.
Inputs: circuit_id (required), threshold_db.
measure_dcARead-onlyIdempotent
Measure the DC voltage at a specific node from operating point results.
Inputs: circuit_id (required), node_name (required).
measure_gainBRead-onlyIdempotent
Measure gain and phase at a specific frequency from AC analysis results.
Inputs: circuit_id (required), frequency_hz (required).
measure_powerBRead-onlyIdempotent
Measure power consumption from DC operating point results.
Inputs: circuit_id (required).
measure_transientBRead-onlyIdempotent
Extract key transient response metrics (rise time, settling time, overshoot).
Inputs: circuit_id (required).
modify_componentCIdempotent
Modify a component value in a stored circuit's netlist.
Inputs: circuit_id (required), component (required), value (required).
open_viewerCIdempotent
Start the interactive web schematic viewer and return its URL.
Inputs: circuit_id, port.
run_ac_analysisCIdempotent
Run AC analysis on a stored circuit.
Inputs: circuit_id (required), start_freq, stop_freq, points_per_decade.
run_dc_opAIdempotent
Run DC operating point analysis on a stored circuit.
Inputs: circuit_id (required).
run_monte_carloB
Run Monte Carlo analysis under component tolerances.
Randomly varies R/C/L component values within tolerance bands and runs multiple simulations to produce statistical results.
analysis_type: "ac", "transient", or "dc_op" tolerances: map component ref or prefix (R/C/L) to tol %.
Inputs: circuit_id (required), analysis_type (required), num_runs, tolerances, +7 more.
run_transientCIdempotent
Run transient analysis on a stored circuit.
Inputs: circuit_id (required), stop_time (required), step_time (required), startup_time.
run_worst_caseAIdempotent
Run worst-case analysis at tolerance extremes.
Evaluates component sensitivity and deterministic corner combinations to find true worst-case performance bounds.
analysis_type: "ac", "transient", or "dc_op" tolerances: map component ref or prefix (R/C/L) to tol %.
Inputs: circuit_id (required), analysis_type (required), tolerances, default_tolerance_pct, +5 more.
set_portsAIdempotent
Store port definitions for a circuit.
ports maps port names to netlist node names,
e.g. {"in": "in", "out": "out", "gnd": "0"}.
Inputs: circuit_id (required), ports (required).
validate_netlistARead-onlyIdempotent
Validate the netlist syntax of a stored circuit using ngspice.
Inputs: circuit_id (required).
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 28 tools
Most tools target distinct operations (specific analysis types, measurements, or actions). However, auto_design overlaps with the combined workflow of load_template, simulation, and compare_specs, which could cause ambiguity for an agent deciding between high-level and individual tools.
All tools follow a consistent verb_noun pattern with underscores (e.g., create_circuit, run_ac_analysis). The only minor deviation is 'auto_design', but it still uses the same imperative style. Overall, naming is predictable and uniform.
28 tools is moderately high for a single server, but the domain of circuit simulation and design justifies many distinct analysis, measurement, and management operations. The count is on the upper end of reasonable but not excessive, as each tool has a clear purpose.
The set covers core design, simulation, and measurement workflows. Notable gaps include the absence of a tool to list stored circuits (agents cannot enumerate existing circuits) and no tool to delete models or update models. These gaps may cause occasional failures.
Maintenance
Related MCP Connectors
Design circuits, simulate and verify embedded firmware, and lay out PCBs with AI agents.
Design, route, check, review and export manufacturable PCBs from plain language; KiCad import.
AI electronics blueprint generator — BOM, wiring, firmware, renders for Arduino/ESP32/RPi.
MCP server for building and testing AI agents with multi-model experimentation and insights.
Related MCP Servers
- FlicenseCqualityDmaintenanceThis server enables LLMs to design, simulate, and debug electronic circuits using LTspice via natural language commands. It automates netlist generation, library component validation, and iterative error correction for SPICE simulations.21-
- FlicenseCqualityCmaintenanceMCP server for automating LTspice on macOS, enabling simulation, schematic generation, data extraction, verification, and rendering via natural language or agents.7121-
- 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.48553 PyPI70GPL 3.0
- FlicenseNot gradedqualityDmaintenanceAn MCP server that enables LLMs to read and modify LTspice schematics, run simulations, parse results, and generate plots, all through natural language.6-