Skip to main content

MCP server for drawing, generating, and editing GDS layouts with KLayout.

Project description

klayout-draw-mcp

An MCP server for drawing GDS layouts with KLayout — generate, edit, and view layouts from an AI assistant such as Claude Code or Claude Desktop.

Layout geometry is built in-process with the standalone klayout Python module (no GUI needed). The installed KLayout application is launched only for viewing or manual editing.

Tools

Tool Purpose
new_layout(top_cell, dbu) Start a new in-memory layout (coordinates in micrometers)
add_box(layer, x1, y1, x2, y2, datatype) Add a rectangle
add_polygon(layer, points, datatype) Add a polygon from [x, y] vertices
add_path(layer, points, width, datatype) Add a path with width
add_label(layer, x, y, text, datatype) Add a text label
create_cell(name) / use_cell(name) Create/select the active drawing cell
place_cell(cell, x, y, orient, nx, ny, dx, dy) Place an instance or array of a cell
add_via(x, y, bottom_layer, top_layer, cut_layer, …) Via: cut array + enclosing metal
add_wire(layer, points, width) Manhattan wire (auto L-corners)
layout_info() Inspect current layout (layers, bbox, shape count)
load_gds(path, top_cell?) Load an existing GDS/OASIS into the session for editing
inspect_gds(path?) Per-layer shape count, area and bbox of a file or the session
drc_check(rules, path?) Simple DRC: spacing / width / overlap / separation / enclosure
save_gds(path, open_after) Write GDS/OASIS; optionally open in the editor
open_layout(file_path) Open a file in KLayout (viewer)
open_editor(file_path?) Open KLayout in editor mode, or a blank layout
run_script(code) Run arbitrary Python with klayout.db (cell hierarchy, arrays, booleans, DRC, ...)

Requirements

  • Python ≥ 3.10
  • The klayout and mcp Python packages (installed via the steps below)
  • The KLayout application — only needed for open_layout / open_editor

Install

uv sync

Register with Claude Code

claude mcp add klayout -s user -- "<repo>/.venv/Scripts/python.exe" -m klayout_draw_mcp.server

On macOS/Linux use .venv/bin/python.

Usage

"Draw a 5×5 µm box on layer 1 and a 2 µm-wide path, then save to out.gds and open it."

Claude calls new_layoutadd_box / add_pathsave_gds(open_after=True).

You can also open and check an existing layout:

"Load chip.gds, check that M1 spacing ≥ 0.15 µm and that OD never overlaps POLY, and report violations."

Claude calls load_gdsinspect_gdsdrc_check([...]), then edits and save_gds. See Editing & DRC.

For anything beyond the basic shapes, run_script exposes the full klayout.db API.

Examples

Self-contained scripts in examples/. Each builds a layout with the standalone klayout.db module and writes a GDS:

uv run python examples/cis_aps_pixel.py out.gds

You can also paste the body of a script's build() function into the run_script tool. The scripts share one layer map (OD 3/0, POLY 6/0, NPLUS 4/0, METAL1 9/0, ...).

Example What it draws
basic_shapes.py The four primitives: box, path, polygon, label
nmos_transistor.py A single NMOS (active, poly gate, n+, contacts, M1 S/G/D)
cmos_inverter.py A CMOS inverter: PMOS over NMOS, shared gate, Vdd/Vss rails
cis_aps_pixel.py A 1 µm 4T CMOS image-sensor pixel, tiled as a 2×2 array

Place & route skill

skills/klayout-pnr/ packages place-and-route recipes — row placement, power rails, and an obstacle-aware maze (Lee) router — plus a SKILL.md workflow guide for assistants. Copy it to your skills directory to have it auto-discovered:

cp -r skills/klayout-pnr ~/.claude/skills/

Documentation

Full docs (Getting Started walkthrough, examples, editing/DRC, place & route) are at https://geniuskey.github.io/klayout-draw-mcp/.

Note

run_script executes arbitrary Python locally, in-process. Only run scripts you trust.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

klayout_draw_mcp-0.1.2.tar.gz (235.9 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

klayout_draw_mcp-0.1.2-py3-none-any.whl (11.5 kB view details)

Uploaded Python 3

File details

Details for the file klayout_draw_mcp-0.1.2.tar.gz.

File metadata

  • Download URL: klayout_draw_mcp-0.1.2.tar.gz
  • Upload date:
  • Size: 235.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for klayout_draw_mcp-0.1.2.tar.gz
Algorithm Hash digest
SHA256 c62475d4808f7e69c0aad97f2917364276dae9899dd7d36456ea5cca35137e88
MD5 cbc1dfeda8df22620a438f9587e3e60a
BLAKE2b-256 35c63914497de4bfa95266b32334eb030bf2785238aabc9b9e35dfd744dbd155

See more details on using hashes here.

Provenance

The following attestation bundles were made for klayout_draw_mcp-0.1.2.tar.gz:

Publisher: publish.yml on geniuskey/klayout-draw-mcp

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file klayout_draw_mcp-0.1.2-py3-none-any.whl.

File metadata

File hashes

Hashes for klayout_draw_mcp-0.1.2-py3-none-any.whl
Algorithm Hash digest
SHA256 f972f2211b0530977553e408e5c541613e216d7285a25803299feea9b93ea530
MD5 9cb68efd7ad06d1447f39e0fada48fa4
BLAKE2b-256 8ed2838c04961ae8886ea7ac02320df088a82638eb36ec93ed3ac2c66ff2752e

See more details on using hashes here.

Provenance

The following attestation bundles were made for klayout_draw_mcp-0.1.2-py3-none-any.whl:

Publisher: publish.yml on geniuskey/klayout-draw-mcp

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page