Skip to main content
Glama
altium-monkey-mcp

altium-monkey-mcp

by wjakiela
README.md
# altium-monkey-mcp

Read-only [MCP](https://modelcontextprotocol.io/) 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](https://github.com/wavenumber-eng/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.

## Requirements

- Python 3.12–3.14 (required by altium-monkey)
- [Inkscape](https://inkscape.org/) on `PATH` — optional, only for PNG output of the render tools

## Installation

```bash
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)

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

### Claude Desktop / other clients

```json
{
  "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.

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
ResponsivenessSyncing