rftools

203 calculadoras de RF e eletrônica + 13 ferramentas de simulação no servidor para agentes de IA.

Documentação

rftools-mcp

npm version License: MIT MCP

Servidor MCP para rftools.io — 241 calculadoras de RF e eletrônica + 13 ferramentas de simulação server-side para agentes de IA.

Dê a Claude, Cursor ou qualquer assistente de IA compatível com MCP acesso a calculadoras de engenharia validadas e simulações server-side pesadas. Impedância de microstrip, orçamentos de link, projeto de filtros, dimensionamento de conversores, padrões de antena e mais de 200 calculadoras — além de simulação de antena NEC2, FDTD, Monte Carlo, análise de SMPS, estimativa de EMI e muito mais, tudo chamável como ferramentas MCP.

Início Rápido

As calculadoras funcionam sem chave de API, e o mesmo vale para as ferramentas de simulação: sem uma, um job roda na fila gratuita. Uma chave aumenta os limites — cadastre-se em rftools.io e gere uma pelo seu painel. A única coisa que exige chave é um arquivo: enviar um arquivo precisa de chave de API; defina RFTOOLS_API_KEY.

Configuração

Sem chave de API

Todas as 241 calculadoras rodam localmente sem necessidade de cadastro, e toda ferramenta de simulação que não recebe arquivo ainda envia — na fila gratuita, com os limites gratuitos e os limites de parâmetros da fila gratuita indicados na resposta.

Um tipo de job que recebe arquivo é a exceção. Enviar um arquivo precisa de chave de API; defina RFTOOLS_API_KEY. Sem uma, uma chamada com inputFiles ou inputPaths é recusada aqui, com essa frase, antes que o arquivo seja lido e antes que qualquer requisição saia desta máquina.

Com chave de API

Cadastre-se em rftools.io e gere uma chave de API pelo seu painel. Contas gratuitas incluem 5 execuções de simulação/mês. Pro: 100/mês. Nível API: 10.000/mês. Uma chave paga também desbloqueia os modos que a fila gratuita não pode rodar: o otimizador de antena e as malhas FDTD normal e fine.

Claude Desktop

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

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

Omita o bloco env para usar apenas as calculadoras. Reinicie o Claude Desktop após salvar.

Claude Code

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

Para adicionar sua chave de API:

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

Cursor

Adicione a .cursor/mcp.json no seu projeto:

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

Windsurf

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

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

Ferramentas

O que mudou na 2.2.0

  • Nova ferramenta: solve_calculation. Encontra o valor de uma entrada da calculadora que faz uma saída igualar um alvo — a largura da trilha para 50 Ω, o gap para 90 Ω — em vez de um agente adivinhar valores e chamar run_calculation em um loop. Diferente de toda outra ferramenta de calculadora, esta executa a busca server-side no rftools.io e exige chave de API e gasta uma chamada medida — veja solve_calculation abaixo.

O que mudou na 2.1.0

  • Resultados de calculadora carregam proveniência. run_calculation retorna um objeto provenance ao lado dos valores: o método (calculator:<slug>), o motor (mcp@<version>), a fonte da fórmula publicada, as premissas declaradas da calculadora, as entradas usadas no cálculo, se elas estão dentro do intervalo declarado para a calculadora (e, para um modelo ajustado, seu intervalo validado e erro no pior caso), quando foi calculado e quanto tempo levou. É o mesmo objeto que a API do rftools.io retorna.
  • Uma entrada omitida usa seu padrão, como no site e na API; antes ela chegava à calculadora como indefinida. Uma entrada que a calculadora não lê é nomeada em warnings, e o mesmo vale para uma entrada fora do intervalo declarado — o valor ainda é calculado.
  • O provenance de um resultado de simulação é retornado inteiro no resumo padrão. Séries ainda são descritas em vez de listadas.

O que mudou na 2.0.0

  • Uma ferramenta tipada por tipo de job. Cada um dos 13 tipos de job de simulação agora tem sua própria ferramenta simulate_<jobType> (ex.: simulate_impedance_matching) com um esquema de entrada real — nome, tipo, unidade, intervalo, opções e padrão por parâmetro — gerado a partir do contrato de parâmetros do tipo de job. run_simulation ainda existe como forma de compatibilidade que recebe jobType e params, mas prefira a ferramenta tipada: é dela que um agente consegue ler o esquema.
  • Uploads passam por este servidor, inline (inputFiles: [{name, content}]) ou por caminho nesta máquina (inputPaths); um tipo de job com entrada de arquivo precisa de RFTOOLS_API_KEY — veja Arquivos abaixo.
  • submit_simulation / get_simulation_status / get_simulation_result são os primitivos fire-and-forget por baixo de run_simulation e das ferramentas tipadas, para quem quer enviar, fazer outro trabalho e consultar depois.
  • run_simulation agora é limitado por waitSeconds (padrão 90, máximo 600): ele envia, consulta e, se o job não terminou até o limite, retorna o id do job, status, progresso e etapa em vez de bloquear mais — o job continua rodando, e uma chamada posterior de get_simulation_status / get_simulation_result o retoma.
  • Resultados são resumidos por padrão — summary, warnings, provenance, todo valor escalar, e séries longas descritas por comprimento e extremos em vez de listadas por completo. Passe full: true para o payload inteiro.
  • Nenhum padrão é enviado. Uma chamada simulate_* envia apenas os parâmetros que você nomeia; ela não preenche mais os padrões do contrato sozinha. Como a semente aleatória de um tipo de job de amostragem é derivada do corpo da requisição, omitir um parâmetro e enviá-lo no padrão são a mesma requisição para o solver, mas não o mesmo corpo, e podem gerar uma amostra diferente. Defina randomSeed para fixar uma execução exatamente.
  • Erros tipados. Falhas são classificadas pelo errorKind do serviço, não por correspondência de texto de mensagem — veja Quando algo dá errado abaixo.

Quebras:

  • list_simulation_tools não carrega mais uma frase escrita à mão descrevendo os parâmetros de cada tipo de job; ele os lista como um array simples de nomes (params: string[]). Leia o esquema de entrada da própria ferramenta simulate_* para tipo, unidade, intervalo, opções e padrão de cada parâmetro.
  • Chaves de parâmetro desconhecidas agora são recusadas localmente, antes de qualquer requisição sair desta máquina — o mesmo contrato que o serviço valida, verificado aqui primeiro.

Ferramentas de calculadora

list_calculators, get_calculator_info e run_calculation não precisam de chave de API — elas rodam localmente, de graça. solve_calculation é a exceção: ela roda no próprio rftools.io e precisa de chave, exatamente como run_calculation não precisa de nenhuma — veja a seção própria dela abaixo.

list_calculators

Lista calculadoras disponíveis, opcionalmente filtradas por categoria.

"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ém informações detalhadas sobre uma calculadora — entradas com unidades/padrões, saídas e a fórmula usada.

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

Parâmetros:

  • slug (obrigatório): Identificador da calculadora (ex.: "microstrip-impedance")

Cada entrada carrega seu min/max declarado (os mesmos limites que o run_calculation de provenance.validRange verifica). Uma entrada sem nenhum dos dois é ilimitada — solve_calculation precisa de um range explícito para resolver uma dessas.

run_calculation

Executa uma calculadora com entradas específicas. Retorna resultados com unidades, um link para a versão interativa no rftools.io e o provenance do resultado (fonte da fórmula, premissas, entradas usadas, se estão dentro do intervalo declarado da calculadora, versão do motor e tempo). Uma entrada omitida usa seu padrão. Roda localmente — instantâneo, sem consumir cota.

"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 (obrigatório): Identificador da calculadora
  • inputs (obrigatório): Objeto com valores de entrada, ex.: {"traceWidth": 0.3, "substrateHeight": 0.2}

solve_calculation — exige chave de API, gasta uma chamada medida

Encontra o valor de uma entrada da calculadora que faz uma saída igualar um alvo, em vez de chamar run_calculation em um loop para buscar você mesmo. A busca roda server-side nas próprias calculadoras do rftools.io — o mesmo motor que /calculate usa — então exige chave de API (RFTOOLS_API_KEY), a mesma que o próprio /calculate exige, e é medida como qualquer outra chamada de API. reached: false significa que nenhum valor dentro do intervalo de busca alcança o alvo; o valor retornado então é o mais próximo que a busca encontrou, não um palpite.

"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 (obrigatório): Identificador da calculadora
  • inputs (obrigatório): As outras entradas da calculadora, por nome — sem incluir a entrada do próprio solveFor
  • solveFor (obrigatório): Qual entrada numérica declarada resolver, ex.: "traceWidth"
  • target (obrigatório): {"output": "impedance", "value": 50} — a chave da saída e o valor que ela deve alcançar
  • grid (opcional): Arredonda a solução para o múltiplo mais próximo desta grade de fabricação, ex.: 0.001 (mm)
  • range (opcional): [low, high], estreitando a busca dentro do limite declarado de solveFor. Obrigatório quando get_calculator_info mostra nenhum min/max para essa entrada.

A resposta carrega value (na grade, se uma foi dada), unrounded, reached, evaluations, o próprio warnings da resolução (ex.: outra interseção existe no intervalo) e result — exatamente o que run_calculation//calculate retornam para a calculadora naquele valor, proveniência incluída.


Ferramentas de simulação — sem chave de API, a menos que o job receba arquivo

Jobs server-side pesados demais para computação no navegador. Cada um dos 13 tipos de job é sua própria ferramenta, simulate_<name>, cujo esquema de entrada é gerado a partir do contrato de parâmetros daquele tipo de job: cada parâmetro tipado, com unidade, intervalo, opções, padrão e qualquer limite da fila gratuita declarado. Uma chamada é verificada contra esse contrato antes que qualquer coisa seja enviada, então um nome de parâmetro errado retorna nomeando a chave e as chaves aceitas, e não gasta cota.

Cota: Grátis: 5 execuções/mês · Pro: 100/mês · Nível API: 10.000/mês. Sem chave, um job que não recebe arquivo ainda roda, na fila gratuita, e a resposta diz quais limites se aplicaram. Um job que recebe arquivo precisa de chave — veja Arquivos abaixo.

Espera: uma chamada simulate_* envia e espera até waitSeconds (padrão 90, máximo 600), consultando imediatamente — um modo que termina em um segundo não custa atraso — e reportando progresso para hosts que pedirem. Ao atingir o limite, retorna o id do job, status, progresso e etapa; o job continua rodando, e get_simulation_status e get_simulation_result o retomam. waitSeconds: 0 envia e retorna imediatamente.

Resultados: o padrão é um resumo — o summary do resultado, warnings e provenance, todo valor escalar e links — com séries maiores que 50 pontos descritas por comprimento e extremos em vez de listadas, então um resultado de 100 kB chega com cerca de 6 kB. Passe full: true para o payload inteiro. O link para o resultado armazenado (resultUrl) é pré-assinado e dura 15 minutos; peça o status novamente para gerar um novo.

Envios repetidos: um envio idêntico dentro de 60 segundos retorna o job já em execução em vez de iniciar um segundo.

Arquivos: um tipo de job com entrada de arquivo aceita inputFiles: [{name, content}] (texto inline, até 5 MB em uma chamada) ou inputPaths: ["/path/to/file.s2p"] (lido desta máquina). O servidor obtém o upload pré-assinado, envia o arquivo e submete o job com a chave resultante.

Enviar um arquivo precisa de chave de API; defina RFTOOLS_API_KEY. O serviço recusa upload anônimo, então este servidor recusa primeiro — localmente, antes que o arquivo seja lido e antes que qualquer requisição seja feita — e diz qual variável definir em vez de repassar um 401 puro. O objeto enviado é registrado contra a conta da chave, e apenas essa conta pode submetê-lo.

Os 13 tipos de job

FerramentajobTypeO que fazArquivosOrçamento de tempoSomente pago / limite de faixa gratuita
simulate_antenna_simantenna_simSimulador de Antena de Fio (NEC-2)—1200 ssolveMode: optimize
simulate_emi_radiatedemi_radiatedEstimador de Emissões Radiadas EMI—240 s—
simulate_eye_diagrameye_diagramDiagrama de Olho a partir de Parâmetros S1 × .s2p .s4p120 s—
simulate_fdtd_sparamfdtd_sparamSimulador de Linha de Transmissão FDTD—32400 ssolveMode: normal, fine
simulate_filter_monte_carlofilter_monte_carloAnálise de Monte Carlo de Filtro RF—120 smonteCarloIterations ≤ 500
simulate_impedance_matchingimpedance_matchSintetizador de Casamento de Impedância de Banda Larga0–2 × .s2p120 s—
simulate_magnetics_optimizermagnetics_optimizerOtimizador de Projeto de Magnéticos e Transformadores—360 s—
simulate_pdn_impedancepdn_impedanceAnalisador de Impedância PDN e Otimizador de Capacitor de Desacoplamento—360 s—
simulate_radar_detectionradar_detectionMonte Carlo de Desempenho de Detecção de Radar—300 s—
simulate_rf_cascaderf_cascadeAnalisador de Orçamento de Cascata RF0–12 × .s2p180 s—
simulate_sat_link_budgetsat_link_budgetOrçamento de Enlace de Satélite e Terrestre—240 s—
simulate_smps_control_loopsmps_control_loopAnalisador de Estabilidade de Malha de Controle SMPS—300 s—
simulate_sparam_pipelinesparam_pipelinePipeline de Análise de Parâmetros S1–4 × .s1p–.s4p120 s—

O orçamento de tempo é o limite da faixa, não uma estimativa: a maioria dos trabalhos termina em 15–120 segundos, e a espera na fila pode adicionar mais.

list_simulation_tools

Cada tipo de trabalho com seu nome de ferramenta, nomes de parâmetros, regras de arquivo, orçamento de tempo e limites de faixa gratuita — tudo lido do mesmo contrato do qual as ferramentas são geradas.

submit_simulation

Envie por tipo de trabalho e retorne imediatamente com o ID do trabalho, posição na fila e orçamento de tempo. Aceita jobType, params e inputFiles / inputPaths para tipos de trabalho com entrada de arquivo — que precisam de uma chave de API; defina RFTOOLS_API_KEY.

get_simulation_status

Progresso, etapa, posição na fila, horários de início e término para um ID de trabalho.

get_simulation_result

O resultado final para um ID de trabalho, resumido por padrão, completo com full: true.

run_simulation

A forma de compatibilidade de uma chamada simulate_*: jobType, params, arquivos opcionais (que precisam de uma chave, como acima), waitSeconds (padrão 90, máximo 600) e full. Prefira a ferramenta tipada simulate_* para o trabalho desejado — é aquela cujo esquema um agente pode ler.

"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"

Quando algo dá errado

As falhas são classificadas pelo status HTTP e pelo próprio tipo de erro do serviço, nunca pela correspondência de texto: uma chave inválida, uma cota gasta, um limite de taxa com seu tempo de nova tentativa, um parâmetro recusado (com o detalhe do próprio serviço, inalterado), um trabalho grande demais para sua faixa, um modo que o nível não oferece, um tempo limite e uma falha de serviço — cada um é lido de forma diferente. A sondagem para imediatamente em um 4xx e após cinco falhas consecutivas que não sejam.

Exemplos de Conversas

Projeto de PCB

Você: Preciso de uma microstrip de 50 ohms em FR4 de 1,6 mm com cobre de 1 oz. Qual largura de trilha?

IA: Chama run_calculation com microstrip-impedance → Uma largura de trilha de ~2,9 mm dá 50,2 Ω em FR4 de 1,6 mm (εr=4,2). Ver em rftools.io →

Orçamento de Enlace RF

Você: Meu enlace LoRa de 100 mW a 915 MHz funcionará a 2 km com antenas de 3 dBi?

IA: Chama run_calculation com rf-link-budget → Potência recebida: -72 dBm. Com sensibilidade LoRa em -137 dBm, você tem 65 dB de margem de enlace. Facilmente viável. Ver em rftools.io →

Eletrônica de Potência

Você: Projete um conversor buck: entrada de 24 V, saída de 5 V, carga de 3 A, comutação de 500 kHz.

IA: Chama run_calculation com buck-converter → Ciclo de trabalho: 20,8%, indutor: 17,4 μH, capacitor de saída: 22 μF. Ver em rftools.io →

Todas as 241 Calculadoras

CategoriaContagemExemplos
RF & Micro-ondas29Impedância de microstrip, guia de onda coplanar (CPW/GCPW), VSWR/perda de retorno, carta de Smith, orçamento de enlace, cascata de figura de ruído, alcance de radar, perda de percurso em espaço livre, espúrios de misturador
Projeto de PCB36Largura de trilha para corrente, impedância controlada, pares de stripline acoplados pela borda (simétrico, deslocado, embutido), via diferencial com perda de stub, porcentagem de profundidade de pele, largura condutor-para-pad, largura de breakout BGA, diagonal de abertura, diâmetro máximo de pad, constante dielétrica efetiva, resposta de degrau de via, capacidade de corrente de microvia, stripline assimétrico (deslocado), stripline duplo, par acoplado lado a lado, par diferencial, calculadora de via, diafonia, comprimento crítico de trilha, corrente de fusão, capacitor de desacoplamento, padstack/anel anular, pad de terra BGA, espaçamento de condutor, indutor espiral planar, resistor embutido, queda de tensão de via
Eletrônica de Potência21Conversor buck, conversor boost, flyback, térmico de LDO, vida útil de bateria, dissipação de MOSFET, dimensionamento de painel solar
Processamento de Sinais14Projetista de filtro, SNR de ADC, resolução de bin FFT, filtro de malha PLL, BER/SNR, ruído de Johnson, tempo de subida para largura de banda
Projeto de Antena8Dipolo, patch, Yagi-Uda, corneta, prato parabólico, loop, EIRP, largura de feixe
Eletrônica Geral24Lei de Ohm, tolerância PPM de cristal, ganho de op-amp, temporizador 555, polarização BJT, ponto de operação de MOSFET, trigger de Schmitt, capacitância de carga de cristal
Controle de Motores22Velocidade de motor CC, stepper, BLDC, servo, ajuste PID, relação de engrenagem, seleção de ponte H, conversor de torque
Comunicações11Taxa de baud UART, pull-up I2C, temporização SPI, barramento CAN, terminação USB, RS-485, Ethernet, Modbus, barramento LIN
EMC/EMI16Eficácia de blindagem, filtro EMI, bead de ferrite, diodo ESD/TVS, estimativa de emissão radiada, indutor de modo comum
Térmico6Calculadora de dissipador, temperatura de junção, matriz de vias térmicas, temperatura de trilha de PCB
Interface de Sensores17Termistor NTC, RTD, termopar, ponte de Wheatstone, célula de carga, fotodiodo, transmissor de loop 4-20 mA
Conversão de Unidades19dBm↔Watts, retangular↔polar, frequência↔comprimento de onda, comprimento (mm/mil/polegada), fio AWG, código de capacitor, temperatura, indutância, taxa de dados
Eletrônica de Áudio18Crossover de alto-falante, modos de sala, potência de fone de ouvido, eficiência classe-D, transformador de áudio, Q de equalizador

Por Que Usar Isso em Vez de Pedir à IA para Calcular?

LLMs não são confiáveis em aritmética. Elas podem:

  • Usar fórmulas simplificadas que omitem correções (ex.: espessura de cobre em microstrip)
  • Confundir unidades (mils vs mm, dBm vs dBW)
  • Acumular erros de arredondamento
  • Apresentar respostas erradas com confiança

Este servidor MCP chama o mesmo código de calculadora validado que roda em rftools.io. Hammerstad-Jensen para microstrip, Friis para perda de percurso, conversões exatas dB/linear — fórmulas reais de engenharia, não aproximações de LLM.

Como Funciona

Calculadoras são agrupadas como funções TypeScript puras — sem chamadas de API, sem latência de rede, sem limites de taxa. A IA chama a função diretamente e obtém resultados instantâneos.

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

solve_calculation é a única ferramenta de calculadora que não é uma chamada direta: ela executa a busca nas próprias calculadoras do rftools.io, então precisa de uma chave de API e é medida como uma chamada /calculate comum — sem fila, sem sondagem, uma solicitação e uma resposta.

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

Ferramentas de simulação rodam no lado do servidor na infraestrutura do rftools.io (AWS Lambda + SQS + workers EC2/Fargate). Seus esquemas de entrada são gerados no momento da compilação a partir do mesmo contrato de parâmetros do qual os formulários do site são construídos, então uma mudança de contrato chega ao agente na próxima versão, em vez de por uma string editada manualmente. O servidor valida a chamada, envia quaisquer arquivos, submete o trabalho, faz a sondagem dentro do limite de espera enquanto relata o progresso e retorna um resultado resumido com um link para o payload completo.

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←

Documentação Legível por Máquina

Links

Licença

MIT