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
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, 2026the 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
-
install it:
brew install --cask izam-mohammed/tap/penpot-mcpno brew? grab a binary from releases (macos, linux, windows; amd64 and arm64) and put it on your path.
-
make a token in penpot: your account > integrations > personal access tokens. it's shown once, so copy it.
-
add it to claude code:
claude mcp add penpot-api -s user \ -e PENPOT_ACCESS_TOKEN=<your token> \ -- "$(command -v penpot-mcp)" -
give your agent the manual:
penpot-mcp skills install # claude code penpot-mcp skills install --agent codex # codex -
restart claude code.
/mcpshould listpenpot-api,/skillsthepenpot-mcpones.
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.
| skill | for |
|---|---|
penpot-mcp | connecting, the token hand-off, finding and managing files, every error |
penpot-mcp-draw | whole screens in one call, edits, and lookin' at what landed |
penpot-mcp-library | colours, type styles, components, design tokens, your repo's palette |
penpot-mcp-export | boards to png, svg or pdf in your repo, .penpot files |
penpot-mcp-collab | comments, 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 mcp | penpot-mcp | |
|---|---|---|
| needs a browser tab with the plugin running | always | no, optional extras only |
| files it can touch | the one open in the tab | any file your token can reach |
| create, rename, move, delete projects and files | no | yes |
| draw a whole screen in one call | write the plugin code yourself | draw, up to 500 shapes |
| text sized with real font metrics | in the tab | yes, no browser |
| library: colours, type styles, components, design tokens | the open file, through plugin code | any file, plus a palette pulled from your repo |
export boards (png, jpeg, webp, svg, pdf) and .penpot files | the open file | any file, straight to disk |
| comments and saved versions | the open file | any file |
| share links and webhooks | no | yes |
| several penpot accounts at once | no | yes |
| plugin code, reflow, css and markup | yes | yes, by calling the official one |
extras
all optional. set them with more -e NAME=value on the claude mcp add
line.
| env var | for |
|---|---|
PENPOT_MCP_URL | the tab-only tools. your account > integrations > mcp server, the whole url, key included |
PENPOT_BASE_URL | a self-hosted penpot (default https://design.penpot.app); it needs the enable-access-tokens flag |
PENPOT_EMAIL, PENPOT_PASSWORD | board exports without a tab. signed in with google? skip these, exports go through the tab |
PENPOT_PROFILES | several 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