Skip to main content
Glama

mcp-openems

DOI

Servidor MCP (Model Context Protocol) que conecta un agente de inteligencia artificial con el simulador electromagnético libre openEMS (FDTD). Lo hace en dos modos de uso pensados para la docencia de antenas:

  • Ejecutor: el agente diseña, simula y ajusta la antena.

  • Tutor: el estudiante escribe el diseño y el agente solo simula, revisa y orienta. Las herramientas que crean o modifican el modelo se retiran desde el servidor.

Es el software que acompaña al artículo ¿Ejecutor o tutor? Agentes de IA conectados a simuladores en la enseñanza de antenas (en evaluación). Para citar el software:

Flores Córdova, D. A. (2026). mcp-openems: servidor MCP para openEMS con modos ejecutor y tutor (Versión 0.1.0) [Software]. Zenodo. https://doi.org/10.5281/zenodo.23487839

Los metadatos completos están en CITATION.cff.

English summary: an MCP server that lets an AI agent drive the openEMS FDTD simulator in two teaching modes. In executor mode the agent designs the antenna. In tutor mode the student designs it and the agent may only run, check and explain, because design tools are removed at the server level. It includes student templates, agent prompts, session-logging tools and the scripts that reproduce the article's validation table.

Contenido

Ruta

Qué es

server.py

Servidor MCP (FastMCP): 42 herramientas en modo ejecutor y 17 en modo tutor

openems_bridge.py

Lógica de proyectos, simulaciones en segundo plano, resultados y revisión del diseño

openems_scriptgen.py

Genera un simulate.py legible y autocontenido a partir del modelo

sweep_driver.py

Barridos paramétricos

configurar_sesion.py

Prepara una sesión del estudio en Claude Code: modo, participante y permisos

recoger_sesion.py

Reúne transcripciones, registro MCP y proyectos de un participante, con SHA-256

selftest.py

Prueba de extremo a extremo del servidor

plantillas/

Plantillas del estudiante para el modo tutor (dipolo y parche)

prompts/

Instrucciones del agente por modo y por tarea

simulaciones/

Scripts que reproducen la tabla 2 del artículo, con valores de referencia

Related MCP server: cst-studio-mcp

Requisitos

  • Windows 10 u 11. Probado en Windows 11 con openEMS 0.37.0 y Python 3.14. El servidor tiene una ruta POSIX, pero no se probó en Linux ni en macOS.

  • openEMS 0.37 para Windows, descomprimido por ejemplo en C:\openEMS.

  • Python 3.13 o 3.14, porque las ruedas de openEMS 0.37 solo existen para esas versiones.

  • Un cliente MCP, por ejemplo Claude Desktop o Claude Code.

Instalación

cd mcp-openems
python -m venv .venv
.venv\Scripts\python -m pip install numpy h5py matplotlib "mcp[cli]>=1.28.1,<2"
.venv\Scripts\python -m pip install --no-index --find-links C:\openEMS\python openEMS
set CSXCAD_INSTALL_PATH=C:\openEMS
.venv\Scripts\python selftest.py --quick

mcp se fija en <2 porque la versión 2.x renombró FastMCP. Si se prefiere uv, los comandos equivalentes son uv venv --python 3.14 .venv y uv pip install --python .venv\Scripts\python.exe ....

Registro en el cliente MCP

Ejemplo de entrada en claude_desktop_config.json o en un .mcp.json de proyecto (ajusta las rutas):

{
  "mcpServers": {
    "openems": {
      "command": "C:\\ruta\\mcp-openems\\.venv\\Scripts\\python.exe",
      "args": ["-u", "C:\\ruta\\mcp-openems\\server.py"],
      "env": {
        "CSXCAD_INSTALL_PATH": "C:\\openEMS",
        "OPENEMS_WORKSPACE": "C:\\OPENEMS_MCP_WORK",
        "OPENEMS_MCP_MODE": "full",
        "OPENEMS_MCP_PARTICIPANT": ""
      }
    }
  }
}

Variable

Valor por defecto

Uso

OPENEMS_WORKSPACE

C:\OPENEMS_MCP_WORK

Carpeta de proyectos. El servidor no lee ni escribe fuera de ella

CSXCAD_INSTALL_PATH

C:\openEMS-0.37.0

Carpeta con openEMS.exe y CSXCAD.dll

OPENEMS_MCP_MODE

full

full (ejecutor) o tutor

OPENEMS_MCP_PARTICIPANT

vacío

Código seudónimo que se guarda en el registro de llamadas

Cómo funciona

  • Cada proyecto es una carpeta con un modelo declarativo (model.json) y un simulate.py generado a partir de él. El script es legible: los parámetros son variables y la geometría son expresiones como -L/2. Se ejecuta sin el agente (python simulate.py, con las opciones --dry, --post-only, --set L=29.5).

  • Las simulaciones corren en un subproceso, de modo que el servidor nunca importa openEMS.

  • Post-proceso: S11, impedancia de entrada, ancho de banda a −10 dB, directividad, eficiencia de radiación y ganancia realizada. Se guardan en CSV, PNG, Touchstone y summary.json.

  • Modo tutor: las 25 herramientas que crean o modifican el modelo no se registran. Quedan las de abrir proyectos, ejecutar el script del estudiante, revisar la malla y el diseño, leer resultados y generar el reporte.

  • Registro: cada llamada se guarda en OPENEMS_WORKSPACE\_logs\mcp_calls_AAAAMMDD.jsonl con la hora, el participante, el modo, la herramienta, los argumentos y un extracto del resultado.

  • Contornos PEC o PMC sin margen de aire en esa cara. Así se modela un plano de tierra infinito, por ejemplo con BC[4] = 'PEC' para un monopolo.

Uso en un estudio con estudiantes

  1. Configurar la sesión. configurar_sesion.py --modo tutor --tarea dipolo --participante P07 escribe en el workspace el CLAUDE.md con el prompt del modo, el .mcp.json con el modo y el participante, y permisos dontAsk: solo las herramientas oems_* y la lectura de archivos.

    • Abre una sesión nueva de Claude Code en el workspace y acepta una vez el diálogo de confianza de la carpeta.

    • No registres openems también en claude_desktop_config.json.

  2. Recoger los datos. Al terminar, recoger_sesion.py --participante P07 --destino D:\datos copia la transcripción, el registro y los proyectos, y genera turnos.csv para codificar.

  3. Plantillas. Las de plantillas/ dan al estudiante del modo tutor la misma estructura de script que genera el servidor en el modo ejecutor.

Reproducir la verificación del artículo

cd simulaciones
..\.venv\Scripts\python reproducir_tabla2.py

Ver simulaciones/README.md para los casos, los tiempos y las tolerancias.

Licencia y créditos

Código bajo licencia MIT. openEMS y CSXCAD son proyectos independientes con su propia licencia (GPLv3); este repositorio no los incluye ni los redistribuye.

El software se desarrolló con asistencia de Claude (Anthropic). El autor lo revisó y verificó.

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    A
    maintenance
    Enables AI-assisted design of antennas and electromagnetic structures using openEMS FDTD simulation, with analytical dimension calculators and full-wave script generation.
    16
    3
    AGPL 3.0
  • A
    license
    B
    quality
    B
    maintenance
    Python-first MCP server for CST Studio Suite (2024–2026) that lets AI assistants drive CST from Windows: open projects, build geometry, set materials and ports, run solvers, read S-parameters and farfield metrics, and generate design reports.
    184
    9
    MIT
  • A
    license
    C
    quality
    B
    maintenance
    Enables engineers to convert antenna papers/diagrams and natural language specs into auditable, versionable HFSS Python modeling code, with optional simulation and parametric optimization.
    30
    22
    MIT
  • A
    license
    Not graded
    quality
    A
    maintenance
    Turns CST Studio Suite into an AI-controllable electromagnetic design lab, enabling conversational THz metamaterial absorber design, unit-cell automation, Floquet port control, batch solve with checkpoint-resume, and surrogate-model predictions.
    2
    MIT