Skip to main content
Glama
Atlassian Trello MCP Server

Atlassian Trello MCP Server

by agrath

Trello MCP Server

npm version license: MIT

🔀 Active fork. This is a maintained fork of kocakli/Trello-Desktop-MCP integrating contributions from across the fork ecosystem (kevinhillinger, zonca, dbz-max, maks244, jantman, ThatIanMcShane, josh-argyle). PRs welcome — see Credits for what each contributor brought in. Published on npm as atlassian-trello-mcp.

A Model Context Protocol (MCP) server for Trello that works with any MCP-compatible client -- Claude Desktop, Claude Code, Gemini CLI, and more.

Provides 50 tools covering boards, cards, lists, labels, checklists, attachments, members, custom fields, and search.

Quick Start

1. Get Trello API credentials

Trello no longer hands out API keys directly — each user must create their own Power-Up, then mint a token against that Power-Up's key.

  1. Visit https://trello.com/power-ups/admin and click New.

  2. Fill out the New Power-Up or Integration form:

    • New Power-Up or Integration name: Claude MCP. If you have multiple team members, each developer must create their own Power-Up so the API key is tied to their user — name it with your own name too, e.g. Trello MCP Steve.

    • Workspace: the workspace you want to interact with.

    • Iframe connector URL: https://localhost (required field, not actually used by this MCP server).

    • Email: your email.

    • Support contact and Author: can be company-level or personal.

  3. Once the Power-Up is created, click API key in the sidebar, then Generate a new API key, then Generate API key in the confirmation modal. Trello displays both an API key and a Secret — save them somewhere safe.

  4. In a browser, visit:

    https://trello.com/1/authorize?expiration=never&scope=read,write,account&response_type=token&name={NAME}&key={APIKEY}

    Replace {NAME} with the Power-Up name you chose and {APIKEY} with the key from the previous step. This is an auth prompt — confirm access and click Allow. Trello returns an API token; copy it.

  5. Put the API key and token into your MCP client config (e.g. .claude.json) — see the next section.

2. Install

The easiest path is npx — no clone, no build, just run:

npx atlassian-trello-mcp

Or install from source:

git clone https://github.com/agrath/Trello-Desktop-MCP.git
cd Trello-Desktop-MCP
npm install
npm run build

3. Configure your MCP client

Edit your config file:

  • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json

  • Windows: %APPDATA%\Claude\claude_desktop_config.json

  • Linux: ~/.config/Claude/claude_desktop_config.json

{
  "mcpServers": {
    "trello": {
      "command": "npx",
      "args": ["-y", "atlassian-trello-mcp"],
      "env": {
        "TRELLO_API_KEY": "your-api-key",
        "TRELLO_TOKEN": "your-token"
      }
    }
  }
}
claude mcp add trello -- npx -y atlassian-trello-mcp

Set environment variables TRELLO_API_KEY and TRELLO_TOKEN, or pass credentials per-request.

Edit ~/.gemini/settings.json:

{
  "mcpServers": {
    "trello": {
      "command": "npx",
      "args": ["-y", "atlassian-trello-mcp"],
      "env": {
        "TRELLO_API_KEY": "your-api-key",
        "TRELLO_TOKEN": "your-token"
      }
    }
  }
}

The server uses stdio transport. Run with environment variables set:

TRELLO_API_KEY=your-key TRELLO_TOKEN=your-token npx atlassian-trello-mcp
# or, from a source clone:
TRELLO_API_KEY=your-key TRELLO_TOKEN=your-token node dist/index.js

Related MCP server: fastmcp-trello

Credentials

Credentials can be provided two ways:

  1. Environment variables (recommended): Set TRELLO_API_KEY and TRELLO_TOKEN

  2. Per-request: Pass apiKey and token as tool parameters (overrides env vars)

Available Tools (50)

Boards & Lists

Tool

Description

list_boards

List all accessible boards

trello_get_user_boards

Get boards with user profile info

get_board_details

Board metadata, lists, and optionally cards

get_lists

Get all lists on a board

trello_filter_lists

Filter lists by name (case-insensitive substring match)

trello_create_list

Create a new list on a board

trello_update_list

Rename, archive/unarchive, or reposition a list

trello_get_board_members

Get all members on a board

trello_get_board_labels

Get all labels on a board

trello_get_board_cards

Get cards on a board (compact or full); optionally filter by assigned member

trello_get_board_custom_fields

Get custom field definitions

Cards

Tool

Description

create_card

Create a card with name, description, due date, labels, members

get_card

Get card details

trello_get_card_by_number

Find a card by its board-local number (the #N / idShort)

update_card

Update card properties

move_card

Move a card to a different list

trello_archive_card

Archive or unarchive a card

trello_get_list_cards

Get cards in a list (compact or full mode)

Comments & Activity

Tool

Description

trello_add_comment

Add a comment to a card

trello_update_comment

Edit the text of an existing comment

trello_delete_comment

Permanently delete a comment

trello_get_card_actions

Get card activity history and comments

trello_get_board_actions

Get board-wide activity history, with since/before paging for incremental sync

Labels

Tool

Description

trello_create_label

Create a label on a board

trello_update_label

Update label name or color

trello_delete_label

Delete a label

trello_add_label_to_card

Assign a label to a card

trello_remove_label_from_card

Remove a label from a card

Members on Cards

Tool

Description

trello_get_member

Get member profile details

trello_add_member_to_card

Assign a member to a card

trello_remove_member_from_card

Remove a member from a card

Attachments

Tool

Description

trello_get_card_attachments

List all attachments on a card

trello_get_card_attachment

Get a specific attachment

trello_create_card_attachment

Attach a URL or upload a local file

trello_delete_card_attachment

Delete an attachment

Checklists

Tool

Description

trello_create_checklist

Create a checklist on a card

trello_get_checklist

Get a checklist with items

trello_update_checklist

Update checklist name or position

trello_delete_checklist

Delete a checklist

trello_get_checklist_field

Get a specific checklist field

trello_update_checklist_field

Update a specific checklist field

trello_get_board_for_checklist

Get the board a checklist belongs to

trello_get_card_for_checklist

Get the card a checklist belongs to

trello_get_card_checklists

Get all checklists on a card

Check Items

Tool

Description

trello_create_check_item

Add an item to a checklist

trello_get_check_items

Get all items on a checklist

trello_get_check_item

Get a specific check item

trello_update_check_item

Update item (name, state, due date, assignee)

trello_delete_check_item

Delete a check item

Tool

Description

trello_search

Search across boards, cards, members, organizations

Configuration

Read-only mode

Set TRELLO_READ_ONLY=true to disable all write operations. The 25 write tools are hidden from tools/list and rejected if called anyway, leaving the 25 read tools available.

The policy is an allowlist of read tools, so it fails closed: any tool added later is treated as a write until it is explicitly classified as a read.

{
  "env": {
    "TRELLO_API_KEY": "your-key",
    "TRELLO_TOKEN": "your-token",
    "TRELLO_READ_ONLY": "true"
  }
}

Compact mode

Several tools support a compact parameter (default: true) that returns minimal fields to reduce response size. Set compact: false for full details including descriptions, labels, members, and custom fields.

Tools with compact mode: get_board_details, trello_get_board_cards, trello_get_list_cards, trello_search.

Image attachment download

When get_card is called and the card has image attachments, the server downloads them and returns them as inline MCP image content blocks alongside the JSON — letting the client see card images directly. Downloads are restricted to Trello-hosted URLs (*.trello.com, trello-attachments.s3.amazonaws.com) and capped at 5 MB per image to mitigate SSRF and payload-bloat risks.

Set TRELLO_DOWNLOAD_IMAGES=false (or 0/no/off) to disable entirely — the server will skip the extra getCardAttachments call and return text only. Default is enabled.

Logging

Set TRELLO_MCP_LOGGING=true to enable file-based logging via Pino. Logs are written to dist/logs/app.log.

Development

Project structure

src/
  index.ts              Entry point (credential injection, tool routing, read-only enforcement)
  tools/
    boards.ts           Board tools (list, details, lists, filter)
    cards.ts            Card tools (CRUD, archive)
    lists.ts            List tools (cards, create list, comments)
    members.ts          Member tools (user boards, member details)
    search.ts           Search tool
    advanced.ts         Labels, attachments, members on cards, custom fields
    checklists.ts       Checklist and check item tools (13 tools)
  trello/
    client.ts           TrelloClient (API calls, retry, rate limiting)
  types/
    trello.ts           TypeScript interfaces
  utils/
    validation.ts       Zod schemas, extractCredentials, extractTrelloId
    logger.ts           Pino file logger
    readOnly.ts         Read-only mode policy (read-tool allowlist)
    health.ts           Health check utility
    appInsights.ts      Telemetry (no-op)
tests/
  validation.test.ts    Validation and credential extraction tests
  trelloClient.test.ts  API client tests (mocked fetch)
  tools.test.ts         Tool handler tests (mocked client)
  readOnly.test.ts      Read-only mode policy tests

Build & test

npm install
npm run build
npm test
npm run type-check

Key patterns

  • ID resolution: All tools accept Trello URLs, short IDs, or full 24-char hex IDs via extractTrelloId()

  • Credential fallback: extractCredentials() checks args first, then env vars

  • Retry with backoff: TrelloClient retries on 500/network errors (3 attempts, exponential backoff)

  • Rate limiting: Extracts and returns x-rate-limit-* headers from every response

  • Validation: Zod schemas validate all inputs before API calls

Contributing

Pull requests are welcome and actively reviewed. This fork is maintained by an extensive Trello user, so features get real-world testing.

If you've forked the original project and built something useful, please submit a PR here rather than maintaining a separate fork -- it's easier for everyone to benefit from a single well-maintained project.

To contribute:

  1. Fork this repo

  2. Create a feature branch

  3. Add tests for new functionality

  4. Run npm test and npm run build

  5. Submit a pull request with a clear description of what and why

Credits

This project is a fork of kocakli/Trello-Desktop-MCP. Features and ideas were incorporated from across the fork ecosystem:

  • kocakli -- Original project, MCP client-agnostic rebranding, stderr logging fix

  • kevinhillinger -- Credential injection architecture, label deletion, card member management, card archiving, expanded TypeScript types, resources layer

  • zonca -- Centralized credential handling with env var fallback, label management tools, comprehensive unit tests, improved TypeScript types replacing any

  • dbz-max -- Custom fields support (board custom fields + card custom field items)

  • maks244 -- Read-only mode concept, list filtering by name, credential stripping from telemetry logs

  • jantman -- Fix for numeric pos values rejected when sent as strings by MCP clients

  • ThatIanMcShane -- Bumped @modelcontextprotocol/sdk 1.0.4 → 1.29.0 to fix connection timeouts with current Claude Code releases

  • josh-argyle -- Auto-download image attachments in get_card responses as inline MCP image content blocks (with allowlist + size cap added during port)

  • l-double-l -- trello_update_list, trello_get_board_actions with since/before paging, and the member ID injection fix (widened during port to validate every ID field)

  • Gileba -- Independent trello_update_list implementation, which informed the ported tool's shape

  • TheCodeSharman -- idShort (the board-local #N card number) surfaced across all card projections, and trello_get_card_by_number to resolve a quoted card number to a card

License

MIT

Available Tools

45 tools
create_cardB

Create a new card in a Trello list. Use this to add tasks, ideas, or items to your workflow.

Inputs: name (required), idList (required), apiKey, token, +6 more.

get_board_detailsA

Get information about a Trello board. IMPORTANT: Start with includeDetails=false (default) to get board metadata and lists only. Then use get_card or trello_get_list_cards to drill into specific cards. Only set includeDetails=true for small boards when you need a full overview.

Inputs: boardId (required), apiKey, token, includeDetails, +2 more.

get_cardB

Get detailed information about a specific Trello card, including its content, status, members, and attachments.

Inputs: cardId (required), apiKey, token, includeDetails.

get_listsA

Get all lists in a specific Trello board. Use this to see the workflow columns (like "To Do", "In Progress", "Done") in a board.

Inputs: boardId (required), apiKey, token, filter.

list_boardsA

List all Trello boards accessible to the user. Use this to see all boards you have access to, or filter by status.

Inputs: apiKey, token, filter.

move_cardA

Move a card to a different list. Use this to change a card's workflow status (e.g., from "To Do" to "In Progress").

Inputs: cardId (required), idList (required), apiKey, token, +1 more.

trello_add_commentB

Add a comment to a Trello card. Use this to add notes, updates, or discussions to cards.

Inputs: cardId (required), text (required), apiKey, token.

trello_add_label_to_cardB

Assign an existing label to a Trello card.

Inputs: cardId (required), labelId (required), apiKey, token.

trello_add_member_to_cardC

Add a member to a Trello card.

Inputs: cardId (required), memberId (required), apiKey, token.

trello_archive_cardA

Archive or unarchive a Trello card. Set value to true to archive, false to unarchive.

Inputs: cardId (required), value (required), apiKey, token.

trello_create_card_attachmentA

Attach a URL or local file to a Trello card. Provide either a url (for link attachments) or filePath (for file uploads from the local filesystem).

Inputs: cardId (required), apiKey, token, url, +4 more.

trello_create_check_itemA

Add an item to a checklist. Supports due dates and member assignment.

Inputs: checklistId (required), name (required), apiKey, token, +4 more.

trello_create_checklistB

Create a checklist on a card. Optionally copy items from an existing checklist.

Inputs: cardId (required), name (required), apiKey, token, +2 more.

trello_create_labelB

Create a new label on a Trello board.

Inputs: boardId (required), name (required), color (required), apiKey, +1 more.

trello_create_listA

Create a new list in a Trello board. Use this to add workflow columns like "To Do", "In Progress", or "Done".

Inputs: name (required), idBoard (required), apiKey, token, +1 more.

trello_delete_card_attachmentB

Delete an attachment from a Trello card.

Inputs: cardId (required), attachmentId (required), apiKey, token.

trello_delete_check_itemB

Delete an item from a checklist.

Inputs: checklistId (required), checkItemId (required), apiKey, token.

trello_delete_checklistB

Delete a checklist from a card.

Inputs: checklistId (required), apiKey, token.

trello_delete_labelB

Delete a label from a Trello board.

Inputs: labelId (required), apiKey, token.

trello_filter_listsA

Filter lists on a board by name. Returns lists whose name contains the filter string (case-insensitive).

Inputs: boardId (required), filter (required), apiKey, token.

trello_get_board_cardsC

Get all cards from a Trello board with optional filtering and detailed information like attachments and members.

Inputs: boardId (required), apiKey, token, attachments, +5 more.

trello_get_board_custom_fieldsB

Get all custom field definitions for a Trello board. Returns field names, types, and options.

Inputs: boardId (required), apiKey, token.

trello_get_board_for_checklistA

Get the board that a checklist belongs to.

Inputs: checklistId (required), apiKey, token.

trello_get_board_labelsA

Get all labels available on a specific Trello board for categorizing cards.

Inputs: boardId (required), apiKey, token.

trello_get_board_membersB

Get all members who have access to a specific Trello board.

Inputs: boardId (required), apiKey, token.

trello_get_card_actionsA

Get activity history and comments for a specific Trello card. Useful for tracking changes and discussions.

Inputs: cardId (required), apiKey, token, filter, +1 more.

trello_get_card_attachmentA

Get details of a single attachment on a Trello card by its attachment ID.

Inputs: cardId (required), attachmentId (required), apiKey, token, +1 more.

trello_get_card_attachmentsB

Get all attachments (files, links) for a specific Trello card.

Inputs: cardId (required), apiKey, token, fields.

trello_get_card_checklistsB

Get all checklists and their items for a specific Trello card.

Inputs: cardId (required), apiKey, token, checkItems, +1 more.

trello_get_card_for_checklistC

Get the card that a checklist belongs to.

Inputs: checklistId (required), apiKey, token.

trello_get_check_itemA

Get a single check item from a checklist.

Inputs: checklistId (required), checkItemId (required), apiKey, token.

trello_get_check_itemsC

Get all items on a checklist. Supports filtering by state (all, complete, incomplete).

Inputs: checklistId (required), apiKey, token, filter.

trello_get_checklistB

Get a single checklist with its check items.

Inputs: checklistId (required), apiKey, token, fields.

trello_get_checklist_fieldB

Get a specific field (name or pos) from a checklist.

Inputs: checklistId (required), field (required), apiKey, token.

trello_get_list_cardsA

Get all cards in a specific Trello list. Use this to see all tasks/items in a workflow column.

Inputs: listId (required), apiKey, token, filter, +2 more.

trello_get_memberA

Get details about a specific Trello member/user, including their boards and profile information.

Inputs: memberId (required), apiKey, token, fields, +2 more.

trello_get_user_boardsB

Get all boards accessible to the current user. This is the starting point for exploring your Trello workspace.

Inputs: apiKey, token, filter.

trello_remove_label_from_cardB

Remove a label from a Trello card.

Inputs: cardId (required), labelId (required), apiKey, token.

trello_remove_member_from_cardB

Remove a member from a Trello card.

Inputs: cardId (required), memberId (required), apiKey, token.

trello_update_check_itemB

Update a check item on a card (name, state, position, due date, member). Use state to check/uncheck items.

Inputs: cardId (required), checkItemId (required), apiKey, token, +5 more.

trello_update_checklistC

Update a checklist name or position.

Inputs: checklistId (required), apiKey, token, name, +1 more.

trello_update_checklist_fieldB

Update a specific field (name or pos) on a checklist.

Inputs: checklistId (required), field (required), value (required), apiKey, +1 more.

trello_update_labelB

Update the name or color of an existing Trello label.

Inputs: labelId (required), apiKey, token, name, +1 more.

update_cardC

Update properties of an existing Trello card. Use this to change card details like name, description, due date, or status.

Inputs: cardId (required), apiKey, token, name, +7 more.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

Loading tool schema changelog…

    TDQS

    B3.1/5.0

    Scored across 45 tools

    Disambiguation3/5

    Many tools have distinct purposes, but there is clear overlap between list_boards and trello_get_user_boards (both list accessible boards), and between get_board_details and trello_get_board_cards (both retrieve board data). Multiple tools for similar operations (e.g., card tools) are well-described but still create ambiguity. Overall, some boundaries are unclear.

    Naming Consistency2/5

    Tool names are highly inconsistent. Some use a simple verb_noun pattern (e.g., create_card, get_board_details), while many others are prefixed with 'trello_' (e.g., trello_add_comment, trello_get_board_cards). This mixed convention, combined with varying verb styles, makes the naming unpredictable.

    Tool Count2/5

    45 tools is excessive for a Trello MCP server. While Trello has many features, this granularity (e.g., separate tools for get_checklist, get_checklist_field, get_check_item, get_check_items) is over-engineered. The tool count could be reduced by consolidating related actions, making the surface more manageable.

    Completeness4/5

    The server covers most core Trello operations: cards, lists, boards, checklists, labels, attachments, comments, members, and search. Missing board creation/deletion and some list management features (e.g., archiving lists), but these are minor gaps. The overall surface is comprehensive for typical workflows.

    Maintenance

    ActivityStale
    ResponsivenessNo recent community issues

    Related MCP Connectors

    Related MCP Servers

    • A
      license
      Not graded
      quality
      C
      maintenance
      An MCP server that connects Claude to Trello, enabling comprehensive management of boards, lists, and cards through natural language conversation. It supports a wide range of actions including searching cards, adding comments, managing checklists, and tracking board activity.
      121 npm
      ISC
    • A
      license
      Not graded
      quality
      D
      maintenance
      A Model Context Protocol (MCP) server that provides AI assistants with access to Trello's functionality. This server enables AI models to interact with Trello boards, lists, and cards programmatically.
      121 npm
      1
      ISC