Skip to main content
Glama
README.md
# MIRO MCP Server

A Model Context Protocol (MCP) server that enables Claude Desktop to interact with MIRO boards.

## Features

- **List Boards**: Get all accessible MIRO boards
- **Get Board Details**: Retrieve specific board information
- **Get Board Items**: Fetch all items/widgets from a board (sticky notes, text, shapes, cards, etc.)
- **Get Frames**: List all frames in a board
- **Search Content**: Search for text across all items in a board

## Setup

### 1. Get MIRO API Token

1. Go to [MIRO Developer Portal](https://miro.com/app/settings/user-profile/apps)
2. Create a new app or use existing one
3. Generate an access token with these scopes:
   - `boards:read`
   - `boards:write` (optional, for future enhancements)

### 2. Install Dependencies

```bash
npm install
```

### 3. Configure Environment

Create a `.env` file:

```bash
cp .env.example .env
```

Edit `.env` and add your MIRO access token:

```
MIRO_ACCESS_TOKEN=your_actual_token_here
```

### 4. Build the Server

```bash
npm run build
```

### 5. Configure Claude Desktop

Add to your Claude Desktop configuration (`~/Library/Application Support/Claude/claude_desktop_config.json` on macOS):

```json
{
  "mcpServers": {
    "miro": {
      "command": "node",
      "args": ["/Users/romanojl/Claude-Projects/MIRO-mcp/dist/index.js"],
      "env": {
        "MIRO_ACCESS_TOKEN": "your_miro_access_token_here"
      }
    }
  }
}
```

**Note**: Replace the path in `args` with the actual path to your built `index.js` file.

### 6. Restart Claude Desktop

After configuration, restart Claude Desktop to load the MCP server.

## Development

Run in development mode with auto-reload:

```bash
npm run dev
```

## Available Tools in Claude

Once configured, you can use these commands in Claude Desktop:

- `list_boards` - List your MIRO boards
- `get_board` - Get details about a specific board
- `get_board_items` - Get all items from a board
- `get_board_frames` - Get all frames from a board
- `search_board_content` - Search for text in board items

### Example Usage in Claude:

"Can you show me all my MIRO boards?"

"Get all sticky notes from board [board_id]"

"Search for 'project timeline' in board [board_id]"

## Troubleshooting

1. **Authentication Error**: Ensure your MIRO access token is valid and has the correct permissions
2. **Server Not Found**: Check that the path in Claude Desktop config points to the correct `dist/index.js` file
3. **No Boards Found**: Verify your token has access to at least one board

## License

MIT

TDQS

A3.5/5.0

Scored across 5 tools

Disambiguation5/5

Each tool has a clearly distinct purpose with no overlap: list_boards enumerates boards, get_board retrieves board metadata, get_board_frames fetches frames, get_board_items fetches widgets, and search_board_content performs text searches. The descriptions specify unique targets (boards, frames, items, content), eliminating any ambiguity.

Naming Consistency5/5

All tool names follow a consistent verb_noun pattern with snake_case, using verbs like 'get', 'list', and 'search' paired with specific nouns (e.g., board, board_frames, board_items). There are no deviations in style or convention, making the set predictable and readable.

Tool Count5/5

With 5 tools, the server is well-scoped for interacting with MIRO boards, covering essential operations like listing, retrieving details, fetching components (frames/items), and searching content. Each tool earns its place without feeling excessive or insufficient for the domain.

Completeness4/5

The toolset provides strong read/search coverage for MIRO boards, including listing, metadata retrieval, and content exploration. However, there are minor gaps in write operations (e.g., creating/updating boards or items), which agents might need to work around for full CRUD functionality, though the read-focused scope is clear.

Maintenance

ActivityInactive
ResponsivenessNo issues