CCM
/MCP
SkillsMCPMarketplacesDigestToolsAdvertise

This week in Claude

Every Monday: Claude Code, Agent SDK, MCP, and the Anthropic platform moves worth your time.

Skills by Category
Frontend DevelopmentBackend & APIsTesting & QASecurityDevOps & CI/CDGit & Pull RequestsDocumentationCode Review & QualityAI & Agent BuildingSkill Development
MCP Servers by Category
Sales & MarketingWeb & Browser AutomationDatabasesAI & LLM ToolsCloud & InfrastructureCommunication & MessagingDeveloper ToolsDesign & CreativeDocuments & KnowledgeSearch & Web Crawling
Marketplaces by Category
AI Agents & OrchestrationLLM IntegrationDevelopment ToolsFrontend & UIBackend & APIsDatabasesTesting & Code QualityDevOps & CloudSecurity & ComplianceGit & Version Control

Claude Code Marketplaces

Discover Claude Code plugins, extensions, and tools. Automatically updated directory of Anthropic Claude AI marketplaces with development tools, productivity plugins, and integrations.

Resources

  • Browse Skills
  • Browse MCP Servers
  • Browse Marketplaces
  • Skill index
  • MCP index
  • Marketplace index
  • Plugins Reference

Community

  • About
  • Tools
  • Feedback
  • Privacy Policy
  • Advertise

Built for the Claude Code community with Claude Code by mertbuilds.com

Independent project, not affiliated with Anthropic
olgasafonova avatar

Miro

olgasafonova/miro-mcp-server
2415 toolsSTDIOregistry active
Summary

A Go-based bridge to the Miro REST API that exposes 92 tools for controlling boards programmatically. You get full CRUD for sticky notes, shapes, frames, connectors, mindmaps, and tags, plus Mermaid diagram generation and PDF export on Enterprise plans. Ships as a single binary with stdio transport, runs on all platforms, and works with Claude Desktop, Cursor, and any MCP client. The essentials profile (15 tools plus on-demand discovery) cuts context overhead from 15.5K to 2.4K tokens when you need to stay lean. Same author maintains a companion CLI for shell scripting and a TypeScript MCP Apps server for rendering board data as interactive UI cards instead of JSON.

CodeRabbit
CodeRabbit
AI writes the code. CodeRabbit catches the slop.
Try For Free →
inference shell
inference shell
create and run specialised agents in minutes
build now →
MCP-ready Email SendingMCP-ready Email Sending
MCP-ready Email Sending
Plug Mailtrap into your AI workflow and let it handle the email.
Connect Mailtrap MCP →
Make your agent a DeFi expert
Make your agent a DeFi expert
Agent, run crypto. Access onchain data & trade routes via 1inch.
Install now →
Capacitor - Shared memory for your team’s coding agents.
Capacitor - Shared memory for your team’s coding agents.
Make coding agent sessions - Searchable, Shareable, Vendor-neutral & Scored.
Try For Free →
CodeScene MCP ServerCodeScene MCP Server
CodeScene MCP Server
Your agent targets a perfect 10 Code Health score. Deterministic. Every commit.
Try For Free →
Give your AI the whole web as clean markdownGive your AI the whole web as clean markdown
Give your AI the whole web as clean markdown
Integrate web data into your AI product. One API to scrape website & brand data.
Get API Key Now →
belt - the only tool your agent needs
belt - the only tool your agent needs
belt cli automatically finds the best tools and skills for your agent. image, video, music, tts...
one prompt install →
CodeRabbit
CodeRabbit
AI writes the code. CodeRabbit catches the slop.
Try For Free →
inference shell
inference shell
create and run specialised agents in minutes
build now →
MCP-ready Email SendingMCP-ready Email Sending
MCP-ready Email Sending
Plug Mailtrap into your AI workflow and let it handle the email.
Connect Mailtrap MCP →
Make your agent a DeFi expert
Make your agent a DeFi expert
Agent, run crypto. Access onchain data & trade routes via 1inch.
Install now →
Capacitor - Shared memory for your team’s coding agents.
Capacitor - Shared memory for your team’s coding agents.
Make coding agent sessions - Searchable, Shareable, Vendor-neutral & Scored.
Try For Free →
CodeScene MCP ServerCodeScene MCP Server
CodeScene MCP Server
Your agent targets a perfect 10 Code Health score. Deterministic. Every commit.
Try For Free →
Give your AI the whole web as clean markdownGive your AI the whole web as clean markdown
Give your AI the whole web as clean markdown
Integrate web data into your AI product. One API to scrape website & brand data.
Get API Key Now →
belt - the only tool your agent needs
belt - the only tool your agent needs
belt cli automatically finds the best tools and skills for your agent. image, video, music, tts...
one prompt install →

Tools

Public tool metadata for what this MCP can expose to an agent.

15 tools
MIRO_CREATE_APP_CARD_ITEMTool to add an app card item to a board. Use when you need to push a rich preview card with custom fields into a Miro board (e.g., after assembling card data).6 params

Tool to add an app card item to a board. Use when you need to push a rich preview card with custom fields into a Miro board (e.g., after assembling card data).

Parameters* required
board_idstring
ID of the board to add the app card to
dataobject
Payload data for the app card
geometryobject
Geometrical dimensions for an app card item.
parentobject
Parent frame reference for nesting an app card item.
positionobject
Board position for an app card item.
styleobject
Styling options for an app card item.
MIRO_CREATE_BOARDTool to create a new board. Use when you need to set up a board with a specific name, description, and policies. Example: "Create a new board named Project Plan".5 params

Tool to create a new board. Use when you need to set up a board with a specific name, description, and policies. Example: "Create a new board named Project Plan".

Parameters* required
descriptionstring
Description of the board, length between 0 and 300 characters.
namestring
Name for the board, length between 1 and 60 characters.
policyobject
Defines permissions and sharing policies for the board.
projectIdstring
Unique identifier (ID) of the project (space) to which the board belongs.
teamIdstring
Unique identifier (ID) of the team where the board will be created.
MIRO_DELETE_APP_CARD_ITEMTool to delete an app card item from a board. Use when you need to remove an app card item created by your app after it is no longer needed.2 params

Tool to delete an app card item from a board. Use when you need to remove an app card item created by your app after it is no longer needed.

Parameters* required
board_idstring
Unique identifier of the board containing the app card item.
item_idstring
Unique identifier of the app card item to delete.
MIRO_DELETE_DOCUMENT_ITEMTool to delete a document item from a board. Use when you need to remove a document item (e.g., PDF or image) that is no longer relevant. Example: "Delete the document item with ID 'item456' from board 'board123'."2 params

Tool to delete a document item from a board. Use when you need to remove a document item (e.g., PDF or image) that is no longer relevant. Example: "Delete the document item with ID 'item456' from board 'board123'."

Parameters* required
board_idstring
Unique identifier of the board containing the document item.
item_idstring
Unique identifier of the document item to delete.
MIRO_DELETE_ITEMTool to delete a specific item from a board. Use when you need to remove an item (e.g., shape, sticky note) after confirming its board and item IDs.2 params

Tool to delete a specific item from a board. Use when you need to remove an item (e.g., shape, sticky note) after confirming its board and item IDs.

Parameters* required
board_idstring
Unique identifier of the board containing the item.
item_idstring
Unique identifier of the item to delete.
MIRO_GET_APP_CARD_ITEMTool to retrieve a specific app card item by its ID. Use when you need the details of an existing app card item.2 params

Tool to retrieve a specific app card item by its ID. Use when you need the details of an existing app card item.

Parameters* required
board_idstring
Unique identifier of the board containing the app card item
item_idstring
Unique identifier of the app card item to retrieve
MIRO_GET_BOARDTool to retrieve details of a specific board. Use when you have a board ID and need to fetch its metadata.1 params

Tool to retrieve details of a specific board. Use when you have a board ID and need to fetch its metadata.

Parameters* required
board_idstring
Unique identifier of the board to retrieve
MIRO_GET_BOARD_ITEMSTool to list items on a Miro board (shapes, stickies, cards, etc.) with pagination. Use when you need to page through board elements for analytics or reporting.4 params

Tool to list items on a Miro board (shapes, stickies, cards, etc.) with pagination. Use when you need to page through board elements for analytics or reporting.

Parameters* required
board_idstring
Unique identifier of the board to retrieve items from
cursorstring
Cursor for paginating results; use the value from a prior response.
limitinteger
Maximum number of items to return per page (min 1)
typestring
Filter by item type. Examples: 'shape', 'sticky_note', 'card', 'frame', 'text', 'image'
MIRO_GET_BOARD_MEMBERSTool to retrieve a list of members for a board. Use when you need to list all users with access to a board after confirming its ID.3 params

Tool to retrieve a list of members for a board. Use when you need to list all users with access to a board after confirming its ID.

Parameters* required
board_idstring
Unique identifier of the board.
cursorstring
Cursor for pagination, used to retrieve subsequent pages.
limitinteger
Number of results per page (max 100).
MIRO_GET_BOARDSTool to retrieve accessible boards with optional filters. Use when you need to list or search boards by team, project, owner, or keywords.7 params

Tool to retrieve accessible boards with optional filters. Use when you need to list or search boards by team, project, owner, or keywords.

Parameters* required
limitinteger
Number of boards to return per page.
offsetinteger
Offset for pagination.
ownerstring
Filter boards by owner user ID.
project_idstring
Filter boards by project (space) ID.
querystring
Search query to filter boards by name.
sortstring
Sort order of the results.one of default · last_created · last_opened · last_modified · alphabetically
team_idstring
Filter boards by team ID.
MIRO_GET_CONNECTORSTool to retrieve a list of connectors on a board. Use after confirming the board ID and when you need to page through connector items.3 params

Tool to retrieve a list of connectors on a board. Use after confirming the board ID and when you need to page through connector items.

Parameters* required
board_idstring
Unique identifier of the board to retrieve connectors from.
cursorstring
Cursor for pagination to retrieve the next page of connectors.
limitinteger
Maximum number of results to return per call (10 to 50). Defaults to 10.
MIRO_GET_TAGTool to retrieve details of a specific tag on a board. Use when you have a board ID and tag ID and need its metadata.2 params

Tool to retrieve details of a specific tag on a board. Use when you have a board ID and tag ID and need its metadata.

Parameters* required
board_idstring
Unique identifier of the board where the tag resides.
tag_idstring
Unique identifier of the tag to retrieve.
MIRO_LIST_ORGANIZATIONSTool to retrieve list of organizations accessible to the user. Use when you need to view all available organizations.

Tool to retrieve list of organizations accessible to the user. Use when you need to view all available organizations.

No parameter schema in public metadata yet.

MIRO_UPDATE_APP_CARD_ITEMTool to update an app card item on a board. Use when you need to modify properties of an existing app card item. Include only fields to change.7 params

Tool to update an app card item on a board. Use when you need to modify properties of an existing app card item. Include only fields to change.

Parameters* required
board_idstring
ID of the board containing the app card item
dataobject
Core data for an app card item.
geometryobject
Geometrical dimensions for an app card item.
item_idstring
ID of the app card item to update
parentobject
Parent frame reference for nesting an app card item.
positionobject
Board position for an app card item.
styleobject
Styling options for an app card item.
MIRO_UPDATE_BOARDTool to update properties of a specific board. Use when you have a board ID and need to modify its name, description, or permissions policy. Use after confirming the board exists.6 params

Tool to update properties of a specific board. Use when you have a board ID and need to modify its name, description, or permissions policy. Use after confirming the board exists.

Parameters* required
board_idstring
Unique identifier (ID) of the board to update
descriptionstring
New description for the board (up to 300 characters)
namestring
New name for the board (1-60 characters)
policyobject
Defines permissions and sharing policies for the board
projectIdstring
ID of the project (space) to which the board should be added
teamIdstring
ID of the team where the board should be placed

Miro MCP Server

Run your Miro workshops, retros, and planning sessions from the command line. Read boards, create stickies, organize frames, and generate diagrams through Claude, Cursor, or any MCP client.

Community project — Not officially affiliated with Miro. See official options below.

110 tools | Single binary | All platforms | All major AI tools

CI lint CodeScene Average Code Health License: MIT Go Reference codecov MCP context


Documentation

DocumentDescription
QUICKSTART.mdGet running in 2 minutes
SETUP.mdFull setup for all AI tools
CONFIG.mdConfiguration reference
PERFORMANCE.mdOptimization guide
CHANGELOG.mdVersion history
ERRORS.mdError handling & troubleshooting

Quick Start

1. Install

Homebrew (macOS/Linux):

brew tap olgasafonova/tap && brew install miro-mcp-server

One-liner (macOS/Linux):

curl -fsSL https://raw.githubusercontent.com/olgasafonova/miro-mcp-server/main/install.sh | sh

Docker:

docker pull ghcr.io/olgasafonova/miro-mcp-server:latest

Manual download: See SETUP.md for all platforms

2. Get a Miro Token

  1. Go to miro.com/app/settings/user-profile/apps
  2. Create an app with boards:read and boards:write permissions
  3. Install to your team and copy the token

3. Configure Your AI Tool

Claude Code:

claude mcp add miro -e MIRO_ACCESS_TOKEN=your-token -- miro-mcp-server

Claude Desktop / Cursor / VS Code: See SETUP.md

Cursor Marketplace:

/add-plugin miro

Not working? Tell us what made it hard — even one sentence helps.


What You Can Do

CategoryExamples
BoardsCreate, copy, delete, update, share, list members
ItemsSticky notes, shapes, text, cards, app cards, images, documents, frames, docs
DiagramsGenerate flowcharts and sequence diagrams from Mermaid; list and inspect native diagram items
DocsCreate and manage Markdown documents on boards
UploadUpload and replace local image and document files on boards
TablesDiscover and inspect tables on boards
MindmapsCreate mindmap nodes with parent-child relationships
Code WidgetsSyntax-highlighted code snippets on boards (v2-experimental)
Bulk OpsCreate multiple items at once, sticky grids
TagsCreate, attach, update, and organize with tags
GroupsGroup, list, and manage item groups
ConnectorsConnect items with styled arrows
ExportBoard thumbnails, PDF/SVG export (Enterprise)

Voice Examples

  • "Add a yellow sticky saying 'Review PRs'"
  • "Create a flowchart: Start → Decision → End"
  • "What boards do I have?"
  • "Share the Design board with jane@example.com"
  • "Create a mindmap with 'Project Ideas' as root"

Companion Skill: miro-workflow

Validated by SkillCheck Pro

For Claude clients that support skills (Claude Code, Claude Desktop), this repo includes a miro-workflow skill that describes how to assemble a few common board layouts from the atomic create-item tools.

Five layouts are covered:

WorkflowTrigger phrase examples
Sprint Board"set up a sprint board for sprint 42"
Retrospective"create a retro board for our team"
Brainstorm"brainstorm board for [topic]"
Story Map"map the user journey for [product]"
Kanban"kanban for our backlog"

Each one specifies frame sizes, gap math, sticky placement, color conventions (the Miro API takes hex for frame fills and named values for stickies; two different vocabularies), and the tool-call order to follow. For single-tool calls ("add one sticky") or read-only inspection, the atomic tools are usually enough on their own.

The skill is new and likely needs adjustment as more layouts get exercised against real boards. Files live under skills/miro-workflow/. Claude Code auto-discovers skills from ~/Projects/claude-code-config/skills/; for other hosts, follow your client's skill installation docs.

The badge above is awarded by SkillCheck Pro; this skill currently scores 92/100 with zero Critical issues and zero Warnings. Skills in this repo earn the badge at ≥90/100 with zero Critical and zero Warnings; below that bar, the badge is dropped until the skill passes again.


Companion CLI: miro-cli

For shell-first usage, this server has a sibling: miro-cli. Same author, same Miro API coverage, different runtime. One verb per endpoint, JSON in and out, plus a local SQLite mirror for offline search. Reach for it when you're scripting Miro in CI, bulk-migrating stickies between boards, or querying boards offline without burning API quota.

The MCP server and the CLI overlap deliberately. Use the MCP server when an agent runtime is in the loop (Claude Code, Claude Desktop, Cursor). Use the CLI when bash, Makefiles, or CI are. Use both if you want.

Install:

brew install olgasafonova/tap/miro-cli
# or
go install github.com/olgasafonova/miro-cli/cmd/miro-cli@latest

Companion MCP Apps server: miro-mcp-apps

If you want Miro data to render as interactive UI in the chat (cards, tables, color clusters, SVG graphs) instead of streamed JSON, there's a TypeScript sibling: miro-mcp-apps. Eleven tools built on the MCP Apps extension (SEP-1865), reusing the same MIRO_ACCESS_TOKEN. The two servers run side-by-side: this one for the 110-tool CRUD surface, that one for visual at-a-glance views.

You want…Use
Programmatic control: create/update/move/connect items, generate diagramsmiro-mcp-server (this repo)
Visual board summaries, sticky color clusters, connector graphs rendered inlinemiro-mcp-apps
Same in bash, CI, or a Makefilemiro-cli

The MCP Apps pattern is TypeScript-only today (Go SDK has no ext-apps helpers), which is why this companion lives in a separate repo instead of bolting onto the Go server.


Token Efficiency

The full tool surface (110 tools) costs roughly 20.8K tokens of preload; the essentials profile trims that to ~2.8K. For sessions where that footprint matters, set MIRO_TOOLS_PROFILE=essentials in your client config; the server then registers a curated 14-tool subset (boards, list/find/search, sticky/text/frame/connector creation, list/get/update/delete items) plus one discovery meta-tool. Agents reach the rest via miro_tool_search on demand.

ProfileToolsPreload tokens (est.)
full (default)110~20,795
essentials15~2,848

Savings: ~17,760 tokens (86.2% reduction) when you opt into essentials. Description tokens are exact (JSON-marshaled); schema cost is estimated at 200 bytes per tool. Reproduce locally with go run ./cmd/token-count/.

miro_tool_search(query?, category?, limit?) is registered in both profiles. It searches tool names, titles, descriptions, and categories with weighted keyword scoring (name 3×, title 2×, category 2.5×, description 1×), returns up to 50 matches, and never recommends itself. Use it when you don't know which tool to reach for, or to scope to a category before browsing. Empty query plus a category returns the category's tools alphabetically.

See CONFIG.md for the full env-var reference.


All 110 Tools

Board Management (9)
ToolDescription
miro_list_boardsList accessible boards with owner, team, and timestamps
miro_find_boardFind board by name, with the same metadata as the listing
miro_get_boardGet board details
miro_get_board_summaryGet board stats and item counts
miro_get_board_contentGet all board content for AI analysis
miro_create_boardCreate a new board
miro_copy_boardCopy an existing board
miro_update_boardUpdate board name/description
miro_delete_boardDelete a board
Board Members (5)
ToolDescription
miro_list_board_membersList users with access
miro_get_board_memberGet member details
miro_share_boardShare board via email (requires MIRO_SHARE_ALLOWED_DOMAINS; fail-closed by default)
miro_update_board_memberUpdate member role (Destructive: prompts before role escalation)
miro_remove_board_memberRemove member from board

Sharing and role-change tools are guarded for prompt-injection safety. See SECURITY.md and CONFIG.md.

Create Items (18)
ToolDescription
miro_create_stickyCreate a sticky note
miro_create_sticky_gridCreate stickies in a grid layout
miro_create_shapeCreate a shape (rectangle, circle, etc.)
miro_create_flowchart_shapeCreate flowchart shape (experimental API)
miro_create_textCreate text element
miro_create_frameCreate a frame container
miro_create_cardCreate a card with due date
miro_create_app_cardCreate app card with custom fields
miro_create_imageAdd image from URL
miro_upload_imageUpload local image file
miro_upload_documentUpload local document file (PDF, DOCX, etc.)
miro_create_docCreate Markdown document
miro_create_documentAdd document from URL
miro_create_embedEmbed YouTube, Figma, etc.
miro_create_connectorConnect two items with arrow
miro_create_groupGroup items together
miro_create_mindmap_nodeCreate mindmap node
miro_bulk_createCreate multiple items at once
Frames (4)
ToolDescription
miro_get_frameGet frame details
miro_update_frameUpdate frame title/color/size
miro_delete_frameDelete a frame
miro_get_frame_itemsList items inside a frame
Mindmaps (3)
ToolDescription
miro_get_mindmap_nodeGet node details
miro_list_mindmap_nodesList all mindmap nodes
miro_delete_mindmap_nodeDelete a mindmap node
Code Widgets (6, v2-experimental)
ToolDescription
miro_create_code_widgetAdd a syntax-highlighted code snippet
miro_get_code_widgetGet full source and settings
miro_list_code_widgetsList widgets with code previews
miro_update_code_widgetChange code, language, title, or size
miro_move_code_widgetMove to a new position
miro_delete_code_widgetDelete a code widget
Comments (5, v2-experimental)
ToolDescription
miro_create_commentOpen a comment thread, optionally attached to an item
miro_list_commentsList threads with messages and resolved state
miro_get_commentGet one thread with its full message history
miro_reply_commentAppend a reply to a thread
miro_resolve_commentResolve a thread, or reopen with resolved=false
Canvas SVG (3, local transform)
ToolDescription
miro_read_board_svgRender board items as an SVG document (computed locally); frame_id scopes the render to one frame
miro_create_from_svgCreate items from SVG: shapes, text, stickies and frames (data-type hints), triangles, images, connectors (line with data-start/data-end)
miro_update_from_svgApply an SVG diff keyed on data-miro-id: update in place, delete (data-deleted), create additively; read output is re-submittable
Read Items (9)
ToolDescription
miro_list_itemsList items on a board
miro_list_all_itemsGet ALL items with auto-pagination
miro_get_itemGet item details
miro_get_imageGet image details and Miro-hosted URL
miro_get_documentGet document details and Miro-hosted URL
miro_get_app_cardGet app card details
miro_get_docGet Markdown document content
miro_search_boardSearch items by content
miro_who_am_iIntrospect the access token: user, team, organization, application, scopes
Update & Delete Items (18)
ToolDescription
miro_update_itemUpdate item content/position/color
miro_update_stickyUpdate sticky note (shape, color)
miro_update_shapeUpdate shape (fill, text color, type)
miro_update_textUpdate text element
miro_update_cardUpdate card fields
miro_update_imageUpdate image properties
miro_update_image_from_fileReplace image file on existing item
miro_update_documentUpdate document properties
miro_update_document_from_fileReplace document file on existing item
miro_update_embedUpdate embed properties
miro_update_groupUpdate group properties
miro_update_app_cardUpdate app card fields
miro_bulk_updateUpdate multiple items at once
miro_delete_itemDelete an item
miro_delete_app_cardDelete an app card
miro_update_docUpdate document content (full or find-and-replace)
miro_delete_docDelete a Markdown document
miro_bulk_deleteDelete multiple items at once
Tags (9)
ToolDescription
miro_create_tagCreate a tag
miro_list_tagsList all tags on board
miro_get_tagGet tag details by ID
miro_attach_tagAttach tag to item
miro_detach_tagRemove tag from item
miro_get_item_tagsGet tags on an item
miro_get_items_by_tagGet all items with a specific tag
miro_update_tagUpdate tag name/color
miro_delete_tagDelete a tag
Connectors (4)
ToolDescription
miro_list_connectorsList all connectors
miro_get_connectorGet connector details
miro_update_connectorUpdate connector style/caption
miro_delete_connectorDelete a connector
Groups (4)
ToolDescription
miro_list_groupsList all groups on board
miro_get_groupGet group details
miro_get_group_itemsList items in a group
miro_delete_groupDelete or ungroup a group
Export (4)
ToolDescription
miro_get_board_pictureGet board thumbnail
miro_create_export_jobExport to PDF/SVG (Enterprise)
miro_get_export_job_statusCheck export progress
miro_get_export_job_resultsGet download links
Tables (2)
ToolDescription
miro_list_tablesList tables (data_table_format) on a board
miro_get_tableGet table metadata by ID
Discovery (1)
ToolDescription
miro_tool_searchFind the right tool by keyword or category; registered in both profiles and the only gateway to the full surface in essentials mode
Diagrams & Audit (6)
ToolDescription
miro_generate_diagramCreate diagram from Mermaid syntax
miro_list_diagramsList native diagram items on a board
miro_get_diagramGet native diagram metadata by ID
miro_get_audit_logQuery THIS SERVER's local execution log
miro_get_org_audit_logsQuery MIRO's org-wide audit log (Enterprise; auditlogs:read)
miro_get_desire_pathsQuery agent normalization patterns (what agents sent vs. what got auto-corrected)

Diagram Generation

Create flowcharts and sequence diagrams from Mermaid syntax:

Flowchart:

flowchart TB
    A[Start] --> B{Decision}
    B -->|Yes| C[Success]
    B -->|No| D[Retry]
    D --> B

Sequence Diagram:

sequenceDiagram
    Alice->>Bob: Hello Bob!
    Bob-->>Alice: Hi Alice!

Supported: flowchart/graph, sequenceDiagram, directions (TB/LR/BT/RL), shapes ([] rectangle, {} diamond, (()) circle), labeled edges.


Why This Server?

FeatureThis ServerTypeScript alternatives
RuntimeSingle binaryRequires Node.js
Size~14MB100MB+ with node_modules
Startup~50ms500ms-2s
Memory~10MB idle~50MB idle
Diagram generationBuilt-in Mermaid parserAI-based
Rate limitingAutomatic with backoffManual
Caching2-minute TTLNone
Circuit breakerYesNo

Official vs Community

Miro released their official MCP server in December 2025 and has grown it substantially since. Comparison refreshed 18-08-2026 by enumerating the 63 tools the hosted server actually registers at mcp.miro.com, rather than counting the documented set — the docs lag the deployment in both directions: board_trash and space_delete, present on 17-08-2026, were gone the next day, leaving the surface with no hard-destructive verbs. Recent additions come from their changelogs on new MCP tools and code widget endpoints.

FeatureThis ServerOfficial Miro MCP
Tools110 (or 15 in essentials profile)63
Transportstdio + HTTPHTTPS only (hosted at mcp.miro.com)
Self-hostingYesNo
Offline modeYesNo
AuthToken + OAuth2OAuth 2.1, dynamic client registration (Enterprise orgs need admin enablement)
Board list metadataid, owner, team, created/modified timestampsname and URL
Diagram generationMermaid, parsed locally; native diagram items readable via miro_list_diagrams/miro_get_diagramMermaid (diagram_create_mermaid, diagram_update_mermaid) plus a custom DSL
AI contextNoYes (context_explore, context_get)
Layout DSLComposed from bulk create + the miro-workflow skillYes, but marked deprecated upstream in favour of the canvas tools
Canvas as SVGRead + create + update (data-miro-id diff; local geometry transform; spatial approximation). Reads scope to a single frame via frame_id, and read output is directly re-submittable to the update toolYes (read, create, update from SVG). Reads are whole-board only, and read output is re-escaped, so it cannot be fed back to the update tool verbatim
Spaces & sectionsNoYes (10 tools) — workspace-level grouping of boards, not board content
CommentsYes (create, list, get, reply, resolve; v2-experimental)Yes (create, list, reply, resolve)
PrototypesNoYes (read, create, upload URL)
Code widgets6 tools incl. position move (v2-experimental)5 tools (no move)
Docs & TablesDoc formats + table readDoc create/update + table create/sync/history
ImagesCreate, upload, update from fileCreate, upload URL, get data/URL
Bulk operationsYesPartial (table_sync_rows upsert only)
MindmapsYesNo
Tags & GroupsYesNo
Connectors CRUDYesNo
Item-level CRUDYes (sticky, shape, text, card, image, document, embed, frame)Layout DSL, not per-item verbs
Board sharing / membersYes (allowlist-gated)Sharing and role updates; no member CRUD
ExportYes (PDF/SVG)No
Current userDerived from board ownerYes (user_who_am_i)
MCP Resources3No
MCP Prompts5 workflowsBundled agent skills (browse, code-review, diagram, doc, table)
RuntimeSingle Go binaryHosted (closed-source)
Rate limitingAdaptiveN/A (hosted)
CachingBuilt-in (2min TTL)N/A
MetricsPrometheusNo
OpenTelemetryBuilt-in (mcp-otel-go, OTel Registry)No

Where the differences come from. Spaces, sections, canvas-SVG and prototypes have no endpoints in the public REST API v2 — checked 13-08-2026 against the 114-path OpenAPI spec tracked in api-tracking/, and re-checked by probing the live API, since the spec omits endpoints Miro does ship. Those run on Miro-internal APIs. The reverse also holds: mindmaps, tags, groups, connectors and export are public REST surfaces the official server has not wrapped.

Board context is a design difference rather than a gap. context_get returns a server-side AI summary of a board; miro_get_board_content returns the structured content itself — items by type, frame hierarchy, connectors and tags — and lets the model already in your session do the summarizing, with no second inference hop.

When to use the official server: You want zero-setup via plugin marketplace, OAuth 2.1 enterprise security, spaces and sections, comments, board context extraction, or SVG/prototype workflows.

When to use this server: You need full REST coverage (110 tools, or a tunable 15-tool essentials mode), offline/self-hosted operation, richer board listing metadata, bulk ops, mindmaps, tags, connectors, or export.

Both can coexist — use different MCP server names in your config.


Performance

  • Caching: 2-minute TTL reduces API calls
  • Rate limiting: Adapts to Miro's rate limit headers
  • Circuit breaker: Isolates failing endpoints
  • Parallel bulk ops: Creates items concurrently
  • Token validation: Fails fast on startup with clear error
  • Transient error retry: Auto-retries 502/503/504 with backoff
  • OpenTelemetry: Built-in tracing and metrics via mcp-otel-go (OTel Registry)

See PERFORMANCE.md for optimization tips and benchmarks.


HTTP Mode Endpoints

When running with -http :8080:

EndpointDescription
/MCP protocol (Streamable HTTP)
/healthHealth check (JSON)
/health?deep=trueDeep health check (tests Miro API)
/metricsPrometheus metrics
/.well-known/mcp-server-cardSEP-2127 Server Card (JSON) via mcp-servercard-go

Health check response:

{
  "status": "healthy",
  "server": "miro-mcp-server",
  "version": "1.21.0",
  "uptime": "2h30m",
  "components": {
    "config": {"status": "healthy"},
    "miro_api": {"status": "healthy", "latency": "145ms"}
  }
}

Development

# Build
make build

# Run tests
make test

# Run with coverage
make test-cover

# Lint
make lint

# Build for all platforms
make build-all

# See all targets
make help

Docker Deployment

Quick start:

# Using Docker Compose
export MIRO_ACCESS_TOKEN=your-token
docker compose up -d

# Or build and run manually
docker build -t miro-mcp-server .
docker run -e MIRO_ACCESS_TOKEN=xxx -p 8080:8080 miro-mcp-server

docker-compose.yml features:

  • Health checks configured
  • Resource limits template
  • Environment variable passthrough

Debugging with MCP Inspector

Test and debug the server interactively with MCP Inspector:

# Install and run (no setup required)
npx @modelcontextprotocol/inspector miro-mcp-server

# With environment variables
MIRO_ACCESS_TOKEN=your-token npx @modelcontextprotocol/inspector miro-mcp-server

Open http://localhost:6274 to:

  • Browse all 110 tools with their schemas
  • Test tool calls interactively
  • View raw JSON-RPC messages
  • Debug parameter validation

See SETUP.md for more debugging options.


Supported Platforms

PlatformBinary
macOS (Apple Silicon)miro-mcp-server-darwin-arm64
macOS (Intel)miro-mcp-server-darwin-amd64
Linux (x64)miro-mcp-server-linux-amd64
Linux (ARM64)miro-mcp-server-linux-arm64
Windows (x64)miro-mcp-server-windows-amd64.exe
Dockerghcr.io/olgasafonova/miro-mcp-server

Supported AI Tools

ToolStatus
Claude CodeTested
Claude DesktopTested
CursorTested
VS Code + GitHub CopilotSupported
WindsurfSupported
ReplitSupported
Any MCP-compatible clientSupported

See SETUP.md for configuration guides.


Account Compatibility

Account TypeSupport
Free106 tools
Team106 tools
Business106 tools
EnterpriseAll 110 tools

Four tools need an Enterprise plan and fail with a hint saying so: the three PDF/SVG export tools (miro_create_export_job, miro_get_export_job_status, miro_get_export_job_results) and miro_get_org_audit_logs, which additionally needs the auditlogs:read scope. miro_get_board_picture works on every plan. Everything else works on any plan.

The 6 code widget tools and 5 comment tools use Miro's v2-experimental API; availability may vary by account or plan, and the endpoints may change before GA.


Like This Project?

If this server saved you time, consider giving it a ⭐ on GitHub. It helps others discover the project.


More MCP Servers

Check out my other MCP servers:

ServerDescriptionStars
gleif-mcp-serverAccess GLEIF LEI database. Look up company identities, verify legal entities.GitHub stars
mediawiki-mcp-serverConnect AI to any MediaWiki wiki. Search, read, edit wiki content.GitHub stars
nordic-registry-mcp-serverAccess Nordic business registries. Look up companies across Norway, Denmark, Finland, Sweden.GitHub stars
productplan-mcp-serverTalk to your ProductPlan roadmaps. Query OKRs, ideas, launches.GitHub stars
tilbudstrolden-mcpNordic grocery deal hunting. Find offers, plan meals, track spending.GitHub stars
mcp-servercard-goGo library for SEP-2127 Server Cards. Pre-connect discovery for MCP servers.GitHub stars

License

MIT


Built for the Miro and MCP communities.
Miro is a trademark of Miro Inc. This project is not affiliated with or endorsed by Miro.

Featured
CodeRabbit
CodeRabbit
AI writes the code. CodeRabbit catches the slop.
Try For Free →
inference shell
inference shell
create and run specialised agents in minutes
build now →
MCP-ready Email SendingMCP-ready Email Sending
MCP-ready Email Sending
Plug Mailtrap into your AI workflow and let it handle the email.
Connect Mailtrap MCP →
Make your agent a DeFi expert
Make your agent a DeFi expert
Agent, run crypto. Access onchain data & trade routes via 1inch.
Install now →
Capacitor - Shared memory for your team’s coding agents.
Capacitor - Shared memory for your team’s coding agents.
Make coding agent sessions - Searchable, Shareable, Vendor-neutral & Scored.
Try For Free →
CodeScene MCP ServerCodeScene MCP Server
CodeScene MCP Server
Your agent targets a perfect 10 Code Health score. Deterministic. Every commit.
Try For Free →
Give your AI the whole web as clean markdownGive your AI the whole web as clean markdown
Give your AI the whole web as clean markdown
Integrate web data into your AI product. One API to scrape website & brand data.
Get API Key Now →
belt - the only tool your agent needs
belt - the only tool your agent needs
belt cli automatically finds the best tools and skills for your agent. image, video, music, tts...
one prompt install →

Configuration

MIRO_ACCESS_TOKEN

Miro API access token with boards:read and boards:write permissions

Registryactive
Packageghcr.io/olgasafonova/miro-mcp-server:1.21.1
TransportSTDIO
UpdatedMay 9, 2026
View on GitHub

More from olgasafonova

  • ProductPlan MCP Server2
  • Nordic Registry Mcp Server7
  • MediaWiki14
  • GLEIF MCP Server4