Easel
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| PORT | No | The port of the running Easel canvas server that the MCP server should connect to. Passed to the MCP server as the argument --port, e.g. "args": ["-y", "-p", "easel-canvas", "easel-mcp", "--port", "4317"]. | 4317 |
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 | {
"listChanged": true
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| list_boardsA | List the boards on the design canvas (each board is a docs/design/screens/*.html file) with file, title, size, position and page. Use it to find which file to read or edit. |
| read_boardA | Read a board's source HTML exactly as stored in the file. Use it before editing a board. |
| get_selectionA | What the user is looking at right now: selection (the element clicked in edit mode: file, path as element indexes from the children of , tag, kind and label, text, source outerHTML up to 4KB, hash, computed styles), mode (canvas, edit, focus, play), page and pageName, visibleArtboards (boards visible on screen), selectedArtboards, dirty (pending saves), edits (recent edit history), erroredArtboards and firstError (boards with errors). Use it for requests like 'fix the selected element' or 'this screen'. |
| screenshotA | Take a PNG screenshot of a board, or of an element inside it, and return the image file path. Use it to check how a change looks (requires playwright). |
| list_commentsA | List board comments (docs/design/comments.json), optionally for one file or only unresolved ones. |
| add_commentB | Add a comment to a board, or to an element inside it when path is given. |
| resolve_commentA | Mark a comment as resolved (pass resolved=false to reopen it). Use it after fixing what a comment asked for. |
| place_boardB | Record a board's canvas position, title and page in board.json. Use it after creating a new screen to set its name and position. |
| list_errorsA | List boards with errors (script errors, images that failed to load, missing files) and the first error. Use it to check your edits did not break a board. |
| create_boardA | Create a new board (HTML file) from a template and place it on the canvas. Templates: blank (Blank), mobile (390×844 Mobile screen), desktop (1440×900 Desktop screen), doc (Document). Edit the created file directly afterwards. |
| list_notesA | List canvas notes (titles and sticky notes), optionally for one page. |
| add_noteC | Add a note to the canvas. kind=title (large heading) or sticky (sticky note). |
| update_noteC | Edit a note (text, position, width, page, color, size, bold, italic). |
| delete_noteB | Delete a note (the user can undo it in the app). |
| list_pagesB | List canvas pages (the first page is the default). |
| manage_pageA | Manage pages: add (name), rename (id, name), delete (id; its items move to the first page), move (id, index). |
| get_tokensA | Get the design tokens (colors per theme, font sizes, weights, radii, spacing, fonts, minimum tap target). Use only these values when creating or editing screens. |
| check_tokensA | Find off-token values in screen HTML (colors, font sizes, weights, radii, spacing not a multiple of 4). Use it to verify your edits. Omit file to check all screens. |
| reply_commentC | Reply to a comment (resolve=true replies and marks it resolved). |
| save_snapshotA | Save a snapshot by committing only the design folder to git (a saved version). Use only when the user explicitly asks to save. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 20 tools
Each tool targets a fairly distinct resource+action (boards, comments, notes, pages, tokens, snapshots), and the descriptions clarify intent well. Minor overlap exists between resolve_comment and reply_comment(resolve=true), and manage_page collapses four page operations into one generic tool, but misselection risk is low.
Nearly all tools follow a snake_case verb_noun pattern (list_boards, create_board, add_comment, delete_note, check_tokens). The two deviations are 'screenshot' (bare noun) and 'manage_page' (generic multi-operation verb), which are minor but noticeable.
20 tools sit at the upper edge of the comfortable range, but the surface spans six distinct sub-domains (canvas boards, comments, notes, pages, tokens, git snapshots), so each tool broadly earns its place. It is slightly heavy rather than bloated.
Notes and pages have full lifecycle coverage, comments cover list/add/resolve/reply, and tokens plus error checking plus screenshots support the edit-verify loop. Gaps exist (no delete/rename board beyond place_board, no comment edit/delete, no snapshot listing or restore), but agents can work around them.