Skip to main content
Glama

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault
MIRO_ACCESS_TOKENYesMiro access token. Create an app with 'boards:read' and 'boards:write' permissions at miro.com/app/settings/user-profile/apps, install it to your team, and copy the token.

Capabilities

Features and capabilities supported by this server

CapabilityDetails
tools
{}
prompts
{
  "listChanged": true
}
resources
{
  "listChanged": true
}

Tools

Functions exposed to the LLM to take actions

NameDescription
miro_attach_tag

Attach an existing tag to a sticky note or card. The tag must already exist; create it first with miro_create_tag if needed. Only sticky_note and card items support tags.

USE WHEN: "tag this sticky as Urgent", "add the Done label", "mark this card with Priority"

FAILS WHEN: tag_id doesn't exist on this board (list with miro_list_tags), item is not a sticky_note or card.

VOICE-FRIENDLY: "Tagged sticky with 'Urgent'"

miro_bulk_create

Create multiple items at once (max 20). For creating only stickies in a grid, use miro_create_sticky_grid instead.

USE WHEN: "add these 5 stickies", "create items for each of these", "batch add"

VOICE-FRIENDLY: "Created 5 items on the board"

miro_bulk_delete

Delete multiple items at once (max 20).

WARNING: Cannot be undone. Use dry_run=true to preview first.

VOICE-FRIENDLY: "Deleted 5 items from the board"

miro_bulk_update

Update multiple items at once (max 20). Only provide fields you want to change.

VOICE-FRIENDLY: "Updated 5 items on the board"

miro_copy_board

Copy an existing Miro board.

VOICE-FRIENDLY: "Copied board to 'Sprint Planning Copy'"

miro_create_app_card

Create an app card with custom fields and status indicators. For simple cards with due dates, use miro_create_card instead.

USE WHEN: "create an app card", "add a card with fields", "create a custom card"

VOICE-FRIENDLY: "Created app card 'Integration Status'"

miro_create_board

Create a new Miro board.

VOICE-FRIENDLY: "Created board 'Sprint Planning'"

miro_create_card

Create a card on a Miro board. Cards have title, description, and due dates. For cards with custom fields and status, use miro_create_app_card.

USE WHEN: "add a card", "create a task card", "card with due date"

VOICE-FRIENDLY: "Created card 'Review design specs'"

miro_create_connector

Create a connector line between two items. Styles: straight, elbowed (default), curved. Caps: none, arrow, stealth, diamond, filled_diamond, oval, filled_oval, triangle, filled_triangle.

miro_create_doc

Create a rich text document on a Miro board from Markdown content.

USE WHEN: User says "add a document", "create a doc from markdown", "put markdown on the board"

PARAMETERS:

  • board_id: Required

  • content: Markdown text (required). Supports headings, lists, bold, italic, links, code blocks.

  • x, y: Position

  • parent_id: Frame ID to place doc in

EXAMPLE: {"board_id": "uXjVN1234", "content": "# Sprint Goals\n- Ship v2.0\n- Fix critical bugs"}

RELATED: Use miro_get_doc to read doc content. Use miro_delete_doc to remove. For URL-based documents, use miro_create_document instead.

VOICE-FRIENDLY: "Created doc format item on board"

miro_create_document

Add a document (PDF, etc.) to a Miro board from a URL. URL must be publicly accessible.

RELATED: To upload a local file instead, use miro_upload_document.

miro_create_embed

Embed external content as a live preview on a Miro board. Supports YouTube, Vimeo, Figma, Google Docs, Loom, and other oEmbed providers. For static images from URL, use miro_create_image. For document references from URL, use miro_create_document.

USE WHEN: "embed this YouTube video", "add a Figma link", "embed Google Doc", "put a Loom video on the board"

miro_create_export_job

Export boards to PDF, SVG, or HTML. ENTERPRISE ONLY. Returns job ID; use miro_get_export_job_status to monitor.

miro_create_flowchart_shape

Create a flowchart shape using the experimental API. Supports additional stencil shapes beyond the standard shape tool.

USE WHEN: User says "create a flowchart shape", "add a process box", "draw a decision diamond for flowchart"

For standard shapes, use miro_create_shape instead. This tool uses the v2-experimental API for flowchart-specific stencil shapes.

PARAMETERS:

  • board_id: Required

  • shape: Shape type (required). Supports: rectangle, round_rectangle, circle, rhombus, parallelogram, trapezoid, pentagon, hexagon, star, flow_chart_predefined_process, wedge_round_rectangle_callout, etc.

  • content: Text inside the shape

  • x, y: Position

  • width, height: Size (default 200x200)

  • fill_color: Fill color (hex like #006400)

  • border_color: Border color (hex like #000000)

  • parent_id: Frame ID

NOTE: Uses v2-experimental API. Shape types may change when this moves to GA.

miro_create_frame

Create a frame container to group items visually. For logical grouping without a visual border, use miro_create_group.

miro_create_group

Group multiple items together logically (minimum 2). Grouped items move and resize together. For a visible container with a border and title, use miro_create_frame.

VOICE-FRIENDLY: "Grouped 4 items together"

miro_create_image

Add an image to a Miro board from a URL.

USE WHEN: User says "add an image", "insert picture from URL", "put this image on the board"

PARAMETERS:

  • board_id: Required

  • url: Image URL (must be publicly accessible, required)

  • title: Alt text / title

  • width: Image width (preserves aspect ratio)

  • x, y: Position

NOTE: The image URL must be publicly accessible. Private URLs won't work.

RELATED: To upload a local file instead, use miro_upload_image.

miro_create_mindmap_node

Create a mindmap node. Omit parent_id for root; add parent_id for children. node_view: "text" (default) or "bubble".

miro_create_shape

Create a shape on a Miro board.

USE WHEN: User says "add a rectangle", "draw a circle", "create a box for X"

SHAPE TYPES:

  • Basic: rectangle, round_rectangle, circle, triangle, rhombus

  • Flow: parallelogram, trapezoid, pentagon, hexagon, star

  • Flowchart: flow_chart_predefined_process, wedge_round_rectangle_callout

PARAMETERS:

  • board_id: Required. Get from list_boards or find_board

  • shape: Shape type (required, default: rectangle)

  • content: Text inside shape

  • color: Fill color (e.g., "#FF5733" or color name)

  • x, y: Position (default: 0, 0)

  • width, height: Size (default: 200, 200)

RETURNS: Item ID, shape type, position, size, and view link.

RELATED: For flowchart-specific stencil shapes (experimental API), use miro_create_flowchart_shape instead.

EXAMPLE: {"board_id": "uXjVN1234", "shape": "circle", "content": "Start", "color": "green", "x": 0, "y": 0}

miro_create_sticky

Create a sticky note on a Miro board. For multiple stickies in a grid, use miro_create_sticky_grid. For batch creation of mixed items, use miro_bulk_create.

USE WHEN: "add a sticky", "create note saying X", "put a yellow sticky"

VOICE-FRIENDLY: "Created yellow sticky 'Action item: Review design'"

miro_create_sticky_grid

Create multiple sticky notes arranged in a grid layout (max 50). For mixed item types, use miro_bulk_create.

USE WHEN: "add a grid of stickies", "create 6 stickies in rows", "make sticky notes for each idea"

VOICE-FRIENDLY: "Created 9 stickies in a 3x3 grid"

miro_create_tag

Create a tag on a Miro board. Colors: red, magenta, violet, blue, cyan, green, yellow, gray, light_green, dark_green, dark_blue, dark_gray, black.

VOICE-FRIENDLY: "Created red tag 'Urgent'"

miro_create_text

Add free-floating text to a Miro board with no background or border. For notes with colored backgrounds, use miro_create_sticky. For rich Markdown documents, use miro_create_doc.

USE WHEN: "add a title", "put heading text", "write a label", "add text saying X"

miro_delete_app_card

Delete an app card from a Miro board.

WARNING: Cannot be undone. Use dry_run=true to preview first.

VOICE-FRIENDLY: "App card deleted successfully"

miro_delete_board

Delete a Miro board permanently.

WARNING: Cannot be undone. Use dry_run=true to preview first.

miro_delete_connector

Delete a connector from a Miro board.

WARNING: Cannot be undone. Use dry_run=true to preview first.

VOICE-FRIENDLY: "Connector deleted successfully"

miro_delete_doc

Delete a doc format item from a Miro board.

USE WHEN: User says "remove the document", "delete that doc"

PARAMETERS:

  • board_id: Required

  • item_id: Doc format item ID to delete (required)

  • dry_run: If true, returns preview without deleting (optional)

WARNING: This action cannot be undone. Use dry_run=true to preview what will be deleted before executing.

RELATED: Use miro_get_doc to inspect before deleting. Use miro_create_doc to create new documents.

miro_delete_frame

Delete a frame from a Miro board. Items inside are NOT deleted; they become ungrouped.

WARNING: Cannot be undone. Use dry_run=true to preview first.

VOICE-FRIENDLY: "Frame deleted successfully"

miro_delete_group

Delete a group. Set delete_items=true to also delete items (default: items are released to move independently).

USE WHEN: deleting a group OR ungrouping items. With delete_items=false (default), items are ungrouped and remain on the board. With delete_items=true, both the group and its items are permanently deleted.

WARNING: Deleting items (delete_items=true) cannot be undone. Use dry_run=true to preview first.

VOICE-FRIENDLY: "Group deleted, items ungrouped"

miro_delete_item

Delete an item from a Miro board.

WARNING: Cannot be undone. Use dry_run=true to preview first.

miro_delete_mindmap_node

Delete a mindmap node. Deleting a parent may affect children. Uses v2-experimental API.

WARNING: Cannot be undone. Use dry_run=true to preview first.

miro_delete_tag

Delete a tag from a board. Removes the tag from all items.

WARNING: Cannot be undone. Use dry_run=true to preview first.

VOICE-FRIENDLY: "Tag deleted successfully"

miro_detach_tag

Remove a tag from a sticky note or card. The tag stays on the board for reuse; to delete it entirely, use miro_delete_tag.

USE WHEN: "remove the Urgent tag", "untag this card", "take off the Done label"

miro_find_board

Find a Miro board by name (case-insensitive, partial match). Returns board ID for subsequent operations. For listing all boards, use miro_list_boards.

USE WHEN: "find board named X", "get the Design Sprint board"

VOICE-FRIENDLY: "Found 'Design Sprint' board - ready to work on it"

miro_generate_diagram

Generate diagram on Miro from Mermaid code. Creates shapes and connectors with auto-layout.

USE WHEN: "create flowchart", "generate diagram", "draw process flow", "sequence diagram"

TYPES: flowchart/graph, sequenceDiagram FLOWCHART: A[rect] --> B{diamond} -->|label| C((circle)) SEQUENCE: participant A; A->>B: sync; A-->>B: async

miro_get_app_card

Get details of a specific app card by ID.

VOICE-FRIENDLY: "App card 'API Status' shows 3 custom fields"

miro_get_audit_log

Query local audit log for MCP tool executions (this session only). Filter by time range, tool, board, action type, or success/failure.

miro_get_board

Get board metadata: name, description, owner, creation date, and sharing policy.

USE WHEN: "who owns this board?", "when was this board created?", "board settings", "tell me about this board"

NOT FOR: Board content overview with item counts (use miro_get_board_summary). Full content export for AI analysis (use miro_get_board_content).

PARAMETERS:

  • board_id: Required. Get from miro_list_boards or miro_find_board.

RETURNS: Board name, description, owner info, creation/modification timestamps, sharing policy, and view link.

VOICE-FRIENDLY: "Board 'Sprint Planning' owned by Jane, created Jan 15"

miro_get_board_content

Get all board content for AI analysis and documentation generation. Returns items by type, frame hierarchy, connectors, and tags. For a quick summary, use miro_get_board_summary instead.

USE WHEN: "analyze this board", "generate documentation from board", "describe everything on this board"

VOICE-FRIENDLY: "Retrieved full content for 'Design Sprint': 26 items across 3 frames, 5 connectors, 2 tags"

miro_get_board_member

Get details of a specific board member.

VOICE-FRIENDLY: "John Smith has editor access"

miro_get_board_picture

Get the preview image URL for a board. Works for all Miro plans. For full PDF/SVG exports, use the Enterprise export tools.

VOICE-FRIENDLY: "Got preview image for the board"

miro_get_board_summary

Get board overview with item counts and statistics. For full content export, use miro_get_board_content instead.

USE WHEN: "summarize this board", "board stats", "what's the overview"

VOICE-FRIENDLY: "Design Sprint has 15 stickies, 8 shapes, and 3 frames - 26 items total"

miro_get_connector

Get full details of a specific connector by ID.

VOICE-FRIENDLY: "This connector links Item A to Item B with a curved arrow"

miro_get_desire_paths

Query desire path normalizations. Shows what agents tried to send and how it was auto-corrected (URLs in ID fields, camelCase keys, string numbers, etc.). USE WHEN reviewing tool usage patterns to improve descriptions or schemas.

Filter by tool name or normalizer rule. Returns top patterns and recent events.

miro_get_doc

Get details of a doc format item by ID.

USE WHEN: User asks "show me that document", "what's in this doc", "read the document"

PARAMETERS:

  • board_id: Required

  • item_id: Doc format item ID (required)

RETURNS: Document content (Markdown), position, timestamps.

RELATED: Use miro_create_doc to create new documents. Use miro_delete_doc to remove.

miro_get_document

Get details of a document on a Miro board, including its Miro-hosted URL and title. For image items, use miro_get_image instead.

USE WHEN: "get document details", "what document is this", "document URL"

VOICE-FRIENDLY: "Document 'Q4 Report' hosted at Miro"

miro_get_export_job_results

Get download links for completed export. ENTERPRISE ONLY. Links expire in 15 min; call again to regenerate.

miro_get_export_job_status

Check export job progress. ENTERPRISE ONLY.

miro_get_frame

Get full details of a specific frame by ID. To get items inside the frame, use miro_get_frame_items.

VOICE-FRIENDLY: "Frame 'Sprint Planning' is 800x600 with 12 items inside"

miro_get_frame_items

Get all items contained within a specific frame. Filterable by type. For items in a logical group, use miro_get_group_items.

VOICE-FRIENDLY: "Frame has 8 items: 5 stickies, 2 shapes, 1 text"

miro_get_group

Get details of a specific group by ID.

VOICE-FRIENDLY: "This group contains 4 items"

miro_get_group_items

Get items in a group with their details. For items inside a visual frame, use miro_get_frame_items.

VOICE-FRIENDLY: "Group has 4 items: 2 stickies, 1 shape, 1 text"

miro_get_image

Get details of an image on a Miro board, including its Miro-hosted URL, title, and dimensions. Use the image_url to download or reference the image. For document items, use miro_get_document instead.

USE WHEN: "get image URL", "what image is this", "image details"

VOICE-FRIENDLY: "Image 'Logo' is 800x600 at position (100, 200)"

miro_get_item

Get full details of a specific item by ID. If you don't have the item ID, use miro_search_board to find it or miro_list_items to browse.

VOICE-FRIENDLY: "That sticky says 'Review Q4 goals' and was created by John yesterday"

miro_get_item_tags

List tags attached to a specific item.

USE WHEN: User asks "what tags are on this sticky", "show labels for this item"

PARAMETERS:

  • board_id: Required

  • item_id: Item ID (required)

RETURNS: List of tags attached to the item.

RELATED: For the reverse lookup (all items with a specific tag), use miro_get_items_by_tag.

miro_get_items_by_tag

Get all items on a board that have a specific tag attached.

USE WHEN: User asks "show items tagged Urgent", "what's labeled Done", "find all items with this tag"

PARAMETERS:

  • board_id: Required

  • tag_id: Tag ID to filter by (required). Get tag IDs from list_tags.

  • limit: Max items (default 50, max 50)

  • offset: Pagination offset

RETURNS: List of items with IDs, types, and content that have the specified tag.

RELATED: Use miro_list_tags to get tag IDs. Use miro_get_item_tags for the reverse lookup (tags on a specific item). Use miro_attach_tag / miro_detach_tag to manage tag assignments.

VOICE-FRIENDLY: "Found 7 items tagged 'Urgent'"

miro_get_mindmap_node

Get mindmap node details including content, hierarchy, and position. Uses v2-experimental API.

miro_get_tag

Get details of a specific tag by ID.

VOICE-FRIENDLY: "Tag 'Urgent' is red"

miro_list_all_items

Retrieve ALL items from a board with automatic pagination (up to 10000). For quick lookups (max 50), use miro_list_items instead.

USE WHEN: "get everything on board", "list all items", "export board contents"

VOICE-FRIENDLY: "Retrieved 847 items in 9 pages"

miro_list_board_members

List all users who have access to a board.

VOICE-FRIENDLY: "This board has 5 members: 2 editors, 3 viewers"

miro_list_boards

List Miro boards accessible to the user. Use board ID for subsequent operations. For a specific board by name, use miro_find_board instead.

VOICE-FRIENDLY: "Found 5 boards: Design Sprint, Product Roadmap, Team Retro..."

miro_list_connectors

List all connectors (lines/arrows) on a Miro board.

VOICE-FRIENDLY: "Found 12 connectors on the board"

miro_list_groups

List all groups on a Miro board.

VOICE-FRIENDLY: "Found 3 groups on the board"

miro_list_items

List items on a Miro board (max 50). For ALL items with auto-pagination, use miro_list_all_items. For text search, use miro_search_board.

USE WHEN: "what's on the board", "show all stickies", "list shapes"

miro_list_mindmap_nodes

List all mindmap nodes on a board. Returns flat list; use parent_id to reconstruct hierarchy. Uses v2-experimental API.

miro_list_tags

List all tag definitions on a board with IDs, titles, and colors. Use tag IDs from this response with miro_attach_tag, miro_detach_tag, and miro_get_items_by_tag.

USE WHEN: "show all tags", "what tags exist", "list labels", or before attaching a tag to get its ID

VOICE-FRIENDLY: "Board has 8 tags: Urgent (red), Done (green), Review (blue)..."

miro_remove_board_member

Remove a member from a board.

WARNING: This revokes the member's access to the board.

VOICE-FRIENDLY: "Removed member from board"

miro_search_board

Search for items containing specific text on a board (case-insensitive). For listing without search, use miro_list_items.

USE WHEN: "find items about X", "search for budget", "which stickies mention deadline"

VOICE-FRIENDLY: "Found 3 stickies mentioning 'budget'"

miro_share_board

Share a board with someone by email. Roles: viewer (default), commenter, editor.

VOICE-FRIENDLY: "Shared board with jane@example.com as editor"

miro_update_app_card

Update an app card's title, description, status, or custom fields.

VOICE-FRIENDLY: "Updated app card status to 'connected'"

miro_update_board

Update a Miro board's name or description. At least one field must be provided.

VOICE-FRIENDLY: "Updated board name to 'Sprint Planning Q1'"

miro_update_board_member

Update a board member's role (viewer, commenter, or editor).

VOICE-FRIENDLY: "Updated John's role to editor"

miro_update_card

Update a card (title, description, due_date, position).

VOICE-FRIENDLY: "Updated card title to 'Review PR'"

miro_update_connector

Update a connector's style (straight/elbowed/curved), caps, caption, or color.

miro_update_document

Update a document (title, url, position, width).

VOICE-FRIENDLY: "Updated document title"

miro_update_document_from_file

Replace the file on an existing document item with a new local document file.

USE WHEN: User says "replace this document", "update the PDF", "swap the file on this document". Use this to change the file on an existing document item without creating a new one. For updating metadata only (title, position), use miro_update_document instead.

PARAMETERS:

  • board_id: Required

  • item_id: Required. The existing document item to update.

  • file_path: Absolute path to the new document file (required). Supports: pdf, doc, docx, ppt, pptx, xls, xlsx, txt, rtf, csv. Max 6 MB.

  • title: New document title

  • x, y: New position

  • parent_id: Frame ID to move document into

NOTE: The item must already exist as a document. The file must exist on the local filesystem.

RELATED: To create a new document from file, use miro_upload_document. To update metadata only, use miro_update_document.

VOICE-FRIENDLY: "Replaced document file on item"

miro_update_embed

Update an embed (url, mode: inline/modal, dimensions, position).

VOICE-FRIENDLY: "Updated embed settings"

miro_update_frame

Update a frame's title, position, size, or color. At least one field must be provided.

VOICE-FRIENDLY: "Updated frame title to 'Q1 Goals'"

miro_update_group

Update a group's member items. Replaces all members; include existing IDs to keep them. Minimum 2 items.

VOICE-FRIENDLY: "Updated group with 5 items"

miro_update_image

Update an image (title, url, position, width).

VOICE-FRIENDLY: "Updated image title to 'Logo'"

miro_update_image_from_file

Replace the file on an existing image item with a new local image file.

USE WHEN: User says "replace this image", "swap the screenshot", "update the image file". Use this to change the file on an existing image item without creating a new one. For updating metadata only (title, position), use miro_update_image instead.

PARAMETERS:

  • board_id: Required

  • item_id: Required. The existing image item to update.

  • file_path: Absolute path to the new image file (required). Supports: png, jpg, jpeg, gif, webp, svg.

  • title: New image title/alt text

  • x, y: New position

  • parent_id: Frame ID to move image into

NOTE: The item must already exist as an image. The file must exist on the local filesystem.

RELATED: To create a new image from file, use miro_upload_image. To update metadata only, use miro_update_image.

VOICE-FRIENDLY: "Replaced image file on item"

miro_update_item

Update any item's content, position, or style. For sticky-specific options (color, shape), use miro_update_sticky. For card fields, use miro_update_card. For shape styling, use miro_update_shape.

USE WHEN: "change sticky text", "move this item", "update the color"

miro_update_shape

Update a shape with type-specific options (fill_color, text_color, shape type). For generic updates, use miro_update_item.

VOICE-FRIENDLY: "Updated shape to blue circle"

miro_update_sticky

Update a sticky note with type-specific options (shape: square/rectangle, sticky colors). For generic updates, use miro_update_item.

USE WHEN: "change sticky color", "update sticky to square", "resize sticky note"

VOICE-FRIENDLY: "Updated sticky to yellow square"

miro_update_tag

Update a tag's title or color. At least one must be provided.

VOICE-FRIENDLY: "Updated tag to 'Done' with green color"

miro_update_text

Update a text element (content, font_size, color, position).

VOICE-FRIENDLY: "Updated text to 'New Title'"

miro_upload_document

Upload a local document file to a Miro board.

USE WHEN: User says "upload this document", "add PDF to board", "upload spreadsheet/presentation file". Use this for document files (pdf, doc, docx, ppt, pptx, xls, xlsx, txt, rtf, csv). For images (png, jpg, gif), use miro_upload_image instead.

PARAMETERS:

  • board_id: Required

  • file_path: Absolute path to the document file (required). Supports: pdf, doc, docx, ppt, pptx, xls, xlsx, txt, rtf, csv. Max 6 MB.

  • title: Document title

  • x, y: Position

  • parent_id: Frame ID to place document in

NOTE: The file must exist on the local filesystem. For remote documents, use miro_create_document with a URL instead.

RELATED: To upload a local image instead, use miro_upload_image.

VOICE-FRIENDLY: "Uploaded document 'report.pdf' to board"

miro_upload_image

Upload a local image file to a Miro board.

USE WHEN: User says "upload this image", "add screenshot to board", "upload png/jpg/gif/svg file". Use this for image files (png, jpg, gif, webp, svg). For documents (pdf, docx, pptx), use miro_upload_document instead.

PARAMETERS:

  • board_id: Required

  • file_path: Absolute path to the image file (required). Supports: png, jpg, jpeg, gif, webp, svg.

  • title: Image title/alt text

  • x, y: Position

  • parent_id: Frame ID to place image in

NOTE: The file must exist on the local filesystem. For remote images, use miro_create_image with a URL instead.

RELATED: To upload a document file (pdf, docx, etc.), use miro_upload_document.

VOICE-FRIENDLY: "Uploaded image 'screenshot.png' to board"

Prompts

Interactive templates invoked by user choice

NameDescription
create-brainstormSet up a brainstorming board with a central topic and space for ideas.
create-kanbanCreate a kanban board with customizable columns for workflow management.
create-retrospectiveCreate a retrospective board with sections for what went well, what could improve, and action items.
create-sprint-boardCreate a sprint planning board with standard sections for backlog, in progress, review, and done.
create-story-mapCreate a user story mapping board with activities, user tasks, and story cards.

Resources

Contextual data attached and managed by the client

NameDescription

No resources

Latest Blog Posts

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/olgasafonova/miro-mcp-server'

If you have feedback or need assistance with the MCP directory API, please join our Discord server