# Perfboard Designer (npm · perfboard-designer-mcp)

Design perfboard and stripboard layouts, check the wiring and get a link to open them in the editor.

- Trust score: 79/100 (medium)
- Change this week: +3
- Registry status: active
- Liveness: live
- Owner verified: no
- Last scored: 2026-11-05

## Components

- remote · `mcp.perfboarddesigner.com`: 68/100, [markdown](https://verifymcp.io/servers/com-perfboarddesigner-mcp/mcp.md), [page](https://verifymcp.io/servers/com-perfboarddesigner-mcp/mcp)
- npm · `perfboard-designer-mcp`: 79/100 (this document), [markdown](https://verifymcp.io/servers/com-perfboarddesigner-mcp/perfboard-designer-mcp.md), [page](https://verifymcp.io/servers/com-perfboarddesigner-mcp/perfboard-designer-mcp)

## Channel facts

- Registry: `npm`
- Package: `perfboard-designer-mcp`
- Version: `0.1.0`
- Transport: `stdio`

## Trust breakdown

How this component scores in each security and reliability category. Every signal is checked automatically from public evidence about the published package, including repeated runs of it in an isolated sandbox, and we only credit what we can confirm. Scores are 0–100 per category. Scoring method: https://verifymcp.io/docs/scoring (what has changed: https://verifymcp.io/docs/scoring/changelog)

Scored 2026-11-05.

- **Supply Chain Security**: 100/100
  - No malware found by supply-chain analysis.
  - No known CVEs affecting this package version or its production dependencies.
  - No install/post-install scripts declared.
  - No production dependencies, so there is no dependency health to assess.
- **Provenance & Transparency**: 45/100
  - Source repository is publicly reachable at the declared URL.
  - Provenance check failed: no build-provenance attestation is published.
  - Clear OSI-approved license (ISC).
  - Actively maintained (last published 11 days ago).
  - Disclosure check failed: no security disclosure policy was found in the source repository.
- **Schema Quality & AI Usability**: 77/100
  - 100% of prompts and resources have a non-trivial description (not blank, and not just the item's name).
  - AI-judged instruction clarity (good).
  - Context-footprint check failed: tool/resource definitions use about 3658 tokens (~192/item across 19 items; 12 tools + 7 resources), over budget; trim descriptions and params.
  - Usage-examples check failed: none of the tools include examples.
- **Stability & Change Management**: 60/100
  - Stability observed for 18 of 30 days with no destabilising changes; credit accrues until the full window elapses.
- **Tool Coverage**: 98/100
  - 100% of tools have a non-trivial description (not blank, and not just the tool's name).
  - 95% of tool parameters carry a description.
- **Tool Safety**: 100/100
  - No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.
  - We read all 12 captured tool definition(s), and no name or description among them implies an irreversible operation.
  - An AI judge read all 14 captured unit(s) of tool text and found none that tries to manipulate the model reading it.
- **Capabilities**: 100/100
  - Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.
  - Supports UI / widget rendering.

## Install

### How do I install the Perfboard Designer MCP server?

Perfboard Designer runs locally as an npm package, launched with npx -y perfboard-designer-mcp. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.

### Claude

```bash
claude mcp add com-perfboarddesigner-mcp -- npx -y perfboard-designer-mcp
```

### Cursor

```json
{
  "mcpServers": {
    "com-perfboarddesigner-mcp": {
      "command": "npx",
      "args": [
        "-y",
        "perfboard-designer-mcp"
      ]
    }
  }
}
```

### VS Code

```json
{
  "servers": {
    "com-perfboarddesigner-mcp": {
      "command": "npx",
      "args": [
        "-y",
        "perfboard-designer-mcp"
      ]
    }
  }
}
```

### Codex

```bash
codex mcp add com-perfboarddesigner-mcp -- npx -y perfboard-designer-mcp
```

### opencode

```json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "com-perfboarddesigner-mcp": {
      "type": "local",
      "command": [
        "npx",
        "-y",
        "perfboard-designer-mcp"
      ],
      "enabled": true
    }
  }
}
```

### OpenClaw

```bash
openclaw mcp add com-perfboarddesigner-mcp --command npx --arg -y --arg perfboard-designer-mcp
```

### Hermes

```yaml
mcp_servers:
  com-perfboarddesigner-mcp:
    command: "npx"
    args: ["-y", "perfboard-designer-mcp"]
```

### Netclaw

```json
{
  "McpServers": {
    "com-perfboarddesigner-mcp": {
      "Transport": "stdio",
      "Command": "npx",
      "Arguments": [
        "-y",
        "perfboard-designer-mcp"
      ]
    }
  }
}
```

### Vellum

```bash
assistant mcp add com-perfboarddesigner-mcp -t stdio -c npx -a -y perfboard-designer-mcp
```

### Other

```json
{
  "mcpServers": {
    "com-perfboarddesigner-mcp": {
      "command": "npx",
      "args": [
        "-y",
        "perfboard-designer-mcp"
      ]
    }
  }
}
```

## Changelog

Every change recorded for this component, newest first. Days that predate change tracking, or that we cannot explain, say so: "we were watching and nothing happened" and "we were not watching" are different claims.

### 2026-11-04 (score 79, +1)

No change was recorded against any check on this day. Stability & Change Management went from 53 to 57. That category is still filling its 30-day observation window: 16 days of observed history at the previous scan, 17 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-11-02 (score 78, +1)

No change was recorded against any check on this day. Stability & Change Management went from 47 to 50. That category is still filling its 30-day observation window: 14 days of observed history at the previous scan, 15 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-10-31 (score 77, +1)

No change was recorded against any check on this day. Stability & Change Management went from 40 to 43. That category is still filling its 30-day observation window: 12 days of observed history at the previous scan, 13 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-10-29 (score 76, +1)

No change was recorded against any check on this day. Stability & Change Management went from 33 to 37. That category is still filling its 30-day observation window: 10 days of observed history at the previous scan, 11 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-10-27 (score 75, +1)

No change was recorded against any check on this day. Stability & Change Management went from 27 to 30. That category is still filling its 30-day observation window: 8 days of observed history at the previous scan, 9 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-10-24 (score 74, +1)

No change was recorded against any check on this day. Stability & Change Management went from 17 to 20. That category is still filling its 30-day observation window: 5 days of observed history at the previous scan, 6 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-10-22 (score 73, +1)

No change was recorded against any check on this day. Stability & Change Management went from 10 to 13. That category is still filling its 30-day observation window: 3 days of observed history at the previous scan, 4 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-10-20 (score 72, +1)

No change was recorded against any check on this day. Stability & Change Management went from 3 to 7. That category is still filling its 30-day observation window: 1 days of observed history at the previous scan, 2 at this one. The score rises as the window fills, whether or not the server changes.

## MCP tools (12)

### `list_parts` (~170 tokens)

List parts

Lists the parts a project can place. Without a query: every part, grouped by category, as its id with its name and pin count; call it this way once to see what there is. With a query: the parts whose id, name, category or keywords contain all its words, or the closest ones when none do. Each part's `id` is its definitionId in the project file; use get_part for its pins and how to place it.

Input parameters:

- `kind` (string): standard-component: two-lead parts placed between two holes. advanced-component: fixed-footprint parts. ic: dual-row chips and modules.
- `query` (string): Words to match, e.g. "capacitor", "555", "header", "relay". Leave it out to list every part.

### `get_part` (~115 tokens)

Get parts

Everything needed to place parts: for each, which project file list it goes in, its pins (offsets from pin 1 at rotation 0) and pin labels, polarity, value unit, holes its body covers, and an example entry. Ask for every part you use in one call with `ids`.

Input parameters:

- `id` (string): One part id, instead of `ids`.
- `ids` (array): Part ids from list_parts, e.g. ["resistor", "ne555", "header-pins"].

### `new_project` (~222 tokens)

New project

Starts a project kept here under a projectId: a blank board, or one of the example projects (perfboard://examples/...) to copy from. Returns the projectId and the project file. Then add parts and wires with edit_project, and pass the projectId to every other tool instead of the whole file.

Input parameters:

- `cols` (integer): Holes across. 30 when left out.
- `example` (string): Start from an example instead of a blank board: "555-led-blinker" (555 LED blinker (perfboard)), "555-led-blinker-stripboard" (555 LED blinker (stripboard)).
- `name` (string): The project's name, used by make_share_link.
- `rows` (integer): Holes down. 20 when left out.
- `strips` (string): A stripboard's strips: along rows (horizontal, default) or columns.
- `type` (string): perfboard (default): a separate pad per hole. stripboard: copper strips joining every hole along each row (or column).

### `edit_project` (~362 tokens)

Edit project

Changes a project kept here, by a list of ops applied in order: add_part, update_part (move, turn, change value or ref), remove_parts, add_wire (from/to, or a `path` of holes made into one wire per leg), update_wire, remove_wires, set_board, add_cuts / remove_cuts (stripboard), set_pad. If any op can't be done, none are. Returns what changed, where the pins of added or moved parts landed, and the board checked as validate_project does (with any expectNets remembered for it); when it has no errors, also its nets. get_project returns the whole file.

Input parameters:

- `expectNets` (array): The nets the board should make: each a list of pins written REF.pin, e.g. [["U1.8", "U1.4", "R1.1", "J1.1"], ["U1.2", "U1.6", "C1.+"]]. A pin can also be named by its label ("U1.VCC", "D1.K") or as g…
- `ops` (array, required)
- `project`: A whole project file to start from instead of a projectId: it's kept here and the reply gives its new projectId.
- `projectId` (string): The id of a project kept here (from new_project, validate_project, edit_project or read_share_link), instead of sending the whole project.

### `get_project` (~42 tokens)

Get project

The whole project file of a project kept here, as the editor would save it (version 3), one entry per line.

Input parameters:

- `projectId` (string, required)

### `validate_project` (~426 tokens)

Validate project

Checks a project file and lists every problem with where it is: entries the editor would leave out, unknown parts, pins off the board, two parts' pins or leads in one hole, overlapping parts, wires that connect nothing (a loose end, or no pins on their net), duplicate wires, a two-lead part with both leads on one net (shorted out), a wire passing over a pin or lead without ending there (so not joined to it), IC pins and two-lead parts' leads connected to nothing, supply rails shorted together, and on a stripboard, pins shorted by a strip or sitting in a cut hole. With expectNets, every connection missing from the board or extra on it is an error. Wires crossing each other are fine (insulated jumpers) and only listed in notes. Fix all errors before making a link. A project sent whole is kept here: the reply's projectId stands for it in every other tool.

Input parameters:

- `expectNets` (array): The nets the board should make: each a list of pins written REF.pin, e.g. [["U1.8", "U1.4", "R1.1", "J1.1"], ["U1.2", "U1.6", "C1.+"]]. A pin can also be named by its label ("U1.VCC", "D1.K") or as g…
- `project`: The whole project file: a version 3 project object, or its JSON text (see the perfboard://docs/project-file resource). Give this or projectId.
- `projectId` (string): The id of a project kept here (from new_project, validate_project, edit_project or read_share_link), instead of sending the whole project.

### `get_nets` (~233 tokens)

Get nets

Which pins the board connects: every net with its name (from its pins, e.g. GND), its pins ("U1.8 VCC" for a chip's pin, "D1.K" or "C1.+" for a polarized lead, "R1.1" otherwise) and the wires on it (indexes into wires). Also pins connected to nothing, wires that connect no pins, junctions (holes where three or more things are joined) and crossings (where a wire goes over another wire or over a hole without joining it). Wires are insulated jumpers: a wire joins only the holes at its two ends, so crossings are information, not connections or shorts. On a stripboard the strips connect too.

Input parameters:

- `project`: The whole project file: a version 3 project object, or its JSON text (see the perfboard://docs/project-file resource). Give this or projectId.
- `projectId` (string): The id of a project kept here (from new_project, validate_project, edit_project or read_share_link), instead of sending the whole project.

### `get_pin_positions` (~181 tokens)

Get pin positions

Where every placed part's pins land, as [column, row] holes, with pin numbers and labels (e.g. U1 pin 8 VCC), after rotation, plus holes a part's body covers. Use it to route wires to the right holes. The project file doesn't store these: they follow from each part's anchor, rotation and footprint.

Input parameters:

- `project`: The whole project file: a version 3 project object, or its JSON text (see the perfboard://docs/project-file resource). Give this or projectId.
- `projectId` (string): The id of a project kept here (from new_project, validate_project, edit_project or read_share_link), instead of sending the whole project.
- `refs` (array): Only these parts, e.g. ["U1", "R2"]. All parts when omitted.

### `render_board` (~290 tokens)

Render board

Draws the board as text, one cell per hole with column and row numbers: each part's pins by a key letter and pin number (a1, a2...), holes under a part's body, wire ends, the holes a wire runs over without joining them, strip cuts and marked holes. Below it, which part each key is and every wire with its ends and net. Use it to see where there's free space and how wires run before placing parts or routing more. With format "png", a picture of the board as the editor draws it instead, to see how it looks: parts' bodies and where they reach, labels, wire colours. To show the user the board, use show_board.

Input parameters:

- `area` (object): Only this part of the board: two opposite corner holes. The whole board when left out.
- `format` (string): "text" (default): the board as text. "png": a picture of it, 50 px per hole, scaled down to fit 1000 px.
- `project`: The whole project file: a version 3 project object, or its JSON text (see the perfboard://docs/project-file resource). Give this or projectId.
- `projectId` (string): The id of a project kept here (from new_project, validate_project, edit_project or read_share_link), instead of sending the whole project.

### `make_share_link` (~620 tokens)

Make share link

Turns a project into a link that opens it in Perfboard Designer: the project travels inside the link, so it works without any server. Give the link to the user. Also returns `image`, the address of an SVG picture of the board (as the editor draws it), for showing it where images from links display, e.g. in Markdown (not in Claude or ChatGPT, which don't load them: show_board shows the board there). With store, the project is also stored on the Perfboard Designer server under a short id, and `stored` gives a short link to it, its file and its pictures (SVG and PNG): give the user both links. The project is validated first (against expectNets too, given or remembered for its projectId); a project with errors gets the list of problems instead of a link, unless allowErrors is set.

Input parameters:

- `allowErrors` (boolean): Make the link even if validation finds errors.
- `editorUrl` (string): The editor's address. Defaults to https://perfboarddesigner.com/app/ (set PERFBOARD_EDITOR_URL in the server's environment to change it); use e.g. http://localhost:3000/app/ for a local copy.
- `expectNets` (array): The nets the board should make: each a list of pins written REF.pin, e.g. [["U1.8", "U1.4", "R1.1", "J1.1"], ["U1.2", "U1.6", "C1.+"]]. A pin can also be named by its label ("U1.VCC", "D1.K") or as g…
- `name` (string): The project's name in the editor, e.g. "555 LED blinker". Defaults to the name it was given in new_project or came with from read_share_link.
- `project`: The whole project file: a version 3 project object, or its JSON text (see the perfboard://docs/project-file resource). Give this or projectId.
- `projectId` (string): The id of a project kept here (from new_project, validate_project, edit_project or read_share_link), instead of sending the whole project.
- `store` (boolean): Also store the project at https://projects.perfboarddesigner.com, for a short link. A stored project never changes (store again for a new id) and is deleted after a year unopened.
- `storeAs` (string): The id you'd like it stored under, e.g. "led-blinker" (made lowercase letters, digits and dashes); if another board has it, a few characters of this board's hash are added. Implies store. Defaults to…

### `read_share_link` (~102 tokens)

Read share link

Reads the project out of a Perfboard Designer share link (any of its forms: z=, json= or src=, which is downloaded; a stored project's short link too), so you can look at or change a board the user shared. Returns the project as a version 3 project file, kept here under the projectId it returns: change it with edit_project.

Input parameters:

- `link` (string, required): The whole link, or just the part after #.

### `show_board` (~202 tokens)

Show board

Shows the user a picture of the board right in the conversation, as the editor draws it, with a button that opens it in Perfboard Designer. Only in clients that show MCP Apps (e.g. Claude, ChatGPT); elsewhere the user sees nothing, so give them make_share_link's link too. The picture goes to the user, not to you: to look at the board yourself, use render_board.

Input parameters:

- `name` (string): The project's name, shown under the picture and in the editor. Defaults to the name it was given in new_project or came with from read_share_link.
- `project`: The whole project file: a version 3 project object, or its JSON text (see the perfboard://docs/project-file resource). Give this or projectId.
- `projectId` (string): The id of a project kept here (from new_project, validate_project, edit_project or read_share_link), instead of sending the whole project.

## Diagnostics

Captured diagnostic sections: Provenance, Dependencies. The full working is on the page: https://verifymcp.io/servers/com-perfboarddesigner-mcp/perfboard-designer-mcp#diagnostics

## Score history

- 2026-11-05: 79
- 2026-11-04: 79
- 2026-11-03: 78
- 2026-11-02: 78
- 2026-11-01: 77
- 2026-10-31: 77
- 2026-10-30: 76
- 2026-10-29: 76
- 2026-10-28: 75
- 2026-10-27: 75
- 2026-10-26: 74
- 2026-10-25: 74
- 2026-10-24: 74
- 2026-10-23: 73
- 2026-10-22: 73
- 2026-10-21: 72
- 2026-10-20: 72
- 2026-10-19: 71
- 2026-10-18: 71

## Common questions

### What is the Perfboard Designer MCP server?

Perfboard Designer is an MCP server listed in the public MCP registry as com.perfboarddesigner/mcp. Design perfboard and stripboard layouts, check the wiring and get a link to open them in the editor. This page covers its npm package (perfboard-designer-mcp).

### Is the Perfboard Designer MCP server safe to use?

Perfboard Designer scores 79 out of 100 on VerifyMCP. We found no known CVEs affecting it as of 5 November 2026. It declares no install or post-install scripts. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.

### What tools does the Perfboard Designer MCP server expose?

Perfboard Designer exposes 12 tools: list_parts, get_part, new_project, edit_project, get_project, and 7 more. Their descriptions and schemas cost roughly 2,965 tokens of context every time the server is loaded.

### Is the Perfboard Designer MCP server still maintained?

Perfboard Designer is still listed as active in the MCP registry. We last reached this channel on 5 November 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.

### What licence is the Perfboard Designer MCP server under?

Perfboard Designer declares the ISC licence, which is OSI-approved. That covers the source only, and says nothing about the cost of any service it calls.

## Links

- npm package: https://www.npmjs.com/package/perfboard-designer-mcp
- Socket report: https://socket.dev/npm/package/perfboard-designer-mcp
- Repository: https://github.com/MaurerKrisztian/perfboard-designer
- Website: https://perfboarddesigner.com/mcp-server/
- Changelog RSS feed: https://verifymcp.io/servers/com-perfboarddesigner-mcp/perfboard-designer-mcp.xml
- Changelog JSON feed: https://verifymcp.io/servers/com-perfboarddesigner-mcp/perfboard-designer-mcp.json
- HTML version of this page: https://verifymcp.io/servers/com-perfboarddesigner-mcp/perfboard-designer-mcp
