Skip to main content
Glama
chaosAIman

CadenceAI MCP

by chaosAIman

CadenceAI MCP — Cadence EDA Tools for AI Assistants

License: MIT Python 3.10+ MCP Tools

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 .brd files, parse text assets from the Allegro binary DB

Batch CLI

Invoke 60+ safe allegro_batch subcommands (artwork, netin, dump_libraries…)

Schematics

Generate SPICE netlists, .DSN project XML, Allegro physical 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

cadence_probe

Detect SPB install, license, batch commands

cadence_env_vars

Dump CDSROOT / CDS_LIC_FILE / LM_LICENSE_FILE

allegro_batch_commands

List all available Allegro batch subcommands

safe_batch_commands

List the 56 commands safe to invoke

PCB Design

Tool

Purpose

find_brd_files

Recursively find .brd files with metadata

parse_brd_file

Extract readable strings from binary .brd

allegro_batch_run

Run one batch subcommand (timeout + allow-list)

Schematic & Netlist

Tool

Purpose

generate_spice_netlist

From template or DSL → SPICE netlist file

parse_circuit_dsl

Decompose DSL into components / directives

generate_schematic_dsn

OrCAD Capture-compatible .DSN XML

netlist_to_allegro

SPICE → Allegro tel physical netlist

Simulation

Tool

Purpose

list_simulation_templates

Enumerate 6 circuit templates (RC, RLC, diode, ...)

run_circuit_simulation

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 netlist

Three independent modules + one MCP server bootstrap. No monolithic controller, no hidden state beyond an env cache.


🧪 Testing

python tests/test_all.py

Covers 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.py

Expected 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 Allegro

Output 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.exe -b

PSpice on PATH + valid license

2

ngspice -b

ngspice on PATH (download separately)

3

analytical-rc

Built-in numpy solver for RC / divider / step (no deps)

4

analytical-divider

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; -b mode 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.exe on PATH. (On some networks SourceForge blocks direct downloads; try MSYS2 mingw-w64-ucrt-x86_64-ngspice instead.)

  • 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.run with hard timeout.

  • allegro_batch_run enforces a 56-command allow-list unless allow_unsafe=true is 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

artwork

Generate Gerber photoplot files

netin

Import netlist into board

netrev

Forward-annotate schematic changes

report

Generate design reports (DRC, BOM, etc.)

dump_libraries

Extract padstacks, symbols, devices from board

brd2dml

Convert .brd to DML (Design Markup Language)

convert_gerber

Convert Gerber format versions

ipc2581_out/in

IPC-2581 manufacturing data exchange

odbpp_out/in

ODB++ manufacturing data exchange

dfmwebextract

DFM web extraction for fabrication

perf_reports

Performance / signal-integrity reports

qvextract

Quantus verification extraction

placement

Component placement (constraint-driven)

swap

Component / pin swap

Run allegro_batch.exe help on your machine to get the full list.


🤝 Contributing

PRs should:

  1. Run python tests/test_all.py cleanly (no failures).

  2. Add tests for any new tool.

  3. Update this README's tool table.

  4. Keep the allow-list curated — every batch command added must be safe.


📄 License

MIT — see LICENSE.


CadenceAI MCP is the first combined schematic + PCB + simulation MCP for the Cadence SPB toolchain.

Available Tools

13 tools
allegro_batch_commandsA

列出 Allegro batch 支持的所有命令 (75+ 条).可用于了解 Allegro 批处理能力,挑选合适的工具做 Gerber 转换、网表导入、库导出、光绘生成等。

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.8/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters4/5

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.

Purpose4/5

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.

Usage Guidelines4/5

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+ 安全命令) 和超时保护,默认禁止高危操作。

ParametersJSON Schema
NameRequiredDescriptionDefault
argsNo传给子命令的参数列表,例如 ['-l','my_board.brd']。
timeoutNo超时秒数,默认 60。
subcommandYesallegro_batch 子命令,例如 'artwork' / 'netin' / 'report'。可用列表见 allegro_batch_commands。
allow_unsafeNo是否允许不在白名单中的子命令。默认 false。

TDQS

B3.4/5.0
Behavior3/5

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.

Conciseness4/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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 / 路径配置问题。

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.6/5.0
Behavior3/5

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.

Conciseness4/5

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.

Completeness4/5

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.

Parameters4/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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 批处理命令清单等。这是新会话的第一调用,了解环境。

ParametersJSON Schema
NameRequiredDescriptionDefault
cds_rootNo强制指定 Cadence SPB 根目录;默认自动搜索 C:/Cadence 与 $CDSROOT。

TDQS

A3.6/5.0
Behavior3/5

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.

Conciseness4/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines4/5

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)。返回带元数据 (大小、估计层数、器件数) 的列表。

ParametersJSON Schema
NameRequiredDescriptionDefault
globNo匹配模式,默认 *.brd。*.brd
rootYes搜索根目录绝对路径。
max_resultsNo最大返回数量,默认 50。

TDQS

B3.4/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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 进行后处理。

ParametersJSON Schema
NameRequiredDescriptionDefault
netsYes网络列表,每项 {name, nodes: [refdes,...]}
titleNo原理图标题AI-Generated Schematic
save_pathNo保存路径
componentsYes组件列表,每项 {ref, value, x?, y?}
project_nameNo项目名称ai_design

TDQS

B3.4/5.0
Behavior3/5

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.

Conciseness4/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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 兼容的电路网表,并保存到指定路径。

ParametersJSON Schema
NameRequiredDescriptionDefault
templateNo模板名称,可选: rc_lowpass, rc_highpass, rlc_bandpass, voltage_divider, diode_rectifier, rc_step_response
save_pathNo保存路径,默认 ./ai_netlist.cir。
custom_dslNo如果提供,优先使用此自定义 DSL 文本(类 SPICE 语法)。
parametersNo模板参数 (vin, freq, rval, cval, lval, r1, r2, rload, step, tstop)。

TDQS

C2.9/5.0
Behavior2/5

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.

Conciseness4/5

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.

Completeness2/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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 选型。

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3.3/5.0
Behavior2/5

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.

Conciseness4/5

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.

Completeness3/5

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.

Parameters4/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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 工具的预处理步骤。

ParametersJSON Schema
NameRequiredDescriptionDefault
save_pathNo保存路径
spice_netlistYesSPICE 网表文本

TDQS

A3.6/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines4/5

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 解析。

ParametersJSON Schema
NameRequiredDescriptionDefault
brd_pathYes.brd 文件绝对路径。
max_bytesNo读取文件前多少字节做文本扫描,默认 1MB。

TDQS

A3.6/5.0
Behavior3/5

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.

Conciseness4/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines4/5

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 理解电路结构。

ParametersJSON Schema
NameRequiredDescriptionDefault
dslYes电路 DSL 文本。

TDQS

B3.2/5.0
Behavior3/5

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.

Conciseness4/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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 名称。

ParametersJSON Schema
NameRequiredDescriptionDefault
netlistYesSPICE 网表文本,包含 .TRAN / .AC / .DC / .OP 等控制指令。
analysisNo分析类型: TRAN / AC / DC / OP,默认 TRAN。TRAN
work_dirNo工作目录,默认临时目录。
prefer_pspiceNo是否优先用 PSpice.exe (Cadence license 可用时)。默认 true。

TDQS

A4.1/5.0
Behavior4/5

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.

Conciseness4/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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 即可使用的安全子命令)。

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.7/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters4/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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.

  1. 13 tool updatesv0.1.0
    • First observedallegro_batch_commands
    • First observedallegro_batch_run
    • First observedcadence_env_vars
    • First observedcadence_probe
    • First observedfind_brd_files
    • First observedgenerate_schematic_dsn
    • First observedgenerate_spice_netlist
    • First observedlist_simulation_templates
    • First observednetlist_to_allegro
    • First observedparse_brd_file
    • First observedparse_circuit_dsl
    • First observedrun_circuit_simulation
    • First observedsafe_batch_commands

TDQS

A3.6/5.0

Scored across 13 tools

Disambiguation4/5

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.

Naming Consistency4/5

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.

Tool Count5/5

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.

Completeness4/5

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

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    C
    maintenance
    Enables natural language interaction with KiCad projects, schematics, and PCBs, supporting project management, design rule checking, netlist extraction, and datasheet RAG search.
    2
    MIT
  • A
    license
    B
    quality
    B
    maintenance
    Enables AI assistants to design PCBs in KiCAD through natural language, with transactional preview-verify-commit workflow, undo/redo, and an engineering knowledge base.
    14
    1
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    Enables AI assistants like Claude to interact with KiCAD for PCB design automation, providing comprehensive tool schemas and real-time project state access.
    62 npm
    2
    MIT
  • A
    license
    Not graded
    quality
    B
    maintenance
    Enables 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 npm
    MIT