rfautoBLOCK
RF/microwave CAD automation + LLM orchestration: multi-solver tuning loop (HFSS/ADS/openEMS/Palace), calibration-anchored surrogate optimization, 71 EM templates, 254 CLI commands, 149 MCP tools, deterministic-kernel physics. GPL-3.0
Overview
From the repository's own README, as read at the audited commit. Badges and raw HTML are left out.
[]() []() []() []()
English | 简体中文
rfauto is an automation framework for RF/microwave design and simulation. Describe a device, get a first-cut geometry from physics formulas, simulate it with whichever solver you have, check the result for numerical artifacts, and let an optimizer tune the dimensions — with AI assistants allowed to drive the whole pipeline through MCP, under one hard rule:
Every physical number (frequency, loss, geometry) is produced by a deterministic kernel or solver — never by the LLM.
It drives 16 EM/EDA engines behind one interface, ships 71 parameterized device templates with built-in physics checks, and exposes 258 CLI commands and 152 MCP tools (+7 resources) — kept honest by 22300+ unit tests that run without any commercial license.
CALCULATOR_REGISTRY 100 (with experimental 101) · TEMPLATE_META 71 · EXPECTED_TEMPLATES 71 · ANCHORS 60 · CLI commands 258 (leaves) · (152 MCP tools + 7 resources)
Contents · Why · What it does · Trust layer · Quick start · The Web UI · Engines · Docs · Roadmap · Contributing
Why
RF simulation
f35e25c57afbOBSERVED · 2026-10-13Connect
Built from this server's own package name, version and transport as found in its source — not copied from anyone's documentation, so it cannot drift against a page we do not control. Replace the environment placeholders with a token scoped to the least it needs.
claude mcp add {{ cookiecutter.project_slug }} --env RFAUTO_C4_ARB_MAX_PASSES=${RFAUTO_C4_ARB_MAX_PASSES} --env RFAUTO_MAPES_G0_MAX_PASSES=${RFAUTO_MAPES_G0_MAX_PASSES} --env RFAUTO_MAPES_M_MAX_PASSES=${RFAUTO_MAPES_M_MAX_PASSES} -- uvx {{ cookiecutter.project_slug }}{
"mcpServers": {
"{{ cookiecutter.project_slug }}": {
"command": "uvx",
"args": [
"{{ cookiecutter.project_slug }}"
],
"env": {
"RFAUTO_C4_ARB_MAX_PASSES": "${RFAUTO_C4_ARB_MAX_PASSES}",
"RFAUTO_MAPES_G0_MAX_PASSES": "${RFAUTO_MAPES_G0_MAX_PASSES}",
"RFAUTO_MAPES_M_MAX_PASSES": "${RFAUTO_MAPES_M_MAX_PASSES}"
}
}
}
}Exposed tools (30)
19 read · 11 write · 0 destructive.
| Tool | Risk | Description |
|---|---|---|
adc_interleave_spurs | read | ADC 交错杂散表(adc 域):fs/fin/路数 → 失配杂散清单(折叠第一奈区)。 |
autotune_self_verify | read | 自验证环(agent 域):propose→verify→fix 闭环+里程碑分解+执行看板。 |
create_run | write | 提交仿真任务(jobs 域):配方+适配器 → 同步求解并返回 run_id。 |
create_run_async | write | 异步提交仿真任务(jobs 域):配方+适配器 → 立即返回 job_id。 |
dataset_annotate_ground_truth | read | ground truth 标注(datasets_ops 域):白名单源清点 → manifest 回写。 |
dataset_export_hf | read | HF 数据集导出(datasets_ops 域):数据集 → parquet 分片+数据卡目录。 |
dataset_set_visibility | write | 数据集可见性切换(datasets_ops 域):public/private → manifest 回写。 |
emc_cispr_band_params | read | CISPR 检波器参数表(emc 域):Band A/B/C/D → 16-1-1 Table 1 四参数。 |
emc_cispr_detect | read | CISPR 三检波器读数(emc 域):时域波形 → Peak/QP/Avg dBμV。 |
emc_cm_radiated_budget | read | CM 辐射预算(emc 域):浮地-机壳耦合电容 → I_CM → Ott 辐射场。 |
emc_ground_spacing_check | read | 接地间距判据(emc 域):间距/频率 → λ/20 等电位判据(Ott/Paul)。 |
export_report_pdf | write | PDF 报告导出(report_bench 域):run 指标 → 多页 PDF(WP4.7)。 |
jitter_budget_snr | read | 抖动预算 SNR(adc 域):RJ/DJ/BER → TJ 与等效 SNR(UI 域闭式)。 |
metasurface_coding_pattern | read | 编码超表面方向图(metasurface 域):码矩阵 → 远场摘要(2D DFT 权面)。 |
metasurface_quant_loss_db | read | 量化损失双报(metasurface 域):bits/阵规模 → 理论 sinc2+实测峰比(dB)。 |
multi_agent_run | write | 评审/调优/验证三角色端到端(LangGraph 式图 + MCP 工具层 + A2A,WP3.8)。 |
nfc_coil_evaluate | read | NFC 平面螺旋电感评估(nfc 域):几何 → Mohan 1999 电感闭式(H)。 |
nfc_coil_q | read | NFC 线圈 Q 评估(nfc 域):频率+线圈参数 → 有载/无载 Q(T 模型精确式)。 |
nfc_coil_synthesize | read | NFC 线圈综合(nfc 域):目标电感 → 外径二分反解(回代自洽 ≤1e-10)。 |
nfmeas_cut_view | read | .ffs 切面视图(nfmeas 域):单频块 → 固定 φ 取 θ 扫描(或反之)。 |
nfmeas_ffs_info | read | 审计 HFSS .ffs 远场文件头(nfmeas 域):路径 → 频率/三功率/轴序。 |
recommend_templates | read | 模板推荐(specs 域):f0/族/端口数/关键词 → filter+rank 推荐表。 |
rf_run_sampler | write | 验证采样内核(agent 域):params → metrics/valley(唯一产数环节)。 |
run_campaign | write | 战役闭环执行(specs 域):已落盘计划 → 逐阶段执行(VI-2 基座)。 |
run_sweep | write | 运行参数扫描(粗扫→精调,同步返回全量信封)。 |
sar_analytic_plane_wave | read | 平面波 SAR 闭式对照(sar 域):组织参数+深度 → 随深衰减谱(判据锚)。 |
save_campaign_plan | write | 战役计划落盘(specs 域):plan dict → <out_dir>/campaign.plan.json。 |
start_tune | write | 提交主优化任务(异步),立即返回 job_id。 |
t1 | read | d |
warm_start_optimize | write | warm-start 优化(report_bench 域):数据集历史样本 → 先验注入求解。 |
Trust audit
BLOCKgrade F · trust 31/100 Do not install this without reading the findings. The audit found something that could harm you or your machine.
| Layer | What it checks | Result |
|---|---|---|
| L0 | Provenance & inventory | PASS |
| L1 | Static analysis of the code | FAIL |
| L2 | Instruction surface (what it tells the agent) | FAIL |
| L3 | Class-specific surface | PASS |
| L4 | Behavioural (sandbox) | SKIPPED |
What the source does
- Filesystem
- declared (5 observation(s))
- Network
- declared (11 observation(s))
- Shell
- declared (11 observation(s))
- Dependencies
- pinned
- Secrets in source
- found
Findings (25)
model = pickle.load(f)
exec(compile(head, "c3_fullcurve_plan", "exec"), scope) # 几何段(FDTD.Run 之前)
exec(compile(text[:cut], "coax_f3_dryrender", "exec"), scope)
exec(compile(head, "df6a1_audit", "exec"), scope)
exec(compile(head, "qhalf_audit", "exec"), scope)
exec(compile(head, "sma_diag", "exec"), scope)
# PyAEDT Application Types & Special Modules Reference
# PyAEDT `generic` + `internal` Modules Reference
# PyAEDT Modeler Complete Reference
mod = __import__(module)
"_FF_DIR = __import__(\"os\").path.dirname(\n"
" __import__(\"os\").path.abspath(__file__))\n"
" with open(__import__(\"os\").path.join(_FF_DIR,\n"
" with open(__import__(\"os\").path.join(_FF_DIR,\n"
console.print(f" token: [cyan]{result['token']}[/cyan]")# url: http://127.0.0.1:8643/mcp
# 3.5395≈3.54 自洽)。锚=对 HJ 推导 εeff 乘恒定频率尺度修正
# 恒定、εr 物理含义不漂移;拒绝绝对覆盖(会把尺度修正换成硬编码绝对值)。
# DP-7 P2 公差单源:εr 制造容差(半宽,εr 同单位)。消费方:
# DP-7 P2 公差单源:εr 制造容差(半宽,εr 同单位)。核对状态=verified-web
- **Mohan 电流片方系数已核**(可达二级源 coil32.net/pcb-coil.html 逐位\n 读出,转引 Mohan/S.Hershenson/Boyd/Lee, IEEE\
assert "postgres://u:p@h/db" not in str(rows)
.coveragerc
.importlinter
.pre-commit-config.yaml
Gates applied: no_behavioural_pass.
f35e25c57afbfull audit observations/trust-audit/mcp-server/geer1895__rfauto.json · Report an issue / request a re-scanAudit history
Every audit this server has had. A grade with a past is a grade somebody is still checking.
| Date | Source | Verdict | Grade | Score | Change |
|---|---|---|---|---|---|
| 2026-10-13 | f35e25c57afb | BLOCK | F | 31 | first audit |
Questions
What is the rfauto MCP server?
RF/microwave CAD automation + LLM orchestration: multi-solver tuning loop (HFSS/ADS/openEMS/Palace), calibration-anchored surrogate optimization, 71 EM templates, 254 CLI commands, 149 MCP tools, deterministic-kernel physics. GPL-3.0
What tools does rfauto expose?
30 in total: 19 read-only, 11 that write, and 0 that can delete or overwrite. Every one is listed on this page with its risk.
Is rfauto safe to connect to an agent?
No — not without reading the findings first. The audit graded it F (31/100) and found 9 critical or high issues in the source. Each one is listed on this page with the file and line it is on.
What credentials does rfauto need?
It reads RFAUTO_C4_ARB_MAX_PASSES, RFAUTO_MAPES_G0_MAX_PASSES and RFAUTO_MAPES_M_MAX_PASSES from the environment. Give it a token scoped to the least it needs — an agent that can be talked into calling a tool can be talked into calling it with your credentials.
How does rfauto run?
It speaks stdio, so it runs as a local process your client starts. It is published on PyPI as {{ cookiecutter.project_slug }}.
How current is this page?
The grade is for one exact copy of the source (f35e25c57afb), read on 2026-10-13. The repository is watched and re-audited when it changes.