Miro MCP
The Miro MCP Server enables AI assistants to interact with and manage Miro boards through a standardized interface.
Core Capabilities:
Board Management: List, create, update, delete, copy, and retrieve Miro boards
Item Management: Add, update, delete and retrieve various items (sticky notes, shapes, text, images, documents, frames, app cards)
Connector Management: Create and manage connections between items
Bulk Operations: Create or update multiple items simultaneously using JSON files or schemas
Tag Management: Create, update, attach, detach, and retrieve tags
Group Management: Create, update, retrieve groups and manage grouped items
Mind Map Management: Create, retrieve, and delete mind map nodes
Access Control: Share boards, manage board members, and update roles
Enterprise-Only Features:
Export boards and retrieve export status
Manage legal holds and eDiscovery cases
Retrieve audit logs and content change history
Perform organizational tasks like managing project members
Provides tools for accessing and managing Miro boards including creating, updating, and deleting boards and various board items (sticky notes, cards, frames, images, text, shapes, connectors, tags). Supports advanced features like grouping items, sharing boards, managing board members, and exporting board content.
Click on "Deploy 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 list my recent boards"
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.
MCP Miro Server
Model Context Protocol (MCP) server integrating with the Miro platform. It enables AI assistants (like Claude) to access Miro boards and manage their content through a standardized interface.
Requirements
Node.js v16 or newer installed
Miro account with API token
Generate Miro Access Token
Go to the Miro Developer Portal
Create a new app or use an existing one
Make sure to create token with permission selected below
Generate OAuth token by selecting
Install app and get OAuth token
Permission | Required |
boards:read | ✅ |
boards:write | ✅ |
identity:read | ✅ |
identity:write | ✅ |
team:read | ✅ |
team:write | ✅ |
microphone:listen | ❌ |
screen:record | ❌ |
webcam:record | ❌ |
auditlogs:read | ❌ |
sessions:delete | ❌ |
Connecting with Claude Desktop
Install Claude Desktop
Open or create the configuration file:
macOS:
~/Library/Application Support/Claude/claude_desktop_config.jsonWindows:
%APPDATA%\Claude\claude_desktop_config.json
Update it to include this server:
{
"mcpServers":{
"miro":{
"command":"npx",
"args":[
"-y",
"@k-jarzyna/mcp-miro"
],
"env":{
"MIRO_ACCESS_TOKEN":"your_miro_access_token"
}
}
}
}Restart Claude Desktop
Available Tools and Resources
Tools
Miro SDK Function | MCP Tool | Available |
List boards | list-boards | ✅ |
Create board | create-board | ✅ |
Update board | update-board | ✅ |
Delete board | delete-board | ✅ |
Copy board | copy-board | ✅ |
Get specific board | get-specific-board | ✅ |
Get items on board | get-items-on-board | ✅ |
Get specific item | get-specific-item | ✅ |
Update item position | update-item-position | ✅ |
Delete item | delete-item | ✅ |
Create app card item | create-app-card-item | ✅ |
Get app card item | get-app-card-item | ✅ |
Update app card item | update-app-card-item | ✅ |
Delete app card item | delete-app-card-item | ✅ |
Create card item | create-card-item | ✅ |
Get card item | get-card-item | ✅ |
Update card item | update-card-item | ✅ |
Delete card item | delete-card-item | ✅ |
Create connector | create-connector | ✅ |
Get connectors | get-connectors | ✅ |
Get specific connector | get-specific-connector | ✅ |
Update connector | update-connector | ✅ |
Delete connector | delete-connector | ✅ |
Create sticky note item | create-sticky-note-item | ✅ |
Get sticky note item | get-sticky-note-item | ✅ |
Update sticky note item | update-sticky-note-item | ✅ |
Delete sticky note item | delete-sticky-note-item | ✅ |
Create frame | create-frame | ✅ |
Get frame item | get-frame-item | ✅ |
Update frame item | update-frame-item | ✅ |
Delete frame item | delete-frame-item | ✅ |
Create document item | create-document-item | ✅ |
Get document item | get-document-item | ✅ |
Update document item | update-document-item | ✅ |
Delete document item | delete-document-item | ✅ |
Create text item | create-text-item | ✅ |
Get text item | get-text-item | ✅ |
Update text item | update-text-item | ✅ |
Delete text item | delete-text-item | ✅ |
Create items in bulk | create-items-in-bulk | ✅ |
Create image item using URL | create-image-item-using-url | ✅ |
Create image item using file | create-image-item-using-file | ✅ |
Get image item | get-image-item | ✅ |
Update image item | update-image-item | ✅ |
Update image item using file | update-image-item-using-file | ✅ |
Delete image item | delete-image-item | ✅ |
Create shape item | create-shape-item | ✅ |
Get shape item | get-shape-item | ✅ |
Update shape item | update-shape-item | ✅ |
Delete shape item | delete-shape-item | ✅ |
Create embed item | create-embed-item | ✅ |
Get embed item | get-embed-item | ✅ |
Update embed item | update-embed-item | ✅ |
Delete embed item | delete-embed-item | ✅ |
Create tag | create-tag | ✅ |
Get tag | get-tag | ✅ |
Get all tags | get-all-tags | ✅ |
Update tag | update-tag | ✅ |
Delete tag | delete-tag | ✅ |
Attach tag | attach-tag | ✅ |
Detach tag | detach-tag | ✅ |
Get item tags | get-item-tags | ✅ |
Get all board members | get-all-board-members | ✅ |
Get specific board member | get-specific-board-member | ✅ |
Remove board member | remove-board-member | ✅ |
Share board | share-board | ✅ |
Update board member | update-board-member | ✅ |
Create group | create-group | ✅ |
Get all groups | get-all-groups | ✅ |
Get group | get-group | ✅ |
Get group items | get-group-items | ✅ |
Update group | update-group | ✅ |
Ungroup items | ungroup-items | ✅ |
Delete group | delete-group | ✅ |
Create items in bulk using file | create-items-in-bulk-using-file | ✅ |
Create mindmap node | create-mindmap-node | ✅ |
Get mindmap node | get-mindmap-node | ✅ |
Get mindmap nodes | get-mindmap-nodes | ✅ |
Delete mindmap node | delete-mindmap-node | ✅ |
Add project member | add-project-member | ✅ |
Create board export job | create-board-export-job | ✅ |
Get all cases | get-all-cases | ✅ |
Get all legal holds | get-all-legal-holds | ✅ |
Get audit logs | get-audit-logs | ✅ |
Get board classification | get-board-classification | ✅ |
Get board content logs | get-board-content-logs | ✅ |
Get board export job results | get-board-export-job-results | ✅ |
Get board export job status | get-board-export-job-status | ✅ |
Get case | get-case | ✅ |
Get legal hold | get-legal-hold | ✅ |
Get legal hold content items | get-legal-hold-content-items | ✅ |
Get organization info | get-organization-info | ✅ |
Get organization member | get-organization-member | ✅ |
Get organization members | get-organization-members | ✅ |
Get project member | get-project-member | ✅ |
Remove project member | remove-project-member | ✅ |
Update board classification | update-board-classification | ✅ |
Related MCP server: miro-mcp-server
Local Development
Install dependencies:
npm installCreate a
.envfile based on the template:
cp .env.template .envEdit the
.envfile and add your Miro access tokenBuild the server:
npm run buildRunning the Server
To run the server:
node build/index.jsLicense
Apache License 2.0
This project is licensed under the Apache License, Version 2.0. See the LICENSE file for details.
Available Tools
97 toolsadd-project-memberC
Adds a member to a project (Enterprise only)
Inputs: orgId (required), teamId (required), projectId (required), email (required), +1 more.
attach-tagB
Attach a tag to an item on a Miro board
Inputs: boardId (required), tagId (required), itemId (required).
copy-boardC
Create a copy of an existing Miro board with optional new settings
Inputs: copyFrom (required), name, description, sharingPolicy, +1 more.
create-app-card-itemC
Create a new app card item on a Miro board
Inputs: boardId (required), data (required), position (required), geometry.
create-boardC
Create a new Miro board with specified name and sharing policies
Inputs: name (required), description, sharingPolicy, teamId.
create-board-export-jobC
Creates an export job for one or more boards (Enterprise only)
Inputs: orgId (required), requestId (required), boardIds (required), format.
create-card-itemC
Create a new card item on a Miro board
Inputs: boardId (required), data (required), position (required), geometry, +1 more.
create-connectorC
Create a new connector between items on a Miro board
Inputs: boardId (required), startItem (required), endItem (required), style.
create-document-itemC
Create a new document item on a Miro board
Inputs: boardId (required), data (required), position (required), geometry.
create-embed-itemC
Create a new embed item on a Miro board
Inputs: boardId (required), data (required), position (required), geometry (required).
create-frameC
Create a new frame on a Miro board
Inputs: boardId (required), data (required), position (required), geometry, +1 more.
create-groupC
Create a new group on a Miro board
Inputs: boardId (required), data (required).
create-image-item-using-fileC
Create a new image item on a Miro board using file from device or from chat
Inputs: boardId (required), imageData (required), position (required), title.
create-image-item-using-urlC
Create a new image item on a Miro board using a URL
Inputs: boardId (required), data (required), position (required), geometry.
create-items-in-bulkC
Create multiple items on a Miro board in a single operation
Inputs: boardId (required), items (required).
create-items-in-bulk-using-fileC
Create multiple items on a Miro board in a single operation using a JSON file from device
Inputs: boardId (required), fileData (required).
create-mindmap-nodeB
Create a new mind map node on a Miro board
Inputs: boardId (required), data (required), position (required).
create-shape-itemC
Create a new shape item on a Miro board
Inputs: boardId (required), data (required), position (required), geometry (required), +1 more.
create-sticky-note-itemC
Create a new sticky note item on a Miro board
Inputs: boardId (required), data (required), position (required), geometry, +1 more.
create-tagC
Create a new tag on a Miro board
Inputs: boardId (required), data (required), fillColor.
create-text-itemC
Create a new text item on a Miro board
Inputs: boardId (required), data (required), position (required), geometry, +1 more.
delete-app-card-itemC
Delete a specific app card item from a Miro board
Inputs: boardId (required), itemId (required).
delete-boardA
Delete a Miro board by its ID. Deleted boards go to Trash (on paid plans) and can be restored via UI within 90 days after deletion.
Inputs: boardId (required).
delete-card-itemC
Delete a specific card item from a Miro board
Inputs: boardId (required), itemId (required).
delete-connectorB
Delete a specific connector from a Miro board
Inputs: boardId (required), connectorId (required).
delete-document-itemB
Delete a specific document item from a Miro board
Inputs: boardId (required), itemId (required).
delete-embed-itemC
Delete a specific embed item from a Miro board
Inputs: boardId (required), itemId (required).
delete-frame-itemC
Delete a frame from a Miro board
Inputs: boardId (required), itemId (required).
delete-groupC
Delete a specific group from a Miro board
Inputs: boardId (required), groupId (required), deleteItems.
delete-image-itemC
Delete a specific image item from a Miro board
Inputs: boardId (required), itemId (required).
delete-itemC
Delete a specific item from a Miro board
Inputs: boardId (required), itemId (required).
delete-mindmap-nodeC
Delete a mind map node from a Miro board
Inputs: boardId (required), itemId (required).
delete-shape-itemC
Delete a specific shape item from a Miro board
Inputs: boardId (required), itemId (required).
delete-sticky-note-itemC
Delete a specific sticky note item from a Miro board
Inputs: boardId (required), itemId (required).
delete-tagC
Delete a specific tag from a Miro board
Inputs: boardId (required), tagId (required).
delete-text-itemC
Delete a specific text item from a Miro board
Inputs: boardId (required), itemId (required).
detach-tagC
Detach a tag from an item on a Miro board
Inputs: boardId (required), tagId (required), itemId (required).
get-all-board-membersB
Retrieve all members of a specific Miro board
Inputs: boardId (required), limit, offset.
get-all-casesB
Retrieves the list of eDiscovery cases in an organization (Enterprise only)
Inputs: limit (required), orgId (required), cursor.
get-all-groupsB
Retrieve all groups on a Miro board
Inputs: boardId (required), limit, cursor.
get-all-legal-holdsC
Retrieves the list of all legal holds within a case (Enterprise only)
Inputs: limit (required), orgId (required), caseId (required), cursor.
get-all-tagsC
Retrieve all tags on a Miro board
Inputs: boardId (required), limit, offset.
get-app-card-itemB
Retrieve information about a specific app card item on a Miro board
Inputs: boardId (required), itemId (required).
get-audit-logsB
Retrieves a page of audit events from the last 90 days (Enterprise only)
Inputs: createdAfter (required), createdBefore (required), cursor, limit, +1 more.
get-board-classificationB
Retrieves board classification for a board (Enterprise only)
Inputs: orgId (required), teamId (required), boardId (required).
get-board-content-logsC
Retrieves content change logs of board items (Enterprise only)
Inputs: orgId (required), from (required), to (required), boardIds, +4 more.
get-board-export-job-resultsC
Retrieves the results of a board export job (Enterprise only)
Inputs: orgId (required), jobId (required).
get-board-export-job-statusB
Retrieves the status of a board export job (Enterprise only)
Inputs: orgId (required), jobId (required).
get-card-itemB
Retrieve information about a specific card item on a Miro board
Inputs: boardId (required), itemId (required).
get-caseB
Retrieves information about a specific eDiscovery case (Enterprise only)
Inputs: orgId (required), caseId (required).
get-connectorsB
Retrieve all connectors on a specific Miro board
Inputs: boardId (required), limit, cursor.
get-document-itemC
Retrieve information about a specific document item on a Miro board
Inputs: boardId (required), itemId (required).
get-embed-itemC
Retrieve information about a specific embed item on a Miro board
Inputs: boardId (required), itemId (required).
get-frame-itemB
Retrieve information for a specific frame on a Miro board
Inputs: boardId (required), itemId (required).
get-groupB
Retrieve information about a specific group on a Miro board
Inputs: boardId (required), groupId (required).
get-group-itemsB
Retrieve all items in a specific group on a Miro board
Inputs: boardId (required), groupId (required), limit, cursor.
get-image-itemC
Retrieve information about a specific image item on a Miro board
Inputs: boardId (required), itemId (required).
get-items-on-boardC
Retrieve all items on a specific Miro board
Inputs: boardId (required), limit, offset.
get-item-tagsC
Retrieve all tags attached to a specific item on a Miro board
Inputs: boardId (required), itemId (required).
get-legal-holdC
Retrieves information about a specific legal hold (Enterprise only)
Inputs: orgId (required), caseId (required), legalHoldId (required).
get-legal-hold-content-itemsC
Retrieves the list of content items under legal hold (Enterprise only)
Inputs: orgId (required), caseId (required), legalHoldId (required), limit (required), +1 more.
get-mindmap-nodeC
Retrieve information about a specific mind map node on a Miro board
Inputs: boardId (required), itemId (required).
get-mindmap-nodesC
Retrieve a list of mind map nodes on a Miro board
Inputs: boardId (required), limit, cursor.
get-organization-infoC
Retrieves organization information (Enterprise only)
Inputs: orgId (required).
get-organization-memberB
Retrieves information about a specific organization member (Enterprise only)
Inputs: orgId (required), memberId (required).
get-organization-membersC
Retrieves a list of members for an organization (Enterprise only)
Inputs: orgId (required), emails, role, license, +3 more.
get-project-memberC
Retrieves information about a specific project member (Enterprise only)
Inputs: orgId (required), teamId (required), projectId (required), memberId (required).
get-shape-itemB
Retrieve information about a specific shape item on a Miro board
Inputs: boardId (required), itemId (required).
get-specific-boardB
Retrieve information about a specific Miro board by its ID
Inputs: boardId (required).
get-specific-board-memberB
Retrieve details of a specific member on a Miro board
Inputs: boardId (required), memberId (required).
get-specific-connectorB
Retrieve information about a specific connector on a Miro board
Inputs: boardId (required), connectorId (required).
get-specific-itemB
Retrieve information about a specific item on a Miro board
Inputs: boardId (required), itemId (required).
get-sticky-note-itemC
Retrieve information about a specific sticky note item on a Miro board
Inputs: boardId (required), itemId (required).
get-tagC
Retrieve information about a specific tag on a Miro board
Inputs: boardId (required), tagId (required).
get-text-itemC
Retrieve information about a specific text item on a Miro board
Inputs: boardId (required), itemId (required).
list-boardsB
List all available Miro boards
Inputs: limit, offset.
remove-board-memberC
Remove a specific member from a Miro board
Inputs: boardId (required), memberId (required).
remove-project-memberC
Removes a member from a project (Enterprise only)
Inputs: orgId (required), teamId (required), projectId (required), memberId (required).
ungroup-itemsC
Ungroup a specific group on a Miro board
Inputs: boardId (required), groupId (required), deleteItems.
update-app-card-itemC
Update an existing app card item on a Miro board
Inputs: boardId (required), itemId (required), data, position, +1 more.
update-boardC
Update an existing Miro board with new settings
Inputs: boardId (required), name, description, sharingPolicy, +1 more.
update-board-classificationC
Updates board classification for an existing board (Enterprise only)
Inputs: orgId (required), teamId (required), boardId (required), labelId (required).
update-board-memberC
Update a specific member's role or status on a Miro board
Inputs: boardId (required), memberId (required), role, status.
update-card-itemC
Update an existing card item on a Miro board
Inputs: boardId (required), itemId (required), data, position, +2 more.
update-connectorC
Update an existing connector on a Miro board
Inputs: boardId (required), connectorId (required), startItem, endItem, +1 more.
update-document-itemC
Update an existing document item on a Miro board
Inputs: boardId (required), itemId (required), data, position, +1 more.
update-embed-itemC
Update an existing embed item on a Miro board
Inputs: boardId (required), itemId (required), data, position, +1 more.
update-frame-itemC
Update a frame on a Miro board based on the data, style, or geometry properties provided in the request body
Inputs: boardId (required), itemId (required), data, position, +2 more.
update-groupC
Update a specific group on a Miro board with new items
Inputs: boardId (required), groupId (required), data (required).
update-image-itemC
Update an existing image item on a Miro board
Inputs: boardId (required), itemId (required), data, position, +1 more.
update-image-item-using-fileC
Update an existing image item on a Miro board using file from device
Inputs: boardId (required), itemId (required), filePath (required), title, +1 more.
update-item-positionC
Update the position or parent of a specific item on a Miro board
Inputs: boardId (required), itemId (required), position, parentId.
update-shape-itemC
Update an existing shape item on a Miro board
Inputs: boardId (required), itemId (required), data, position, +2 more.
update-sticky-note-itemC
Update an existing sticky note item on a Miro board
Inputs: boardId (required), itemId (required), data, position, +2 more.
update-tagC
Update an existing tag on a Miro board
Inputs: boardId (required), tagId (required), title, fillColor.
update-text-itemC
Update an existing text item on a Miro board
Inputs: boardId (required), itemId (required), data, position, +2 more.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 97 tools
Most tools have distinct purposes targeting specific item types (e.g., create-card-item vs. create-sticky-note-item) or operations (e.g., get-specific-board vs. list-boards). However, some tools like delete-item and delete-specific-item-type tools (e.g., delete-card-item) could cause confusion, as delete-item might be overly general, leading to potential misselection when more specific deletion is needed.
Tool names follow a highly consistent verb-noun pattern throughout, such as create-board, get-board-export-job-status, update-app-card-item, and delete-tag. All tools use snake_case uniformly, with clear action prefixes (create, get, update, delete, list, etc.), making them predictable and easy to parse.
With 97 tools, the count is excessive for a single server, making it overwhelming and difficult for agents to navigate efficiently. While Miro's domain is broad, the toolset could be streamlined by grouping similar operations (e.g., generic item CRUD) rather than having separate tools for each item type, which inflates the number unnecessarily.
The toolset provides comprehensive coverage of Miro's domain, including full CRUD operations for boards, items (e.g., cards, shapes, text), tags, groups, and connectors, plus enterprise features like audit logs and eDiscovery. There are no obvious gaps; it supports creation, retrieval, updating, deletion, and management across all major resources.
Maintenance
Related MCP Connectors
Official Miro MCP server - Supports context to code and creating diagrams, docs, and data tables.
The official MCP Server from Mia-Platform to interact with Mia-Platform Console
Collaborative whiteboard MCP server — create objects, connectors, C4 diagrams, and manage boards
The official MCP Server for the Mux API
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceA Model Context Protocol server to connect to the MIRO Whiteboard Application. Allows Board manipulation, sticky creation, bulk operations and more.71 npm113Apache 2.0
- AlicenseAqualityBmaintenanceMCP server for controlling Miro whiteboards with AI assistants. Create and manage stickies, shapes, frames, connectors, and more.8832MIT
- AlicenseNot gradedqualityDmaintenanceThis repository contains an implementation of an Miro Universal MCP (Model Context Protocol) server. It provides a standardized interface for interacting with Miro's tools and services through a unified API.1MIT
- FlicenseNot gradedqualityDmaintenanceAn MCP server that enables Claude AI to programmatically create and manipulate Miro boards via the Miro API with OAuth2 authentication. Supports 14 tools for board, item, and connector operations.-