Penpot MCP Server
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| PENPOT_API_URL | No | The URL of the Penpot instance (self-hosted or public). | https://design.penpot.app |
| PENPOT_ACCESS_TOKEN | Yes | Your Penpot access token for authentication. |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| list_filesA | List all files in a project |
| get_fileC | Get detailed information about a file |
| create_fileC | Create a new file in a project |
| rename_fileC | Rename a file |
| delete_fileC | Delete a file |
| list_pagesB | List all pages in a file |
| add_pageB | Add a new page to a file |
| get_page_shapesA | Get all shapes on a specific page |
| query_shapesA | Query and filter shapes with multiple criteria (like grep for shapes). Useful for bulk operations like changing color themes, alignment, or filtering by area/type. Returns only the requested fields. |
| update_shapeB | Update shape properties including position, size, colors, gradients, images, borders, shadows, blur, blend modes, text alignment, and visual effects |
| get_shape_propertiesA | Get detailed properties of a specific shape including colors, text properties, fonts, dimensions, effects, and all other attributes |
| delete_shapeB | Delete a shape from the page |
| create_rectangleB | Create a rectangle shape with colors, gradients, images, borders, rounded corners, shadows, blur, and blend modes |
| create_circleB | Create a circle shape with colors, gradients, images, borders, shadows, blur, and blend modes |
| create_textB | Create a text shape with color, styling, alignment, shadows, blur effects, and blend modes |
| create_frameB | Create a frame shape (container for other shapes) with colors, gradients, images, borders, shadows, blur, and blend modes |
| create_componentB | Create a component from a shape |
| list_componentsB | List all components in a file |
| list_teamsA | List all teams the user has access to |
| list_projectsA | List all projects in a team |
| create_teamC | Create a new team |
| create_projectC | Create a new project in a team |
| get_teamA | Get detailed information about a specific team (provide either teamId or fileId) |
| get_team_statsB | Get statistics for a team (projects, files, members count) |
| update_teamC | Update team information (name) |
| delete_teamB | Delete a team (requires owner permissions) |
| get_team_membersB | Get list of all members in a team |
| update_team_member_roleB | Update a team member's role (viewer, editor, admin, owner) |
| delete_team_memberC | Remove a member from a team |
| leave_teamB | Leave a team (current user leaves the team) |
| get_team_invitationsA | Get list of pending invitations for a team |
| create_team_invitationsB | Create invitations for one or more email addresses to join a team |
| delete_team_invitationB | Delete a pending team invitation by email |
| update_team_invitation_roleA | Update the role of a pending team invitation by email |
| get_team_shared_filesB | Get all files shared with a team |
| get_team_recent_filesB | Get recently modified files in a team |
| create_share_linkC | Create a shareable link for a file |
| delete_share_linkB | Delete a share link |
| create_comment_threadB | Create a new comment thread on a page |
| list_comment_threadsA | List all comment threads in a file or team (provide either fileId or teamId) |
| get_comment_threadB | Get details of a specific comment thread |
| get_commentsA | Get all comments in a thread |
| create_commentB | Add a comment to an existing thread |
| update_commentC | Update a comment content |
| delete_commentB | Delete a comment |
| update_comment_thread_statusB | Mark a comment thread as resolved or unresolved |
| update_comment_thread_positionA | Move a comment thread to a new position |
| delete_comment_threadC | Delete a comment thread |
| get_unread_comment_threadsA | Get all unread comment threads for a team |
| create_media_from_urlC | Create a media object from a URL |
| clone_media_objectC | Clone an existing media object |
| list_file_mediaA | List all media objects in a file |
| list_font_variantsA | List all custom font variants for a team, file, or project |
| create_font_variantA | Create a new font variant (requires font data). Font weights: 100-900 in increments of 100. |
| update_fontB | Update a font's name |
| delete_fontA | Delete a custom font (removes all variants) |
| delete_font_variantB | Delete a specific font variant (e.g., Bold, Italic) |
| list_webhooksA | List all webhooks for a team |
| create_webhookA | Create a new webhook for team event notifications |
| update_webhookB | Update an existing webhook (URL, type, or active status) |
| delete_webhookB | Delete a webhook |
| search_shapesB | Search for shapes in a file by name |
| search_filesB | Search for files by name |
| get_profileB | Get current user profile |
| list_file_snapshotsB | List all snapshots (versions) of a file |
| create_file_snapshotA | Create a new snapshot (version) of a file for backup/versioning |
| update_file_snapshotB | Update a snapshot's label/description |
| delete_file_snapshotB | Delete a file snapshot (version) |
| restore_file_snapshotA | Restore a file to a previous snapshot (version). This will replace the current file content with the snapshot content. |
| lock_file_snapshotA | Lock a snapshot to prevent it from being deleted (protect important versions) |
| unlock_file_snapshotA | Unlock a snapshot to allow deletion |
| get_file_librariesB | Get all component libraries used by a file |
| has_file_librariesA | Check if a file uses any component libraries (returns boolean) |
| link_file_to_libraryA | Link a file to a component library to use its components. Returns recursive list of libraries used by that library. |
| unlink_file_from_libraryC | Unlink a file from a component library |
| get_library_usageA | Get the number of files that use this library |
| get_library_file_referencesB | Get all file references that use this library |
| update_file_library_sync_statusC | Update the synchronization status of a file->library link |
| ignore_file_library_sync_statusC | Ignore library synchronization status for a file at a specific date/time |
| align_shapesC | Align multiple shapes relative to each other or to a selection bounds |
| distribute_shapesB | Distribute multiple shapes evenly with equal spacing |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- 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/zcube/penpot-mcp-server'
If you have feedback or need assistance with the MCP directory API, please join our Discord server