# Miro MCP server: setup, tools and daily limits

> Miro's official MCP server at mcp.miro.com: setup in Claude, Claude Code, ChatGPT, Cursor and Codex, its 46 tools, daily limits, the one-team rule and fixes.

Updated 2026-11-15 · https://upsy.ai/guides/miro-mcp-server

## Short answer

Miro runs an official MCP server (a connector that lets an AI agent use your Miro boards) at `https://mcp.miro.com/`, on every Miro plan, Free included. Add it to Claude, ChatGPT, Codex, Cursor, VS Code or any MCP client, sign in to Miro and pick the team your boards are in. The agent can then search and read boards, draw on them, comment, and create boards, spaces and sections. In Claude Code, install Miro's plugin:

```
claude plugin install miro@claude-plugins-official
```

Then run `/mcp` to sign in. Two rules shape everything else: Miro connects each person to one team, in one client, at a time, and every plan has a daily cap on tool calls. Add Miro through Upsy if several agents need your boards, or some of them should only read.

## Miro's MCP server

| | |
|---|---|
| Address | `https://mcp.miro.com/` (Streamable HTTP, no SSE) |
| Sign-in | OAuth with dynamic client registration. There's no access token option |
| Reach | Boards in the one team you pick at sign-in, within your access to each board |
| Plans | All, at no extra charge. On by default except on Enterprise |
| Limits | Tool calls per day: 100 on Free, 500 on Starter, 2,000 on Business, 10,000 on Enterprise |
| Admin | Enterprise admins turn it on, and can limit it to some teams, user groups and clients |

Miro's [MCP docs](https://developers.miro.com/docs/miro-mcp) and [help article](https://help.miro.com/hc/en-us/articles/31625301583890) have the details. Miro launched the server as a public beta in December 2025; its current docs no longer call it beta.

### One team at a time

Miro calls it "Last One Wins". Each person is connected to one Miro team at a time, across every client. Its [troubleshooting page](https://developers.miro.com/docs/miro-mcp-server-faq-and-troubleshooting) says if you sign in from three clients, "only the latest client connection will work". Sign in from Cursor after Claude, and Claude's connection drops.

To switch teams, open a board in the team you want, then sign in again from your client. Enterprise orgs can widen what one connection reaches with Miro's app data access controls.

### Daily limits

Every tool call counts, from every client on your login. Limits reset at 00:00 UTC ([Miro's limits](https://developers.miro.com/docs/mcp-usage-and-daily-limits)). Building a big board takes many calls, and reading a whole board with hundreds of items is slow, so give the agent a frame link (a board URL with `?moveToWidget=`) when you can. Only Enterprise admins can see usage; everyone else finds out from the error. Enterprise can buy more.

### Connect it to your client

Use one install method per client. A plugin plus a manual entry gives duplicate tools and two separate sign-ins.

**Claude.** Open **Customize › Connectors**, select **Discover**, search for Miro and click **Connect**. See [how to connect Miro to Claude](/guides/claude/miro).

**Claude Code.** Install the plugin above, or add the server alone with `claude mcp add --transport http miro https://mcp.miro.com/`, then `/mcp` to sign in. The plugin also brings three skills for explaining code, reviewing changes and writing specs on a board.

**ChatGPT and Codex.** Install Miro's plugin from **Plugins**, then click **Connect**. In the Codex CLI, `codex mcp add miro --url https://mcp.miro.com/`, then `codex mcp login miro`. See [how to connect Miro to ChatGPT](/guides/chatgpt/miro).

**Cursor.** Install Miro from [Cursor's marketplace](https://cursor.com/marketplace/miro), or add `{"mcpServers":{"miro":{"url":"https://mcp.miro.com/"}}}` to `~/.cursor/mcp.json` and click **Connect**.

**VS Code and GitHub Copilot.** Open Miro's server in [GitHub's MCP registry](https://github.com/mcp/miroapp/mcp-server) and click **Install in VS Code**.

**Gemini CLI.** Run `gemini extensions install https://github.com/miroapp/miro-ai`.

**Others.** Windsurf, Kiro, Lovable, Replit, Amazon Q and Microsoft 365 Copilot are in [Miro's coding tools guide](https://developers.miro.com/docs/connecting-miro-mcp-to-ai-coding-tools), most with the same address.

### Its tools

Miro documents 46 tools ([tool list](https://developers.miro.com/docs/miro-mcp-tools)):

| Area | Read | Change |
|---|---|---|
| Boards | `content_search`, `board_search_boards`, `board_show`, `board_get_space` | `board_create`, `board_create_format`, `board_move`, `board_move_to_team`, `board_restore`, `board_update_metadata` |
| Canvas | `canvas_read_as_svg`, `canvas_search`, `canvas_get_canvas_composer_skill`, `canvas_load_format_skill`, `canvas_get_html_upload_url` | `canvas_create_from_svg`, `canvas_update_from_svg` |
| Sharing | `content_item_list_roles` | `board_share`, `board_role_update`, `space_share`, `space_role_update` |
| Spaces, sections and posts | `space_list`, `space_list_boards`, `space_list_children`, `blog_post_list` | `space_create`, `space_update_metadata`, `section_create`, `section_update_metadata`, `section_delete`, `blog_post_create`, `blog_post_update` |
| Comments | `comment_list_comments` | `comment_create`, `comment_reply`, `comment_resolve` |
| Images | `image_get_data`, `image_get_url`, `image_get_upload_url` | `image_create` |
| Other | `table_get_latest_update_history`, `user_who_am_i`, `user_search_organization_users`, `get_brand_context` | `import-claude-design-from-url` |

- **It can remove things.** `canvas_update_from_svg` creates, changes and deletes items on a board, and `section_delete` deletes a section. Miro says removals ask for consent and board history can bring items back. No tool deletes a board or a space.
- **Drawing goes through SVG.** The canvas tools read a board or frame as SVG and write SVG back as stickies, shapes, text, frames and connectors.
- **Tools change often.** On November 5, 2026, Miro removed its table and prototype tools and replaced `board_search_boards` with `content_search`. In September it removed its older diagram, doc and layout tools. If old tool calls fail, disconnect and reconnect; refreshing the list often isn't enough.

### Where Miro's server stops

- **One connection per person.** Two agents on your Miro login, in different clients, keep knocking each other out.
- **One daily allowance** for every client on that login.
- **No read-only mode of its own.** Keeping an agent to reads depends on your client's tool settings.
- **No token for servers.** Sign-in is OAuth only, and its callback goes to `localhost`, so headless machines need an SSH tunnel.

For one client on one team, Miro's server and its install links are enough.

## Miro MCP servers compared

| | Miro's server | Upsy | olgasafonova/miro-mcp-server | k-jarzyna/mcp-miro |
|---|---|---|---|---|
| Who runs it | Miro | Upsy, on top of Miro's server | You, on your machine | You, on your machine |
| Sign-in | OAuth | OAuth to Upsy; Upsy signs in to Miro | A Miro access token | A Miro access token |
| Tools | 46 | Miro's, listed on request | About 110, or a 14-tool set | 97, including deleting boards |
| Clients per login | One at a time | Every agent shares Upsy's one connection | Any | Any |
| Limits | Your client's settings | Read-only or picked tools, per agent | The token's scopes | The token's scopes |

### Community servers

- **[olgasafonova/miro-mcp-server](https://github.com/olgasafonova/miro-mcp-server)** is the most active open-source one, MIT licensed. It's a Go binary that calls Miro's REST API with your token.
- **[k-jarzyna/mcp-miro](https://github.com/k-jarzyna/mcp-miro)** wraps Miro's REST API in 97 tools, Apache-2.0, with light maintenance.
- **[evalstate/mcp-miro](https://github.com/evalstate/mcp-miro)** was an early one; it hasn't changed since December 2024.

Token-based servers aren't bound by the one-client rule, but the token can do anything your Miro app's scopes allow.

## Upsy's Miro MCP server

Upsy connects to Miro's server with your Miro sign-in, so your team and board permissions still apply. It's the same address as Upsy's other apps, `https://upsy.ai/connect`.

What it adds:

- **One Miro connection for every agent.** Upsy is the only Miro client on your login, so Claude, Cursor, ChatGPT and Grok share it instead of replacing each other.
- **A level per agent.** **Read-only** for one agent and full access for another, enforced by Upsy.
- **No removals.** With **Pick actions**, leave out `canvas_update_from_svg` and `section_delete`, and keep the rest. Note that the update tool is also how agents edit items.
- **Miro next to your other apps.** One server holds Miro, Gmail, Linear, Slack and more, so an agent can turn a board into Linear issues or a meeting thread into a board.
- **Up to five Miro logins,** each with its own team and access.
- **History and alerts:** every Miro tool an agent runs, listed under that agent.

All agents still share your plan's daily allowance.

### Connect Miro to Upsy

1. Go to [upsy.ai](https://upsy.ai) and click **Set up Upsy**.
2. Open **Apps**, click **Connect an app** and pick **Miro**. On Miro's page, allow access and pick the team with your boards.
3. On the **Assistants** page, click **Add assistant** and choose your client under **Which assistant?** for its exact steps.
4. Disconnect Miro's own connector or plugin in clients that use Upsy, so the two connections don't replace each other.

### Add the server to your client

Signing in opens an Upsy page: tick Miro, keep full access or pick **Read-only**, and click **Allow**. To leave out removals, use **Pick actions** on the agent's page afterwards.

- **Claude Code:** `claude mcp add --transport http --scope user upsy https://upsy.ai/connect`, then `/mcp` to sign in.
- **Cursor:** add `{"mcpServers":{"upsy":{"url":"https://upsy.ai/connect"}}}` to `~/.cursor/mcp.json`, then click **Connect** next to upsy.
- **Codex:** `codex mcp add upsy --url https://upsy.ai/connect`, then `codex mcp login upsy`.
- **Claude and ChatGPT:** add `https://upsy.ai/connect` as a custom connector ([Claude](/guides/claude/custom-connector), [ChatGPT](/guides/chatgpt/custom-connector)).
- **Grok and Muse:** paste the setup prompt Upsy shows into a chat and approve the sign-in.

Read-only covers the tools Miro marks as reads, such as searching and reading boards. Upsy treats a tool with "comment", "update" or "upload" in its name as a change, so reading comments or table history needs full access, or those tools picked.

Server details, such as OAuth endpoints and token lifetimes, are in the [Gmail MCP server guide](/guides/gmail-mcp-server#server-details); they're the same for Miro.

### Check that it works

> Using Upsy, find my Miro boards with "retro" in the name and summarize the most recent one.

The agent should list matching boards, open one and summarize it. The calls show in Upsy's **History** under that agent.

## Prompts to try

- "Summarize the planning board at [board URL]. List open decisions and who owns them."
- "Read the Ideas frame at [frame URL] and turn each sticky into a Linear issue in the Growth team."
- "Draw a sequence diagram of our login flow from this code on a new board called Auth review."
- "Make a kickoff board for Project Atlas with frames for goals, risks, timeline and a parking lot."
- "List the open comments on [board URL] and resolve the ones that already have an answer."
- "Find yesterday's workshop notes in Gmail and lay them out as stickies grouped by theme on [board URL]."

## Troubleshooting

### "This board belongs to a different team than your current authorization"

The board is in a team you didn't pick at sign-in. Open a board in that team, then sign in to Miro again from your client. Through Upsy, reconnect Miro on the **Apps** page and pick the right team.

### It worked yesterday and now says the connection was lost

You, or another client, signed in to Miro since, and Miro kept only the latest connection. Sign in again from the client you want, and remove Miro from clients you don't use.

### "Board not found" or a permissions error

The board is in another team, the prompt has no full board URL, or you have less than View access to it. Check all three.

### "Invalid Response Error" or "Invalid or expired consent token"

Clear your miro.com cookies, then sign in again. The consent-token error is [tracked on Miro's GitHub](https://github.com/miroapp/miro-ai/issues/50).

### "Client Not Registered"

Your client needs a new registration. In VS Code, run **Authentication: Remove Dynamic Authentication Providers**; in Cursor, **Cursor: Clear all MCP Tokens**. Then connect again.

### Every Miro tool shows up twice

You installed Miro twice in one client, such as a plugin and a manual entry. Keep one.

### Calls stop for the rest of the day

You've used your plan's daily tool calls. Every client on your Miro login shares them. Wait for 00:00 UTC, or upgrade.

### Miro tools are missing on Enterprise

Your admin has to turn MCP on under **Admin settings › Apps and integrations › MCP**, include your team and user group, and allow your client. For Upsy, they add it as a custom client.

### "The user hasn't allowed you to use Miro's …"

That's Upsy refusing a tool outside the agent's level, such as `canvas_create_from_svg` on Read-only. Change Miro's level on the agent's page in Upsy.

## Security and privacy

- **Every connection acts as you,** in one team, within your access to each board.
- **Removals are easy to miss.** `canvas_update_from_svg` both edits and deletes items, so check your client's approval prompts, and use board history to recover.
- **Prompt injection.** A sticky or comment on a shared board can carry instructions aimed at your agent. Give agents that read boards from outside your team read-only access.
- **Enterprise controls:** admins choose teams, user groups and clients, and an upcoming Miro guardrail blocks MCP on boards with chosen classification labels.
- **Through Upsy,** agents never get your Miro token: they call Upsy, and Upsy calls Miro. Upsy emails you when one agent reads 100 or more items in 10 minutes, and when a new agent or app connects. Its delete alert goes by tool names, so items removed through `canvas_update_from_svg` don't count toward it.

## FAQ

### Is there an official Miro MCP server?

Yes. Miro hosts it at `https://mcp.miro.com/`, for all plans, Free included.

### Is the Miro MCP server free?

There's no extra charge. Each plan gets a number of tool calls a day: 100 on Free, 500 on Starter, 2,000 on Business and 10,000 on Enterprise.

### How many tools does the Miro MCP server have?

Miro's tool list documents 46, covering boards, the canvas, sharing, spaces, sections, comments and images. It changes often.

### Can the Miro MCP server delete things?

Yes. `canvas_update_from_svg` can remove items from a board, and `section_delete` deletes sections. No tool deletes a whole board or space.

### Can I use a Miro access token instead of OAuth?

Not with Miro's server. Community servers like olgasafonova/miro-mcp-server take a token.

### Can I connect two Miro teams?

Not at once with one Miro login, in any client. Signing in to a second team replaces the first connection.

### Does Miro MCP work in Claude Code?

Yes. Install Miro's plugin with `claude plugin install miro@claude-plugins-official`, or add the server with `claude mcp add`, then sign in under `/mcp`.

---

Upsy connects personal AI assistants (Muse, Grok, ChatGPT, Claude, Cursor, Claude Code, Codex, Devin) to your Gmail, Google Calendar, Google Drive, Slack, Notion and other apps through one MCP server, with a shared memory, files and a cloud browser signed in to your sites. You choose what each assistant may do in each app, see everything it did, and turn it off in one click. Upsy is free. To add Upsy to an assistant, add a remote MCP server (Streamable HTTP) named Upsy at https://upsy.ai/connect. It signs in with OAuth; there is no API key.
