BLTSpice MCP Server
Crea circuitos de LTSpice con LLMs. Convierte netlist a LTSpice .asc
Documentación

bltspice_mcp

¡Crea cualquier circuito LTSpice usando LLMs!

¡Convierte netlists de ltspice .net al formato .asc de ltspice!

Simulación REALTIME de LTSpice y exportación a .csv!
Estructura del Proyecto
src/bltspice_mcp/código fuente del servidortests/unit/pruebas unitariastests/integration/pruebas de integracióntestfiles/assets de ejemplo copiados (.asc/.log/.raw/.asy/.txt/.net/.kicad_sch)examples/codex/yexamples/opencode/recetas de llamadas MCP para agentes LLMconfig.jsonconfiguración del servidorbltspice_mcp_for_LLM.mdreferencia de llamadas a herramientas LLM
Requisitos
- Python 3.11+
- LTspice instalado
- Linux/macOS con Wine para el binario de LTspice en Windows
Configuración Rápida
python3 -m venv .venv
. .venv/bin/activate
pip install -U pip
pip install "PyLTSpice>=6.0.1" "fastmcp==2.14.7" "electronics-design>=0.2.3" pytest pytest-asyncio
pip install -e .
Configuración
config.json (se requieren rutas absolutas):
{
"mcp_server_name": "My PyLTSpice MCP Server",
"mcp_server_url": "http://localhost:7543",
"wine_path": "/usr/bin/wine",
"ltspice_path": "/home/brosnan/.wine/drive_c/Program Files/ADI/LTspice/LTspice.exe",
"enable_extra_tools": true,
"timeout": 600,
"convert_settings": {
"ltspice_windows_path": "C:\\users\\brosnan\\AppData\\Local\\LTspice\\",
"ltspice_wine_path": "~/.wine/drive_c/users/brosnan/AppData/Local/LTspice/",
"custom_search_paths": ["./valid_asy/"],
"minimum_dist": 32,
"wire_pin_out_dist": 16,
"grid_size": 16,
"autoplace_iter": 12,
"ltspice_version": 4.1,
"voltage_must_have_dc": true,
"kicad_path": "/usr/share/kicad/"
}
}
convert_settings es opcional. Cada ajuste es opcional y recibe un valor
predeterminado cuando se omite. Las custom_search_paths relativas se resuelven desde la
raíz del proyecto del servidor; las rutas de Windows permanecen en sintaxis de
Windows para la conversión basada en Wine.
mcp_server_url admite http://, https:// y stdio://.
Ejecutar el Servidor
Transporte Stdio:
. .venv/bin/activate
python -m bltspice_mcp --config /home/brosnan/bltspice_mcp/bltspice_mcp/config.json
Ejemplos de Configuración del Cliente MCP
OpenCode
{
"mcpServers": {
"bltspice_mcp": {
"command": "/home/brosnan/bltspice_mcp/bltspice_mcp/.venv/bin/python",
"args": [
"-m",
"bltspice_mcp",
"--config",
"/home/brosnan/bltspice_mcp/bltspice_mcp/config.json"
]
}
}
}
Claude Code
{
"mcpServers": {
"bltspice_mcp": {
"command": "/home/brosnan/bltspice_mcp/bltspice_mcp/.venv/bin/python",
"args": [
"-m",
"bltspice_mcp",
"--config",
"/home/brosnan/bltspice_mcp/bltspice_mcp/config.json"
]
}
}
}
OpenAI Codex
{
"mcp_servers": {
"bltspice_mcp": {
"command": "/home/brosnan/bltspice_mcp/bltspice_mcp/.venv/bin/python",
"args": [
"-m",
"bltspice_mcp",
"--config",
"/home/brosnan/bltspice_mcp/bltspice_mcp/config.json"
]
}
}
}
Contrato de Respuesta
Estados del servidor:
performing LTspice operation in progressLTspice operation completed!invalid input!file not found!unsupported file type!simulator not configured!simulation failed!parser failed!LTspice operation timed out!internal error
Cada payload incluye operation. Las respuestas exitosas incluyen output y, opcionalmente, output_obj_name.
stop_reset aislado por sesión
Cada sesión MCP posee un grupo de procesos de trabajo del sistema operativo dedicado que contiene su
registro de despachador, hilos de RunTask de PyLTSpice, subprocesos del simulador y
procesos hijos de callback. stop_reset interrumpe esa sesión inmediatamente con
SIGKILL, limpia las operaciones que ya estaban en cola para ella y descarta su
registro de objetos. No señala grupos de trabajo que pertenezcan a otras
sesiones MCP. Debido a que los sistemas operativos aplican SIGKILL a procesos en lugar de
hilos individuales, matar el proceso de trabajo de la sesión termina todos sus
hilos de forma atómica.
La respuesta inmediata es el payload normal en progreso. Consulta execute_status
hasta que tanto status esté completo como operation sea stop_reset. Su salida
incluye worker_process_killed, processes_killed,
threads_terminated_with_processes y queued_operations_killed. El trabajo
enviado después de la llamada de reinicio espera hasta que el reinicio se complete y se ejecuta en un
trabajador de sesión nuevo.
traces_to_csv mediante execute
Convierte trazas seleccionadas de un objeto RawRead cargado en un CSV por onda/paso.
Entradas:
object_name: nombre de un objetoRawReadalmacenadotrace_refs: array de nombres de trazas (cualquier longitud), por ejemplo["V(opamp_input)", "V(opamp_output)"]output_files:- prefijo/ruta de cadena, ejemplo
./sim_wave_-> escribe./sim_wave_0.csv,./sim_wave_1.csv, ... - o array de rutas
.csvexplícitas con una entrada por onda
- prefijo/ruta de cadena, ejemplo
Ejemplo de llamada MCP:
{"tool":"execute","arguments":{"api_name":"traces_to_csv","inputs":{"object_name":"raw","trace_refs":["V(opamp_input)","V(opamp_output)"],"output_files":"./sim_wave_"}}}
Conversión de esquemáticos LTspice mediante execute
Las siguientes APIs de electronics-design están disponibles a través de execute:
is_valid_ltspice_netlist_file, ltspice_netlist_to_asc,
kicad_sch_to_ltspice_netlist y ltspice_netlist_to_kicad_sch.
Las APIs de conversión reciben el convert_settings configurado automáticamente.
Una solicitud puede incluir un objeto inputs.convert_settings para sobrescribir valores
individuales para esa llamada. is_valid_ltspice_netlist_file solo requiere su ruta de archivo.
voltage_must_have_dc debe ser un booleano JSON y se pasa a
ltspice_netlist_to_asc dentro de convert_settings.
Las conversiones de KiCad requieren que kicad_path apunte a un directorio que contenga bibliotecas
de símbolos de KiCad (predeterminado /usr/share/kicad/). Se puede configurar en config.json
o sobrescribirse por solicitud dentro de inputs.convert_settings. Otras
configuraciones de generación de KiCad de electronics-design mantienen sus valores predeterminados del paquete.
Ejemplos de llamadas MCP:
{"tool":"execute","arguments":{"api_name":"kicad_sch_to_ltspice_netlist","inputs":{"kicad_sch_filepath":"/abs/path/input.kicad_sch","ltspice_netlist_filepath_out":"/abs/path/output.net"}}}
{"tool":"execute","arguments":{"api_name":"ltspice_netlist_to_kicad_sch","inputs":{"ltspice_netlist_filepath":"/abs/path/input.net","kicad_sch_filepath_out":"/abs/path/output.kicad_sch"}}}
kicad_sch_to_ltspice_netlist convierte un esquemático de KiCad en una netlist de LTspice
validada. ltspice_netlist_to_kicad_sch convierte una netlist de LTspice
validada en un esquemático de KiCad validado. Ambas devuelven la tupla
de conversión de diseño electrónico [true, "OK", 0] en caso de éxito o [false, "<error code>", <line>]
en caso de fallo dentro de output.result.
Flujo MCP Equivalente de run_ltspice_to_csv.py
Se incluyen artefactos equivalentes para el flujo de trabajo de ejemplo del amplificador operacional:
- fixture de netlist:
/home/brosnan/bltspice_mcp/bltspice_mcp/testfiles/opampdouble.net - receta de Codex:
/home/brosnan/bltspice_mcp/bltspice_mcp/examples/codex/run_ltspice_to_csv.md - receta de OpenCode:
/home/brosnan/bltspice_mcp/bltspice_mcp/examples/opencode/run_ltspice_to_csv.md - prueba de integración:
/home/brosnan/bltspice_mcp/bltspice_mcp/tests/integration/test_run_ltspice_to_csv_via_mcp.py
Cobertura de Integración
Las pruebas de integración ahora incluyen:
- Prueba de flujo MCP principal (
runtime_info,execute,execute_status,stop_reset) - Cobertura de mapeo para el manifiesto de nombres de ejemplo de PyLTSpice incluido
(
tests/fixtures/pyltspice_example_manifest.json) - Cobertura de mapeo para la lista de nombres de ejemplo del README incluido en ese manifiesto
- Flujo de trabajo MCP de estilo
run_ltspice_to_csv.pyde extremo a extremo paraopampdouble.net - Flujos de trabajo MCP de conversión de KiCad para
kicad_sch_to_ltspice_netlistyltspice_netlist_to_kicad_sch(tests/integration/test_kicad_conversion_via_mcp.py)
Ejecutar Pruebas (Una Por Una)
. .venv/bin/activate
pytest -q tests/unit/test_responses.py
pytest -q tests/unit/test_config.py
pytest -q tests/unit/test_dispatcher.py
pytest -q tests/unit/test_session.py
pytest -q tests/integration/test_mcp_server_integration.py
pytest -q tests/integration/test_examples_via_mcp.py
pytest -q tests/integration/test_readme_examples_via_mcp.py
pytest -q tests/integration/test_run_ltspice_to_csv_via_mcp.py
pytest -q tests/integration/test_kicad_conversion_via_mcp.py
Notas
runtime_infoes inmediato y no requiere sondeo deexecute_status.- El servidor pone en cola
executeen FIFO por sesión MCP;stop_resetinterrumpe solo el grupo de procesos de trabajo de esa sesión y limpia su cola existente. execute_statusconsulta el estado más reciente de las operaciones en cola.- Las notificaciones de finalización/error se emiten a través del canal de notificaciones MCP.