io.github.olgasafonova/miro-mcp-server
平台与服务by olgasafonova
Miro whiteboard integration with 30+ tools for boards, shapes, and diagrams.
什么是 io.github.olgasafonova/miro-mcp-server?
Miro whiteboard integration with 30+ tools for boards, shapes, and diagrams.
README
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.
91 tools | Single binary | All platforms | All major AI tools
<video src="https://github.com/user-attachments/assets/a27c535e-f3b5-4a3a-ac3c-bea5fe7ebd0b" width="100%" autoplay loop muted playsinline></video>
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
Cursor Marketplace:
/add-plugin miro
Not working? Tell us what made it hard — even one sentence helps.
What You Can Do
| 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) |
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 91 Tools
<details> <summary><b>Board Management (9)</b></summary>| 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_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 |
| 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_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_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 |
| 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 |
| 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 |
| 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_delete_group | Delete or ungroup 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_list_tables | List tables (data_table_format) on a board |
miro_get_table | Get table metadata by ID |
| 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 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.
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:
| 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"}
}
}
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 91 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 91 tools |
| Team | Full access to all 91 tools |
| Business | Full access to all 91 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. 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. |
License
MIT
<p align="center"> Built for the <a href="https://miro.com">Miro</a> and <a href="https://modelcontextprotocol.io">MCP</a> communities. <br> <sub>Miro is a trademark of Miro Inc. This project is not affiliated with or endorsed by Miro.</sub> </p>
常见问题
io.github.olgasafonova/miro-mcp-server 是什么?
Miro whiteboard integration with 30+ tools for boards, shapes, and diagrams.
相关 Skills
MCP构建
by anthropics
聚焦高质量 MCP Server 开发,覆盖协议研究、工具设计、错误处理与传输选型,适合用 FastMCP 或 MCP SDK 对接外部 API、封装服务能力。
✎ 想让 LLM 稳定调用外部 API,就用 MCP构建:从 Python 到 Node 都有成熟指引,帮你更快做出高质量 MCP 服务器。
Slack动图
by anthropics
面向Slack的动图制作Skill,内置emoji/消息GIF的尺寸、帧率和色彩约束、校验与优化流程,适合把创意或上传图片快速做成可直接发送的Slack动画。
✎ 帮你快速做出适配 Slack 的动图,内置约束规则和校验工具,少踩上传与播放坑,做表情包和演示都更省心。
MCP服务构建器
by alirezarezvani
从 OpenAPI 一键生成 Python/TypeScript MCP server 脚手架,并校验 tool schema、命名规范与版本兼容性,适合把现有 REST API 快速发布成可生产演进的 MCP 服务。
✎ 帮你快速搭建 MCP 服务与后端 API,脚手架完善、扩展顺手,尤其适合想高效验证服务能力的开发者。
相关 MCP Server
Slack 消息
编辑精选by Anthropic
Slack 是让 AI 助手直接读写你的 Slack 频道和消息的 MCP 服务器。
✎ 这个服务器解决了团队协作中需要 AI 实时获取 Slack 信息的痛点,特别适合开发团队让 Claude 帮忙汇总频道讨论或发送通知。不过,它目前只是参考实现,文档有限,不建议在生产环境直接使用——更适合开发者学习 MCP 如何集成第三方服务。
by netdata
io.github.netdata/mcp-server 是让 AI 助手实时监控服务器指标和日志的 MCP 服务器。
✎ 这个工具解决了运维人员需要手动检查系统状态的痛点,最适合 DevOps 团队让 Claude 自动分析性能数据。不过,它依赖 NetData 的现有部署,如果你没用过这个监控平台,得先花时间配置。
by d4vinci
Scrapling MCP Server 是专为现代网页设计的智能爬虫工具,支持绕过 Cloudflare 等反爬机制。
✎ 这个工具解决了爬取动态网页和反爬网站时的头疼问题,特别适合需要批量采集电商价格或新闻数据的开发者。不过,它依赖外部浏览器引擎,资源消耗较大,不适合轻量级任务。