Skip to main content

Observer-first MCP server for KLayout layout inspection.

Project description

klayout-mcp

Read-only MCP server for KLayout. It opens GDS/OAS layouts, inspects geometry and hierarchy, renders deterministic PNGs, and runs batch DRC with structured JSON output.

Install

Fastest one-off run:

uvx klayout-mcp@latest

Install once:

uv tool install klayout-mcp

Traditional Python install:

python -m pip install klayout-mcp

For batch DRC, the klayout executable must be on PATH or exposed through KLAYOUT_BIN.

export KLAYOUT_BIN=/Applications/klayout.app/Contents/MacOS/klayout

Quick Start

klayout-mcp is a stdio MCP server. The default launch shape is:

command: uvx
args:    klayout-mcp@latest

If your client cannot use uvx, install the tool once and launch klayout-mcp directly.

Typical workflow:

  1. open_layout
  2. list_layers
  3. list_cells or describe_cell
  4. query_region
  5. measure_geometry
  6. render_view
  7. run_drc_script
  8. extract_markers
  9. close_session

Client Setup

More copy-paste examples live in examples/mcp/README.md.

Codex

[mcp_servers.klayout]
command = "uvx"
args = ["klayout-mcp@latest"]

[mcp_servers.klayout.env]
KLAYOUT_BIN = "/Applications/klayout.app/Contents/MacOS/klayout"

Or add it with the CLI:

codex mcp add klayout \
  --env KLAYOUT_BIN=/Applications/klayout.app/Contents/MacOS/klayout \
  -- uvx klayout-mcp@latest

Claude Code

{
  "mcpServers": {
    "klayout": {
      "command": "uvx",
      "args": ["klayout-mcp@latest"],
      "env": {
        "KLAYOUT_BIN": "/Applications/klayout.app/Contents/MacOS/klayout"
      }
    }
  }
}

Or add it with the CLI:

claude mcp add --transport stdio klayout \
  --scope project \
  --env KLAYOUT_BIN=/Applications/klayout.app/Contents/MacOS/klayout \
  -- uvx klayout-mcp@latest

Cursor

Cursor is file-config based:

{
  "mcpServers": {
    "klayout": {
      "command": "uvx",
      "args": ["klayout-mcp@latest"],
      "env": {
        "KLAYOUT_BIN": "/Applications/klayout.app/Contents/MacOS/klayout"
      }
    }
  }
}

OpenCode

OpenCode is file-config based:

{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "klayout": {
      "type": "local",
      "command": ["uvx", "klayout-mcp@latest"],
      "enabled": true,
      "environment": {
        "KLAYOUT_BIN": "/Applications/klayout.app/Contents/MacOS/klayout"
      }
    }
  }
}

Other MCP Hosts

Use:

  • command: uvx
  • args: ["klayout-mcp@latest"]
  • env: KLAYOUT_BIN when needed

Tools

  • Session: open_layout, close_session
  • Structure: list_layers, list_cells, describe_cell
  • Geometry: query_region, measure_geometry
  • View: set_view, render_view
  • DRC: run_drc_script, extract_markers

Configuration

Variable Purpose Default
KLAYOUT_MCP_ARTIFACT_ROOT Root directory for runtime artifacts <repo>/.artifacts
KLAYOUT_MCP_SESSION_TTL_SECONDS Session inactivity timeout 3600
KLAYOUT_BIN KLayout batch executable for DRC klayout

Behavior:

  • any absolute local path can be used for layouts and DRC scripts
  • artifact paths returned by tools are absolute
  • sessions expire lazily after inactivity
  • close_session removes the session artifact directory

Artifacts And Errors

Artifacts are stored under .artifacts/sessions/<session_id>/ and include renders, DRC reports, marker crops, and logs.

Tool failures return structured JSON such as:

{
  "code": "FILE_NOT_FOUND",
  "message": "Layout file does not exist",
  "details": {
    "path": "/abs/path/to/missing.gds"
  }
}

Common codes: FILE_NOT_FOUND, SESSION_NOT_FOUND, INVALID_BOX, INVALID_LAYER, INVALID_TARGET, DRC_RUN_FAILED.

Development

For a source checkout:

uv sync --extra dev
uv run klayout-mcp

If an MCP client needs to launch the checkout directly:

command: uv
args:    --directory /abs/path/to/klayout-mcp run klayout-mcp

Contributor workflow is in CONTRIBUTING.md. Release notes are in CHANGELOG.md.

Releases

Normal releases are automated with release-please.

  • merge Conventional Commits to main
  • release-please opens or updates a release PR
  • merging that release PR updates pyproject.toml, CHANGELOG.md, creates the tag and GitHub release, and publishes to PyPI

To let the release PR run normal CI under branch protection, configure a repository secret named RELEASE_PLEASE_TOKEN with a GitHub token that can open pull requests. Without it, release-please falls back to github.token, which may not trigger PR workflows.

The manual release.yml workflow remains available for TestPyPI validation and recovery publishing.

Reference

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_mcp-0.1.4.tar.gz (28.7 kB view details)

Uploaded Source

Built Distribution

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

klayout_mcp-0.1.4-py3-none-any.whl (28.5 kB view details)

Uploaded Python 3

File details

Details for the file klayout_mcp-0.1.4.tar.gz.

File metadata

  • Download URL: klayout_mcp-0.1.4.tar.gz
  • Upload date:
  • Size: 28.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for klayout_mcp-0.1.4.tar.gz
Algorithm Hash digest
SHA256 9441a7114b96180843c2f564edf434a504555608883d0621e624fb1062fa667c
MD5 27b27db2c599312b82fbf29735d1ffd2
BLAKE2b-256 101949fcc99d711faf91c5fda01dfb9be4e4b731d944305f7d74fc9ddbd2b158

See more details on using hashes here.

Provenance

The following attestation bundles were made for klayout_mcp-0.1.4.tar.gz:

Publisher: release.yml on aycandv/klayout-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_mcp-0.1.4-py3-none-any.whl.

File metadata

  • Download URL: klayout_mcp-0.1.4-py3-none-any.whl
  • Upload date:
  • Size: 28.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for klayout_mcp-0.1.4-py3-none-any.whl
Algorithm Hash digest
SHA256 76dcda74f79f2266071064827b77265768ebcc03ee543572dd7099fd49526bdc
MD5 6d899bf397051c3fdda3c7400b7261be
BLAKE2b-256 54ba16a4d46c62b9c68e965e679226d4a49cc6d2102cfedafadeb4dd02ad0be3

See more details on using hashes here.

Provenance

The following attestation bundles were made for klayout_mcp-0.1.4-py3-none-any.whl:

Publisher: release.yml on aycandv/klayout-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