Spec Driven Development
MCP Server that facilitates spec-driven development workflows, not just Vibe Coding.
제작자가 쓴 설명(영어 원문)
AI hardware synthesis: CircuitBlocks DSL, live LCSC parts, industrial DFX audit, stdio MCP server.
이 세 가지는 절대 하나의 점수로 합치지 않아요. 의견, 측정, 인기는 서로 다른 것이니까요.
이 서버는 아직 쉬운 말로 된 요약을 쓰지 못했어요. 아래는 레지스트리에서 읽어 온 사실이에요.
쓰고 있는 AI 앱을 고른 다음 설정을 복사하세요.
필요한 것
어떤 앱을 쓰세요?
위에서 앱을 고르세요. 기억해 두었다가 다음부터는 버튼에 “…에 설치”라고 표시해요.
Claude Desktop → Settings → Developer → Edit Config를 열고 claude_desktop_config.json에 이 내용을 붙여 넣으세요
{
"mcpServers": {
"circuit-agent-client": {
"command": "uvx",
"args": [
"circuit-agent-client"
]
}
}
}터미널에서 이 명령어를 실행하세요
claude mcp add circuit-agent-client -- uvx circuit-agent-client프로젝트의 .cursor/mcp.json 또는 ~/.cursor/mcp.json에 붙여 넣으세요
{
"mcpServers": {
"circuit-agent-client": {
"command": "uvx",
"args": [
"circuit-agent-client"
]
}
}
}브라우저가 앱을 열지 물어본 다음, 앱이 설정을 보여 주고 확인을 요청해요. 키 값은 비워 두니 직접 입력하세요.
프로젝트의 .vscode/mcp.json에 붙여 넣으세요
{
"servers": {
"circuit-agent-client": {
"type": "stdio",
"command": "uvx",
"args": [
"circuit-agent-client"
]
}
}
}브라우저가 앱을 열지 물어본 다음, 앱이 설정을 보여 주고 확인을 요청해요. 키 값은 비워 두니 직접 입력하세요.
이 서버는 내 컴퓨터에서 실행되는데, ChatGPT는 인터넷에 있는 서버에만 연결할 수 있어요. 다른 앱을 고르세요.
선택한 앱은 이 기기의 쿠키에만 저장돼요. 계정은 필요 없어요.
이 설정은 제작자의 레지스트리 정보로 만들었어요. README와 다르면 README를 따르세요.
내 컴퓨터에서 실행돼요. 설치하면 AI 앱에 도구 목록이 나타나요.
누구나 볼 수 있는 정보를 점검했고, 코드는 읽지 않았어요. 해당하지 않는 항목은 개수에서 뺐어요. · 2026년 11월 7일 점검
레지스트리 이름이 GitHub 계정 mo9652962-ai 기준으로 확인되었고, 이 계정이 저장소를 소유하고 있어요
아직 GitHub에서 이 저장소를 읽어 오지 않았어요
아직 GitHub에서 이 저장소를 읽어 오지 않았어요
내 컴퓨터에서 실행되는 서버라 인터넷 엔드포인트가 없어요
내 컴퓨터에서 실행되며, 대신 로컬 설정을 사용해요
내 컴퓨터에서 실행돼요. 도구 목록은 인터넷 엔드포인트가 있는 서버에서만 읽을 수 있어요
레지스트리에서 이 카테고리의 활성 서버 전체와 비교했어요. 스타는 게시자가 저장소를 소유한 경우에만 세요.
해당하는 기본 점검 1개 중 1개를 통과했어요. 코드는 읽지 않았어요. 키나 토큰을 넣기 전에 서버가 어떤 권한을 요구하는지 확인하고, 꼭 필요한 권한만 있는 키를 쓰세요.
레지스트리에 필수 키가 나와 있지 않아요. 다만 처음 쓸 때 로그인을 요구하는 서버도 있어요.
내 컴퓨터에서 실행돼요. AI 앱이 필요할 때 실행하고, 데이터는 제작자의 서버를 거치지 않아요(서버 자체가 온라인 서비스를 호출하는 경우는 제외).
GitHub 저장소는 마지막으로 – 변경됐고, 최신 버전(0.25.0)은 10일 전 레지스트리에 올라왔어요.
Claude Desktop, Claude Code, Cursor, VS Code처럼 MCP를 지원하는 앱에서 쓸 수 있어요. 내 컴퓨터에 Python (uv)도 있어야 해요.
같은 카테고리에는: Spec Driven Development, Remote Desktop Commander, ProAgentStore
같은 카테고리에서 다른 제작자가 만든 서버예요. 스타 순으로 정렬했어요.
카드 보는 법:★ GitHub 스타i세 기둥: 리뷰 · 점검 · 사용 정도i업데이트 = 최신 버전을 레지스트리에 공개한 날i
MCP Server that facilitates spec-driven development workflows, not just Vibe Coding.
Remote Desktop Commander: use files, terminal and processes on your own computers from any AI app.
MCP-first control plane for ProAgentStore agents and private instances.
제작자의 저장소에서 쓰인 그대로 가져왔어요. PopNx MCP가 검토하거나 보증한 내용이 아니에요. HTML, 이미지, 스크립트는 제거했어요. 링크를 누르면 이 사이트를 벗어나요.
Prompt → Schematic → Layout → 3D Enclosure → Fabrication Bundle
🌐 在线 EDA 工作台 / Live Demo · 🇨🇳 中文说明 · 🇬🇧 English · 🔌 MCP Server · 🧩 19+ 积木清单 · 🏭 工业 DFX · 📐 KiCad/BOM 导出 · 💬 反馈
Status: alpha. This repository is the open community layer of CircuitAgent: the
hardware DSL, the LCSC live-selection client, and the data contracts that the
full compiler consumes. The block set is deliberately small and every block is
unit-tested — correctness over coverage.
让大语言模型直接生成底层走线、焊盘与封装,几乎必然产出非法几何或引脚短路。 CircuitAgent 的做法是把 LLM 的输出约束在预验证的电路积木上,再用 Pydantic 契约把它变成确定性网表 —— 模型只负责"选积木",不负责"画线"。
Natural language prompt
│ ▼ ┌────────────────────────┐ │ CircuitBlocks DSL │ keyword → audited sub-circuits (deterministic) └────────────────────────┘ │ ▼ ┌────────────────────────┐ │ Netlist contract │ Pydantic / JSON Schema (SSOT) └────────────────────────┘ │ ┌────┴─────┐ ▼ ▼ ┌────────┐ ┌──────────────────┐ │ LCSC │ │ REST / MCP APIs │ │ client │ │ (community layer)│ └────────┘ └──────────────────┘
方式 A · 从 PyPI 安装(推荐)
pip install circuit-agent-client
方式 B · 从源码使用
git clone https://github.com/mo9652962-ai/circuit-agent.git
cd circuit-agent
零运行时依赖 —— 纯 Python 标准库实现,装完即用,不拉任何第三方包。 跑测试才需要 dev extra:pip install -e ".[dev]"
from client.synthesizer import synthesize_from_prompt
spec = synthesize_from_prompt( "基于 ESP32-C3 的环境监测节点,带 Type-C 供电、I2C 传感器插座、指示灯和2个按键" )
print(spec["chip_id"]) # ESP32-C3 print(len(spec["modules"])) # 元器件数 print(spec"netlist"[0]) # 第一条网络连接 print(spec["unmatched"]) # 你要求了、但 DSL 还不支持的模块(可执行信号) print(spec["not_requested"]) # 你没提到的可选模块(仅参考,非能力缺口)
映射是确定性的:同一句话永远产出逐字节相同的结果(CI 中有对应断言)。
unmatched 与 not_requested 是两个刻意分开的信号,不要混用:
| 字段 | 含义 | 例子 | 消费方式 |
|---|---|---|---|
unmatched | 你明确要求、但当前 DSL 造不出来 | ethernet / relay / motor_driver | 这是能力信号,agent 应据此告知用户或换方案 |
not_requested | 可选积木,只是这句话没提到 | button / led / buzzer / i2c / crystal | 纯参考信息,不代表能力缺口 |
不会被静默丢弃:任何未识别的意图都会出现在 unmatched 里,而不是悄悄消失。
from client.lcsc_client import search_lcsc_parts
for part in search_lcsc_parts("CH340N", limit=3): print(f"[{part['lcsc_part']}] {part['part_number']} | {part['package']} | " f"库存 {part['stock']} | ${part['price_usd']} | {part['part_class']}")
[C506813] CH340N | SOP-8_L5.0-W4.0-P1.27-LS6.0-BL | 库存 196 | $0.5537 | Extended Part
客户端自带重试退避 + 硬超时 + 24 小时磁盘缓存 + 防御式解析:上游改结构不会 抛异常,断网时回落到缓存(缓存也没有则返回空列表,调用方永远不必处理传输层异常)。
from client.circuit_blocks import block_usb_c_power, block_power_ldo_3v3
blk = block_power_ldo_3v3() for comp in blk.components: print(comp.ref, comp.value, comp.package, comp.lcsc)
| Block | 说明 | 关键设计点 |
|---|---|---|
block_usb_c_power | Type-C 供电输入 | 双 5.1k CC 下拉(sink 角色,非 56k 上拉) |
block_power_ldo_3v3 | AMS1117-3.3V 稳压 | 10µF 输入/输出储能电容 |
block_crystal_clock | 无源晶振 + 负载电容 | 标记 guard_ring 属性供后端加地屏蔽环 |
block_button | 消抖按键 | 10k 上拉 + 100nF RC,位号可参数化 |
block_led | 状态指示灯 | 限流电阻 + 颜色/阻值可参数化 |
block_buzzer | 蜂鸣器驱动 | S8050 NPN + 1N4148W 反向续流二极管 |
block_i2c_header | I2C 扩展排针 | SCL/SDA 各 4.7k 上拉 |
block_rs485_transceiver | SP3485 半双工差分串口 | 120Ω 终端电阻 + 100nF 去耦 + 3P 排针引出 |
block_can_transceiver | SN65HVD230 3.3V CAN 节点 | 120Ω 终端匹配 + 10k 斜率控制 (高速模式) |
block_battery_tp4056 | TP4056 1A 线性锂电充电 | 1.2k 限流 + 充/满双色指示灯 + 2P 电池端子 |
block_sensor_aht20 | AHT20 温湿度传感器 | 工业 I2C 总线 + 去耦电容 + DFN-6 封装 (C2757850) |
block_sensor_mpu6050 | MPU-6050 6轴 IMU 运动姿态传感器 | 3轴陀螺仪+3轴加速度计 + 旁路去耦 + QFN-24 (C24112) |
block_esd_usb_tvs | USB 接口高速 TVS 静电防护 | USBLC6-2SC6 超低结电容 (0.6pF) + SOT-23-6 |
block_esd_rs485_tvs | RS-485 工业双向非对称 TVS | SM712 工业防雷/抗浪涌防静电二极管 (-7V~+12V) |
block_esd_can_tvs | CAN 总线 ESD 双路 TVS 阵列 | PESD1CAN 24V 车规/工控双线 TVS (SOT-23) |
block_reverse_polarity_protection | 工业电源输入防反接保护 | 肖特基二极管 (SS34) 或 低压降 P-MOSFET (AO3401A) |
block_power_pi_filter | 电源输入 EMI π型 LC/RC 滤波器 | 磁珠 (100MHz 600Ω) + 10µF 钽电容/陶瓷电容吸收纹波 |
block_fiducial_marks | SMT 贴片光学定位点 (Mark点) | 3个 1.0mm 裸铜焊盘 + 2.0mm 阻焊开窗 (DFA工序必备) |
block_testpoint_matrix | 自动化测试点矩阵 (Test Points) | 1.0mm SMD 测试铜焊盘 (支持电源轨、地轨、SWD、UART测试) |
block_watchdog_supervisor | TPS3823 看门狗/复位监控 | 1.6s WDI 喂狗 + 推挽复位输出(工业 MCU 防跑飞,IEC 61508 实践) |
block_ethernet_phy_w5500 | W5500 SPI 硬件 TCP/IP 以太网 | 10/100M PHY + 集成变压器与状态灯 RJ45 (HR911105A) + 25MHz 晶振 |
block_isolated_adc_ina219 | INA219 I2C 功率/电流双向监测 | 0.1Ω 2W 1% 精密检流电阻 + 实时电压电流遥测 |
block_motor_driver_drv8825 | DRV8825 2.5A 45V 步进电机驱动 | 1/32 微步进 + 100µF 50V 母线高压滤波 + XH-4P 接口 |
block_optocoupler_isolated_io | PC817 5kV 高压光电隔离输入 | 2.4k 限流 + 反向保护二极管,适配 24V PLC 工业自动化输入 |
每个积木的引脚号、LCSC 料号、封装名在冻结前均对照数据手册与立创商城列表核验过。 tests/test_circuit_blocks.py 会强制校验:位号唯一、每个元件都有封装与料号、 网络端点必须指向已声明的元件、每个积木都必须接 /GND。
CircuitAgent 内置标准 JSON-RPC 2.0 stdio MCP Server,基于纯 Python 标准库构建(无需任何第三方 pip 库),可无缝接入 Claude Desktop、Cursor 或 Windsurf。
当前暴露 84 个工具、8 个资源(circuit:// URI)与 4 个工程提示词(slash-command)。
2026-07-28服务器实现 2026-07-28 无状态协议核心,同时向后兼容到 2024-11-05 的握手客户端:
| 能力 | 实现 |
|---|---|
server/discover | ✅ 强制方法,一次交互返回支持版本/能力/身份,也是 stdio 的向后兼容探针 |
| 无握手请求 | ✅ 每个请求在 params._meta 自描述协议版本与客户端能力,无 initialize 也能工作 |
resultType | ✅ 所有结果携带 "complete"(或 "input_required"),旧客户端可安全忽略 |
| 缓存提示 | ✅ tools/list / resources/list / prompts/list 返回 ttlMs + cacheScope |
| 确定性顺序 | ✅ 工具目录顺序稳定,客户端与上游 prompt 缓存可命中 |
| 错误码分配 | ✅ 使用规范保留区 -32020~-32099;资源未找到改为 -32602 |
| 旧版握手 | ✅ initialize 保留并协商版本,不断掉 2026 年前的客户端 |
| 结构化输出 | ✅ 双通道:content 给模型读、structuredContent 给程序读,两者语义严格等价;6 个电气工具声明 outputSchema |
MCP 2026-07-28 规定 tools/call 有两个输出通道,且同时存在时语义必须等价:
content — 面向模型。语言模型只读得到这一段,token 成本与可读性优先。structuredContent — 面向程序。给代码生成、类型化编排与 outputSchema 严格校验用。本服务器的做法是从同一份文档派生:工具已经返回 JSON,结构化通道由解析该文档得到, 因此两个通道不可能不一致(有测试对全部工具断言这一点)。返回文件内容的导出工具 (KiCad 网表、Gerber、IPC-2581、BOM CSV)与返回 ASCII 图的工具不声明 outputSchema —— 它们产出的是文档不是数据对象,给它写 schema 只会描述一个字符串容器。错误结果同样不带 结构化负载:失败的调用没有符合 schema 的文档,编造一个错误对象形状是没人要求的契约。
server/discover 的 instructions 字段直接写给 LLM 看:先 synthesize_circuit 出网表,再 run_erc 门禁, 然后 audit_industrial_dfx 与 validate_manufacturing_package,最后才导出。calculate_* / analyze_* 全是纯函数(无网络、无状态),可放心试探;只有 search_lcsc_parts 联网且免 Key。
python -m client.mcp_server
claude_desktop_config.json){
"mcpServers": { "circuit-agent": { "command": "python", "args": ["-m", "client.mcp_server"], "cwd": "/path/to/circuit-agent" } } }
synthesize_circuit: 输入自然语言,输出确定性硬件网表与积木清单。search_lcsc_parts: 免 Key 实时查询立创商城的元器件库存、封装、阶梯单价与基础库/扩展库属性。list_circuit_blocks: 列出 DSL 中全部可用的 24 大已审计电路积木规格。validate_netlist: 根据正式 JSON Schema 校验网表数据结构合法性。calculate_trace_impedance: 基于 IPC-2141 解析公式计算微带线与差分对走线阻抗(50Ω RF / 90Ω USB / 120Ω CAN/485)。calculate_bom_cost: PCBA 成本核算器,自动精算元器件裸成本与嘉立创扩展库换料费(¥20/种)。list_supported_chips: 查询当前支持的微控制器型号及其引脚分配硬规则。register_custom_chip: 动态注册第三方 MCU 物理引脚约束与外设映射表。calculate_ipc2152_trace_current: 依据 IPC-2152 标准精确计算印制导线载流能力或反算线宽(温升 ΔT、铜厚 1oz/2oz、内层降额)。audit_industrial_dfx: 工业级 DFX (DFM/DFA/DFT/DFC) 与生产合规自动化静态审查器,输出打分评级、问题分类与 Markdown 体检报告。export_kicad_netlist: 导出标准 KiCad S-Expression 网表 (.net),支持 KiCad 6/7/8/9/10 直接导入 Pcbnew 快速布线。export_manufacturing_bom: 生成量产级嘉立创 SMT BOM CSV 表格(含位号聚合、基础库免换料费分类)。12b. export_manufacturing_cpl: 生成嘉立创 SMT 贴片坐标文件(CPL/pos,位号 + 中心坐标 + 层 + 旋转角)。BOM 与 CPL 必须成对交付——只在 BOM 里而不在 CPL 里的器件会被采购但不会贴装,故障留到功能测试才暴露。
calculate_parametric_circuit: 闭环参数化硬件设计方程(E96 标准分压电阻对求解、LDO 散热结温校核、I2C 上拉阻值及 RC 滤波)。render_circuit_topology: 生成结构化 ASCII 系统架构拓扑图(电源轨、总线、传感器与保护子系统)。run_erc: 网表级电气规则门禁(ERC)——悬空网络、缺 GND、未知位号、缺电源域、缺去耦电容、差分总线缺 120Ω 终端电阻、电容真实有效容值不足等 45+ 条规则,每条带 severity 与出处,blocking/error 阻断 BOM/CPL 交付。其中 MLCC_EFFECTIVE_CAPACITANCE_DEFICIT 会用真实降额模型复算每颗电容在额定偏置下的实际容值,跌破标称 60% 即告警;器件未带偏置数据时保持沉默而不编造。DECOUPLING_PER_IC_DEFICIT 按器件数量而非网络判断去耦是否充足——三颗 IC 共用一颗 100nF 会被拦下,因为共用意味着远端器件的瞬态电流要穿过走线电感。COMPONENT_RATING_INSUFFICIENT 从电源轨名解析电压(/+3.3V、/VMOT_24V、/VBUS),与器件声明的额定值比对,6.3V 电容接在 24V 轨上直接判 error;未声明额定值的器件跳过而不猜测。analyze_power_tree: 系统级电源树与热功耗分析器,追踪电源域负载电流、LDO 压差裕量、热耗散与结温估算 ($T_j$)。calculate_ipc2221_clearance: 基于 IPC-2221B Table 6-1 标准根据工作电压与导体类别 (B1内层/B2外层裸露/B4涂覆/A6引脚) 精确计算最小电气间隙。export_specctra_dsn: 生成通用 Specctra DSN (v15.0) 自动布线交互文件与启发式器件自动布局,支持直接送入 Freerouting / KiCad 执行 100% 自动化走线。18b. autoroute_pcb: 运行原生 Python 零 JVM 依赖多层自动布线引擎,执行启发式布局、Specctra DSN 转换与走线求解,输出 Specctra SES 走线文件与物理布线指标(网络连通率、走线总长、过孔数)。布线结果自动过物理 DRC 门禁,引擎不合格时按 exact → room → grid 自动回退,engines_tried 记录实际采用的引擎。 18c. run_pcb_drc: 对布线结果执行物理 DRC 审计——真铜箔间距、蚀刻酸角、电源线宽、板边与禁布区、差分对偏斜,违规按网络聚合输出(错误/警告分级 + 定位坐标 + 修复建议)。 18d. analyze_ionic_contamination: 组件后清洗离子污染 (ROSE) 与离子色谱合规审计器——依据 IPC-CH-65 与 IPC-TM-650 2.3.25/2.3.28,对标 Class 1.56 / Class 3 1.20 μg/cm² NaCl 当量限值与氯 0.70 / 溴 0.54 μg/cm² 物种限值,按偏压与导体间距评分枝晶/CAF 生长风险。 18e. analyze_enig_plating: ENIG/ENEPIG 镀层厚度与黑盘 (镍晶界腐蚀) 风险审计器——依据 IPC-4552A/4556 校核金 0.05~0.20μm、镍 3.0~6.0μm、磷 7~10wt% 与钯 0.10~0.30μm 工艺窗口,综合返修次数与工艺类型评估电偶过腐蚀脆断风险,并预警金厚 >0.25μm 的 AuSn₄ 焊点脆化。 18f. estimate_solder_joint_thermal_fatigue: IPC-9701A / IPC-D-279 Engelmaier 热循环疲劳寿命估算器——按 CTE 失配剪切应变范围 (Δα·ΔT·DNP/2h)、蠕变感知循环指数 (热驻留时间与平均结温) 计算 TC1~TC4 车规/航空温度谱下焊点 63.2% 失效特征寿命 (NTC),对照服役循环数判定陶瓷大 DNP 封装是否需欠填充。 18g. plan_conformal_coating: IPC-CC-830C / IPC-A-610G §10 三防漆选型与掩膜禁涂区规划器——校核 AR/ER/UR (30~130μm)、
앞부분만 보여 드려요. 나머지는 저장소에서 읽어 보세요