trello-mcp
# trello-mcp
An MCP server for the Trello REST API. Exposes ~36 curated tools for boards,
lists, cards, checklists, labels, members, and search.
Requires Node.js 18.14.1 or newer.
## Setup
1. Get a Trello API key and token:
- API key: https://trello.com/app-key
- Token: click the "Token" link on that page and authorize.
2. Add the MCP server configuration below to your client.
## Configure your MCP client
```json
{
"mcpServers": {
"trello": {
"command": "npx",
"args": ["-y", "@trinknx/trello-mcp@0.1.1"],
"env": {
"TRELLO_API_KEY": "your-key",
"TRELLO_TOKEN": "your-token"
}
}
}
}
```
Keep real credentials in your MCP client's runtime environment configuration.
Never commit credentials or rely on checked-in configuration files. For local
development, export credentials into the process environment before starting the
server.
### Environment variables
| Variable | Required | Purpose |
|----------|----------|---------|
| `TRELLO_API_KEY` | yes | Trello API key |
| `TRELLO_TOKEN` | yes | Trello API token |
| `TRELLO_BOARD_ID` | no | Default board id. When set, board tools (`get_board`, `get_board_lists`, `get_board_cards`, `get_board_labels`, `get_board_members`, `create_list`, `create_label`) use it when no board id is passed. |
| `TRELLO_LIST_ID` | no | Default list id. When set, `create_card` uses it when no `idList` is passed. |
The defaults are optional — omit them and pass ids explicitly, or set them so the
agent doesn't have to ask which board/list to use. An explicit id always wins over
the env default; if neither is given, the tool returns a clear error.
## Tools
Boards: `list_my_boards`, `get_board`, `create_board`, `update_board`,
`delete_board`, `get_board_lists`, `get_board_cards`, `get_board_labels`,
`get_board_members`.
Lists: `create_list`, `get_list`, `update_list`, `archive_list`,
`get_list_cards`, `archive_all_cards_in_list`.
Cards: `create_card`, `get_card`, `update_card` (move via `idList`, archive via
`closed`, set cover via `idAttachmentCover`), `delete_card`, `add_comment`,
`add_card_member`, `remove_card_member`, `add_label_to_card`,
`remove_label_from_card`, `get_card_attachments`, `add_attachment` (set
`setCover: true` to make a publicly-fetchable image the card cover),
`delete_attachment`.
Checklists: `create_checklist`, `add_checklist_item`, `update_checklist_item`,
`delete_checklist`.
Labels/Members/Search: `create_label`, `get_me`, `get_member`, `search`,
`search_members`.
## Development
```bash
npm install # install dependencies
npm test # run unit tests
npm run build # compile to dist/
npm start # run the server (node dist/index.js)
```
## License
MIT
TDQS
Scored across 36 tools
Each tool targets a distinct resource-action pair (e.g., board, list, card, checklist, label, member). Even similar operations like archive_list vs archive_all_cards_in_list are clearly differentiated by the resource they act on. Descriptions further clarify any ambiguity.
Most tools follow a verb_noun pattern (e.g., create_board, get_card). However, there is minor inconsistency between 'add' and 'create' (e.g., add_attachment vs create_board), but overall the pattern is consistent and predictable.
With 36 tools covering boards, lists, cards, checklists, labels, members, attachments, comments, and search, the count is well-proportioned for Trello's feature set. Each tool serves a clear purpose without feeling excessive.
The server covers CRUD for boards, lists, and cards, plus operations on checklists, labels, members, attachments, and comments. Minor gaps exist (e.g., no update label, no add board member), but core workflows are fully supported.