Miro MCP Server
Control Miro whiteboards with AI. 77 tools for board management, sticky notes, shapes, connectors, frames, and Mermaid diagram generation.
Miro MCP Server
Control Miro whiteboards with AI. Built in Go for speed and simplicity.
Community project — Not officially affiliated with Miro. See official options below.
77 tools | Single binary | All platforms | All major AI tools
Documentation
| 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 |
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
- Go to miro.com/app/settings/user-profile/apps
- Create an app with
boards:readandboards:writepermissions - 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
What You Can Do
| Category | Examples |
|---|---|
| Boards | Create, copy, delete, update, share, list members |
| Items | Sticky notes, shapes, text, cards, app cards, frames |
| Diagrams | Generate flowcharts and sequence diagrams from Mermaid |
| 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, ungroup, list, and manage item groups |
| Connectors | Connect items with styled arrows |
| Export | Board 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"
All 77 Tools
| 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 |
| 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 |
| 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_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_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 |
| 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 |
| Tool | Description |
|---|---|
miro_create_mindmap_node | Create mindmap node |
miro_get_mindmap_node | Get node details |
miro_list_mindmap_nodes | List all mindmap nodes |
miro_delete_mindmap_node | Delete a mindmap node |
| 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_app_card | Get app card details |
miro_search_board | Search items by content |
| Tool | Description |
|---|---|
miro_update_item | Update item content/position/color |
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_bulk_delete | Delete multiple items at once |
| 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_update_tag | Update tag name/color |
miro_delete_tag | Delete a tag |
| 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 |
| 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_ungroup | Ungroup items |
miro_delete_group | Delete a group |
| 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 |
| Tool | Description |
|---|---|
miro_generate_diagram | Create diagram from Mermaid syntax |
miro_get_audit_log | Query local execution log |
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?
| 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 |
Official vs Community
Miro has released an official MCP server (beta). Here's how they compare:
| Feature | This Server | Official Miro MCP |
|---|---|---|
| Tools | 77 | ~5 (beta) |
| Diagram generation | Mermaid syntax | AI-based |
| Bulk operations | Yes | No |
| Mindmaps | Yes | No |
| Tags & Groups | Yes | No |
| Export | Yes | No |
| Runtime | Single Go binary | Node.js |
| Rate limiting | Adaptive | Basic |
| Caching | Built-in | No |
| OAuth flow | Built-in CLI | Requires setup |
When to use the official server: You want Miro-supported tooling and AI-powered diagram generation.
When to use this server: You need the full API surface, bulk ops, mindmaps, tags, or want a lightweight binary.
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
See PERFORMANCE.md for optimization tips and benchmarks.
HTTP Mode Endpoints
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 |
Health check response:
{
"status": "healthy",
"server": "miro-mcp-server",
"version": "1.9.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 77 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
| 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 |
Supported AI Tools
| 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 Compatibility
| Account Type | Support |
|---|---|
| Free | Full access to all 77 tools |
| Team | Full access to all 77 tools |
| Business | Full access to all 77 tools |
| Enterprise | Full access + export to PDF/SVG |
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:
| 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. 36 tools to search, read, edit wiki content. | |
| productplan-mcp-server | Talk to your ProductPlan roadmaps. Query OKRs, ideas, launches. |
License
MIT
Related Servers
Linear MCP Server
Interact with the Linear project management system using its GraphQL API.
Canvas Assignment Assistant
Programmatically interact with Canvas/Instructure courses and assignments.
MCP Journaling Server
An interactive journaling server with emotional analysis and automatic conversation saving.
AnkiConnect
Connect Claude with AnkiConnect to create and review flashcards using natural language.
Google Calendar
Integrates with Google Calendar to manage events, reminders, and schedules using OAuth 2.0.
Claude Desktop MCP
An MCP server for integrating with the Claude Desktop application on macOS. Requires the Claude Desktop app to be installed and configured.
gotoHuman
Human-in-the-loop platform - Allow AI agents and automations to send requests for approval to your gotoHuman inbox.
Jira MCP Server
An MCP server for accessing JIRA issue data stored in Snowflake.
CodeRide
Task management redesigned for AI, integrated via the CodeRide MCP server.
TranscriptionTools
An MCP server for intelligent transcript processing, including formatting, repair, and summarization.