Miro MCP App

Miro MCP App

An MCP server for Miro that provides 31 tools to interact with Miro boards, enabling board search, reading, layouts, diagrams, and more via public Miro APIs.

Category
Visit Server

README

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 /mcp
  • OAuth 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.

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:read
  • Redirect URI: https://YOUR_HOST/oauth/miro/callback
  • Expiring access tokens enabled

Configuration

Copy .env.example and set:

Variable Required Purpose
BASE_URL Hosted mode Public origin used by MCP OAuth metadata
MIRO_CLIENT_ID Hosted mode Miro OAuth client ID
MIRO_CLIENT_SECRET Hosted mode Miro OAuth client secret
MIRO_REDIRECT_URI Hosted mode Registered Miro callback
PORT No HTTP port, default 3000
MIRO_API_URL No API override for contract testing
MIRO_ACCESS_TOKEN Development only Bypasses MCP OAuth for one local user
MIRO_TEAM_ID 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 start

Connect a client to:

https://YOUR_HOST/mcp

The 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 dev

HTTP endpoints

Endpoint Purpose
/mcp Authenticated Streamable HTTP MCP
/health Readiness and configuration state
/.well-known/oauth-protected-resource/mcp MCP protected-resource metadata
/.well-known/oauth-authorization-server OAuth server metadata
/register Dynamic client registration
/authorize, /token, /revoke OAuth lifecycle
/oauth/miro/callback Miro OAuth callback
/uploads/:token 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 verify

The 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.

Recommended Servers

playwright-mcp

playwright-mcp

A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.

Official
Featured
TypeScript
Magic Component Platform (MCP)

Magic Component Platform (MCP)

An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.

Official
Featured
Local
TypeScript
Audiense Insights MCP Server

Audiense Insights MCP Server

Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.

Official
Featured
Local
TypeScript
VeyraX MCP

VeyraX MCP

Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.

Official
Featured
Local
graphlit-mcp-server

graphlit-mcp-server

The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.

Official
Featured
TypeScript
Kagi MCP Server

Kagi MCP Server

An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.

Official
Featured
Python
E2B

E2B

Using MCP to run code via e2b.

Official
Featured
Neon Database

Neon Database

MCP server for interacting with Neon Management API and databases

Official
Featured
Exa Search

Exa Search

A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.

Official
Featured
Qdrant Server

Qdrant Server

This repository is an example of how to create a MCP server for Qdrant, a vector search engine.

Official
Featured