Skip to main content
Glama
altium-monkey-mcp

altium-monkey-mcp

by wjakiela

altium-monkey-mcp

Read-only MCP server that lets AI assistants (Claude Code, Claude Desktop, VS Code, ...) inspect Altium Designer projects — schematics, netlist, BOM and PCB — on Linux, macOS or Windows, without Altium Designer installed.

It is a thin wrapper around altium-monkey, which parses the binary .SchDoc / .PcbDoc / .PrjPcb formats directly.

Tools

Tool

Description

list_projects

Find .PrjPcb projects under a directory

project_info

Sheet hierarchy, variants, project parameters, counts, compile diagnostics

search_components

Regex search over designator, value, footprint, description, parameters

get_component

Parameters, every pin with its net and what else is on that net, PCB placement

search_nets

Regex search over net names

get_net

All pins on a net + PCB routing stats (track length/width per layer, vias)

get_bom

Bill of materials, optionally per design variant, grouped

pcb_info

Board size, layer stackup, net classes, differential pairs, design rules

pcb_placement

Pick-and-place (X/Y, rotation, side)

components_near

Components within a radius of a given part

render_schematic

Render a sheet to SVG + PNG

render_pcb

Render selected PCB layers to SVG + PNG (cropped to the board)

export_netlist_json

Write the full compiled netlist to a JSON file

project accepts a .PrjPcb (recommended), .SchDoc, .PcbDoc, or a directory containing a project. Parsed designs are cached in memory and reloaded when any design file changes. Coordinates are reported in mm.

Related MCP server: KiCad MCP Server

Requirements

  • Python 3.12–3.14 (required by altium-monkey)

  • Inkscape on PATH — optional, only for PNG output of the render tools

Installation

git clone https://github.com/wjakiela/altium-monkey-mcp.git
cd altium-monkey-mcp
uv venv --python 3.12
uv pip install -e .

Claude Code (available in all projects)

claude mcp add --scope user altium -- "$PWD/.venv/bin/altium-monkey-mcp"

Claude Desktop / other clients

{
  "mcpServers": {
    "altium": {
      "command": "/absolute/path/to/altium-monkey-mcp/.venv/bin/altium-monkey-mcp"
    }
  }
}

Example prompts

  • "Which ESP32 pins are connected to the 32 kHz crystal, and what load capacitors are used?"

  • "List all parts on net V_BAT and how long the trace is on each layer."

  • "Render the bottom layer of the PCB and show me where Y1 sits."

  • "What clearance and width rules does the board use?"

Limitations

  • Read-only: the server never modifies design files.

  • Accuracy depends on altium-monkey; Linux support there is less tested than Windows.

  • Arc length is not included in routing length; polygons/planes are counted, not measured.

License

AGPL-3.0-or-later, because the project depends on altium-monkey (AGPL-3.0-or-later). Altium and Altium Designer are trademarks of Altium Limited; this project is not affiliated with Altium.

Available Tools

13 tools
components_nearB

PCB components whose centers lie within radius_mm of the given component (same and opposite side).

NameRequiredDescriptionDefault
projectYes
radius_mmNo
designatorYes

Output Schema

NameRequiredDescription
resultYes

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 behavioral burden. It usefully discloses a non-obvious trait — results span both the same and opposite board side — but says nothing about whether results are capped/ordered, permission requirements, or that the operation is a read-only query (only implied by the phrasing).

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 no filler, and the key scoping detail (both sides) is stated immediately. It is a sentence fragment without a leading verb, which costs a little immediate readability but wastes nothing.

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?

An output schema exists, so return values needn't be explained, and the core spatial semantics are covered. However, with zero annotation coverage and zero schema descriptions across three parameters, gaps remain around the unexplained 'project' argument and result-set behavior (limits, ordering, empty results).

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 0%, so the description must compensate. It does explain radius_mm as a distance from the given component and designator as the reference component, but the third parameter (project) is never mentioned and no units/default/format hints are given for the others.

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 names the specific resource (PCB components) and the precise retrieval criterion (centers within radius_mm of a given component), which is far more informative than the tool name alone. It does not explicitly contrast itself with siblings like search_components or pcb_placement, but the spatial-proximity semantics are unambiguous.

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: an agent can infer this is the tool for 'what is next to component X', but the description never says when to prefer it over search_components or get_component, nor any exclusions. No prerequisites or context requirements are stated.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

export_netlist_jsonA

Write the full compiled netlist (components, nets, terminals, hierarchy) as JSON to out_path.

NameRequiredDescriptionDefault
projectYes
out_pathYes

TDQS

A3.7/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries full behavioral burden; it does disclose that this is a write operation and enumerates exactly what gets written (components, nets, terminals, hierarchy). It does not state overwrite semantics, whether directories in out_path are created, error behavior on a bad path, or permission requirements, leaving meaningful gaps for a mutation tool.

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 sentence that front-loads the action and content, with zero filler. Nothing could be removed without losing information.

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 simple two-parameter export tool with no annotations and no output schema, the description covers purpose and written content but omits file-system behavior (overwrite, directory creation, error handling) and the meaning of the project parameter. Adequate but with clear gaps given the absence of structured behavioral metadata.

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 0%, so the description must compensate. It meaningfully clarifies out_path as the JSON destination, but the 'project' parameter is never mentioned and its role (project identifier/scope) is only inferable from sibling tools like list_projects.

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?

Precise verb ('Write'), resource ('full compiled netlist'), explicit scope (components, nets, terminals, hierarchy), format (JSON) and destination (out_path) all in one sentence. It is clearly distinguishable from the read-oriented siblings like get_net or search_nets, which retrieve fragments rather than exporting the whole netlist.

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?

The phrasing 'full compiled netlist' hints that export happens after compilation, and the tool's nature as the sole export utility implies when it applies. However, there is no explicit when-to-use vs when-not guidance, nor any mention of alternatives or prerequisites such as requiring the netlist to be compiled first.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_bomB

Bill of materials (optionally for a design variant). grouped=True merges identical parts.

NameRequiredDescriptionDefault
groupedNo
patternNo
projectYes
variantNo

Output Schema

NameRequiredDescription
resultYes

TDQS

B3/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description must carry the behavioral burden. It only discloses that grouped=True merges identical parts and that a design variant can be specified; it omits permissions, read-only nature, ordering, whether the BOM is live or cached, and other operational traits.

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?

The description is two short sentences with no wasted words, and the core purpose is front-loaded before the grouped behavior. Its terseness reflects under-specification rather than structural excess.

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 four-parameter tool with no annotations, the description is too sparse. Although an output schema exists so return values need not be described, the missing project and pattern semantics and absent sibling guidance leave the definition incomplete for correct invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must explain all four parameters. It partially explains variant and grouped, but the required project parameter and the pattern parameter are completely unaddressed, leaving significant semantic gaps.

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 clearly states that the tool returns a bill of materials, optionally scoped to a design variant, and explains that grouped=True merges identical parts. It identifies the resource and key behavior, though it does not explicitly differentiate itself from sibling tools such as search_components or get_component.

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?

The mention of an optional design variant implies when the variant parameter matters, and grouped=True describes one mode of use. However, there is no explicit guidance on when to use get_bom versus alternatives like search_components, get_component, or export_netlist_json.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_componentC

Component details: parameters, every pin with its net (and other parts on that net), and PCB placement.

NameRequiredDescriptionDefault
projectYes
designatorYes
all_parametersNo

TDQS

C2.7/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, and it does disclose the return content, including nested pin/net information. However, it does not explicitly state that the operation is read-only or describe permissions, failure behavior, or what all_parameters changes.

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 definition is a single compact sentence with no filler, and the key return content is front-loaded. It is slightly cryptic because the list of returned fields is packed together without structural cues.

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 tool with no annotations, no output schema, and 0% schema description coverage, the description is too thin. It lists some return fields but leaves all input parameters and usage context undocumented.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0% and the description does not explain any of the three parameters. It does not clarify that project and designator identify the component, nor does it explain the all_parameters flag; 'parameters' in the description appears to refer to returned component parameters instead.

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 names a specific resource and enumerates the returned content: component parameters, every pin with its net and other net-connected parts, and PCB placement. That is more precise than a tautology and distinguishes it from search tools, though it does not explicitly name sibling tools like search_components or pcb_placement.

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?

There is no explicit guidance about when to use get_component versus search_components, get_bom, or pcb_placement. Usage is only implied by the word 'details,' leaving the agent to infer that this is for fetching a single component's full record.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_netB

All pins on a net (designator, pin number/name, type, part value) and, if a PCB exists, routing stats: track length/width per layer, vias, pads.

NameRequiredDescriptionDefault
netYes
projectYes
include_routingNo

TDQS

B3.3/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 burden of behavioral disclosure and does well by listing the returned pin fields and the conditional PCB routing statistics. It stops short of covering error behavior, missing-net handling, or the effect of disabling routing details.

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?

The description is a single tightly packed sentence with no wasted text. The primary return content is front-loaded before the conditional PCB routing details.

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 description explains the return shape well for a tool with no output schema, but it is incomplete on input semantics: project and include_routing are not described. For a three-parameter tool with no annotations, this leaves an important gap.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate for all three parameters. It only implies the net parameter and vaguely gestures at routing behavior, while leaving project and include_routing unexplained.

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 clearly states that the tool retrieves all pins on a net and, when a PCB exists, routing statistics such as track length, width, vias, and pads. This is a specific resource and return scope, though it does not explicitly differentiate itself from the sibling search_nets tool.

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?

There is no explicit guidance on when to use this tool versus search_nets or other siblings. The description implies detail retrieval for a known net, but it does not state prerequisites, alternatives, or exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_projectsB

Find Altium projects (.PrjPcb) under a directory, with their sheets and PCB files.

NameRequiredDescriptionDefault
rootYes
max_depthNo

Output Schema

NameRequiredDescription
resultYes

TDQS

B3.2/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 disclosure burden. It does establish that this is a read-only discovery operation and that results include sheets and PCB files, but it is silent on recursion behavior, permissions, and whether the search is bounded or slow.

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 no filler; the resource and scope appear immediately. The compressed grammar ('Find ... with their sheets and PCB files') is slightly awkward but costs no reading effort.

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?

An output schema exists, so return shape need not be explained, and the description correctly signals what is returned. Still, for a two-parameter tool with zero annotation coverage, the undocumented recursion depth leaves a real gap an agent would have to guess at.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate. It only loosely conveys 'root' as 'a directory' and says nothing about 'max_depth' — a non-obvious recursion control with a default of 6 — leaving a behaviorally significant parameter undocumented in both places.

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?

Names a concrete verb ('Find') and a concrete resource ('Altium projects (.PrjPcb)') with a clear scope ('under a directory'), plus the payload returned (sheets and PCB files). It implicitly separates itself from project_info (detail lookup) but never names that sibling, so the differentiation is inferential rather than explicit.

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?

The phrase 'under a directory' implies this is a discovery/enumeration step before per-project tools, which is useful context. However, it never states when to prefer this over project_info or what to do if no projects exist, so 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.

pcb_infoB

PCB overview: board size, copper layers in use with stackup, primitive counts, net classes, differential pairs and design rules.

NameRequiredDescriptionDefault
projectYes
include_rulesNo

TDQS

B3.1/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, and it does disclose the payload by listing the data categories returned. However, it never states that this is a read-only operation, says nothing about cost or breadth (a full-board overview is likely expensive), and gives no hint about what the include_rules toggle actually changes.

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 beginning with 'PCB overview' followed by a compact inventory of contents. Every phrase maps to actual returned data, with no filler.

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 content inventory compensates reasonably for the absent output schema, but with no annotations and 0% parameter coverage the definition leaves an agent uninformed about cost, read-only safety, and the meaning of both inputs. Adequate to select the tool, insufficient to invoke it confidently.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0% and the description mentions neither parameter. 'Design rules' in the content list loosely hints at include_rules, but the required 'project' parameter is entirely unexplained — an agent gets no guidance on whether it takes a name, path, or ID.

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 names a specific resource (PCB) and enumerates the contents of the returned overview — board size, stackup, net classes, differential pairs, design rules — which clearly distinguishes it from get_net or pcb_placement. The retrieval verb is only implied by 'overview', but the scope is unambiguous enough that an agent can pick it over 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?

There is no statement of when to call this versus alternatives such as project_info or pcb_placement, and no prerequisites are given. The word 'overview' weakly implies a first-look summary call, but nothing tells the agent how to decide between this and the sibling PCB tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

pcb_placementC

Pick-and-place: designator, footprint, layer (top/bottom), center X/Y and rotation. pattern filters by designator/comment/footprint regex.

NameRequiredDescriptionDefault
unitsNomm
patternNo.*
projectYes
variantNo

Output Schema

NameRequiredDescription
resultYes

TDQS

C2.4/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 full behavioral burden. It never clarifies that this is a read-only query (the 'Pick-and-place:' phrasing could even suggest a write/placement action), nor does it describe units behavior or variant semantics. It does at least disclose the regex filter 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 tight lines with the returned field set front-loaded and the filter note second. Nothing is padded, though the second sentence is narrower than the remaining undocumented parameters.

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 4-parameter, zero-annotation tool with a required `project` argument, the description omits scope (which project/variant?), unit handling, and read-vs-write behavior. The output schema covers return values, but the input-side gaps are significant.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate and it only explains one of four parameters: `pattern` and its matched fields. The required `project`, plus `units` and `variant`, are given no meaning anywhere, leaving an agent guessing at scope and formatting.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose3/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names the data fields returned (designator, footprint, layer, center X/Y, rotation), so an agent can infer this yields PCB component placement data. However, it never states a verb ('get'/'list'), and 'Pick-and-place:' reads ambiguously like an action rather than a query, so the verb+resource pairing is only implied.

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?

There is no guidance on when to call this versus siblings like pcb_info, components_near, or render_pcb. The only usage hint is what `pattern` filters on, which is a parameter note rather than a when-to-use statement.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

project_infoC

Overview: sheet hierarchy, variants, PCB docs, project parameters, component/net counts.

NameRequiredDescriptionDefault
projectYes

TDQS

C2.8/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 indicates this is an informational read by listing returned data, but it does not state permissions, side effects, response size, or format.

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?

The description is a single front-loaded sentence with no wasted wording. It efficiently lists the return contents.

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?

With no annotations and no output schema, the description should clarify both usage and the project parameter. It lists return categories but leaves the required parameter semantics and access behavior undocumented.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The sole required parameter, project, has 0% schema description coverage and is not explained in the description. The agent cannot tell whether it expects a project ID, name, or path.

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 clearly identifies the resource and enumerates the information returned (sheet hierarchy, variants, PCB docs, project parameters, component/net counts). It lacks a verb and does not explicitly differentiate itself from siblings such as pcb_info or list_projects, but the purpose is still clear.

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?

It gives no guidance on when to use this tool versus alternatives like pcb_info, get_bom, or list_projects. The content list implies it is an overview tool, but there are no explicit usage conditions or exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

render_pcbB

Render the PCB to SVG/PNG. layers = layer names to show (e.g. ['TOP','TOP_OVERLAY','MULTI_LAYER'], 'TOPOVERLAY' style also accepted); None renders all layers. Returns file paths; open the PNG with the Read tool.

NameRequiredDescriptionDefault
pngNo
layersNo
out_dirNo
projectYes
png_widthNo
pad_designatorsNo

TDQS

B3.3/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 does disclose useful behavior: it returns file paths and that `layers: None` renders all layers. It omits where files are written by default, whether the filesystem is modified, cost/latency for a 3000px render, and any dependency on external tooling.

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?

Dense and front-loaded: purpose first, then the one parameter that needs explanation, then the return behavior. No filler sentences.

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, and the description does cover the return (file paths), which is the key gap-filler. But with 6 parameters at 0% schema coverage and no annotations, an agent still cannot tell what `out_dir`, `png_width`, or `pad_designators` do, nor what the default output location is.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0% across 6 parameters, so the description must compensate and largely does not. It explains `layers` well (name format, alias tolerance, None semantics) but says nothing about `png`, `out_dir`, `png_width`, or `pad_designators`, which are left to a bare title and default value.

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 concrete verb+resource pair ("Render the PCB") and the output formats (SVG/PNG). A sibling render_schematic exists, and the resource noun separates them implicitly, but the description never states the distinction 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?

There is no guidance on when to render versus use pcb_info, pcb_placement, or render_schematic, and no exclusions. The only actionable usage hint is the workflow note "open the PNG with the Read tool," which is helpful but downstream of tool selection.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

render_schematicB

Render one schematic sheet (file name, e.g. 'sterowanie.SchDoc') to SVG and PNG. Returns file paths; open the PNG with the Read tool to look at it.

NameRequiredDescriptionDefault
pngNo
sheetYes
out_dirNo
projectYes
png_widthNo

TDQS

B3.3/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 usefully discloses that the tool writes files and returns paths and that the PNG is the visual artifact to inspect, but it omits whether files are overwritten, what the default output location is, and how long rendering takes.

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 with no waste; the output formats and the follow-up action (open the PNG) are front-loaded and immediately actionable.

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?

With no output schema, the description rightly states that file paths are returned, which covers the return-value gap. But for a 5-parameter tool with zero schema descriptions, the missing explanation of png, out_dir, and png_width leaves an agent unable to choose non-default values confidently.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0% across 5 parameters, so the description must compensate. It clarifies the 'sheet' parameter via a filename example, but says nothing about the png boolean toggle, out_dir, or png_width, leaving three parameters entirely undocumented.

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 ('Render one schematic sheet ... to SVG and PNG') and names the expected input format with a concrete example ('sterowanie.SchDoc'). It is clearly distinguishable from render_pcb, though the sibling is never named.

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?

The 'one schematic sheet' phrasing implies per-sheet usage, and the note to open the PNG with the Read tool gives a clear downstream action. However, there is no explicit guidance on when to use this versus render_pcb or what to do with the SVG output.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

search_componentsB

Regex search (case-insensitive) over designator, value, comment, footprint, description and parameter values.

NameRequiredDescriptionDefault
limitNo
patternYes
projectYes

Output Schema

NameRequiredDescription
resultYes

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 does disclose case-insensitive regex semantics and the exact fields searched, which is real behavioral value. It omits result capping/limit behavior, whether all matching fields are OR'd, and error behavior for invalid regex.

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 dense sentence that front-loads the operation type and field list. Efficient, though the field enumeration makes it slightly list-heavy rather than structuring the regex/scope facts separately.

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?

An output schema exists, so return values need not be described. However, for a search tool with two undocumented parameters and no annotations, the description should at least explain project scoping and the limit's effect on results; those gaps leave the definition only minimally complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate. It gives meaningful semantics for 'pattern' (regex, case-insensitive) but says nothing about 'project' (scope, required) or 'limit' (max results, default 60), leaving two of three parameters unexplained.

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 (regex search) and resource (components), and enumerates the searchable fields, which clearly separates it from get_component and components_near. It stops short of explicitly naming a sibling alternative, so not 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?

Usage is only implied: an agent can infer 'use this to find components by pattern', but nothing states when to prefer get_component, components_near, or get_bom instead, nor any preconditions such as the project needing to exist.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

search_netsC

Regex search over net names; returns name and pin count.

NameRequiredDescriptionDefault
limitNo
patternYes
projectYes

Output Schema

NameRequiredDescription
resultYes

TDQS

C2.8/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 says what comes back, but omits regex flavor/anchor semantics, case sensitivity, whether results are capped by the limit default of 200, ordering, and error behavior on an invalid pattern or unknown project.

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 compact sentence, front-loaded with the match semantics and followed by the return shape. Nothing is wasted and nothing needs reordering.

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?

With an output schema present, return values are covered elsewhere, but for a search tool with zero annotation coverage and 0% parameter documentation, the description should still cover regex semantics and limit behavior. Those gaps leave an agent guessing about result truncation and match rules.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0% for all three parameters. The description only hints that "pattern" is a regex; "project" and "limit" get no explanation of expected format or effect (e.g., truncation at 200).

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 ("Regex search over net names") plus the return payload ("name and pin count"), which cleanly separates it from get_net and search_components. It stops short of naming those siblings as alternatives, so it is clear but not maximally differentiated.

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?

The description never says when to use this versus get_net (exact-name lookup) or search_components (same search over the other resource type), and gives no prerequisites such as whether the project must exist. Usage is only inferable from the tool name.

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 observedcomponents_near
    • First observedexport_netlist_json
    • First observedget_bom
    • First observedget_component
    • First observedget_net
    • First observedlist_projects
    • First observedpcb_info
    • First observedpcb_placement
    • First observedproject_info
    • First observedrender_pcb
    • First observedrender_schematic
    • First observedsearch_components
    • First observedsearch_nets

TDQS

B3.2/5.0

Scored across 13 tools

Disambiguation4/5

Most tools target clearly distinct objects: project discovery (list_projects), project overview (project_info), component/net search vs. detail retrieval (search_components/get_component, search_nets/get_net), and PCB-specific queries (pcb_info, pcb_placement, components_near). The main soft spot is the search vs. get pairs for nets and components, where an agent must remember that search_nets only returns name+pin count while get_net returns full pin/routing data, and export_netlist_json partially overlaps with get_net/get_bom outputs.

Naming Consistency3/5

Nine tools use a verb_noun pattern (get_net, list_projects, search_components, render_pcb, export_netlist_json), but four deviate into bare noun phrases (project_info, pcb_info, pcb_placement, components_near). The convention is readable and snake_case throughout, but the prefix is not predictable from the tool name alone.

Tool Count5/5

Thirteen tools is well within a healthy scope for inspecting a full Altium project spanning schematics, PCB, BOM and netlist export. Each tool maps to a distinct analysis need (discovery, search, detail, visualization, export) with no obviously redundant entries.

Completeness4/5

The surface covers the realistic read-only lifecycle: project discovery, hierarchy/variant overview, component and net search and detail, BOM, PCB geometry/routing, rendering and netlist export. Minor gaps exist, such as no direct query of differential pairs or net classes beyond what pcb_info dumps, and no way to filter PCB primitives (tracks/vias) by layer or region for targeted inspection; write operations are out of scope for this server.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    A
    maintenance
    This MCP server enables AI agents to understand and analyze electrical schematics from Cadence and Altium for comprehensive design reviews through natural conversations.
    11
    1,531 npm
    63
    Apache 2.0
  • A
    license
    B
    quality
    B
    maintenance
    An MCP server that enables AI assistants to analyze schematics, inspect PCBs, trace connections, validate designs, and generate embedded code for KiCad projects.
    39
    177
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    A Model Context Protocol (MCP) server that enables AI assistants like Claude to interact with KiCAD for PCB design automation.
    48 npm
    MIT