rftools

203 calculadoras de RF y electrónica + 13 herramientas de simulación del lado del servidor para agentes de IA.

Documentación

rftools-mcp

npm version License: MIT MCP

Servidor MCP para rftools.io — 241 calculadoras de RF y electrónica + 13 herramientas de simulación del lado del servidor para agentes de IA.

Dale a Claude, Cursor o cualquier asistente de IA compatible con MCP acceso a calculadoras de ingeniería validadas y simulaciones pesadas del lado del servidor. Impedancia de microcinta, presupuestos de enlace, diseño de filtros, dimensionamiento de convertidores, patrones de antena y más de 200 calculadoras adicionales — además de simulación de antenas NEC2, FDTD, Monte Carlo, análisis SMPS, estimación de EMI y más, todo invocable como herramientas MCP.

Inicio rápido

Las calculadoras funcionan sin clave de API, y también las herramientas de simulación: sin una, un trabajo se ejecuta en el carril gratuito. Una clave eleva los límites — regístrate en rftools.io y genera una desde tu panel. Lo único para lo que se requiere una clave es para un archivo: subir un archivo necesita una clave de API; establece RFTOOLS_API_KEY.

Configuración

Sin clave de API

Las 241 calculadoras se ejecutan localmente sin necesidad de registro, y toda herramienta de simulación que no acepta archivos aún se envía — en el carril gratuito, con los límites gratuitos y los límites de parámetros del carril gratuito indicados en la respuesta.

Un tipo de trabajo que acepta un archivo es la excepción. Subir un archivo necesita una clave de API; establece RFTOOLS_API_KEY. Sin una, una llamada que lleva inputFiles o inputPaths se rechaza aquí, con esa frase, antes de que se lea el archivo y antes de que cualquier solicitud salga de esta máquina.

Con clave de API

Regístrate en rftools.io y genera una clave de API desde tu panel. Las cuentas gratuitas incluyen 5 ejecuciones de simulación al mes. Pro: 100 al mes. Nivel API: 10,000 al mes. Una clave de pago también desbloquea los modos que el carril gratuito no puede ejecutar: el optimizador de antenas y las mallas FDTD normal y fine.

Claude Desktop

Agrega a ~/Library/Application Support/Claude/claude_desktop_config.json (macOS) o %APPDATA%\Claude\claude_desktop_config.json (Windows):

{
  "mcpServers": {
    "rftools": {
      "command": "npx",
      "args": ["-y", "rftools-mcp"],
      "env": {
        "RFTOOLS_API_KEY": "rfc_your_key_here"
      }
    }
  }
}

Omite el bloque env para usar solo calculadoras. Reinicia Claude Desktop después de guardar.

Claude Code

claude mcp add rftools-mcp -- npx -y rftools-mcp

Para agregar tu clave de API:

claude mcp add rftools-mcp -e RFTOOLS_API_KEY=rfc_your_key_here -- npx -y rftools-mcp

Cursor

Agrega a .cursor/mcp.json en tu proyecto:

{
  "mcpServers": {
    "rftools": {
      "command": "npx",
      "args": ["-y", "rftools-mcp"],
      "env": {
        "RFTOOLS_API_KEY": "rfc_your_key_here"
      }
    }
  }
}

Windsurf

Agrega a ~/.codeium/windsurf/mcp_config.json:

{
  "mcpServers": {
    "rftools": {
      "command": "npx",
      "args": ["-y", "rftools-mcp"],
      "env": {
        "RFTOOLS_API_KEY": "rfc_your_key_here"
      }
    }
  }
}

Herramientas

Qué cambió en 2.2.0

  • Nueva herramienta: solve_calculation. Encuentra el valor de una entrada de calculadora que hace que una salida sea igual a un objetivo — el ancho de traza para 50 Ω, el espacio para 90 Ω — en lugar de que un agente adivine valores y llame a run_calculation en un bucle. A diferencia de todas las demás herramientas de calculadora, esta ejecuta la búsqueda del lado del servidor en rftools.io y requiere una clave de API y gasta una llamada medida — consulta solve_calculation a continuación.

Qué cambió en 2.1.0

  • Los resultados de las calculadoras llevan procedencia. run_calculation devuelve un objeto provenance junto a los valores: el método (calculator:<slug>), el motor (mcp@<version>), la fuente de fórmula publicada, los supuestos declarados de la calculadora, las entradas con las que se calculó, si están dentro del rango declarado para la calculadora (y, para un modelo ajustado, su rango validado y error en el peor caso), cuándo se calculó y cuánto tardó. Es el mismo objeto que devuelve la API de rftools.io.
  • Una entrada omitida toma su valor predeterminado, como en el sitio web y la API; antes llegaba a la calculadora como indefinida. Una entrada que la calculadora no lee se nombra en warnings, y también una entrada fuera de su rango declarado — el valor aún se calcula.
  • El provenance de un resultado de simulación se devuelve completo en el resumen predeterminado. Las series aún se describen en lugar de enumerarse.

Qué cambió en 2.0.0

  • Una herramienta tipada por tipo de trabajo. Cada uno de los 13 tipos de trabajo de simulación ahora tiene su propia herramienta simulate_<jobType> (p. ej. simulate_impedance_matching) con un esquema de entrada real — nombre, tipo, unidad, rango, opciones y valor predeterminado por parámetro — generado a partir del contrato de parámetros del tipo de trabajo. run_simulation aún existe como forma de compatibilidad que toma jobType y params, pero prefiere la herramienta tipada: es la que un agente puede leer el esquema.
  • Las cargas pasan por este servidor, en línea (inputFiles: [{name, content}]) o por ruta en esta máquina (inputPaths); un tipo de trabajo con entrada de archivo necesita RFTOOLS_API_KEY — consulta Archivos a continuación.
  • submit_simulation / get_simulation_status / get_simulation_result son los primitivos de disparar y olvidar debajo de run_simulation y las herramientas tipadas, para un llamador que quiera enviar, hacer otro trabajo y consultar más tarde.
  • run_simulation ahora está limitado por waitSeconds (predeterminado 90, máximo 600): envía, consulta y, si el trabajo no ha terminado para el límite, devuelve el id del trabajo, estado, progreso y etapa en lugar de bloquear más — el trabajo sigue ejecutándose, y una llamada posterior a get_simulation_status / get_simulation_result lo retoma.
  • Los resultados se resumen por predeterminado — summary, warnings, provenance, cada valor escalar, y series largas descritas por longitud y extremos en lugar de enumerarse completas. Pasa full: true para la carga completa.
  • No se envían valores predeterminados. Una llamada a simulate_* envía solo los parámetros que nombras; ya no completa los valores predeterminados del contrato por sí misma. Dado que la semilla aleatoria de un tipo de trabajo de muestreo se deriva del cuerpo de la solicitud, omitir un parámetro y enviarlo en su valor predeterminado son la misma solicitud al solucionador pero no el mismo cuerpo, y pueden extraer una muestra diferente. Establece randomSeed para fijar una ejecución exactamente.
  • Errores tipados. Las fallas se clasifican por el errorKind del servicio, no por coincidencia de texto de mensaje — consulta Cuando algo sale mal a continuación.

Cambios importantes:

  • list_simulation_tools ya no lleva una oración escrita a mano que describa los parámetros de cada tipo de trabajo; los enumera como una matriz simple de nombres (params: string[]). Lee el esquema de entrada de la herramienta simulate_* para el tipo, unidad, rango, opciones y valor predeterminado de cada parámetro.
  • Las claves de parámetros desconocidas ahora se rechazan localmente, antes de que cualquier solicitud salga de esta máquina — el mismo contrato que el servicio valida, verificado aquí primero.

Herramientas de calculadora

list_calculators, get_calculator_info y run_calculation no necesitan clave de API — se ejecutan localmente, de forma gratuita. solve_calculation es la excepción: se ejecuta en rftools.io mismo y necesita una clave, exactamente como run_calculation no necesita ninguna — consulta su propia sección a continuación.

list_calculators

Enumera las calculadoras disponibles, opcionalmente filtradas por categoría.

"List all RF calculators"
"What antenna calculators are available?"
"Show me power electronics calculators"

Parámetros:

  • category (opcional): rf, pcb, power, signal, antenna, general, motor, protocol, emc, thermal, sensor, unit-conversion, audio

get_calculator_info

Obtén información detallada sobre una calculadora — entradas con unidades/valores predeterminados, salidas y la fórmula utilizada.

"What inputs does the microstrip impedance calculator need?"
"Show me the buck converter calculator parameters"

Parámetros:

  • slug (obligatorio): Identificador de la calculadora (p. ej. "microstrip-impedance")

Cada entrada lleva su min/max declarado (los mismos límites que run_calculation's provenance.validRange verifica). Una entrada sin ninguno es ilimitada — solve_calculation necesita un range explícito para resolver una de esas.

run_calculation

Ejecuta una calculadora con entradas específicas. Devuelve resultados con unidades, un enlace a la versión interactiva en rftools.io y el provenance del resultado (fuente de fórmula, supuestos, entradas utilizadas, si están dentro del rango declarado de la calculadora, versión del motor y tiempo). Una entrada omitida toma su valor predeterminado. Se ejecuta localmente — instantáneo, sin consumo de cuota.

"Calculate microstrip impedance for a 0.3mm trace on 0.2mm Rogers RO4003C"
"What's the link budget for a 2.4 GHz link over 500m?"
"Size a buck converter: 12V in, 3.3V out, 2A"

Parámetros:

  • slug (obligatorio): Identificador de la calculadora
  • inputs (obligatorio): Objeto con valores de entrada, p. ej. {"traceWidth": 0.3, "substrateHeight": 0.2}

solve_calculation — necesita una clave de API, gasta una llamada medida

Encuentra el valor de una entrada de calculadora que hace que una salida sea igual a un objetivo, en lugar de llamar a run_calculation en un bucle para buscarlo tú mismo. La búsqueda se ejecuta del lado del servidor en las propias calculadoras de rftools.io — el mismo motor que usa /calculate — por lo que necesita una clave de API (RFTOOLS_API_KEY), la misma que /calculate requiere, y se mide como cualquier otra llamada de API. reached: false significa que ningún valor dentro del rango de búsqueda alcanza el objetivo; el valor devuelto es entonces el más cercano que encontró la búsqueda, no una suposición.

"What trace width gives 50 Ω on 1.6mm FR4 with 1oz copper?"
"Find the gap that gives 90 Ω differential impedance for a 0.15mm trace"

Parámetros:

  • slug (obligatorio): Identificador de la calculadora
  • inputs (obligatorio): Las otras entradas de la calculadora, claveadas por nombre — sin incluir la propia entrada de solveFor
  • solveFor (obligatorio): Qué entrada numérica declarada resolver, p. ej. "traceWidth"
  • target (obligatorio): {"output": "impedance", "value": 50} — la clave de salida y el valor que debe alcanzar
  • grid (opcional): Redondea la solución al múltiplo más cercano de esta cuadrícula de fabricación, p. ej. 0.001 (mm)
  • range (opcional): [low, high], estrechando la búsqueda dentro del límite declarado de solveFor. Obligatorio cuando get_calculator_info muestra sin min/max para esa entrada.

La respuesta lleva value (en la cuadrícula, si se dio una), unrounded, reached, evaluations, el propio warnings de la resolución (p. ej. otro cruce existe en el rango), y result — exactamente lo que run_calculation//calculate devuelven para la calculadora en ese valor, procedencia incluida.


Herramientas de simulación — sin clave de API requerida a menos que el trabajo acepte un archivo

Trabajos del lado del servidor que son demasiado pesados para el cálculo en el navegador. Cada uno de los 13 tipos de trabajo es su propia herramienta, simulate_<name>, cuyo esquema de entrada se genera a partir del contrato de parámetros de ese tipo de trabajo: cada parámetro tipado, con su unidad, rango, opciones, valor predeterminado y cualquier límite del carril gratuito indicado. Una llamada se verifica contra ese contrato antes de enviar cualquier cosa, por lo que un nombre de parámetro incorrecto devuelve el nombre de la clave y las claves que se aceptan, y no gasta cuota.

Cuota: Gratis: 5 ejecuciones/mes · Pro: 100/mes · Nivel API: 10,000/mes. Sin una clave, un trabajo que no acepta archivos aún se ejecuta, en el carril gratuito, y la respuesta indica qué límites se aplicaron. Un trabajo que acepta un archivo necesita una clave — consulta Archivos a continuación.

Espera: una llamada a simulate_* envía y espera hasta waitSeconds (predeterminado 90, máximo 600), consultando inmediatamente — un modo que termina en un segundo no cuesta demora — e informando progreso a los hosts que lo soliciten. Al alcanzar el límite, devuelve el id del trabajo, estado, progreso y etapa; el trabajo sigue ejecutándose, y get_simulation_status y get_simulation_result lo retoman. waitSeconds: 0 envía y devuelve de inmediato.

Resultados: el predeterminado es un resumen — el summary del resultado, warnings y provenance, cada valor escalar y enlaces — con series de más de 50 puntos descritas por su longitud y extremos en lugar de enumerarse, por lo que un resultado de 100 kB llega como aproximadamente 6 kB. Pasa full: true para la carga completa. El enlace al resultado almacenado (resultUrl) está prefirmado y dura 15 minutos; solicita el estado nuevamente para generar uno nuevo.

Envíos repetidos: un envío idéntico dentro de 60 segundos devuelve el trabajo ya en ejecución en lugar de iniciar un segundo.

Archivos: un tipo de trabajo con entrada de archivo toma inputFiles: [{name, content}] (texto en línea, hasta 5 MB en una llamada) o inputPaths: ["/path/to/file.s2p"] (leído desde esta máquina). El servidor obtiene la carga prefirmada, envía el archivo y envía el trabajo con la clave resultante.

Subir un archivo necesita una clave de API; establece RFTOOLS_API_KEY. El servicio rechaza una carga anónima, por lo que este servidor la rechaza primero — localmente, antes de que se lea el archivo y antes de que se haga cualquier solicitud — y dice qué variable establecer en lugar de devolver un 401 simple. El objeto cargado se registra contra la cuenta de la clave, y solo esa cuenta puede enviarlo.

Los 13 tipos de trabajo

HerramientajobTypeQué haceArchivosPresupuesto de tiempoSolo de pago / límites de carril libre
simulate_antenna_simantenna_simSimulador de antena de hilo (NEC-2)—1200 ssolveMode: optimize
simulate_emi_radiatedemi_radiatedEstimador de emisiones radiadas EMI—240 s—
simulate_eye_diagrameye_diagramDiagrama de ojo a partir de parámetros S1 × .s2p .s4p120 s—
simulate_fdtd_sparamfdtd_sparamSimulador de línea de transmisión FDTD—32400 ssolveMode: normal, fine
simulate_filter_monte_carlofilter_monte_carloAnálisis Monte Carlo de filtros RF—120 smonteCarloIterations ≤ 500
simulate_impedance_matchingimpedance_matchSintetizador de adaptación de impedancia de banda ancha0–2 × .s2p120 s—
simulate_magnetics_optimizermagnetics_optimizerOptimizador de diseño de magnéticos y transformadores—360 s—
simulate_pdn_impedancepdn_impedanceAnalizador de impedancia PDN y optimizador de condensadores de desacoplo—360 s—
simulate_radar_detectionradar_detectionMonte Carlo de rendimiento de detección por radar—300 s—
simulate_rf_cascaderf_cascadeAnalizador de presupuesto de cascada RF0–12 × .s2p180 s—
simulate_sat_link_budgetsat_link_budgetPresupuesto de enlace satelital y terrestre—240 s—
simulate_smps_control_loopsmps_control_loopAnalizador de estabilidad del bucle de control SMPS—300 s—
simulate_sparam_pipelinesparam_pipelineCanalización de análisis de parámetros S1–4 × .s1p–.s4p120 s—

El presupuesto de tiempo es el límite del carril, no una estimación: la mayoría de los trabajos terminan en 15–120 segundos, y la espera en la cola puede añadir más.

list_simulation_tools

Cada tipo de trabajo con su nombre de herramienta, nombres de parámetros, reglas de archivos, presupuesto de tiempo y límites de carril libre — todo leído del mismo contrato del que se generan las herramientas.

submit_simulation

Envía por tipo de trabajo y devuelve de inmediato con el id del trabajo, la posición en la cola y el presupuesto de tiempo. Toma jobType, params y inputFiles / inputPaths para tipos de trabajo con entrada de archivos — que necesitan una clave API; establece RFTOOLS_API_KEY.

get_simulation_status

Progreso, etapa, posición en la cola, horas de inicio y fin para un id de trabajo.

get_simulation_result

El resultado final para un id de trabajo, resumido por defecto, completo con full: true.

run_simulation

La forma de compatibilidad de una llamada simulate_*: jobType, params, archivos opcionales (que necesitan una clave, como arriba), waitSeconds (por defecto 90, máximo 600) y full. Prefiere la herramienta tipada simulate_* para el trabajo que deseas — es la que un agente puede leer su esquema.

"Analyse the PDN of a 100 × 80 mm four-layer board, port at the IC, target 10 mΩ"
"Run an eye diagram on this .s4p at 10 Gbps with PRBS-15"
"Synthesize a broadband matching network from 50Ω to 200Ω between 800–1200 MHz"
"Simulate a 3-element Yagi at 144 MHz and give me the pattern"
"Estimate radiated emissions from a 10 cm trace carrying 50 mA at 100 MHz"

Cuando algo sale mal

Los fallos se clasifican por estado HTTP y por el propio tipo de error del servicio, nunca por coincidencia de texto: una clave inválida, una asignación agotada, un límite de tasa con su tiempo de reintento, un parámetro rechazado (con el detalle propio del servicio, sin cambios), un trabajo demasiado grande para su carril, un modo que el nivel no incluye, un tiempo de espera y una falla del servicio se leen de manera diferente. El sondeo se detiene de inmediato en un 4xx, y después de cinco fallos consecutivos que no lo sean.

Conversaciones de ejemplo

Diseño de PCB

Tú: Necesito una microstrip de 50 ohmios en FR4 de 1.6mm con cobre de 1oz. ¿Qué ancho de pista?

IA: Llama a run_calculation con microstrip-impedance → Un ancho de pista de ~2.9mm te da 50.2 Ω en FR4 de 1.6mm (εr=4.2). Ver en rftools.io →

Presupuesto de enlace RF

Tú: ¿Funcionará mi enlace LoRa de 100mW a 915 MHz a 2km con antenas de 3dBi?

IA: Llama a run_calculation con rf-link-budget → Potencia recibida: -72 dBm. Con sensibilidad LoRa a -137 dBm, tienes 65 dB de margen de enlace. Fácilmente viable. Ver en rftools.io →

Electrónica de potencia

Tú: Diseña un convertidor reductor: entrada de 24V, salida de 5V, carga de 3A, conmutación a 500kHz.

IA: Llama a run_calculation con buck-converter → Ciclo de trabajo: 20.8%, inductor: 17.4 μH, condensador de salida: 22 μF. Ver en rftools.io →

Las 241 calculadoras

CategoríaCantidadEjemplos
RF y microondas29Impedancia de microstrip, guía de onda coplanar (CPW/GCPW), VSWR/pérdida de retorno, carta de Smith, presupuesto de enlace, cascada de figura de ruido, alcance de radar, pérdida de trayectoria en espacio libre, espurios de mezclador
Diseño de PCB36Ancho de pista para corriente, impedancia controlada, pares de stripline acoplados por el borde (simétricos, desplazados, embebidos), vía diferencial con pérdida de stub, porcentaje de profundidad de piel, ancho de conductor a pad, ancho de salida BGA, diagonal de apertura, diámetro máximo de pad, constante dieléctrica efectiva, respuesta escalón de vía, capacidad de corriente de microvía, stripline asimétrico (desplazado), stripline dual, par acoplado broadside, par diferencial, calculadora de vías, diafonía, longitud crítica de pista, corriente de fusión, condensador de desacoplo, padstack/anillo anular, pad de tierra BGA, espaciado de conductores, inductor espiral planar, resistor embebido, caída de voltaje en vía
Electrónica de potencia21Convertidor reductor, convertidor elevador, flyback, térmico LDO, duración de batería, disipación MOSFET, dimensionamiento de paneles solares
Procesamiento de señales14Diseñador de filtros, SNR ADC, resolución de bin FFT, filtro de bucle PLL, BER/SNR, ruido de Johnson, tiempo de subida a ancho de banda
Diseño de antenas8Dipolo, parche, Yagi-Uda, bocina, plato parabólico, bucle, EIRP, ancho de haz
Electrónica general24Ley de Ohm, tolerancia PPM de cristal, ganancia de op-amp, temporizador 555, polarización BJT, punto de operación MOSFET, disparador Schmitt, capacitancia de carga de cristal
Control de motores22Velocidad de motor DC, paso a paso, BLDC, servo, sintonización PID, relación de engranaje, selección de puente H, convertidor de par
Comunicaciones11Velocidad de baudios UART, pull-up I2C, temporización SPI, bus CAN, terminación USB, RS-485, Ethernet, Modbus, bus LIN
EMC/EMI16Efectividad de blindaje, filtro EMI, perla de ferrita, diodo ESD/TVS, estimación de emisión radiada, choque de modo común
Térmico6Calculadora de disipador, temperatura de unión, matriz de vías térmicas, temperatura de pista PCB
Interfaz de sensores17Termistor NTC, RTD, termopar, puente de Wheatstone, celda de carga, fotodiodo, transmisor de bucle 4-20 mA
Conversión de unidades19dBm↔Watts, rectangular↔polar, frecuencia↔longitud de onda, longitud (mm/mil/pulgada), cable AWG, código de condensador, temperatura, inductancia, velocidad de datos
Electrónica de audio18Crossover de altavoz, modos de sala, potencia de auriculares, eficiencia clase-D, transformador de audio, Q de ecualizador

Por qué usar esto en lugar de pedirle a la IA que calcule

Los LLM no son fiables en aritmética. Pueden:

  • Usar fórmulas simplificadas que omiten correcciones (por ejemplo, grosor de cobre en microstrip)
  • Confundir unidades (mils vs mm, dBm vs dBW)
  • Acumular errores de redondeo
  • Presentar respuestas incorrectas con confianza

Este servidor MCP llama al mismo código de calculadora validado que se ejecuta en rftools.io. Hammerstad-Jensen para microstrip, Friis para pérdida de trayectoria, conversiones exactas dB/lineales — fórmulas de ingeniería reales, no aproximaciones de LLM.

Cómo funciona

Las calculadoras se agrupan como funciones TypeScript puras — sin llamadas API, sin latencia de red, sin límites de tasa. La IA llama a la función directamente y obtiene resultados instantáneos.

AI Agent ←stdio→ rftools-mcp ←direct call→ calculator function

solve_calculation es la única herramienta de calculadora que no es una llamada directa: ejecuta la búsqueda en las calculadoras propias de rftools.io, por lo que necesita una clave API y se mide como una llamada /calculate normal — sin cola, sin sondeo, una solicitud y una respuesta.

AI Agent ←stdio→ rftools-mcp ←HTTPS (key required)→ POST /calculate/solve

Las herramientas de simulación se ejecutan en el servidor de la infraestructura de rftools.io (AWS Lambda + SQS + trabajadores EC2/Fargate). Sus esquemas de entrada se generan en tiempo de compilación a partir del mismo contrato de parámetros con el que se construyen los formularios del sitio web, por lo que un cambio de contrato llega al agente en la próxima versión en lugar de a través de una cadena editada a mano. El servidor valida la llamada, sube cualquier archivo, envía el trabajo, lo sondea dentro del límite de espera mientras informa el progreso, y devuelve un resultado resumido con un enlace a la carga completa.

AI Agent ←stdio→ rftools-mcp ←HTTPS (key optional)→ rftools.io API → SQS → worker
                                ←poll /v1/jobs/{id}←
                                ←result JSON from a 15-minute presigned link←

Documentación legible por máquina

Enlaces

Licencia

MIT