Skip to main content
Glama

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault
MIRO_ENV_FILENoPath to the env file containing MIRO_ACCESS_TOKEN. Overrides the default location ~/.config/miro-mcp/miro.env.
MIRO_MCP_PROFILENoTool profile to expose: full (default, all 77 tools) or essential (~15 tools).full
MIRO_ACCESS_TOKENNoMiro OAuth access token. Provide this directly or supply the token via an env file.

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

CapabilityDetails
tools
{
  "listChanged": false
}
prompts
{
  "listChanged": false
}
resources
{
  "subscribe": false,
  "listChanged": false
}
experimental
{}

Tools

Functions exposed to the LLM to take actions

NameDescription
list_boardsA

List boards visible to the token.

Offset-paginated. query filters on board name/description, owner accepts e.g. me or a user id, sort e.g. default, alphabetically, last_opened, last_created, last_modified. Set fetch_all to walk all pages (careful on large accounts).

get_boardB

Get full details of one board (name, owner, links, sharing policy).

create_boardC

Create a new board. team_id targets a team; project_id targets a Miro space (projects were renamed to spaces).

copy_boardC

Copy an existing board, optionally renaming or moving it to a team.

update_boardC

Rename a board or change its description.

delete_boardA

Delete a board permanently. Requires confirm=true.

list_connectorsB

List connectors on a board (cursor-paginated).

get_connectorC

Get one connector (start/end items, captions, style).

create_connectorC

Connect two items. caption adds a text label. Caps like end_stroke_cap="arrow" control arrowheads; stroke_style is normal, dotted or dashed.

update_connectorC

Update a connector's endpoints, caption or style.

delete_connectorC

Delete a connector. Requires confirm=true.

create_docB

Create a doc format item on the board.

content_type is markdown or html. Docs cannot be edited via REST after creation — see replace_doc.

get_docC

Get a doc format item including its markdown/html content.

delete_docC

Delete a doc format item. Requires confirm=true.

replace_docA

Replace a doc's content — implemented as read + delete + create because REST has no doc update endpoint.

The new doc gets a NEW item id; the old id stops existing. Preserves position, geometry, parent and content type (unless overridden). Requires confirm=true.

get_board_thumbnailA

Get the board's thumbnail image URL.

Reads the board's picture field — a small rendered preview, not a full-fidelity export. For PDF/SVG use the Enterprise export job tools.

list_board_export_jobsB

List board export jobs for an organization.

ENTERPRISE PLAN ONLY — requires a Discovery access token.

create_board_export_jobA

Start a board export job (up to 1000 boards).

ENTERPRISE PLAN ONLY — requires a Discovery access token. format is SVG (default), HTML, or PDF. Returns the job id; poll get_board_export_job_status then download via get_board_export_job_results (results live for 14 days).

get_board_export_job_statusB

Get the status of a board export job.

ENTERPRISE PLAN ONLY — requires a Discovery access token.

get_board_export_job_resultsA

Get the download links of a finished board export job.

ENTERPRISE PLAN ONLY — requires a Discovery access token.

create_groupC

Group items together. item_ids are the items to group.

list_groupsB

List all groups on a board (cursor-paginated).

get_groupC

Get one group with the items it contains.

get_group_itemsB

List the items that belong to a group (cursor-paginated).

update_groupB

Replace a group's membership entirely with a new set of items.

A new group id is assigned by Miro on update.

ungroupA

Dissolve a group (items stay on the board). Requires confirm=true.

list_itemsA

List items on a board in a compact shape (id, type, x, y, size, parent, text).

type filters to one item type (app_card, card, doc_format, document, embed, frame, image, shape, sticky_note, text). parent_item_id lists children of a frame. Cursor-paginated; fetch_all walks all pages.

get_itemB

Get the full JSON of one item (data, style, position, geometry, parent, timestamps).

search_itemsB

Search items by text content (client-side scan of titles/content).

Scans up to max_pages x 50 items. Returns compact matches.

update_item_positionB

Move an item on the canvas or reparent it into/out of a frame.

Works on any item type. parent_id set to a frame id nests the item; use "none" semantics per Miro docs to detach (send parent omitted and change position instead).

delete_itemA

Delete any single item. Requires confirm=true; the item id is logged when confirmed.

get_items_by_tagC

List items carrying a given tag (offset-paginated).

bulk_create_itemsA

Create up to 20 items in one call.

Each entry follows the Miro bulk schema: {"type": "sticky_note", "data": {...}, "style": {...}, "position": {"x":..,"y":..}, "geometry": {...}, "parent": {"id": frame_id}}. Types: app_card, card, document, embed, image (URL), shape, sticky_note, text.

bulk_update_itemsA

Update many items concurrently (client-side batch; no bulk-update endpoint exists in REST).

Each entry: {"item_id": str, "item_type": str?} plus any of data, style, position, geometry, parent dicts sent verbatim. With item_type the typed endpoint is used (e.g. sticky_notes); without it, the generic position/parent endpoint. Returns per-item ok/error results.

bulk_delete_itemsB

Delete many items concurrently. Requires confirm=true; ids are logged when confirmed.

create_sticky_noteC

Create a sticky note. content accepts simple HTML (<p>, <b>, <br/>...). fill_color is a Miro palette name (gray, light_yellow, yellow, orange, light_green, green, dark_green, cyan, light_pink, pink, violet, red, light_blue, blue, dark_blue, black).

update_sticky_noteC

Update a sticky note's content, style, position or parent.

create_shapeC

Create a shape. shape is one of: rectangle, round_rectangle, circle, triangle, rhombus, parallelogram, trapezoid, pentagon, hexagon, octagon, wedge_round_rectangle_callout, star, flow_chart_predefined_process, cloud, cross, can, right_arrow, left_arrow, left_right_arrow, left_brace, right_brace. Colors are hex strings like #ff0000.

update_shapeC

Update a shape's content, style, position or parent.

create_textC

Create a standalone text item. content accepts simple HTML.

update_textC

Update a text item's content, style, position or parent.

create_cardC

Create a card. due_date is ISO 8601 (2026-12-31).

update_cardC

Update a card's data, style, position or parent.

create_app_cardC

Create an app card (widget card linked to an app).

status: disconnected, connected or disabled. fields is a list of field values shown on the card. border_shape: round or square.

update_app_cardC

Update an app card's data, style, position or parent.

create_frameC

Create a frame. show_content hides/shows children on the canvas. format accepts custom; frame type defaults to freeform.

update_frameC

Update a frame's title, visibility, style, size or position.

create_embedC

Create an embed item from a URL. mode: inline or modal.

update_embedC

Update an embed item's data, position or parent.

create_document_from_urlC

Add a document item (PDF, etc.) to the board from a URL.

upload_documentC

Upload a document file from the local disk (PDF, DOCX, PPTX, XLSX, CSV; max ~30 MB).

update_documentC

Update a document item (replace its URL, retitle, move).

upload_imageC

Upload a local image file to the board (PNG/JPG/SVG, max 6 MB).

This is a real multipart upload — the main gap vs. the hosted Miro connector.

create_image_from_urlC

Create an image item from a public URL.

update_imageC

Update an image item (swap URL, retitle, move/resize).

list_code_widgetsC

List code widget items. EXPERIMENTAL: uses the /v2-experimental endpoints which may change.

get_code_widgetC

Get one code widget. EXPERIMENTAL.

create_code_widgetC

Create a code widget (syntax-highlighted code block). EXPERIMENTAL.

update_code_widgetD

Update a code widget. EXPERIMENTAL.

list_board_membersB

List members of a board (offset-paginated). Set fetch_all to walk all pages.

get_board_memberC

Get one board member (role, type).

share_boardB

Invite users to a board by email (up to 20 per call).

role is one of viewer, commenter, editor, coowner. Grants access — requires confirm=true.

update_board_memberB

Change a board member's role (viewer, commenter, editor, coowner).

Requires confirm=true.

remove_board_memberB

Remove a member from a board. Requires confirm=true.

list_mindmap_nodesC

List mind map nodes on a board. EXPERIMENTAL — the /v2-experimental API may change.

get_mindmap_nodeC

Get one mind map node. EXPERIMENTAL.

create_mindmap_nodeB

Create a mind map node (text type). EXPERIMENTAL.

With parent_node_id the node becomes a child of that node; without it Miro creates/extends the root structure.

delete_mindmap_nodeB

Delete a mind map node. EXPERIMENTAL. Requires confirm=true.

whoamiA

Show the context of the current access token.

Returns the token type, the user the token belongs to, the team it was installed on, and the granted scopes. Useful to verify auth before other calls. Requires no board.

list_tagsB

List all tags on a board (cursor-paginated).

create_tagB

Create a tag. fill_color (required by Miro) is a colour name: red, light_green, cyan, yellow, magenta, green, blue, gray, violet, dark_green, dark_blue or black.

get_tagC

Get one tag.

update_tagA

Rename a tag or change its color. Note: tag changes via REST are not reflected on the board in realtime — refresh the board to see them.

delete_tagA

Delete a tag from the board. Requires confirm=true.

attach_tagB

Attach a tag to an item (cards/stickies: max 8 tags). Changes are not reflected in realtime — refresh the board to see them.

detach_tagB

Remove a tag from an item. Requires confirm=true.

get_item_tagsC

List the tags attached to an item.

Prompts

Interactive templates invoked by user choice

NameDescription

No prompts

Resources

Contextual data attached and managed by the client

NameDescription

No resources

TDQS

C2.8/5.0

Scored across 77 tools

Disambiguation4/5

Most tools have a distinct resource/action target, and descriptions clarify overlaps such as generic get_item versus type-specific get_doc/get_group. However, the many per-type create/update tools plus generic bulk and generic get/list tools create some selection ambiguity for agents.

Naming Consistency4/5

The set overwhelmingly follows a snake_case verb_noun convention (create_board, update_sticky_note, bulk_delete_items). Minor deviations like whoami and ungroup are readable but not fully consistent with the pattern.

Tool Count1/5

77 tools is an extreme mismatch for a coherent agent-facing toolset; the surface is inflated by per-item-type CRUD variants and bulk/generic alternatives. This creates substantial selection burden even if individual tools are useful.

Completeness4/5

The surface covers boards, members, tags, groups, connectors, docs, many item types, exports, and auth, with broad CRUD coverage. Minor gaps remain, such as no update operation for mind map nodes and some resource access relying on generic item tools.

Maintenance

ActivityMaintained
ResponsivenessNo issues