Penpot MCP Server
Comprehensive integration with Penpot, the open-source design platform, providing tools for project management, file operations, component libraries, design tokens, asset export, comments, team collaboration, profile management, library sharing, global search, and design analysis.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Penpot MCP ServerShow me all my projects"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Penpot MCP Server
A comprehensive Model Context Protocol (MCP) server for Penpot, the open-source design platform. This server provides full access to Penpot's capabilities through 14 powerful tools covering projects, files, components, design tokens, exports, comments, teams, and more.
Features
🗂️ Project Management: Full CRUD operations for projects with file organization
📁 File Operations: Create, edit, duplicate, move files with version history
🧩 Component Library: Manage reusable components with instances, annotations, and stats
🎨 Design Tokens: Colors, typography with export to CSS/JSON/SCSS/Tailwind
📤 Asset Export: PNG, SVG, PDF, JPEG, WebP with multi-scale and batch support
💬 Comments & Reviews: Thread-based commenting with resolution tracking
👥 Team Collaboration: Team management, invitations, roles, and permissions
👤 Profile Management: User settings, notifications, recent files
📚 Library Sharing: Shared libraries, linking, publishing, and sync
🔍 Global Search: Search across files, objects, components, tokens
📊 Design Analysis: Design system audits, accessibility, duplicates detection
Related MCP server: Penpot MCP Server
Architecture
penpot-mcp/
├── src/
│ ├── index.ts # Entry point
│ ├── server-core.ts # MCP server implementation
│ ├── config.ts # Configuration management
│ ├── logger.ts # Logging utility
│ ├── api/
│ │ ├── client-factory.ts # API client factory (9 domain clients)
│ │ ├── base/ # Base API client & utilities
│ │ │ ├── base-client.ts
│ │ │ ├── error-handler.ts
│ │ │ ├── response-formatter.ts
│ │ │ └── index.ts
│ │ └── domains/ # Domain-specific API clients
│ │ ├── projects-api.ts # Project CRUD, files, stats
│ │ ├── files-api.ts # File operations, pages, objects
│ │ ├── components-api.ts # Components, instances, annotations
│ │ ├── tokens-api.ts # Colors, typography, export
│ │ ├── exports-api.ts # Asset export (PNG/SVG/PDF/etc)
│ │ ├── comments-api.ts # Threads, comments, resolution
│ │ ├── team-api.ts # Team management, invitations
│ │ ├── profile-api.ts # User profile, settings
│ │ ├── library-api.ts # Shared libraries, linking
│ │ └── index.ts
│ └── tools/
│ ├── tool-definitions.ts # MCP tool schemas (14 tools)
│ ├── index.ts
│ └── orchestration/ # High-level orchestration tools
│ ├── projects.ts # penpot_projects
│ ├── files.ts # penpot_files
│ ├── components.ts # penpot_components
│ ├── tokens.ts # penpot_tokens
│ ├── exports.ts # penpot_exports
│ ├── comments.ts # penpot_comments
│ ├── team.ts # penpot_team
│ ├── profile.ts # penpot_profile
│ ├── library.ts # penpot_library
│ ├── search.ts # penpot_search
│ ├── analyze.ts # penpot_analyze
│ ├── navigate.ts # penpot_navigate (legacy)
│ ├── inspect.ts # penpot_inspect (legacy)
│ ├── assets.ts # penpot_assets (legacy)
│ ├── types.ts
│ └── index.ts
├── package.json
├── tsconfig.json
└── README.mdInstallation
npm install
npm run buildConfiguration
Create a .env file:
# Required: Penpot credentials
PENPOT_USERNAME=your-email@example.com
PENPOT_PASSWORD=your-password
# Optional: Custom Penpot instance URL (defaults to design.penpot.app)
PENPOT_API_URL=https://design.penpot.app/api
# Optional: Default project scope
PENPOT_PROJECT_ID=your-project-id
# Optional: Logging level
LOG_LEVEL=infoUsage with Claude Desktop
Add to your Claude Desktop config (~/Library/Application Support/Claude/claude_desktop_config.json):
{
"mcpServers": {
"penpot": {
"command": "node",
"args": ["/path/to/penpot-mcp/dist/index.js"],
"env": {
"PENPOT_USERNAME": "your-email@example.com",
"PENPOT_PASSWORD": "your-password"
}
}
}
}Available Tools (14 Total)
Core Tools
Tool | Description |
| Project management: list, create, rename, delete, duplicate, move |
| File operations: CRUD, pages, objects, tree, search, history |
| Component library: list, search, instances, create, delete, annotations |
| Design tokens: colors, typography, CRUD, export to CSS/JSON/SCSS/Tailwind |
| Asset export: PNG, SVG, PDF, JPEG, WebP with batch and multi-scale |
| Comment management: threads, replies, resolve, reopen |
| Team management: members, invitations, roles, permissions |
| User profile: settings, notifications, recent files |
| Shared libraries: link, unlink, publish, sync |
| Global search: files, objects, components, tokens |
| Design analysis: design system, accessibility, duplicates |
Legacy Tools (Backward Compatibility)
Tool | Description |
| Navigate projects, files, pages |
| Deep inspection of file structure |
| Basic asset export |
Tool Actions Reference
penpot_projects
Action | Description | Required Params |
| List all projects | - |
| Get project details |
|
| Create new project |
|
| Rename project |
|
| Delete project |
|
| Duplicate project |
|
| Move to team |
|
| List project files |
|
| Project statistics |
|
penpot_files
Action | Description | Required Params |
| Get file details |
|
| Create new file |
|
| Rename file |
|
| Delete file |
|
| Duplicate file |
|
| Move to project |
|
| List file pages |
|
| Get page objects |
|
| Get page objects |
|
| Get specific object |
|
| Get object tree |
|
| Search objects |
|
| Analyze structure |
|
| Version history |
|
| Create/restore |
|
penpot_components
Action | Description | Required Params |
| List components |
|
| Get component |
|
| Search components |
|
| Get instances |
|
| Get structure |
|
| Create component |
|
| Delete component |
|
| Rename component |
|
| Add annotation |
|
| Component stats |
|
| Detach instance |
|
| Reset instance |
|
penpot_tokens
Action | Description | Required Params |
| List colors |
|
| Get color |
|
| Create color |
|
| Update color |
|
| Delete color |
|
| List typography |
|
| Get style |
|
| Create style |
|
| Update style |
|
| Delete style |
|
| Get all tokens |
|
| Search tokens |
|
| Export as CSS |
|
| Export as JSON |
|
| Export as SCSS |
|
| Export Tailwind |
|
| Token statistics |
|
penpot_exports
Action | Description | Required Params |
| Export object |
|
| Batch export |
|
| Export page |
|
| Export as PDF |
|
| Multi-scale export |
|
| Multi-format export |
|
| List exportable |
|
| Export settings |
|
| Download export |
|
| Supported formats | - |
penpot_comments
Action | Description | Required Params |
| List threads |
|
| Get thread |
|
| Create thread |
|
| Add comment |
|
| Update comment |
|
| Delete comment |
|
| Delete thread |
|
| Resolve thread |
|
| Reopen thread |
|
| Unread count |
|
penpot_team
Action | Description | Required Params |
| List teams | - |
| Get team |
|
| Create team |
|
| Rename team |
|
| Delete team |
|
| List members |
|
| Invite member |
|
| Remove member |
|
| Update role |
|
| Pending invites |
|
| Cancel invite |
|
| Leave team |
|
| Team statistics |
|
penpot_profile
Action | Description | Required Params |
| Get profile | - |
| Update profile | - |
| Change password |
|
| Get properties | - |
| Update props |
|
| Request email change |
|
| Delete account | - |
| Recent files | - |
| Notifications | - |
| Mark as read |
|
penpot_library
Action | Description | Required Params |
| List shared |
|
| Link library |
|
| Unlink library |
|
| List linked |
|
| Publish library |
|
| Unpublish |
|
| Library summary |
|
| Sync library |
|
| Library colors |
|
| Library typography |
|
| Library components |
|
| Search libraries |
|
penpot_search
Action | Description | Required Params |
| Search files |
|
| Search objects |
|
| Search components |
|
| Search colors |
|
| Search typography |
|
| Recent files | - |
| Global search |
|
penpot_analyze
Action | Description | Required Params |
| Design system audit |
|
| Accessibility check |
|
| Naming conventions |
|
| File structure |
|
| Color analysis |
|
| Typography analysis |
|
| Component usage |
|
| Find duplicates |
|
Example Usage
List all projects
{
"tool": "penpot_projects",
"arguments": {
"action": "list"
}
}Search for files
{
"tool": "penpot_search",
"arguments": {
"action": "files",
"query": "dashboard"
}
}Export component as PNG
{
"tool": "penpot_exports",
"arguments": {
"action": "export",
"fileId": "file-uuid",
"objectId": "object-uuid",
"format": "png",
"scale": 2
}
}Get design tokens as CSS
{
"tool": "penpot_tokens",
"arguments": {
"action": "export_css",
"fileId": "file-uuid"
}
}Analyze design system
{
"tool": "penpot_analyze",
"arguments": {
"action": "design_system",
"fileId": "file-uuid"
}
}Development
# Development mode with hot reload
npm run dev
# Build
npm run build
# Run tests
npm testAPI Reference
This MCP server uses Penpot's RPC API with Transit+JSON encoding:
UUIDs are encoded with
~uprefixKeywords are encoded with
~:prefixAll requests go through
/rpc/command/{command-name}
License
MIT
This server cannot be installed
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Latest Blog Posts
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/devstroop/penpot-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server