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.
91 tools | Single binary | All platforms | All major AI tools
demo.mp4
| Document | Description |
|---|---|
| QUICKSTART.md | Get running in 2 minutes |
| SETUP.md | Full setup for all AI tools |
| CONFIG.md | Configuration reference |
| PERFORMANCE.md | Optimization guide |
| CHANGELOG.md | Version history |
| ERRORS.md | Error handling & troubleshooting |
Homebrew (macOS/Linux):
brew tap olgasafonova/tap && brew install miro-mcp-serverOne-liner (macOS/Linux):
curl -fsSL https://raw.githubusercontent.com/olgasafonova/miro-mcp-server/main/install.sh | shDocker:
docker pull ghcr.io/olgasafonova/miro-mcp-server:latestManual download: See SETUP.md for all platforms
- Go to miro.com/app/settings/user-profile/apps
- Create an app with
boards:readandboards:writepermissions - Install to your team and copy the token
Claude Code:
claude mcp add miro -e MIRO_ACCESS_TOKEN=your-token -- miro-mcp-serverClaude Desktop / Cursor / VS Code: See SETUP.md
Cursor Marketplace:
/add-plugin miroNot working? Tell us what made it hard — even one sentence helps.
| Category | Examples |
|---|---|
| Boards | Create, copy, delete, update, share, list members |
| Items | Sticky notes, shapes, text, cards, app cards, images, documents, frames, docs |
| Diagrams | Generate flowcharts and sequence diagrams from Mermaid |
| Docs | Create and manage Markdown documents on boards |
| Upload | Upload and replace local image and document files on boards |
| Tables | Discover and inspect tables on boards |
| Mindmaps | Create mindmap nodes with parent-child relationships |
| Bulk Ops | Create multiple items at once, sticky grids |
| Tags | Create, attach, update, and organize with tags |
| Groups | Group, list, and manage item groups |
| Connectors | Connect items with styled arrows |
| Export | Board thumbnails, PDF/SVG export (Enterprise) |
- "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"
Board Management (9)
| Tool | Description |
|---|---|
miro_list_boards |
List accessible boards |
miro_find_board |
Find board by name |
miro_get_board |
Get board details |
miro_get_board_summary |
Get board stats and item counts |
miro_get_board_content |
Get all board content for AI analysis |
miro_create_board |
Create a new board |
miro_copy_board |
Copy an existing board |
miro_update_board |
Update board name/description |
miro_delete_board |
Delete a board |
Board Members (5)
| Tool | Description |
|---|---|
miro_list_board_members |
List users with access |
miro_get_board_member |
Get member details |
miro_share_board |
Share board via email |
miro_update_board_member |
Update member role |
miro_remove_board_member |
Remove member from board |
Create Items (18)
| Tool | Description |
|---|---|
miro_create_sticky |
Create a sticky note |
miro_create_sticky_grid |
Create stickies in a grid layout |
miro_create_shape |
Create a shape (rectangle, circle, etc.) |
miro_create_flowchart_shape |
Create flowchart shape (experimental API) |
miro_create_text |
Create text element |
miro_create_frame |
Create a frame container |
miro_create_card |
Create a card with due date |
miro_create_app_card |
Create app card with custom fields |
miro_create_image |
Add image from URL |
miro_upload_image |
Upload local image file |
miro_upload_document |
Upload local document file (PDF, DOCX, etc.) |
miro_create_doc |
Create Markdown document |
miro_create_document |
Add document from URL |
miro_create_embed |
Embed YouTube, Figma, etc. |
miro_create_connector |
Connect two items with arrow |
miro_create_group |
Group items together |
miro_create_mindmap_node |
Create mindmap node |
miro_bulk_create |
Create multiple items at once |
Frames (4)
| Tool | Description |
|---|---|
miro_get_frame |
Get frame details |
miro_update_frame |
Update frame title/color/size |
miro_delete_frame |
Delete a frame |
miro_get_frame_items |
List items inside a frame |
Mindmaps (3)
| Tool | Description |
|---|---|
miro_get_mindmap_node |
Get node details |
miro_list_mindmap_nodes |
List all mindmap nodes |
miro_delete_mindmap_node |
Delete a mindmap node |
Read Items (8)
| Tool | Description |
|---|---|
miro_list_items |
List items on a board |
miro_list_all_items |
Get ALL items with auto-pagination |
miro_get_item |
Get item details |
miro_get_image |
Get image details and Miro-hosted URL |
miro_get_document |
Get document details and Miro-hosted URL |
miro_get_app_card |
Get app card details |
miro_get_doc |
Get Markdown document content |
miro_search_board |
Search items by content |
Update & Delete Items (18)
| Tool | Description |
|---|---|
miro_update_item |
Update item content/position/color |
miro_update_sticky |
Update sticky note (shape, color) |
miro_update_shape |
Update shape (fill, text color, type) |
miro_update_text |
Update text element |
miro_update_card |
Update card fields |
miro_update_image |
Update image properties |
miro_update_image_from_file |
Replace image file on existing item |
miro_update_document |
Update document properties |
miro_update_document_from_file |
Replace document file on existing item |
miro_update_embed |
Update embed properties |
miro_update_group |
Update group properties |
miro_update_app_card |
Update app card fields |
miro_bulk_update |
Update multiple items at once |
miro_delete_item |
Delete an item |
miro_delete_app_card |
Delete an app card |
miro_update_doc |
Update document content (full or find-and-replace) |
miro_delete_doc |
Delete a Markdown document |
miro_bulk_delete |
Delete multiple items at once |
Tags (9)
| Tool | Description |
|---|---|
miro_create_tag |
Create a tag |
miro_list_tags |
List all tags on board |
miro_get_tag |
Get tag details by ID |
miro_attach_tag |
Attach tag to item |
miro_detach_tag |
Remove tag from item |
miro_get_item_tags |
Get tags on an item |
miro_get_items_by_tag |
Get all items with a specific tag |
miro_update_tag |
Update tag name/color |
miro_delete_tag |
Delete a tag |
Connectors (4)
| Tool | Description |
|---|---|
miro_list_connectors |
List all connectors |
miro_get_connector |
Get connector details |
miro_update_connector |
Update connector style/caption |
miro_delete_connector |
Delete a connector |
Groups (4)
| Tool | Description |
|---|---|
miro_list_groups |
List all groups on board |
miro_get_group |
Get group details |
miro_get_group_items |
List items in a group |
miro_delete_group |
Delete or ungroup a group |
Export (4)
| Tool | Description |
|---|---|
miro_get_board_picture |
Get board thumbnail |
miro_create_export_job |
Export to PDF/SVG (Enterprise) |
miro_get_export_job_status |
Check export progress |
miro_get_export_job_results |
Get download links |
Tables (2)
| Tool | Description |
|---|---|
miro_list_tables |
List tables (data_table_format) on a board |
miro_get_table |
Get table metadata by ID |
Diagrams & Audit (2)
| Tool | Description |
|---|---|
miro_generate_diagram |
Create diagram from Mermaid syntax |
miro_get_audit_log |
Query local execution log |
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.
| Feature | This Server | TypeScript alternatives |
|---|---|---|
| Runtime | Single binary | Requires Node.js |
| Size | ~14MB | 100MB+ with node_modules |
| Startup | ~50ms | 500ms-2s |
| Memory | ~10MB idle | ~50MB idle |
| Diagram generation | Built-in Mermaid parser | AI-based |
| Rate limiting | Automatic with backoff | Manual |
| Caching | 2-minute TTL | None |
| Circuit breaker | Yes | No |
Miro released their official MCP server in December 2025. Here's how they compare:
| Feature | This Server | Official Miro MCP |
|---|---|---|
| Last changelog entry | April 2026 | January 2026 |
| Tools | 91 | 15 (13 tools + 2 prompts) |
| Transport | stdio + HTTP | HTTPS only (hosted) |
| Self-hosting | Yes | No |
| Offline mode | Yes | No |
| Auth | Token + OAuth2 | OAuth 2.1 (admin approval) |
| Diagram generation | Mermaid syntax | Custom DSL (flowchart, UML, ER) |
| AI context | No | Yes (exploration, summaries, code workflows) |
| Bulk operations | Yes | No |
| Mindmaps | Yes | No |
| Tags & Groups | Yes | No |
| Connectors CRUD | Yes | No |
| Export | Yes (PDF/SVG) | No |
| MCP Resources | 3 | No |
| MCP Prompts | 5 workflows | 2 (code-focused) |
| Runtime | Single Go binary | Hosted (closed-source) |
| Rate limiting | Adaptive | N/A (hosted) |
| Caching | Built-in (2min TTL) | N/A |
| Metrics | Prometheus | No |
| OpenTelemetry | Built-in (mcp-otel-go, OTel Registry) | No |
When to use the official server: You want zero-setup via plugin marketplace, OAuth 2.1 enterprise security, AI-powered board context extraction, or code-to-board workflows.
When to use this server: You need full API coverage (91 vs 15 tools), offline/self-hosted operation, bulk ops, mindmaps, tags, connectors, export, or a lightweight binary.
Both can coexist — use different MCP server names in your config.
- 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.
When running with -http :8080:
| Endpoint | Description |
|---|---|
/ |
MCP protocol (Streamable HTTP) |
/health |
Health check (JSON) |
/health?deep=true |
Deep health check (tests Miro API) |
/metrics |
Prometheus metrics |
/.well-known/mcp-server-card |
SEP-2127 Server Card (JSON) via mcp-servercard-go |
Health check response:
{
"status": "healthy",
"server": "miro-mcp-server",
"version": "1.15.2",
"uptime": "2h30m",
"components": {
"config": {"status": "healthy"},
"miro_api": {"status": "healthy", "latency": "145ms"}
}
}# 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 helpQuick 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-serverdocker-compose.yml features:
- Health checks configured
- Resource limits template
- Environment variable passthrough
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-serverOpen http://localhost:6274 to:
- Browse all 91 tools with their schemas
- Test tool calls interactively
- View raw JSON-RPC messages
- Debug parameter validation
See SETUP.md for more debugging options.
| Platform | Binary |
|---|---|
| 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 |
| Docker | ghcr.io/olgasafonova/miro-mcp-server |
| Tool | Status |
|---|---|
| Claude Code | Tested |
| Claude Desktop | Tested |
| Cursor | Tested |
| VS Code + GitHub Copilot | Supported |
| Windsurf | Supported |
| Replit | Supported |
| Any MCP-compatible client | Supported |
See SETUP.md for configuration guides.
| Account Type | Support |
|---|---|
| Free | Full access to all 91 tools |
| Team | Full access to all 91 tools |
| Business | Full access to all 91 tools |
| Enterprise | Full access + export to PDF/SVG |
If this server saved you time, consider giving it a ⭐ on GitHub. It helps others discover the project.
Check out my other MCP servers:
| Server | Description | Stars |
|---|---|---|
| gleif-mcp-server | Access GLEIF LEI database. Look up company identities, verify legal entities. | |
| mediawiki-mcp-server | Connect AI to any MediaWiki wiki. Search, read, edit wiki content. | |
| nordic-registry-mcp-server | Access Nordic business registries. Look up companies across Norway, Denmark, Finland, Sweden. | |
| productplan-mcp-server | Talk to your ProductPlan roadmaps. Query OKRs, ideas, launches. | |
| tilbudstrolden-mcp | Nordic grocery deal hunting. Find offers, plan meals, track spending. | |
| mcp-servercard-go | Go library for SEP-2127 Server Cards. Pre-connect discovery for MCP servers. |
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.