CadenceAI MCP
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@CadenceAI MCPrun a PSpice simulation of my RC low-pass filter and show the measurements"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
CadenceAI MCP — Cadence EDA Tools for AI Assistants
A Model Context Protocol (MCP) server that exposes Cadence EDA tools (OrCAD Capture, Allegro PCB Designer, PSpice) to AI assistants like Claude, Cursor, and Cline — letting them browse PCBs, generate schematics, and run circuit simulations through a single, license-free, cross-platform interface.
✨ Features
Domain | What AI can do |
Environment | Auto-detect SPB installation, license status, available batch commands |
PCB files | Find |
Batch CLI | Invoke 60+ safe |
Schematics | Generate SPICE netlists, |
Simulation | Generate circuits from templates, run via PSpice / ngspice / analytical fallback |
Netlist flow | DSL → SPICE → Allegro tel-format in one end-to-end pipeline |
13 MCP tools, 75+ Allegro batch subcommands wrapped with safety allow-list, 6 circuit templates, all available out of the box.
Related MCP server: Coppermind
🚀 Quick Start
1. Install
git clone https://github.com/cadenceai/cadence-mcp.git
cd cadence-mcp
pip install -e .2. Probe your environment
python -m cadence_mcp.server --probe{
"cds_root": "C:\\Cadence\\SPB_23.1",
"allegro_batch": "C:\\Cadence\\SPB_23.1\\tools\\bin\\allegro_batch.exe",
"pspice_exe": "C:\\Cadence\\SPB_23.1\\tools\\bin\\pspice.exe",
"license_present": false,
"batch_commands_count": 75,
...
}3. Register in your MCP client (e.g. Cursor / Claude Desktop)
Edit ~/.cursor/mcp.json:
{
"mcpServers": {
"cadence": {
"command": "python",
"args": ["-m", "cadence_mcp.server"],
"cwd": "D:\\AIBench\\CadenceAI"
}
}
}Restart the client. AI now has 13 Cadence tools at its disposal.
🛠 The 13 Tools
Environment & Diagnostics
Tool | Purpose |
| Detect SPB install, license, batch commands |
| Dump CDSROOT / CDS_LIC_FILE / LM_LICENSE_FILE |
| List all available Allegro batch subcommands |
| List the 56 commands safe to invoke |
PCB Design
Tool | Purpose |
| Recursively find |
| Extract readable strings from binary |
| Run one batch subcommand (timeout + allow-list) |
Schematic & Netlist
Tool | Purpose |
| From template or DSL → SPICE netlist file |
| Decompose DSL into components / directives |
| OrCAD Capture-compatible |
| SPICE → Allegro |
Simulation
Tool | Purpose |
| Enumerate 6 circuit templates (RC, RLC, diode, ...) |
| Auto-route to PSpice / ngspice + extract measurements |
📐 Architecture
┌──────────────────────────┐
AI Client ───► │ MCP Server (stdio) │
(Claude / │ 13 tools │
Cursor) │ │
└────────────┬─────────────┘
│
┌───────────────────────┼─────────────────────────┐
│ │ │
▼ ▼ ▼
┌──────────────┐ ┌──────────────────┐ ┌──────────────┐
│ env_detect │ │ simulator │ │ schematic │
│ pcb.py │ │ (PySpice/PSpice)│ │ pcb.py │
│ (read-only) │ │ │ │ (text gen) │
└──────────────┘ └──────────────────┘ └──────────────┘
│ │ │
▼ ▼ ▼
Allegro .brd PSpice / ngspice Allegro netin
files / dirs binary backend physical netlistThree independent modules + one MCP server bootstrap. No monolithic controller, no hidden state beyond an env cache.
🧪 Testing
python tests/test_all.pyCovers 10 scenarios end-to-end:
TEST 1: 环境探测 [OK] CDSROOT 已识别, 75+ batch commands
TEST 2: Allegro .brd 扫描 [OK] 找到 N 个 .brd 文件
TEST 3: SPICE 网表生成 [OK] .TRAN / .END / 文件已保存
TEST 4: 电路 DSL 解析 [OK] 识别元件、控制指令
TEST 5: 生成 OrCAD DSN 文本 [OK] XML 写入成功
TEST 6: SPICE → Allegro 转换 [OK] 包含 R1 / C1 等 refdes
TEST 7: 安全命令清单 [OK] 56+ 命令白名单
TEST 8: allegro_batch help 调用 [OK] exit=0
TEST 9: MCP 工具注册表 [OK] 13 tools / 13 handlers
TEST 10: 端到端电路设计流程 [OK] .cir / .tel / .dsn 全部产出Live MCP demo
For a real MCP-protocol walkthrough (spawns the server, calls every tool via JSON-RPC stdio, shows actual outputs and writes real files):
python demo_mcp_live.pyExpected outcome: all 14 tasks succeed; produces _demo_rc.cir,
_demo_div.cir, _demo_step.cir, _demo_rc.tel, _demo_amp.dsn in
examples/.
For just the simulation numeric results without MCP overhead:
python demo_summary.py🧩 End-to-End Example
Tell your AI assistant:
"Design a low-pass RC filter with fc=160 Hz and simulate it."
The AI calls, in order:
1. cadence_probe # learn environment
2. list_simulation_templates # see what's available
3. generate_spice_netlist # template=rc_lowpass, fc≈160Hz
4. run_circuit_simulation # execute on PSpice/ngspice
5. netlist_to_allegro # convert for PCB layout
6. allegro_batch_run subcommand=netin # import into AllegroOutput flow:
ai_design.cir PSpice/ngspice → ai_design.out (measurements)
ai_design.tel SPICE → Allegro → ready for `allegro_batch netin`
ai_design.dsn OrCAD Capture → optional: hand-edit in Capture🔧 Simulation Backends
The server auto-selects the best available backend in this order:
Priority | Backend | Requirements |
1 |
| PSpice on PATH + valid license |
2 |
|
|
3 |
| Built-in numpy solver for RC / divider / step (no deps) |
4 |
| Closed-form R1+R2 voltage divider |
Auto-skip behavior: if cadence_probe reports license_present: false,
the server skips PSpice automatically (avoids the 60s timeout) and
goes straight to the analytical fallback. So you get instant simulation
results even without any license.
Tested backends:
PSpice binary present at
C:\Cadence\SPB_23.1\tools\bin\pspice.exe;-bmode requires an active license. When license is missing, server falls back gracefully.ngspice is the recommended open-source fallback. Download from https://ngspice.sourceforge.io/download.html and put
ngspice.exeon PATH. (On some networks SourceForge blocks direct downloads; try MSYS2mingw-w64-ucrt-x86_64-ngspiceinstead.)PySpice 1.5 Python wrapper is auto-detected (
pyspice_available: true).Analytical fallback (numpy only) — solves RC low/high-pass, step response, and voltage dividers in closed form / closed-form-plus-numerical. Always available, no external binaries required.
Demonstrated simulation results (no license required)
Run python demo_summary.py:
RC 低通滤波器 (rc_lowpass) Vout_peak=4.36V tau=100μs fc=1.59kHz
RC 高通滤波器 (rc_highpass) Vout_peak=4.36V tau=100μs fc=1.59kHz
RC 阶跃响应 (rc_step) Vout_end=0.48V tau=10ms fc=15.9Hz
电压分频器 (voltage_divider) Vout=8.0V (Vin=12V, R1=1k, R2=2k)🛡 Security & Sandboxing
All external commands run through
subprocess.runwith hard timeout.allegro_batch_runenforces a 56-command allow-list unlessallow_unsafe=trueis explicitly set.File I/O paths are normalised; netlist files are written with ASCII encoding to avoid encoding edge cases.
No network calls; pure local execution.
License state is reported (
license_present: false/true) but never assumed.
📚 Reference: Useful Allegro Batch Subcommands
Selected from the 75+ available:
Command | Purpose |
| Generate Gerber photoplot files |
| Import netlist into board |
| Forward-annotate schematic changes |
| Generate design reports (DRC, BOM, etc.) |
| Extract padstacks, symbols, devices from board |
| Convert |
| Convert Gerber format versions |
| IPC-2581 manufacturing data exchange |
| ODB++ manufacturing data exchange |
| DFM web extraction for fabrication |
| Performance / signal-integrity reports |
| Quantus verification extraction |
| Component placement (constraint-driven) |
| Component / pin swap |
Run allegro_batch.exe help on your machine to get the full list.
🤝 Contributing
PRs should:
Run
python tests/test_all.pycleanly (no failures).Add tests for any new tool.
Update this README's tool table.
Keep the allow-list curated — every batch command added must be safe.
📄 License
MIT — see LICENSE.
🔗 Related Projects
allegro-mcp — read-only MCP for
.brdfiles (MIT, 4 stars).skill-script-generator — NL → SKILL script generator.
Python-Skill Bridge — Python ↔ Virtuoso SKILL bridge.
mcp4eda.cn — Chinese EDA MCP hub (no Cadence entries yet).
CadenceAI MCP is the first combined schematic + PCB + simulation MCP for the Cadence SPB toolchain.
Available Tools
13 toolsallegro_batch_commandsA
列出 Allegro batch 支持的所有命令 (75+ 条).可用于了解 Allegro 批处理能力,挑选合适的工具做 Gerber 转换、网表导入、库导出、光绘生成等。
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must carry the behavioral burden. It discloses that it returns 75+ commands, but does not confirm read-only safety, describe the return format, or mention any side effects or auth requirements. For a listing tool this is adequate but not rich.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, purpose first then usage, with no wasted words. The example list in the usage sentence is compact and directly relevant.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is simple (no params, no annotations), but the absence of an output schema means the description could usefully say what the returned command list looks like (names only, descriptions, format). It states the count and usage, which is helpful, but leaves the return shape unspecified.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so the baseline is 4; schema coverage is 100% (empty schema), and the description adds no parameter information because there are none to describe.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('列出') and resource ('Allegro batch 支持的所有命令'), and notes the size (75+). It does not differentiate itself from the sibling safe_batch_commands or explain why one would choose this over that, so it falls short of the top score.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It provides clear context: use to understand Allegro batch capabilities and pick suitable tools for Gerber conversion, netlist import, library export, etc. However, it offers no when-not guidance or explicit alternatives among the many sibling tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
allegro_batch_runB
执行单个 allegro_batch 子命令 (如 artwork / netin / dump_libraries / report / brd2dml 等)。带白名单 (60+ 安全命令) 和超时保护,默认禁止高危操作。
| Name | Required | Description | Default |
|---|---|---|---|
| args | No | 传给子命令的参数列表,例如 ['-l','my_board.brd']。 | |
| timeout | No | 超时秒数,默认 60。 | |
| subcommand | Yes | allegro_batch 子命令,例如 'artwork' / 'netin' / 'report'。可用列表见 allegro_batch_commands。 | |
| allow_unsafe | No | 是否允许不在白名单中的子命令。默认 false。 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must carry behavioral disclosure. It adds useful context about the 60+ command whitelist, timeout protection, and default blocking of high-risk operations, but omits side effects, permissions, and what happens on timeout or unsafe override.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is short, front-loaded with the core action, and free of filler. It could be slightly better structured by separating the safety model from the core purpose, but it is efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no annotations and no output schema, the description covers the main safety posture and invocation constraints. It still leaves meaningful gaps about execution outputs, file side effects, and failure modes, which an agent would need for full confidence.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the schema already documents args, timeout, subcommand, and allow_unsafe in detail. The description only echoes timeout protection and the whitelist default, adding little semantic meaning beyond the structured fields.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb+resource: '执行单个 allegro_batch 子命令', with examples like artwork/netin/report. It is clear what the tool does, but it does not explicitly differentiate itself from siblings such as allegro_batch_commands or safe_batch_commands.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied by the purpose and the safety note: run one batch subcommand, with a whitelist and default prohibition of high-risk operations. However, the description gives no explicit when-to-use guidance or alternative tools to consult for command listings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
cadence_env_varsA
返回当前进程可见的 Cadence 相关环境变量快照(CDSROOT / CDS_LIC_FILE / LM_LICENSE_FILE 等)。用于诊断 license / 路径配置问题。
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full behavioral burden. It does disclose the scoping nuance ('currently visible to the process') and the variable families returned, which is useful. It stops short of stating that the operation is read-only/non-mutating or what the snapshot format looks like, which for a zero-param read tool is a minor gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences with the resource and examples front-loaded, followed by the diagnostic purpose. No filler, though it is not quite a model of maximally economical phrasing.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple zero-parameter, read-only diagnostic tool with no output schema, the description supplies enough: what it returns, the notable variables, and the use case. Nothing an agent needs in order to call it correctly appears to be missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes no parameters, so there is nothing to document beyond confirming the absence of inputs; the baseline for a 0-param tool is 4. The description correctly implies a no-argument invocation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific action and resource: returns a snapshot of Cadence-related environment variables currently visible to the process, naming concrete examples (CDSROOT / CDS_LIC_FILE / LM_LICENSE_FILE). This is clearly distinguishable from siblings like cadence_probe or allegro_batch_run, though it does not explicitly contrast itself with them.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives an intended context ('用于诊断 license / 路径配置问题' — for diagnosing license/path configuration problems), which implies when to reach for it. However, it names no alternatives and no when-not-to-use condition, so the routing guidance is implied rather than explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
cadence_probeA
探测系统中的 Cadence EDA 工具链可用性,返回 SPB 根目录、可执行文件、license 状态、PSpice 模型库路径、Allegro 批处理命令清单等。这是新会话的第一调用,了解环境。
| Name | Required | Description | Default |
|---|---|---|---|
| cds_root | No | 强制指定 Cadence SPB 根目录;默认自动搜索 C:/Cadence 与 $CDSROOT。 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It discloses return content and the default auto-search behavior (C:/Cadence and $CDSROOT), which implies a non-destructive read, but it never explicitly states read-only/non-mutating semantics, latency, or whether probing invokes external executables.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with the action and return inventory, with the usage cue appended. The return list is somewhat dense but every element is informative; nothing is redundant.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description correctly compensates by listing what the probe returns, and the single parameter is covered by the schema. An agent has enough to invoke it correctly, though side-effect/safety expectations remain unstated.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and the single parameter cds_root is fully documented in the schema, including the auto-search default. The description adds no syntax or override semantics beyond what the schema already states, so baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (probe) and resource (Cadence EDA toolchain) and enumerates what it returns (SPB root, executables, license status, PSpice model paths, Allegro batch commands). That enumeration meaningfully separates it from siblings like cadence_env_vars and allegro_batch_commands, though no sibling is named explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly states the usage context: '这是新会话的第一调用,了解环境' — the first call in a new session to understand the environment. This gives a clear triggering condition. It stops short of naming when-not to use it or pointing at the alternative probe tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
find_brd_filesB
在指定根目录递归查找 Cadence Allegro PCB 文件 (.brd)。返回带元数据 (大小、估计层数、器件数) 的列表。
| Name | Required | Description | Default |
|---|---|---|---|
| glob | No | 匹配模式,默认 *.brd。 | *.brd |
| root | Yes | 搜索根目录绝对路径。 | |
| max_results | No | 最大返回数量,默认 50。 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It adds some behavioral context by stating results are a list with metadata (size, estimated layer count, component count), but it does not say whether the operation is read-only, what permissions are needed, or how errors are handled.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One succinct sentence, front-loaded with the purpose and including the key return format. No wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the simple find operation, full schema coverage, and no output schema, the description is nearly complete: it specifies recursive search and the metadata returned. The only notable gap is routing guidance relative to sibling parse_brd_file.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents root, glob, and max_results. The description adds no parameter-level detail beyond what the schema provides; baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('递归查找') and resource (Cadence Allegro PCB .brd files) scoped to a root directory. However, it does not distinguish itself from sibling parse_brd_file, so an agent may not immediately know which one to choose.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit when-to-use or when-not guidance. The description describes the operation but mentions no alternatives, prerequisites, or conditions that would select this tool over siblings like parse_brd_file.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
generate_schematic_dsnB
基于组件与网络清单生成 OrCAD Capture 兼容的简化 .DSN 工程文本(纯 XML)。适合作为 AI 原理图设计的中间产物,再导入 Capture 进行后处理。
| Name | Required | Description | Default |
|---|---|---|---|
| nets | Yes | 网络列表,每项 {name, nodes: [refdes,...]} | |
| title | No | 原理图标题 | AI-Generated Schematic |
| save_path | No | 保存路径 | |
| components | Yes | 组件列表,每项 {ref, value, x?, y?} | |
| project_name | No | 项目名称 | ai_design |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It usefully discloses the output medium and format (simplified .DSN as pure XML text), but does not state whether a file is actually written to the save_path, whether the operation is side-effecting or reversible, or any validation/error behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tightly written sentences with the core action (generate a .DSN XML from components/nets) front-loaded and the workflow role following. No filler, though it could be marginally tighter.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 5-parameter generation tool with no annotations and no output schema, the description covers the output format and workflow role but omits return/side-effect details (file writing via save_path) and any failure conditions, leaving gaps an agent must resolve by guessing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents nets, components, title, project_name, and save_path. The description adds no parameter-level meaning beyond that, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource: generating an OrCAD Capture-compatible simplified .DSN project (pure XML) from a component and net list. This is concrete enough to separate it from siblings like generate_spice_netlist and netlist_to_allegro, though it never names them explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives implied context — useful as an intermediate artifact for AI schematic design that is later imported into Capture for post-processing — which tells the agent roughly when this fits in a workflow. But there are no explicit when-not-to-use conditions or named alternatives versus the many other generation/netlist siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
generate_spice_netlistC
基于模板 (rc_lowpass / rc_highpass / rlc_bandpass / voltage_divider / diode_rectifier / rc_step_response) 或直接 DSL 生成 PSpice / ngspice 兼容的电路网表,并保存到指定路径。
| Name | Required | Description | Default |
|---|---|---|---|
| template | No | 模板名称,可选: rc_lowpass, rc_highpass, rlc_bandpass, voltage_divider, diode_rectifier, rc_step_response | |
| save_path | No | 保存路径,默认 ./ai_netlist.cir。 | |
| custom_dsl | No | 如果提供,优先使用此自定义 DSL 文本(类 SPICE 语法)。 | |
| parameters | No | 模板参数 (vin, freq, rval, cval, lval, r1, r2, rload, step, tstop)。 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full behavioral burden. It states the output is a saved netlist file, implying a write/mutation, but does not disclose overwrite behavior, permissions, validation failures, or what happens on error.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with the verb first. The embedded template list is somewhat redundant with the schema but remains compact and readable.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a file-generating tool with no annotations and no output schema, the description should explain the return value or success/failure behavior and file-write semantics. It omits all of this, leaving an agent unsure what to expect after invoking the tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all four parameters including template names, save_path default, custom_dsl precedence, and parameter keys. The description adds only a duplicate template list and no extra syntax or format details, matching the baseline of 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (generate) and resource (PSpice/ngspice-compatible circuit netlist) and lists template options. It implicitly distinguishes from parse_circuit_dsl and run_circuit_simulation by focusing on netlist generation, but does not explicitly contrast with siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Mentions that generation can be template-based or DSL-based, but gives no guidance on when to choose this tool over alternatives like parse_circuit_dsl or run_circuit_simulation, nor any prerequisites or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_simulation_templatesB
列出所有可用的电路仿真模板及默认参数,方便 AI 选型。
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. It implies a read-only listing but never states that it is non-mutating, what the return payload looks like (no output schema exists), or whether templates are user-scoped — a significant gap for a tool the agent must interpret the output of.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence naming the resource and its contents, with no redundancy. The trailing '方便 AI 选型' clause is mild padding but harmless.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-param discovery tool this covers the essentials, but with no annotations and no output schema the description should say more about what a '模板' entry contains and how the agent should use default parameters downstream. Adequate but with clear gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, which is the baseline-4 case; there are no parameter semantics to document. The description correctly implies no filtering is needed, matching the empty schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('列出') and resource ('电路仿真模板及默认参数'), so the agent knows this is a discovery/enumeration tool rather than a parser or runner like its siblings. It does not explicitly name a sibling to contrast against, so it falls short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'方便 AI 选型' gestures at the usage context — call this to discover templates before choosing one — but gives no explicit when/when-not or a named alternative such as run_circuit_simulation. Usage is only implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
netlist_to_allegroA
把 SPICE 网表转换成 Allegro netin 接受的简化物理网表 (.tel 风格)。适合 netin 工具的预处理步骤。
| Name | Required | Description | Default |
|---|---|---|---|
| save_path | No | 保存路径 | |
| spice_netlist | Yes | SPICE 网表文本 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. It discloses the output format (.tel style) but not whether the operation writes files, side effects, error behavior, permissions, or return semantics; for a conversion tool this is a significant gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two compact sentences: the first states the conversion and output format; the second gives the netin-preprocessing use case. No redundant text.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a two-parameter conversion tool with full schema coverage and no output schema, the description provides essential input/output context and usage. It could mention save_path behavior or return format, but the core is complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so both parameters are already documented in the schema. The description adds no parameter-level meaning, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States conversion from a SPICE netlist to an Allegro netin-compatible simplified physical netlist (.tel style), giving a clear verb and resource. It does not explicitly contrast with sibling tools such as generate_spice_netlist, though the netin preprocessing context is specific.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Says it is suitable as a preprocessing step for the netin tool, giving clear context for when to use it. No explicit exclusions or alternative tools are named.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
parse_brd_fileA
从 .brd 文件中提取可读字符串片段,作为 PCB 设计的轻量级上下文(层、器件、网络、规则等)。适合作为 AI 摘要的输入,不能替代完整 Allegro DB 解析。
| Name | Required | Description | Default |
|---|---|---|---|
| brd_path | Yes | .brd 文件绝对路径。 | |
| max_bytes | No | 读取文件前多少字节做文本扫描,默认 1MB。 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so the description carries the full disclosure burden. It usefully signals that output is a lossy, lightweight extraction rather than a complete parse, but says nothing about failure modes, encoding, or how the string scan behaves on truncated input.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two compact sentences with no filler; the core purpose is front-loaded and the limitation follows. Efficient and appropriately sized.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only parsing tool with no output schema, the description conveys what is extracted and the key caveat that it is lossy. It could say more about the shape of the returned fragments, but nothing essential to correct invocation is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so brd_path and max_bytes are already documented in the schema. The description's mention of layers/components/nets is about extracted content, not about parameter meaning, so it adds nothing beyond the structured fields. Baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb (提取/extract) and resource (.brd file), and enumerates the payload (layers, components, nets, rules). It distinguishes itself from parse_circuit_dsl by resource type, though it never names that sibling explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives a clear intended context (input for AI summarization) and a boundary condition ('does not replace full Allegro DB parsing'), which functions as a when-not. It stops short of naming alternative tools to pick instead when a full parse is needed.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
parse_circuit_dslB
把类 SPICE DSL 文本解析为结构化数据 (组件清单、节点、控制指令),便于 AI 理解电路结构。
| Name | Required | Description | Default |
|---|---|---|---|
| dsl | Yes | 电路 DSL 文本。 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It discloses the transformation is read-only in effect and names the parsed categories, but says nothing about behavior on malformed/invalid DSL, error signaling, or the exact structure returned. It is adequate but not rich.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single compact sentence, front-loading the verb and resource before the output detail. Nothing is wasted, though it could be slightly more structured given the parse/output framing.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema exists, so the description should carry return-value information; it does so only briefly by naming component list, nodes, and control directives. It omits error handling and the concrete output structure an agent would need to consume the result reliably.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% with a single parameter, so the schema already documents the input. The description adds only the format hint 'SPICE-like DSL text', which the name and schema largely convey. Baseline 3 applies when the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (parse) and resource (SPICE-like DSL text) plus the output shape (component list, nodes, control directives). This is clear and concrete, but it does not differentiate itself from the sibling parser parse_brd_file, which an agent could plausibly confuse it with.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives such as parse_brd_file or generate_spice_netlist. The purpose implies a parsing context, but there are no conditions, prerequisites, or exclusions stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
run_circuit_simulationA
执行电路仿真。自动选择后端:1) 找到 pspice.exe 就用 PSpice (Cadence 默认需 license);2) 否则尝试 ngspice CLI;3) 都没有就只返回网表 + 安装提示。返回 measurements (峰值/平均/RMS) 与 trace 名称。
| Name | Required | Description | Default |
|---|---|---|---|
| netlist | Yes | SPICE 网表文本,包含 .TRAN / .AC / .DC / .OP 等控制指令。 | |
| analysis | No | 分析类型: TRAN / AC / DC / OP,默认 TRAN。 | TRAN |
| work_dir | No | 工作目录,默认临时目录。 | |
| prefer_pspice | No | 是否优先用 PSpice.exe (Cadence license 可用时)。默认 true。 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden and does well: it discloses the backend fallback chain, the Cadence license dependency, the degraded netlist-only outcome when neither simulator exists, and the returned measurements (peak/average/RMS) plus trace names. It stops short of covering runtime limits, file side effects in work_dir, or failure/error semantics.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loads the core action, then enumerates backend behavior in a compact numbered sequence, and closes with the return payload. Dense but waste-free; could be tightened only marginally.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema exists, and the description compensates by stating the return values (measurements and trace names) and the fallback return case. Combined with the license and backend caveats, an agent has enough to call it correctly, though side effects (written netlist files) and error handling remain unspecified.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all four parameters (netlist, analysis, work_dir, prefer_pspice) are already documented in the schema. The description adds no format/syntax detail beyond noting the license precondition for prefer_pspice, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('执行电路仿真' / run circuit simulation) and immediately differentiates itself from siblings like generate_spice_netlist by describing what happens to the netlist rather than how to produce one. The three-step backend narrative makes its exact behavior identifiable without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives clear operational context via the ordered backend-selection logic (PSpice → ngspice → netlist-only fallback), which tells an agent what will happen and when a license is required. It does not, however, name alternative sibling tools or state explicit conditions for preferring this tool over netlist generation/parsing tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
safe_batch_commandsA
返回 allegro_batch 的白名单命令列表(无需 GUI license 即可使用的安全子命令)。
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. It does add real value by disclosing that the listed subcommands are the whitelisted/safe ones usable without a GUI license, but it says nothing about the return shape, ordering, or whether the result is static.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence that states the return value and the key qualifier with no filler. Nothing needs trimming and nothing important is buried.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a trivial no-input, no-output-schema listing tool, the description covers what is returned and the safety qualifier. The main omission is any hint about the size or format of the returned list, and the failure to reference the sibling command-listing tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so there are no parameter semantics to document; the baseline for a 0-param tool is 4. Nothing in the description misleads about inputs.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb (返回) and resource (allegro_batch 的白名单命令列表), and qualifies scope with the safe-subcommand/no-GUI-license clause. It is clear what the tool returns, but it does not explicitly distinguish itself from the sibling allegro_batch_commands, which an agent would reasonably confuse with this one.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied via the '无需 GUI license 即可使用的安全子命令' qualifier, which hints at the condition for wanting this list. There is no explicit when-to-use vs. when-not-to-use statement and no mention of the near-identical sibling allegro_batch_commands, leaving the routing decision to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
13 tool updates
v0.1.0- First observed
allegro_batch_commands - First observed
allegro_batch_run - First observed
cadence_env_vars - First observed
cadence_probe - First observed
find_brd_files - First observed
generate_schematic_dsn - First observed
generate_spice_netlist - First observed
list_simulation_templates - First observed
netlist_to_allegro - First observed
parse_brd_file - First observed
parse_circuit_dsl - First observed
run_circuit_simulation - First observed
safe_batch_commands
TDQS
Scored across 13 tools
Most tools target distinct actions/resources (parse, find, run, generate), but cadence_probe vs cadence_env_vars and allegro_batch_commands vs safe_batch_commands have overlapping diagnostic/listing purposes. Descriptions clarify the differences, so an agent can usually disambiguate.
All names use snake_case, which is consistent. However, the set mixes verb_noun patterns (parse_circuit_dsl, generate_spice_netlist) with noun phrases (cadence_probe, allegro_batch_commands), so it is not a perfect single convention.
13 tools is well within the ideal 3-15 range for a specialized EDA assistant. Each tool appears to cover a distinct step in the Cadence workflow, from discovery to simulation.
The surface covers environment probing, file discovery, DSL/netlist generation, batch execution, and simulation. Minor gaps remain around direct .brd mutation and deeper Allegro database editing, but core AI-assisted workflows are supported.
Maintenance
Related MCP Connectors
Verified KiCad footprints, symbols & 3D models for AI agents. No signup, CC-BY-4.0, quality-gated.
Search and review real KiCad and Altium PCB designs: schematics, BOMs, netlists, DRC/ERC.
Electronic component datasheets for AI agents — specs, pinouts, package data on demand.
Protocol-native energy infrastructure orchestration for AI data centers. Provides 46 MCP tools across 8 grid protocols (IEC-61850, DNP3, Modbus, OCPP, OpenADR, IEEE 2030.5, IEC 60870-5-104, ICCP) with 5 core API primitives: connect, dispatch, settle, comply, and intel. Enables AI agents to programmatically interact with substations, grid interfaces, and energy assets for real-time workload-grid coordination.
Related MCP Servers
- AlicenseNot gradedqualityCmaintenanceEnables natural language interaction with KiCad projects, schematics, and PCBs, supporting project management, design rule checking, netlist extraction, and datasheet RAG search.2MIT
- AlicenseBqualityBmaintenanceEnables AI assistants to design PCBs in KiCAD through natural language, with transactional preview-verify-commit workflow, undo/redo, and an engineering knowledge base.141MIT
- AlicenseNot gradedqualityDmaintenanceEnables AI assistants like Claude to interact with KiCAD for PCB design automation, providing comprehensive tool schemas and real-time project state access.62 npm2MIT
- AlicenseNot gradedqualityBmaintenanceEnables AI assistants to interact with KiCAD for PCB design automation. Users can design PCBs using natural language, including component placement, routing, checks, and export.62 npmMIT