Skip to main content
Glama
ossenna-hq

ltspice-mcp

by ossenna-hq

Procedencia del repositorio: esta bifurcación pública de integración se basa en el upstream cognitohazard/ltspice-mcp etiqueta v0.5.0 (commit 4dc456000e1a436ef37a585c23ab35954a8caf04e). Las adiciones en esta rama proporcionan ejemplos de despliegue y documentación independientes de la instalación. No se ha modificado ningún código fuente del servidor upstream.

ltspice-mcp

Trabajo en curso. La funcionalidad principal es utilizable, pero cabe esperar asperezas y cambios que rompan la compatibilidad.

Un servidor MCP que conecta asistentes LLM (Claude y cualquier otro cliente MCP) con simulación de circuitos real: LTspice y ngspice, además de edición directa de esquemáticos .asc de LTspice. Los resultados de simulación vuelven como números estructurados — frecuencias de corte, sobreoscilación, margen de fase, tiempos de subida y parámetros de punto de operación de pequeña señal por dispositivo (gm, gds, vth, …) leídos por nombre — de modo que el asistente puede diseñar, verificar e iterar sobre circuitos en los mismos archivos que abres en LTspice, sin tener que analizar manualmente un rawfile. Construido sobre spicelib.

Inicio rápido

En Claude Code, instala el plugin:

/plugin marketplace add cognitohazard/ltspice-mcp
/plugin install ltspice-mcp

También necesitas LTspice o ngspice en el host (detección automática en Windows, Linux y macOS; en WSL establece la ruta de LTspice explícitamente — notas de WSL). La edición de circuitos funciona sin ningún simulador. Se requiere uv; el servidor en sí se obtiene de PyPI en el primer uso.

Instalación manual (cualquier cliente MCP)

Instala el servidor y luego apunta tu cliente hacia él:

uv tool install ltspice-mcp     # or: pip install ltspice-mcp / pipx install ltspice-mcp

Claude Code — un comando (omite -s project para instalarlo globalmente):

claude mcp add -s project ltspice -- ltspice-mcp

Otros clientesClaude Desktop, Cursor, Windsurf, Gemini CLI, Continue, Cline, Zed y otros — añade esta estrofa mcpServers al archivo de configuración MCP del cliente (cada cliente documenta su propia ruta):

{
  "mcpServers": {
    "ltspice": { "command": "ltspice-mcp", "args": [] }
  }
}

Se requiere Python 3.11+. Verifica con ltspice-mcp --help. El mismo servidor también se publica bajo dos nombres de alias — circuit-mcp y ngspice-mcp — de modo que uvx circuit-mcp / uvx ngspice-mcp son equivalentes directos de uvx ltspice-mcp si uno de esos nombres te resulta más reconocible.

Los clientes web (claude.ai, ChatGPT) necesitan un puente stdio→HTTP como mcp-proxy — solo expongas este servidor en una red que controles por completo, ya que escribe archivos y lanza procesos dentro de allowed_paths.

También está disponible una extensión para Claude Desktop: compila el .mcpb en packaging/mcpb/ y arrástralo sobre Claude Desktop para una instalación con un solo clic y un selector de carpetas nativo para tu directorio de circuitos. Al igual que el plugin, envuelve el paquete de PyPI y necesita uv y un simulador en el host (no incluye LTspice ni ngspice).

Related MCP server: ltspice-mcp

Cómo usarlo

Una vez conectado, pides trabajo de circuitos en lenguaje natural. El asistente diseña el circuito y decide qué medir; el servidor ejecuta el simulador, analiza la salida binaria y devuelve los números. Informa de lo que produjo la ejecución, incluidas las advertencias del propio simulador, y deja en manos tuyas y del asistente la decisión de si un resultado es bueno.

"Polariza esta etapa de fuente común con NMOS en saturación a la corriente de drenaje objetivo e informa de gm/ID."

El asistente escribe la netlist, resuelve el punto de polarización en LTspice y lee el punto de operación del dispositivo por nombre — corriente de drenaje, gm, gds, VDS frente a VDSAT para confirmar que está en saturación, y el gm/ID que los diseñadores analógicos dimensionan. Si la polarización no es correcta, ajusta la referencia de puerta o la relación W/L y vuelve a ejecutar, un par de segundos por pasada.

Otras peticiones que funcionan de la misma manera:

  • "¿Cuál es la sobreoscilación y el tiempo de asentamiento de la respuesta al escalón de este regulador?" — ejecuta un análisis transitorio y mide ambos a partir de la forma de onda, además del tiempo de subida, la frecuencia de oscilación y el valor final.

  • "Ejecuta un Monte Carlo de 200 ejecuciones con resistencias de 5% y dime la dispersión de la salida." — perturba los componentes en cada ejecución, simula el lote e informa de la media, la sigma y los valores en el peor caso por medición.

  • "Barre la carga de 100 Ω a 10 kΩ y encuentra dónde cae la eficiencia." — barrido de parámetros con resultados por ejecución.

  • "Caracteriza este NMOS: gm y gm/ID frente a VGS." — escribe un deck .dc Vgs con .save @m1[gm] @m1[id], lo ejecuta en ngspice y devuelve la tabla gm/ID como un solo CSV (sin bloque .control, sin análisis de rawfile).

  • "Encuentra un MOSFET de potencia de canal N para un interruptor de lado bajo y mide la caída en estado de conducción." — busca una pieza en las librerías cargadas (find_model), la coloca en un transitorio con puerta pulsada y lee Vds(on) y la corriente de carga de los resultados .meas.

  • "Construye este par diferencial como un esquemático que pueda abrir en LTspice." — coloca y cablea los componentes en un .asc real, con enrutado ortogonal y comprobaciones de colisión de pines.

  • "¿Es estable este lazo?" — análisis AC de la ganancia de lazo; informa del margen de fase y de ganancia en cada cruce, no solo en el primero.

  • "¿Cuál es la frecuencia de resonancia y el Q de este RLC en serie?" — ejecuta un barrido AC e informa de la frecuencia central de cada pico, su Q y el ancho de banda de −3 dB.

La advertencia viaja con el número al que afecta. Un simulador como ngspice puede imprimir "singular matrix" una vez, en lo profundo de un registro que nunca abrirías, y luego terminar la ejecución y escribir números perfectamente plausibles de todos modos — léelos a mano y nada parece fuera de lugar. Pide al servidor uno de esos números y la línea enterrada llega adjunta a él, en un campo observations justo al lado del valor, de modo que el fallo aparece donde ya estás mirando en lugar de donde es fácil pasar de largo.

Co-diseño en los mismos archivos

Todo opera sobre archivos ordinarios de LTspice y SPICE, de modo que el trabajo pasa de un lado a otro entre tú y el asistente en lugar de vivir dentro de un chat:

  • Dibuja un esquemático en LTspice y luego entrégalo: "¿cuál es el punto de polarización?", "¿por qué no se mueve la salida?", "añade compensación y comprueba el margen de fase."

  • O a la inversa: el asistente diseña y verifica el circuito y escribe el .asc; tú lo abres en LTspice, lo inspeccionas y lo ajustas a mano. Tus ediciones manuales son simplemente el nuevo estado del archivo — el asistente continúa desde ahí en la siguiente petición.

  • Los cambios pueden fluir en cualquier dirección a mitad del diseño: ajusta un valor en la GUI y pide una re-verificación, o haz que el asistente barra un cambio que estás considerando antes de comprometerte con él.

Qué hace

Simulación y medición. Ejecuta LTspice o ngspice y analiza la salida binaria directamente. Las mediciones se calculan en el lado del servidor y se devuelven como números: dominio temporal (subida/caída, sobreoscilación, asentamiento, retardo, periodo/ciclo de trabajo/jitter, RMS, THD), dominio frecuencial (frecuencias de corte y pendiente de roll-off del filtro, ganancia y fase en cualquier frecuencia, márgenes de estabilidad, picos de resonancia con Q, ruido integrado), puntos de operación DC y resultados de directivas .MEAS, incluidos los que fallaron. Los parámetros de punto de operación de pequeña señal por dispositivo (gm, gds, vth, …) vuelven por nombre en ambos simuladores — LTspice mediante un bloque .options logopinfo añadido automáticamente al registro, ngspice mediante trazas .save @dev[param]. Lee el conjunto a lo largo de un barrido .dc como una tabla gm/ID con export_waveform, o un único punto de polarización con operating_point (dirígete a ellos como m1.gm / @m1[gm], sin análisis de rawfile).

Edición de esquemáticos y netlists. Crea y edita archivos .asc reales de LTspice — coloca componentes, cablea pines, etiqueta nets — con validación antes de escribir nada: se rechaza el cableado que colisionaría con un pin, se solaparía con una unión o iría en diagonal, y cada edición devuelve advertencias sobre pines flotantes o etiquetas colgantes. Las ediciones de una sesión se pueden revertir. Las netlists simples (.cir/.net) reciben las mismas operaciones a nivel de texto, más una pasada de validación estática que detecta tarjetas mal formadas antes de gastar una simulación.

Barridos y Monte Carlo. Barridos de parámetros multidimensionales y Monte Carlo con tolerancias por componente, variación de proceso .MODEL y desajuste de dispositivo W·L de Pelgrom. Las estadísticas por medición se agregan entre ejecuciones, y cualquier ejecución individual se puede extraer y analizar como una simulación independiente.

Trabajos y confianza. Las simulaciones se ejecutan como trabajos cancelables con tiempos de espera y un límite de concurrencia; las ejecuciones largas devuelven un ID de trabajo inmediatamente y el estado del trabajo sobrevive a un reinicio del servidor. Los resultados informan de hechos, no de veredictos: una ejecución completada lleva las advertencias del propio simulador, las mediciones que no produjeron nada y los valores extremos de nodos como observaciones estructuradas. Juzgar si un resultado es fiable se deja al modelo que lo lee.

Simuladores compatibles

Simulador

Estado

LTspice

Principal. Windows nativo, WSL2 (LTspice.exe de Windows mediante interop), Linux mediante Wine. Requerido para la edición de esquemáticos .asc (necesita librerías de símbolos .asy).

ngspice

De primera clase: simular, analizar, diagnosticar, examinar. Ruta de código abierto sin instalación de LTspice.

QSPICE, Xyce

Compatibles pero secundarios.

Configuración

Funciona con los valores predeterminados sin más. Para personalizar, copia ltspice-mcp.example.toml a ltspice-mcp.toml; cualquier ajuste se puede sobrescribir con una variable de entorno con prefijo LTSPICE_MCP_, y --config PATH o LTSPICE_MCP_CONFIG selecciona el archivo. Opciones clave:

[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 = true

Consulta src/ltspice_mcp/config.py para la lista completa de opciones ([analysis], [schematic], [logging], ...).

En WSL, LTspice.exe se ejecuta mediante interop de Windows (no Wine), y spicelib no puede detectarlo automáticamente a través del límite de WSL. Establece la ruta del lado de Windows explícitamente:

[simulator]
path = "/mnt/c/Program Files/ADI/LTspice/LTspice.exe"

La salida de simulación se redirige automáticamente a un directorio temporal de Windows: los resultados .MEAS de LTspice pasan por archivos .db de SQLite que fallan en rutas UNC (\\wsl.localhost\...), y sin la redirección los datos de medición desaparecen silenciosamente de los registros.

Las rutas de símbolos .asy para la edición de .asc se detectan automáticamente en Windows y WSL; sobrescríbelas con [schematic] symbol_paths o LTSPICE_MCP_SYMBOL_PATHS.

Perfiles de herramientas

Perfil

Herramientas

Caso de uso

full (predeterminado)

49

Cualquier cliente MCP, automatización, LLM no agénticos

agentic

41

Agentes LLM con acceso nativo a archivos (Read/Edit/Write)

El perfil agentic elimina los envoltorios de edición de netlists y la gestión de sesiones de librería — trabajo que un agente capaz hace mediante ediciones directas de archivos — y conserva el ciclo de vida de la simulación, el análisis de .raw binario, la orquestación de lotes y las herramientas de geometría .asc. El directorio skills/ (skills/ltspice/SKILL.md, skills/ngspice/SKILL.md) contiene el conocimiento de dominio que se combina con él: copia la skill relevante en la ubicación de instrucciones persistentes de tu cliente.

Dónde se ejecuta. El servidor invoca un LTspice/ngspice local y lee los archivos de circuito del disco, por lo que debe ejecutarse donde estén el simulador y los archivos. Dos configuraciones funcionan: un host MCP local (Claude Desktop, Claude Code, Cursor, Gemini CLI, Codex, …) en tu propia máquina, o un agente en la nube basado en navegador cuyo sandbox pueda instalar ngspice y registrar el servidor (verificado con Claude). LTspice es solo local (una aplicación de Windows); ngspice es de código abierto y funciona en ambos entornos. El chat web de consumo sin sandbox no tiene simulador ni acceso a archivos, por lo que no puede ejecutar este servidor directamente; conéctalo a una máquina que controles (p. ej. mcp-proxy) si quieres esa interfaz.

Bajo el capó: el bucle a nivel de herramientas

Lo que el asistente hace realmente para «diseñar un paso-bajo RC de 1 kHz y verificarlo». Escribe el 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
.end

y luego maneja tres herramientas:

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")

y recibe escalares, no un gráfico:

{
  "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": []
}

(resumido — la respuesta completa también incluye los límites de la banda de paso y el ancho de banda de transición)

Fuera de objetivo → set_component_value, re-ejecutar, re-medir. Las simulaciones largas devuelven un ID de trabajo en lugar de bloquear; check_job/cancel_job las gestionan. Los metadatos de los trabajos persisten en sidecars por circuito ({dir}/.ltspice-mcp/jobs/ — añade .ltspice-mcp/ a tu .gitignore), y los recursos MCP (spice://results/..., spice://netlists/..., spice://config) exponen trabajos, señales, mediciones y configuración para explorar.

Cada herramienta declara anotaciones MCP (readOnlyHint, destructiveHint, idempotentHint, openWorldHint); las herramientas que devuelven datos declaran un outputSchema para la introspección de structuredContent.

Tool

Descripción

create_netlist

Crear una nueva netlist a partir de una cadena de contenido

create_schematic

Crear un .asc vacío listo para edición incremental

read_circuit

Leer un archivo de circuito (texto de netlist para .cir, diseño de esquemático para .asc)

list_components

Listar componentes (filtro de prefijo opcional) o buscar uno por referencia

set_component_value

Establecer un valor de componente, o establecer muchos en lote mediante un dict values

parameter

Leer todos los valores .PARAM o establecer uno

edit_directive

Añadir o eliminar directivas SPICE (.tran, .ac, .lib, ...)

add_component

Añadir un componente; devuelve posiciones de pines, cuadro delimitador, advertencias de solapamiento

connect

Cablear dos pines por referencia con enrutamiento por puntos de paso; valida colisiones de pines, uniones, diagonales

symbol_info

Posiciones de pines del símbolo, direcciones, cuadro delimitador, descripción

component_info

Posiciones de pines del componente colocado, cuadro delimitador, atributos

export_netlist

Exportar .asc a .net mediante LTspice (con diff respecto a la exportación anterior)

validate_netlist

Comprobaciones estáticas previas en una netlist o esquemático antes de la simulación

trace_net

Cada pin/etiqueta/cable en una red en un pin / net:NAME / (x,y); marca cortocircuitos accidentales

reset_schematic

Revertir un .asc a su instantánea previa a la edición de esta sesión

diff_circuit

Diff estructural entre dos archivos de circuito

apply_schematic_ops

Aplicar muchas ediciones .asc en una transacción; hogar de las operaciones de mutación solo-ack (move_component, remove_component, set_component_attribute, add_net_label, remove_net_label, remove_wire)

run_simulation

Ejecutar una simulación — síncrona para ejecuciones cortas, asíncrona (ID de trabajo) para largas; establece banderas de lote, maneja el dialecto ngspice headerless-raw, enruta artefactos raw/log, expone errores de convergencia/timeout (sin analizar manualmente un rawfile)

check_job

Comprobar el estado de un trabajo por ID, o listar todos los trabajos

cancel_job

Cancelar una simulación o lote en ejecución; mata el/los proceso(s) del simulador

signal_stats

Mín, máx, media, RMS, pico a pico (dB/fase para AC)

get_waveform

Envolvente estadística mín/máx diezmada de una señal en una ventana — ver la forma, luego solicitar de nuevo una ventana más estrecha para hacer zoom

export_waveform

Salida CSV de fidelidad completa de una o más señales a disco (todos los tipos de análisis; tidy/long para .step); acepta parámetros de punto de operación del dispositivo (m1.gm/@m1[gm]) — a través de un barrido .dc esta es la lectura de la tabla gm/ID; devuelve la ruta para que calcules tú mismo

plot_waveform

Gráfico HTML interactivo (transitorio / DC / Bode de doble panel con esquina ac_structure + marcadores de fase no mínima / ruido / superposición .step) escrito junto al circuito y abierto en tu navegador; para ver la forma, no para medir

query_value

Valor de señal en un tiempo/frecuencia específico (o un parámetro de punto de operación del dispositivo, m1.gm/@m1[gm]); step_axis+step_value selecciona una ejecución .step

operating_point

Punto de operación DC: todos los voltajes de nodo, corrientes de rama y parámetros de punto de operación por dispositivo (gm/gds/vth/…) en LTspice (auto .options logopinfo) y ngspice, direccionables como m1.gm/@m1[gm]; device= limita a un dispositivo

simulation_summary

Resumen completo: tipo de simulación, señales, mediciones, advertencias

edge_metrics

Tiempo de subida/bajada y slew rate para un flanco transitorio

pulse_response

Sobreoscilación, suboscilación, tiempo de asentamiento para una respuesta escalón

timing_between

Retardo de propagación entre dos señales transitorias

periodic_metrics

Período, frecuencia, ciclo de trabajo, jitter de una señal oscilante

thd

Distorsión armónica total (THD/THD+N) de un transitorio periódico mediante FFT; muestreo coherente para un resultado exacto; expone cada condición

measurement_stats

Agregar escalares .MEAS a través de un barrido o ejecución de Monte Carlo

bode_metrics

Análisis AC/Bode por mode: filter, slope, point, crossing; all_steps=true para resultados por paso

stability_metrics

Estabilidad de ganancia de bucle: todos los cruces de ganancia unitaria / -180° con márgenes por cruce

resonance

Picos AC con factor Q y ancho de banda de -3 dB por pico

ac_structure

Estructura de polos/ceros de una respuesta AC: orden neto, rangos de esquina + Q, fase no mínima / cero RHP, retardo de transporte (hechos para revisión humana)

noise_integral

Integrar una densidad espectral .noise a RMS total sobre una banda (sqrt(∫ density² df)); informa la banda y el recuento de muestras

configure_sweep

Configurar un barrido multiparámetro (lineal o log)

run_sweep

Ejecutar un barrido configurado (asíncrono, devuelve ID de trabajo)

configure_montecarlo

Configurar Monte Carlo: tolerancias, variación .MODEL, desajuste de Pelgrom

run_montecarlo

Ejecutar un análisis de Monte Carlo configurado (asíncrono, devuelve ID de trabajo)

batch_results

Progreso de trabajos de barrido/MC, estadísticas por señal o datos por ejecución

find_model

Encontrar candidatos de modelo por nombre (difuso por defecto, exact=true para exacto)

load_library

Cargar un archivo .lib/.mod o un directorio de bibliotecas

unload_library

Descargar una biblioteca cargada previamente

list_libraries

Listar bibliotecas cargadas, opcionalmente con nombres de modelo

server_status

Simuladores detectados, configuración, rutas de sandbox, estado de ejecución

recent

Circuitos y trabajos usados recientemente del índice persistente

Desarrollo

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)

Más: docs/DESIGN.md (alcance, arquitectura, no objetivos) y docs/spice_lex.md (internals del analizador SPICE).

Licencia

GPL-3.0

Install Server
A
license - permissive license
B
quality
B
maintenance

Maintenance

Maintainers
Response time
Release cycle
Releases (12mo)
Commit activity

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

  • A
    license
    B
    quality
    D
    maintenance
    AI-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.
    28
    28
    GPL 3.0
  • F
    license
    C
    quality
    D
    maintenance
    MCP server for automating LTspice on macOS, enabling simulation, schematic generation, data extraction, verification, and rendering via natural language or agents.
    71
    15
  • A
    license
    A
    quality
    B
    maintenance
    An 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.
    48
    26
    GPL 3.0

View all related MCP servers

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.

View all MCP Connectors

Latest Blog Posts

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