hfss-agent-native
HFSS MCP Server (native / 跨版本版)
放进 Claude Code(或任何 MCP 客户端)后,你用自然语言描述天线,模型照 hfss-antenna-modeling skill 的纪律调本 server 的工具,在 HFSS 里真的建模、求解、出结果。
本 server 是标准 MCP stdio server(官方
mcpSDK),协议层不绑任何客户端。下文以 Claude Code 为例;换别的 MCP 客户端见 用别的 MCP 客户端。
连接全走 win32com 裸调 AEDT 原生脚本 API(oDesktop/oEditor/oModule),不依赖 PyAEDT,因此跨版本——实测 2019.2 和 2025.2 都通,适合驱动 PyAEDT/gRPC 够不到的老版本 HFSS(如 2019)。
目录:为什么能跨版本 · 能做什么 · 已验证 · 安装 · 配置 & 用法 · 用别的 MCP 客户端 · 代码结构 · 当前短板 · 跨版本已知差异
为什么能跨版本
连接 =
win32com.Dispatch("Ansoft.ElectronicsDesktop." + version)(ProgID 每个装机版本都注册),不卡 PyAEDT 版本下限,也不依赖 gRPC(2022R2+ 才有)。操作 = AEDT 原生脚本 API(宏录制那套),自 ~v15 稳定。
能做什么(72 个工具)
域 | 能力 |
会话 | open/attach/close、新建工程与设计、从路径打开已有 .aedt、切换/列举、保存工程、reset |
几何 | box/rectangle/cylinder/sphere/polyline、布尔(并/减/交)、变换(移动/旋转/镜像/线阵·环阵复制)、变量驱动、材料(含自定义 εr/tanδ)、delete |
自检 & 诊断 |
|
边界 | Perfect E / Perfect H / 有限电导率 / 阻抗面 / 集总 RLC、开放辐射边界、远场球 |
馈电 | 集总端口、边馈/微带(一步)、同轴探针(一步)——均验证能产出真匹配;端口幅度/相位(双馈 CP 90°、差分 180°、相控阵扫描) |
周期单元 | 主从(Master/Slave)边界 + Floquet 端口(一步,晶格矢量自动推)——无限阵/FSS/超表面单元仿真,带扫描角 |
求解 & 结果 | setup + 扫频 + analyze;S11/谐振/-10dB 带宽、VSWR + 输入阻抗 Zin、远场方向图、轴比 AR vs 频率 + 3dB 轴比带宽 |
参数扫描 | 一次解全部组合 + 6 指标提取:S11 / 增益 / 轴比 / 前后比 / HPBW / 交叉极化隔离 |
优化 | HFSS 内置优化器(自动迭代逼近目标) |
辅助设计 |
|
可用性:求解前 bbox 自检挡建歪、自动配色(导体金/铜、介质半透明、空气近透明)、阻塞操作弹确认框。
skill 层(让"从论文复现"成为可能的纪律):读图解析(数字从参数表抽、图只判拓扑、歧义先确认)→ 经验库(skill/.../knowledge/,排错机理)+ 设计卡片库(skill/.../design/,正向设计起手)→ 显式规划 → 坐标/层叠约定 → 求解前自检 → 馈电/扫参/优化套路 → 指标驱动设计闭环(检索卡片→缩放→建模→check_design_targets 对标→定向调,§10)。
已验证
跨版本:连接 + 建模在 2019.2 + 2025.2 双版本通。
建模/求解/参扫的核心工具在 2019.2 实测(含最难的参扫结果提取);辅助设计 3 个工具(
search_designs/list_design_cards/check_design_targets)为纯本地逻辑、单测通过。诊断工具(
validate_design/get_messages)在 2019.2 + 2025.2 双版本实测:坏 design(无激励 / 材料没设 solve inside)判passed=false,好 design 判passed=true;两版的返回码类型与消息延迟差异已在代码里兜住(见跨版本已知差异)。周期单元工具(主从边界 + Floquet 端口)按 AEDT 脚本 API 实现、参数构造离线核对通过,但COM 行为尚未逐版本真机回归——首次用请盯结果。
整条管线产出过一个正确匹配的天线(探针贴片:S11 −11.7dB / VSWR 1.7 / Zin~50Ω,自洽)——"建+求解"这半边已坐实。
前置要求
操作系统:Windows。连接全走 win32com(pywin32),仅 Windows,Linux/macOS 不支持。
HFSS / Ansys Electronics Desktop:本机装好目标版本(实测 2019.2、2025.2),license 可用、能正常手动启动。
Python 3.10+(
mcp要求);建议用虚拟环境(理由见下)。Claude Code 已安装(
claudeCLI 在 PATH 里);或其它支持 MCP stdio 的客户端。
安装
1. 取代码 + 装依赖
git clone https://github.com/K-13ROBOT/HFSS_MCP.git
cd HFSS_MCP
# 建议建虚拟环境
python -m venv .venv
.venv\Scripts\Activate.ps1
python -m pip install -r requirements.txt # 只装 mcp + pywin32,不要 pyaedt⚠️ 关键:
install.py会把"当前正在跑它的那个 python 的绝对路径"写进 MCP 配置当启动命令。所以用哪个 python 装依赖、跑 install.py,server 以后就用哪个。用了 venv,就在 venv 激活状态下跑后面所有python ...命令。
2. 自检(不启 HFSS)
python smoke_mcp.py # 看到 SMOKE OK = 依赖装好、工具能注册3. 注册给 Claude Code
先预览将写入的配置(不动任何文件):
python install.py它会打印 ① 一段 .mcp.json ② 一条 claude mcp add 命令 ③ 推导出的 env。按使用范围二选一:
方式 A — 只给某个项目(建议先用这个)
python install.py --project D:\path\to\your\project一条命令写好三样(已存在则合并,不覆盖):
<项目>\.mcp.json← MCP server 注册(项目级)<项目>\.claude\skills\hfss-antenna-modeling\← skill(含 knowledge/ 经验库 + design/ 设计卡片库)<项目>\.claude\settings.json← 给analyze加"执行前确认"(防误触阻塞操作)
方式 B — 全局(所有项目可用)
python install.py --skill-user # ① 把 skill 装到 ~/.claude/skills/然后复制运行上一步打印的那条 claude mcp add 命令注册 server,形如:
claude mcp add hfss-agent-native --scope user -e HFSS_VERSION="2025.2" -- "C:\...\.venv\Scripts\python.exe" "C:\...\HFSS_MCP\hfss_mcp_server.py"本脚本绝不改全局
~/.claude.json;全局 MCP 注册一律靠那条claude mcp add(你能看清到底写了什么)。
4. 生效 + 验证
重启 Claude Code(改了 MCP 配置必须重启才加载)。
/mcp应看到hfss-agent-native。直接说一句"用 HFSS 建一个 2.45GHz 微带贴片并跑 S11",Claude 会自动走
hfss-antenna-modelingskill 调工具建模、求解、出结果。
配置 & 用法
连哪个版本:默认连 env 里的 HFSS_VERSION(install.py 从最高的 ANSYSEM_ROOT### 环境变量推导;推导不到则默认 2025.2)。要连老版本(如 2019.2):对话里让 open_desktop 传 version="2019.2",或改 .mcp.json env 里的 HFSS_VERSION。
license:install.py 会把本机的 ANSYSLMD_LICENSE_FILE / ANSYSLIC_DIR(若有)带进 server env;缺了就按你平时启动 HFSS 的方式补进 env 块。
工程文件 / 导出:.aedt 默认存到 server 运行目录(cwd)下的 projects/,导出的 CSV/报表存 exports/(分别可用 HFSS_PROJECTS_DIR / HFSS_EXPORTS_DIR 覆盖)。cwd 由 MCP 客户端决定——落在不可写目录时自动退到 ~/.hfss-agent/,再不行退临时目录,不会启动失败。
阻塞操作的确认:analyze / 参扫 / 优化耗时且阻塞。stdio 下进程内的 [y/N] 已关(stdin 被协议占用),改由客户端权限系统拦——Claude Code 靠 settings.json 里的 ask 规则(install.py --project 已写好 mcp__hfss-agent-native__analyze)。别的客户端要靠它自己的工具授权。
设计卡片目录(辅助设计检索):search_designs 按 HFSS_DESIGN_DIR → ~/.claude/skills/.../design/ → bundle 内 skill/.../design/ 顺序找卡片,一般无需配置。
用别的 MCP 客户端
server 是标准 MCP stdio,任何 MCP 客户端都能挂(Claude Desktop、Cline、Continue、Cursor、或自写的 MCP agent)。python install.py 打印的配置里 command / args / env 三样是通用的,按目标客户端的配置格式填即可:
{
"command": "<python 路径>", // 装了依赖的那个 python(venv 则用 venv 的)
"args": ["<bundle>/hfss_mcp_server.py"],
"env": { "HFSS_VERSION": "2025.2", "ANSYSLMD_LICENSE_FILE": "..." }
}兼容性已实测(用通用 MCP SDK 客户端,非 Claude Code):协议版本 2024-11-05 / 2025-03-26 / 2025-06-18 都能正确协商降级;72 个工具 schema 全合规;返回统一 TextContent + UTF-8 JSON;stdout 做了 fd 级隔离。cwd 由客户端决定——落在不可写目录(如系统目录)时,projects/、exports/、traces/ 会自动退到 ~/.hfss-agent/,不会像以前那样在 initialize 之前就崩。
长任务不再阻塞协议:所有 COM 调用跑在一个专用线程上,事件循环全程空闲——实测 analyze 求解期间 tools/list 连续 9 次全部 <0.01s 返回。客户端的 ping/keepalive 不会超时,不会误判 server 已死而杀进程。但注意两点仍然成立:① analyze 这个请求本身就是几分钟,设了硬性单请求超时的客户端仍会在这一个调用上超时;② 求解无法中途中止(阻塞 COM 调用没有中断点),客户端发的 cancel 会被应答但求解照跑,后续调用排在它后面。
换客户端会丢两样 Claude Code 专属能力,知道就行:
skill 不会自动加载——
hfss-antenna-modeling是 Claude 的 skill 机制,别的客户端不读。工具照样能调,但丢了"怎么正确用"的纪律(坐标/层叠约定、求解前自检、经验库、设计闭环)。变通:把本仓库
skill/hfss-antenna-modeling/SKILL.md(及knowledge/、design/)的内容放进那个 agent 的 system prompt / 上下文当指南。
确认门——如上,stdio 下进程内确认已关。客户端若没有工具授权 UI,
analyze/扫参/优化会直接跑、不问你。用支持 MCP 工具授权的客户端,或自己留意别误触。
代码结构
hfss_mcp_server.py MCP stdio 入口:常驻 ctx 持有 COM 句柄(oDesktop/oProject/oDesign/oEditor)
tools/__init__.py 工具注册表(@tool 装饰器)+ dispatch:前置校验、确认门、trace 落盘
tools/*.py 按域分文件:session / geometry / booleans / transforms / variables /
boundaries / excitations / sources / analysis / axialratio / mesh /
parametrics / optimization / periodic / diagnostics / design
model_state.py Agent 侧的模型状态镜像(对象/变量/边界/激励/setup),供 design_summary 等用
install.py 打印/写入 MCP 配置 + 安装 skill(不改全局 ~/.claude.json)
smoke_mcp.py 不启 HFSS 的 stdio 冒烟:工具能否注册、协议往返是否干净
skill/hfss-antenna-modeling/
SKILL.md 建模纪律(坐标/层叠约定、求解前自检、馈电/扫参/优化套路、设计闭环)
knowledge/ 排错经验库(按天线类型,随用变厚)
design/ 设计卡片库(λ 归一化尺寸/闭式公式,供 search_designs 检索)当前短板
最弱的是"读图/理解复杂结构"那半边,不是建模管线。折叠/多层/定制馈电这类复杂拓扑,AI 从图反推容易错,仍要靠用户确认结构(skill §0 已尽量兜底)。
analyze求解无法中途中止(阻塞 COM 调用无中断点)。协议层已不受影响(COM 走专用线程,事件循环空闲),但求解本身停不下来。经验库还年轻(随用随厚)。
工具偏多,每轮 token 有成本(数量见能做什么那张表)。
未来方向
近期(打磨):拿真论文端到端跑通"读图→建模";经验库随用沉淀。
中期(补能力):更多馈电/结构类型、场图/电流分布导出、工具按需收敛降 token。
远期愿景(设计顾问):从"照着建"进化到"参考文献辅助设计"——给指标/参考论文,它建议结构+尺寸并实现、仿真、迭代到达标;底层靠 λ 归一化设计卡片库 + 经验库。
跨版本已知差异
真机实测踩出来的坑,都已在工具内兜底,列在这里是为了别被"优化"回去:
项 | 2019.2 | 2025.2 | 兜底做法 |
| 8 参 | 7 参 | 多形式挨个试,谁不抛用谁 |
远场球方法名 |
|
| 两个都试 |
|
|
|
|
消息窗口写入 | 滞后可达几十秒 | 即时 | 判定以返回码为主,消息只说明"错在哪" |
| — | 0/1/2 结果相同,不起作用 | 级别自己从 |
扫频存远场 | — | 单设 | 取 AR/增益 vs 频率要 |
另有两条与版本无关、但同样反直觉:
CreateRectangle的 XZ 平面 Width/Height 轴向与直觉相反(WhichAxis=Y 时 Width→Z、Height→X),已在create_rectangle内修正。端口积分线不能直接放变量名(老版本会崩),工具会自动解析成字面量(同轴端口除外,要求本来就传字面量)。
其它已知点
server 名
hfss-agent-native写死(settings 的mcp__hfss-agent-native__analyze确认规则 key 在它上)。工程存 cwd 下
projects/、导出存exports/(可用HFSS_PROJECTS_DIR/HFSS_EXPORTS_DIR覆盖);cwd 不可写时自动退到~/.hfss-agent/。
License
MIT,见 LICENSE。
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/K-13ROBOT/HFSS_MCP'
If you have feedback or need assistance with the MCP directory API, please join our Discord server