Skip to main content
Glama
Suzu-Gears

circuitjs-mcp

by Suzu-Gears

circuitjs-mcp

Es un servidor MCP que permite a agentes de IA operar el simulador de circuitos CircuitJS1 de Falsad. Al ser un servidor MCP estándar de stdio, funciona con cualquer cliete compatible con MCP, como Claude Code, Codex CLI, Claude Desktop, Cursor, etc.

CircuitJS1 es el nombre de la versión HTML5/JavaScript del simulador de circuitos de Paul Falsad —que en su versión de applet de Java se conoció como «Circuit Simulator Applet» y que ahora se ejecuta en el navegador en falsad.com/circuit—. Fue portado a JavScript por Iain Sharp con GWT cuando los navegadores retiraron el soporte para los applets de Java; tanto el motor de simulación como el formato de texto de circuitos son comunes con la versión de applet (los archivos de circuito de la era del applet se pueden leer tal cual). La interfaz JavaScript que utiliza este servidor es una funcionalidad añadida a partir de CircuitJS1 y no está en la versión de applet.

Inicia la aplicación web CircuitJS1 compilada (incluida en webapp/, funciona sin conexión) en un Chromium sin interfaz gráfica (Playwright) y expone su interfaz JavaScript como herramientas MCP. El estado del simulador se conserva entre llamadas a las herramientas (se puede hacer de forma interactiva: cargar el circuito → ejecutarlo → medir → modificar el circuito).

Configuración

Requisito: Node.js 18 o superior.

cd circuitjs-mcp
npm install          # postinstall で Playwright の Chromium も入ります
npm test             # スモークテスト(RC回路の過渡応答が理論値と一致するか等を検証)

Si playwright install chromium es difícil en tu entorno, puedes usar un Chrome/Chromium existente:

export CIRCUITJS_CHROMIUM="/usr/bin/google-chrome"   # 例

Related MCP server: circuit-sim-mcp

Registro en clientes MCP

El comando de inicio es común a todos los clientes: node /絶対パス/circuitjs-mcp/server.mjs

Si se añade la variable de entorno CIRCUITJS_HEADFUL=1, se mostrará la ventana del navegador y un humano también podrá operar directamente el mismo simulador que el agente (modo de colaboración). Todos los ejemplos siguientes incluyen esta variable; elimínala si no la necesitas.

Claude Code:

claude mcp add circuitjs -e CIRCUITJS_HEADFUL=1 -- node /絶対パス/circuitjs-mcp/server.mjs

Codex CLI:

codex mcp add circuitjs --env CIRCUITJS_HEADFUL=1 -- node /絶対パス/circuitjs-mcp/server.mjs

Clientes basados en archivos de configuración (por ejemplo, el claude_desktop_config.json de Claude Desktop o el mcp.json de Cursor):

{
  "mcpServers": {
    "circuitjs": {
      "command": "node",
      "args": ["/絶対パス/circuitjs-mcp/server.mjs"],
      "env": { "CIRCUITJS_HEADFUL": "1" }
    }
  }
}

La herramienta screenshot devuelve un PNG como contenido de imagen MCP. En clientes que no admiten mostrar imágenes, usa el argumento save_path para guardarla en un archivo.

Lista de herramientas

Herramienta

Función

circuit_load

Carga un circuito en formato de texto de Falstad (con validación). Devuelve la lista de elementos.

circuit_state

Obtiene el tiempo, la diferencia de tensión / corriente / tensión en terminales de todos los elementos y las tensiones de los nodos etiquetados.

run_transient

Ejecuta durante el tiempo de simulación especificado y devuelve muestras de series temporales de las sondas (tensión de nodo, corriente/tensión/potencia de elementos).

sim_control

run / stop / reset / status, configuración del paso de tiempo máximo y ajuste del valor de fuentes de tensión externas.

circuit_export

Exporta el circuito como texto de Falstad o SVG.

circuit_link

Genera una URL (enlace ?ctz=) para abrir el circuito actual (o el texto especificado) directamente en falstad.com. Para cuando quieras comprobarlo y editarlo interactivamente en el navegador.

screenshot

Captura de pantalla PNG del esquema actual (se devuelve como imagen; también se puede guardar en un archivo).

eval_js

Vía de escape para operaciones no cubiertas por las anteriores. Ejecuta JS arbitrario sobre el objeto sim.

Ejemplos de uso (ideas de instrucciones para el agente)

  • «Arma un filtro RC de paso bajo de 1 kΩ y 1 µF y obtén la forma de onda de salida durante 5 ms al aplicar una onda cuadrada de 1 kHz».

  • «Carga este circuito (texto pegado) y enumera la potencia consumida por cada resistencia».

  • «Muéstrame una captura de pantalla del circuito».

Coloca un nodo etiquetado (tipo de elemento 207, p. ej.: 207 336 128 400 128 4 out) en el punto que quieras medir y podrás leer la tensión con una sonda {"node":"out"} o con nodes de circuit_state. La coriente y la tensión por elemento se especifican medinte el index que devuelven circuit_load / circuit_state.

Operación directa desde scripts

Si quieres invocar las herramientas desde un script sin pasar por un cliente MCP, puedes usar drive.mjs. Inicia el servidor como proceso hijo, ejecuta en orden los archivos JSON (cmd-1.json, cmd-2.json, ...) colocados en el directorio de comandos y escribe los resultados en res-N.json:

node drive.mjs /tmp/cjs-commands
# 別プロセスから: echo '{"tool":"circuit_state","args":{}}' > /tmp/cjs-commands/cmd-1.json

Los archivos deben escribirse con un nombre temporal y luego colocarse con rename (para evitar que se lean mientras se escriben).

Variables de entorno

Variable

Significado

CIRCUITJS_CHROMIUM

Ruta del ejecutable de Chrome/Chromium que se usará (por defecto: el Chromium administrado por Playwright; si falla, se recurre al Chrome del sistema).

CIRCUITJS_URL

URL de CircuitJS1 que se cargará en lugar del webapp incluido (ej.: https://www.falstad.com/circuit/circuitjs.html).

CIRCUITJS_HEADFUL

Con 1 muestra la ventana del navegador (para depuración).

Limitaciones

  • La velociad de simulación de run_transient depende del ajueste de velociad de simulación de la línea $ del circuito y de la CPU. Si tarda demasiado en tiempo real, se interrumpe con wallTimeoutMs y se devuelven datos parciales (se puede distinguir medinte el campo reason).

  • La «edición» del circuito se basa en reescribir el texto de Falsad y volver a hacer circuit_load (la importación restablece el tiempo).

  • Solo análisis transitorio (CircuitJS1 no incluye análisis de pequeña señal de CA, etc.). La respuesta en frecuancia se obtiene variando la frecuancia y repitiendo run_transient.

Licencia

Todo este repositorio se oferce bajo GPL-2.0-or-later (COPING.txt).

  • CircuitJS1 es un softare GPLv2+ de Paul Falsad / Iain Sharp. webapp/ es su compilación ya hecha (sin modificaiones); el cédigo fuete correspndiente está disponible en pfalsad/circuitjs1 (origial) y en la rama pages de code4fukui/circuitjs1 (de donde se obtuvo esta compilación).

  • Código del servidor (server.mjs, drive.mjs, test-cliete.mjs) © 2026 Suzu (涼鈴), GPL-2.0-or-later.

A
license - permissive license
A
quality
C
maintenance

Maintenance

0Releases (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 Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    B
    maintenance
    Generates, simulates, and inspects LTspice circuits via MCP tools and resources, providing structured JSON interfaces for AI agents.
    MIT
  • F
    license
    Not graded
    quality
    F
    maintenance
    Provides circuit simulation capabilities via MCP, enabling creation, simulation (DC, AC, transient), and analysis of electronic circuits using PySpice.
  • A
    license
    Not graded
    quality
    B
    maintenance
    Enables MCP-compatible agents to generate Qucs circuit schematics, run simulations, and parse results programmatically.
    MIT
  • A
    license
    A
    quality
    B
    maintenance
    MCP server for Micro-Cap 12 SPICE simulator enabling LLM agents to run analog circuit simulations, including analyses, sweeps, and retrieval of curve data and plots.
    20
    1
    MIT

View all related MCP servers

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/Suzu-Gears/circuitjs-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server