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
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 arun_calculationen 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 — consultasolve_calculationa continuación.
Qué cambió en 2.1.0
- Los resultados de las calculadoras llevan procedencia.
run_calculationdevuelve un objetoprovenancejunto 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
provenancede 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_simulationaún existe como forma de compatibilidad que tomajobTypeyparams, 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 necesitaRFTOOLS_API_KEY— consulta Archivos a continuación. submit_simulation/get_simulation_status/get_simulation_resultson los primitivos de disparar y olvidar debajo derun_simulationy las herramientas tipadas, para un llamador que quiera enviar, hacer otro trabajo y consultar más tarde.run_simulationahora está limitado porwaitSeconds(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 aget_simulation_status/get_simulation_resultlo 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. Pasafull: truepara 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. EstablecerandomSeedpara fijar una ejecución exactamente. - Errores tipados. Las fallas se clasifican por el
errorKinddel servicio, no por coincidencia de texto de mensaje — consulta Cuando algo sale mal a continuación.
Cambios importantes:
list_simulation_toolsya 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 herramientasimulate_*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 calculadorainputs(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 calculadorainputs(obligatorio): Las otras entradas de la calculadora, claveadas por nombre — sin incluir la propia entrada desolveForsolveFor(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 alcanzargrid(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 desolveFor. Obligatorio cuandoget_calculator_infomuestra sinmin/maxpara 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
| Herramienta | jobType | Qué hace | Archivos | Presupuesto de tiempo | Solo de pago / límites de carril libre |
|---|---|---|---|---|---|
simulate_antenna_sim | antenna_sim | Simulador de antena de hilo (NEC-2) | — | 1200 s | solveMode: optimize |
simulate_emi_radiated | emi_radiated | Estimador de emisiones radiadas EMI | — | 240 s | — |
simulate_eye_diagram | eye_diagram | Diagrama de ojo a partir de parámetros S | 1 × .s2p .s4p | 120 s | — |
simulate_fdtd_sparam | fdtd_sparam | Simulador de línea de transmisión FDTD | — | 32400 s | solveMode: normal, fine |
simulate_filter_monte_carlo | filter_monte_carlo | Análisis Monte Carlo de filtros RF | — | 120 s | monteCarloIterations ≤ 500 |
simulate_impedance_matching | impedance_match | Sintetizador de adaptación de impedancia de banda ancha | 0–2 × .s2p | 120 s | — |
simulate_magnetics_optimizer | magnetics_optimizer | Optimizador de diseño de magnéticos y transformadores | — | 360 s | — |
simulate_pdn_impedance | pdn_impedance | Analizador de impedancia PDN y optimizador de condensadores de desacoplo | — | 360 s | — |
simulate_radar_detection | radar_detection | Monte Carlo de rendimiento de detección por radar | — | 300 s | — |
simulate_rf_cascade | rf_cascade | Analizador de presupuesto de cascada RF | 0–12 × .s2p | 180 s | — |
simulate_sat_link_budget | sat_link_budget | Presupuesto de enlace satelital y terrestre | — | 240 s | — |
simulate_smps_control_loop | smps_control_loop | Analizador de estabilidad del bucle de control SMPS | — | 300 s | — |
simulate_sparam_pipeline | sparam_pipeline | Canalización de análisis de parámetros S | 1–4 × .s1p–.s4p | 120 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_calculationcon 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_calculationcon 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_calculationcon buck-converter → Ciclo de trabajo: 20.8%, inductor: 17.4 μH, condensador de salida: 22 μF. Ver en rftools.io →
Las 241 calculadoras
| Categoría | Cantidad | Ejemplos |
|---|---|---|
| RF y microondas | 29 | Impedancia 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 PCB | 36 | Ancho 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 potencia | 21 | Convertidor reductor, convertidor elevador, flyback, térmico LDO, duración de batería, disipación MOSFET, dimensionamiento de paneles solares |
| Procesamiento de señales | 14 | Diseñ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 antenas | 8 | Dipolo, parche, Yagi-Uda, bocina, plato parabólico, bucle, EIRP, ancho de haz |
| Electrónica general | 24 | Ley 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 motores | 22 | Velocidad de motor DC, paso a paso, BLDC, servo, sintonización PID, relación de engranaje, selección de puente H, convertidor de par |
| Comunicaciones | 11 | Velocidad de baudios UART, pull-up I2C, temporización SPI, bus CAN, terminación USB, RS-485, Ethernet, Modbus, bus LIN |
| EMC/EMI | 16 | Efectividad de blindaje, filtro EMI, perla de ferrita, diodo ESD/TVS, estimación de emisión radiada, choque de modo común |
| Térmico | 6 | Calculadora de disipador, temperatura de unión, matriz de vías térmicas, temperatura de pista PCB |
| Interfaz de sensores | 17 | Termistor NTC, RTD, termopar, puente de Wheatstone, celda de carga, fotodiodo, transmisor de bucle 4-20 mA |
| Conversión de unidades | 19 | dBm↔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 audio | 18 | Crossover 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
- rftools.io/llms.txt — Resumen con información de API y configuración MCP
- rftools.io/llms-full.txt — Listado completo de las 241 calculadoras con entradas, salidas, unidades y URLs
Enlaces
- Sitio web: rftools.io
- npm: npmjs.com/package/rftools-mcp
- Blog: rftools.io/blog
- Anuncio: rftools.io Ahora habla MCP
Licencia
MIT