Miro MCP App
Provides tools for interacting with Miro's platform, enabling board management, search, layouts, diagrams, images, experimental code widgets, and more through 31 Miro API tools.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Miro MCP AppShow me my board called 'Sprint Retro'"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Miro MCP App
An independent, hosted Model Context Protocol server for Miro with an interactive MCP App workspace. It exposes the 31 tools in Miro's public MCP documentation while using only public Miro APIs.
Highlights
Streamable HTTP MCP endpoint at
/mcpOAuth 2.1, dynamic client registration, PKCE, and Miro OAuth brokering
Board search, reading, layouts, diagrams, images, and experimental code widgets
App-managed document, table, and prototype fallbacks
Interactive board search, mini-canvas, inspector, and Miro deep links
Explicit compatibility metadata for every result
See docs/parity.md for native, emulated, and unavailable capabilities.
Related MCP server: miro-mcp-server
Requirements
Node.js 20 or newer
pnpm 10
A Miro developer app with expiring tokens
Public HTTPS hosting for the OAuth callback
Configure the Miro app with:
Scopes:
boards:read,boards:write,identity:readRedirect URI:
https://YOUR_HOST/oauth/miro/callbackExpiring access tokens enabled
Configuration
Copy .env.example and set:
Variable | Required | Purpose |
| Hosted mode | Public origin used by MCP OAuth metadata |
| Hosted mode | Miro OAuth client ID |
| Hosted mode | Miro OAuth client secret |
| Hosted mode | Registered Miro callback |
| No | HTTP port, default |
| No | API override for contract testing |
| Development only | Bypasses MCP OAuth for one local user |
| Development only | Team associated with the static token |
MIRO_ACCESS_TOKEN mode is intentionally not user-isolated. Do not use it on a
shared deployment.
Run
pnpm build
pnpm startConnect a client to:
https://YOUR_HOST/mcpThe client discovers authorization through RFC 9728 and dynamically registers itself. The user is then redirected through Miro consent.
For local development with a Miro test token:
MIRO_ACCESS_TOKEN=... MIRO_TEAM_ID=... pnpm devHTTP endpoints
Endpoint | Purpose |
| Authenticated Streamable HTTP MCP |
| Readiness and configuration state |
| MCP protected-resource metadata |
| OAuth server metadata |
| Dynamic client registration |
| OAuth lifecycle |
| Miro OAuth callback |
| Five-minute, single-use image upload |
MCP App
The 31 Miro tools return data without opening UI cards. One additional
render_miro_board tool attaches ui://miro/workspace and opens a single
inline workspace. That iframe refreshes the board after subsequent mutations,
matching the draw.io server's create-then-render pattern:
Board search
Host-mediated tool calls
A geometry-based board preview
Item details and parity warnings
Safe “Open in Miro” links
The View never receives Miro or MCP access tokens and never calls Miro directly.
Verification
pnpm check
pnpm verifyThe verification harness checks all 31 parity tools plus the dedicated render tool, prompts, the MCP App resource, DSL discovery, and upload URL issuance without making Miro API calls.
Deployment note
OAuth clients, grants, app-managed artifacts, and uploads currently use
process-local stores. This is suitable for local development and a single
non-restarting evaluation instance. Before production or horizontal scaling,
replace OAuthStore, ArtifactStore, and UploadStore with durable encrypted
PostgreSQL/object-storage adapters.
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Latest Blog Posts
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/niklasmeixner-langdock/miro-mcp-app'
If you have feedback or need assistance with the MCP directory API, please join our Discord server