Skip to main content
Glama
README.md
# Trello MCP server

A minimal remote MCP server that lets Claude manage your Trello boards, lists, and cards. Built with the MCP TypeScript SDK (Streamable HTTP transport, stateless mode).

## Tools (40)

**Boards:** `list_boards`, `get_board`, `create_board`, `update_board`, `delete_board`, `get_board_members`, `list_board_cards`, `list_board_labels`

**Lists:** `list_lists`, `get_list`, `create_list`, `update_list`, `archive_all_cards_in_list`

**Cards:** `list_cards`, `get_card`, `create_card`, `update_card`, `delete_card`, `move_card_to_board`, `add_member_to_card`, `remove_member_from_card`, `add_label_to_card`, `remove_label_from_card`, `get_card_actions`

**Checklists:** `list_card_checklists`, `create_checklist`, `delete_checklist`, `add_checkitem`, `update_checkitem`, `delete_checkitem`

**Labels:** `create_label`, `update_label`, `delete_label`

**Comments:** `comment_card`, `update_comment`, `delete_comment`

**Members:** `get_me`, `get_member`, `list_my_cards`

**Search:** `search_cards`

> Tools marked PERMANENT in their description (`delete_*`) cannot be undone. Where possible prefer archiving (`update_card`/`update_board` with `closed=true`), which is reversible.


## 1. Get Trello credentials

1. **API key:** go to <https://trello.com/power-ups/admin>, create a Power-Up, open its **API key** tab, and copy the key. (The older <https://trello.com/app-key> may still work.)
2. **Token:** visit this URL in your browser, replacing `YOUR_KEY`, then click **Allow**:

   ```
   https://trello.com/1/authorize?expiration=never&scope=read,write&response_type=token&name=Claude%20MCP&key=YOUR_KEY
   ```

   Copy the token it shows you.

> `scope=read,write` grants Claude the ability to create/move/archive cards. Use `scope=read` if you want read-only.

## 2. Run locally (test)

```bash
cp .env.example .env      # fill in TRELLO_API_KEY, TRELLO_TOKEN, MCP_SECRET
npm install
npm run dev
```

Server prints the path it's serving (`/mcp/<secret>`).

## 3. Deploy

The server must be reachable over the public internet from Anthropic's cloud — it cannot be behind a VPN/firewall. Any Node host works (Railway, Render, Fly.io, a VPS).

**Railway / Render (quick):**

1. Push this folder to a GitHub repo.
2. Create a new service from the repo. Build: `npm install && npm run build`. Start: `npm start`. (Or use the included `Dockerfile`.)
3. Set env vars: `TRELLO_API_KEY`, `TRELLO_TOKEN`, `MCP_SECRET`. The host sets `PORT` automatically.
4. Note your public URL, e.g. `https://trello-mcp.up.railway.app`.

Your connector URL is then:

```
https://<your-host>/mcp/<MCP_SECRET>
```

## 4. Add to Claude (Team plan — Owner)

1. **Organization settings → Connectors → + Add → Custom**.
2. Name it (e.g. "Trello"), paste the connector URL from step 3.
3. Save. Members can then enable it per chat via the **+ / Connectors** button.

## Security notes

- The connector URL **is** the credential. On Team plans every member can see the connector URL, and Claude's MCP client doesn't send custom auth headers — that's why the secret lives in the URL path. Treat the URL like a password.
- There is no per-user scoping: anyone with the URL acts as the single Trello account whose token you configured.
- Use `scope=read` if you don't want Claude making changes.
- Rotate by changing `MCP_SECRET` (and revoking the Trello token at <https://trello.com/your/account>) if the URL leaks.