Skip to main content
Glama
Universal Netlist MCP Server

Universal Netlist MCP Server

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault

No arguments

Instructions

Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.

This server publishes no instructions, or was last inspected before Glama recorded them.

Capabilities

Features and capabilities supported by this server

Protocol revision2025-11-25

CapabilityDetails
tools
{
  "listChanged": true
}

Tools

Functions exposed to the LLM to take actions

NameDescription
list_designsA

List the design projects in a directory, one path each: a .DSN, a .PrjPcb, a .kicad_pro, or a Universal Netlist .netlist.json. That path is what every other tool takes; use this tool instead of searching the filesystem.

path is optional. Omitted or blank, it searches the server's working directory, so check root for the directory actually searched. A misspelled argument name is refused with an error naming it. A result cut short by max_results says so in its notes.

design_variants lists each design's builds: its native variants (Altium, Cadence CIS, KiCad; fabrication where the vendor marks one a build assembly), or <Default> alone when it records none. A design with variants requires design_variant on every query, and <Default> is refused on it.

Cadence: query the .DSN; it carries properties, connectivity, and CIS stuffing. KiCad: query the .kicad_pro; a committed .net export is read directly, otherwise the schematics are read themselves (no KiCad install needed), with kicad-cli as the last resort; a design none of them can read is reported in error.

A design marked unsupported: true cannot be read (for example an OrCAD design saved in an older Capture format); error says why and what to do, and every query on it returns that error, so do not query it.

list_componentsA

List components of a specific type in a design. The type is the refdes prefix, matched whole and case-insensitively: "u" gives U1 and U2 but NOT USB1, whose prefix is USB, and "tp" gives the test points. Asking for a partial prefix returns nothing rather than everything starting with it, so if a part you expected is missing, look for it under its own prefix. Identical components are grouped for compact output: parts share a group only when their MPN, description, comment and value all agree, so every field a group reports is true of every part in it. component_notes names the parts with no MPN. If no components match, the error lists the prefixes the same query would return, and names apart any prefix whose components are all DNS. A prefix whose components are all DNS returns an empty list with a note saying so; pass include_dns=true to list them.

list_netsA

List all net names in a design, sorted alphabetically. The result can be large. Prefer search_nets for targeted queries.

search_netsA

Search for nets matching a regex pattern. Matching is case-insensitive by default. Returns sorted results keyed by design name, with a notes field when nothing matches. KiCad nets declared inside a hierarchical sheet are sheet-path-prefixed (e.g. a "D0" data line on the Peripherals sheet is named "/Peripherals/D0", not "/D0"), so prefer unanchored patterns like "D0" over "^/D0$" or you may miss bussed/hierarchical nets. A name with leading or trailing whitespace also matches as trimmed, so "^SIG$" finds "SIG ". Rejects patterns that match all items; use list_nets for full results.

search_components_by_refdesA

Search for components by refdes pattern. Matching is case-insensitive. Identical components are grouped for compact output, on MPN, description, comment and value together, so every field a group reports is true of every part in it. component_notes names the parts with no MPN. A notes field is returned when nothing matches. Rejects patterns that match all items; use list_components for full results.

search_components_by_mpnA

Search for components by MPN (Manufacturer Part Number) pattern. Not all netlists include MPN data; if unavailable, fall back to search_components_by_refdes or search_components_by_description, or ask the user for a BOM. component_notes names the parts with no MPN. Rejects patterns that match all items; use list_components for full results.

search_components_by_descriptionA

Search for components by description pattern. Not all netlists include description data; if unavailable, fall back to search_components_by_refdes or search_components_by_mpn, or ask the user for a BOM. component_notes names the parts with no MPN. Rejects patterns that match all items; use list_components for full results.

query_xnet_by_net_nameA

Get full XNET (Extended Net) connectivity for a net. Traces through series components, so the result is the whole electrical node rather than the one net; circuit_hash identifies unique topologies. Traversal stops at power and ground nets, recognised by name (VCC*, VDD*, 3V3, GND*, VSS*, ...) or by carrying more than 40 pins. A rail named outside that, such as VDIO_LMS, is traversed like a signal, so a query that pulls up to one returns its whole pull-up network; visited_nets names every net the result crossed. skip_types leaves series passives out; skip_types=['C','L','R'] removes all three from the result. Rejects ground nets (GND, AGND, DGND, etc.) with an error. A name that matches no net exactly is matched ignoring leading and trailing whitespace, then as the 31-character name a PSTWRITER 16.6 Allegro export gives a longer net; notes says when that happened, and a name that could mean several nets returns them. component_notes names the parts with no MPN. If the net is not found, search_nets finds the name.

query_xnet_by_pin_nameA

Get full XNET connectivity starting from a component pin, named REFDES.PIN (e.g. U1.A5, R10.1). Traces through series components, so the result is the whole electrical node; circuit_hash identifies unique topologies. Traversal stops at power and ground nets, recognised by name (VCC*, VDD*, 3V3, GND*, VSS*, ...) or by carrying more than 40 pins; a rail named outside that is traversed like a signal, and visited_nets names every net the result crossed. skip_types leaves series passives out, for example skip_types=['C','L','R']. A pin on no net reads as the net NC and returns an empty result. component_notes names the parts with no MPN. Rejects pins connected to ground nets (GND, AGND, DGND, etc.) with an error.

query_componentA

Get full component details including all pin connections. Refdes lookup is case-insensitive. Returns MPN, description, value, and pin-to-net mappings when available. Each pin maps to its net name, or to {name, net} where the pin has a function name that differs from its number. A pin on no net reads as the net "NC", a marker and not a queryable net. If the refdes is not found, search_components_by_refdes finds it; errors include guidance and suggestions.

run_ercA

Run electrical rule checks (ERC) on a design's netlist and return findings grouped by severity (errors, warnings) then rule id. Full output, never truncated. Rules: net.single_pin (error: a net with one functional pin and no test point), net.testpoint_orphan (error: a net touched only by test points), net.testpoint_stub (warning: one functional pin plus test point(s)), net.whitespace_in_name (warning: a net name with leading or trailing whitespace; for Cadence, the Allegro netlister trims it), net.whitespace_name_collision (error: separate nets whose names read the same once trimmed, such as " SIG" and SIG), net.unnamed (warning: an auto-generated net name on a real 2+-pin net). Test points are identified by the TP refdes prefix. Findings key each net to its REFDES.PIN endpoints (always arrays); net.unnamed lists bare net names. checked lists the rules that ran, so a rule absent from the findings found nothing, and skipped counts the parts left out of the run, such as Do-Not-Stuff ones. Use include_rules/exclude_rules (rule ids) to scope the run and include_dns to count Do-Not-Stuff parts; an unknown rule id returns an error rather than silently checking nothing. Unconnected pins without a no-connect symbol are NOT checked: the parsers cannot reliably tell them apart from intentional no-connects.

Prompts

Interactive templates invoked by user choice

NameDescription

No prompts

Resources

Contextual data attached and managed by the client

NameDescription

No resources

TDQS

A4.5/5.0

Scored across 11 tools

Disambiguation5/5

The set is deliberately pairwise: list vs search for nets and components, and query_xnet_by_net_name vs query_xnet_by_pin_name differ only in their input anchor. Each description explicitly steers callers (e.g. 'Rejects patterns that match all items; use list_components for full results', 'if the refdes is not found, search_components_by_refdes finds it'), so the boundaries are unambiguous. The three search_components_by_* variants are cleanly separated by field, with fallback guidance when a field is absent.

Naming Consistency4/5

All names are snake_case verb_noun with a consistent suffix grammar (_by_refdes, _by_mpn, _by_description, _by_net_name, _by_pin_name). The only wrinkle is three retrieval verbs (list_ for enumeration, search_ for filtered lookup, query_ for detail fetch), which is semantically motivated but not a single rigid pattern, and query_component sits slightly apart from the search_components_* family.

Tool Count5/5

Eleven tools is well within the sweet spot and each one maps to a distinct question an agent would ask of a netlist (discover designs, enumerate/search nets, enumerate/search/detail components, trace XNETs from either end, run ERC). No tool looks redundant padding, and no core operation is split across multiple near-duplicates.

Completeness4/5

The surface covers the full read-only analysis lifecycle: design discovery and variant handling, net and component enumeration and search, detail lookup, connectivity tracing, and ERC. Gaps are minor: there is no direct net-detail tool (net info must be reached via search_nets or an XNET query) and no BOM/export or differential-pair/bus-level query, though agents can approximate these with existing tools.

Maintenance

ActivityActive
ResponsivenessSyncing