Skip to content
Conduit

mcp server

penpot-mcp

the official penpot mcp wants a browser tab babysat forever. got tired of it, so this one just talks to the api

izam-mohammed/penpot-mcpcommunitylistedunreviewed

Set up

Runs on your computer. Pick your agent and operating system.

This project does not publish an install method we can turn into a config. Follow the README instead.

README

synced Oct 29, 2026

the official penpot mcp wants a browser tab open, a plugin awake and the right file in front of it. i got tired of babysittin' it, so this one talks to penpot's api directly ~ and still calls the official one for the few things only a tab can do.

install

paste this into claude code, codex or whatever you use to roam around:

yo bro, install penpot-mcp for me from
https://github.com/izam-mohammed/penpot-mcp. use
`brew install --cask izam-mohammed/tap/penpot-mcp`, or if brew isn't
around, grab the release binary for my os. then run
`penpot-mcp skills install` (add `--agent codex` if you're codex) so you
know how to drive it, and hand me the exact `claude mcp add` command to
run with my penpot access token. don't ask me for the token, it's mine
and i'm keeping it. thanks king.

by hand

  1. install it:

    brew install --cask izam-mohammed/tap/penpot-mcp
    

    no brew? grab a binary from releases (macos, linux, windows; amd64 and arm64) and put it on your path.

  2. make a token in penpot: your account > integrations > personal access tokens. it's shown once, so copy it.

  3. add it to claude code:

    claude mcp add penpot-api -s user \
      -e PENPOT_ACCESS_TOKEN=<your token> \
      -- "$(command -v penpot-mcp)"
    
  4. give your agent the manual:

    penpot-mcp skills install                # claude code
    penpot-mcp skills install --agent codex  # codex
    
  5. restart claude code. /mcp should list penpot-api, /skills the penpot-mcp ones.

skills

the binary carries its own skills, so your agent stops guessin' which of 87 tools to call. penpot-mcp skills install writes them, from the same release as the tools they talk about.

skillfor
penpot-mcpconnecting, the token hand-off, finding and managing files, every error
penpot-mcp-drawwhole screens in one call, edits, and lookin' at what landed
penpot-mcp-librarycolours, type styles, components, design tokens, your repo's palette
penpot-mcp-exportboards to png, svg or pdf in your repo, .penpot files
penpot-mcp-collabcomments, share links, webhooks, versions, several accounts

it won't overwrite a skill it didn't write; --force if you mean it. working on them from a checkout? make install-skill links them instead.

how it's different

flowchart LR
  subgraph official["official penpot mcp"]
    direction LR
    A1[claude] --> B1[penpot mcp server] --> C1["plugin in a browser tab<br/>(must stay open and awake)"] --> D1[the one open file]
  end
  subgraph this["penpot-mcp"]
    direction LR
    A2[claude] --> B2[penpot-mcp] -->|api| D2["every team, project<br/>and file you can reach"]
    B2 -.->|"only when needed,<br/>if a tab is open"| C2[official penpot mcp]
  end
official penpot mcppenpot-mcp
needs a browser tab with the plugin runningalwaysno, optional extras only
files it can touchthe one open in the tabany file your token can reach
create, rename, move, delete projects and filesnoyes
draw a whole screen in one callwrite the plugin code yourselfdraw, up to 500 shapes
text sized with real font metricsin the tabyes, no browser
library: colours, type styles, components, design tokensthe open file, through plugin codeany file, plus a palette pulled from your repo
export boards (png, jpeg, webp, svg, pdf) and .penpot filesthe open fileany file, straight to disk
comments and saved versionsthe open fileany file
share links and webhooksnoyes
several penpot accounts at oncenoyes
plugin code, reflow, css and markupyesyes, by calling the official one

extras

all optional. set them with more -e NAME=value on the claude mcp add line.

env varfor
PENPOT_MCP_URLthe tab-only tools. your account > integrations > mcp server, the whole url, key included
PENPOT_BASE_URLa self-hosted penpot (default https://design.penpot.app); it needs the enable-access-tokens flag
PENPOT_EMAIL, PENPOT_PASSWORDboard exports without a tab. signed in with google? skip these, exports go through the tab
PENPOT_PROFILESseveral accounts: a json file of {"name", "token_env"} entries; every tool then takes profile

for clients that only speak http, penpot-mcp --http 127.0.0.1:8787 serves the same tools at /mcp. off loopback it refuses to start without PENPOT_MCP_HTTP_TOKEN (16+ characters), sent as Authorization: Bearer <token>.

your token never gets logged. still, treat it like a password ~ it is one.

license

mit, see LICENSE

↑↓ navigate openesc close