The Universal Netlist MCP Server gives AI agents the tools to understand and analyze your electrical schematics, for powerful and comprehensive design reviews through natural conversations.
It reads Cadence, Altium, and KiCad design files directly on macOS, Linux, and Windows, with no Cadence or Altium installation and no EDA license required.
| Format | Input Files | Description |
|---|---|---|
| Cadence (OrCAD / CIS) | .DSN schematic |
Reads the binary schematic directly, including each part's own Do Not Stuff state and the selectable CIS BOM design variants. A design saved in an older Capture format (Library stream version below 3) is listed as unsupported and refused with a message naming its version; re-save it in a newer Capture to read it |
| Altium Designer | .SchDoc |
Altium schematic documents, discovered via .PrjPcb project files; sheets are joined through ports, sheet entries and buses under the project's net identifier scope, with selectable design variants (Not Fitted rows, alternate parts, and parameter overrides) |
| KiCad | .kicad_pro (or root .kicad_sch) |
Reads a committed .net export, or else the schematics themselves (KiCad 6 to 10, no KiCad install needed), with kicad-cli as the last resort; then applies a selected design variant from the schematic's own instance blocks. See the KiCad schematic reader |
| Universal Netlist Format | .netlist.json |
The open JSON format for netlists |
Installing takes two steps: the universal-netlist binary, then the plugin for your agent. The plugin connects the MCP server to the agent, so there is no configuration to write.
macOS / Linux:
curl -fsSL https://raw.githubusercontent.com/IntelligentElectron/universal-netlist/main/install.sh | bashWindows (PowerShell):
irm https://raw.githubusercontent.com/IntelligentElectron/universal-netlist/main/install.ps1 | iexThe installer provides:
- No dependencies: a standalone binary, with no Node.js required
- Auto-updates: the binary checks for updates on startup;
universal-netlist updateupdates it on demand - Signed binaries: macOS binaries are notarized by Apple
It places the binary in the bin/ folder of ~/Library/Application Support/universal-netlist/ (macOS), ~/.local/share/universal-netlist/ (Linux) or %LOCALAPPDATA%\universal-netlist\ (Windows), and adds that folder to your PATH in both your shell's startup file and its login profile, so apps started outside a terminal, such as the Claude desktop app, find it too. Restart your agent afterwards. If you installed before the login-profile entry existed, run the installer again: it adds only what is missing.
Install with npm instead
npm install -g @intelligentelectron/universal-netlistRequires Node.js 22.15+. Update with npm update -g @intelligentelectron/universal-netlist.
Install the binary one way only: the plugin runs the first universal-netlist on your PATH.
/plugin marketplace add IntelligentElectron/universal-netlist
/plugin install universal-netlist@universal-netlist
Local sessions in the Code tab of the Claude desktop app use Claude Code's plugins, so the server is available there too.
codex plugin marketplace add IntelligentElectron/universal-netlist --sparse .agents/plugins --sparse plugins
codex plugin add universal-netlist@universal-netlistThe --sparse paths fetch only the plugin; Codex otherwise clones the whole repository, test fixtures included, which takes minutes. The plugin works in the Codex CLI and the Codex app.
Then ask the agent to review a schematic, trace a net, or check a design.
Cursor
Open Customize, choose Browse Marketplace, then Add Marketplace → Import from GitHub. Enter IntelligentElectron/universal-netlist and add the universal-netlist plugin.
GitHub Copilot CLI
copilot plugin marketplace add IntelligentElectron/universal-netlist
copilot plugin install universal-netlist@universal-netlistTurn the plugin on for everyone who clones a project
Add this to the project's .claude/settings.json:
{
"extraKnownMarketplaces": {
"universal-netlist": {
"source": { "source": "github", "repo": "IntelligentElectron/universal-netlist" }
}
},
"enabledPlugins": { "universal-netlist@universal-netlist": true }
}and this to the project's .codex/config.toml:
[marketplaces.universal-netlist]
source_type = "git"
source = "https://github.com/IntelligentElectron/universal-netlist.git"
sparse_paths = [".agents/plugins", "plugins"]
[plugins."universal-netlist@universal-netlist"]
enabled = trueEach person still installs the binary once.
Moving from a server you registered by hand
If you registered the server yourself before, remove that registration so the agent does not run two copies:
claude mcp remove --scope user universal-netlistcodex mcp remove universal-netlistThe command line, for agents without MCP
Every MCP tool is also a shell command, for an agent in a sandbox or container that cannot connect an MCP server:
universal-netlist search_nets board.DSN --pattern '^VCC'The plugin carries a skill that teaches an agent those commands, their flags and exit codes, and the parse cache; the agent uses it only when the MCP server is not connected. Agents that read Agent Skills can install the skill alone through the GitHub CLI:
gh skill install IntelligentElectron/universal-netlist universal-netlist --agent github-copilot --scope user--agent takes opencode, amp, goose and the other names gh skill install --help lists. See docs/cli.md for the command line itself.
The server and its command line can emit OpenTelemetry traces, metrics, and logs for every tool call and command, which report what is used, how long they take, and what fails. Any OTLP-compatible backend receives them (an OpenTelemetry Collector, Jaeger, Tempo, Prometheus, Honeycomb, Datadog, or a managed cloud tracing service).
OpenTelemetry is disabled by default and is enabled and configured through the standard OTEL_* environment variables, with no code changes. To keep telemetry on your own disk instead, set UNIVERSAL_NETLIST_OTEL_DIR.
See Observability (OpenTelemetry) for setup, configuration, and the full list of emitted spans, metrics, and logs.
See docs/ for API documentation, response schemas and supported platforms, docs/cli.md for the binary's command line, docs/library.md for calling the tools in-process from your own code, docs/parse-cache.md for how parses are reused between queries, and docs/password-protected-designs.md for OrCAD designs saved with a password.
See CONTRIBUTING.md for development guidelines.
The server runs on your machine and sends the author nothing, and keeps no record of its use unless you turn telemetry on. The full policy is PRIVACY.md.
This project is hosted on GitHub under the IntelligentElectron organization.
Universal Netlist MCP Server and the universal netlist open standard are original works by Valentino Zegna.
The Cadence DSN binary parser is a TypeScript port of OpenOrCadParser by Dominik Wernberger. Their work reverse-engineering the OrCAD binary format made direct schematic parsing possible.
Apache License 2.0 - see LICENSE