Skip to main content
Glama

Trello MCP Server

A Model Context Protocol (MCP) server that connects Trello to Claude Code. Manage your boards, lists, cards, checklists, and more — all through natural language.

73 tools | Zero config startup | Auto-loads .env | Docker ready | Remote HTTP support


Prerequisites


Related MCP server: Atlassian Trello MCP Server

Option A: Local Setup (Stdio Mode)

Best for personal use on your own machine. Claude Code launches the server automatically — no Docker needed.

Step 1: Clone and install

git clone https://github.com/GabrielRamirez/trello-mcp.git
cd trello-mcp
npm install

Step 2: Get your Trello credentials

Run the interactive setup wizard:

npm run setup

It will:

  1. Ask for your API key — get one at trello.com/power-ups/admin

  2. Open your browser to authorize the app

  3. You click Allow, copy the token, and paste it back

  4. Save both values to a .env file automatically

The .env file is git-ignored. Your credentials stay local.

Step 3: Register the server with Claude Code

claude mcp add trello -- npx tsx src/index.ts

Step 4: Verify it works

Open Claude Code and ask:

List my Trello boards

You should see your boards listed. The 73 Trello tools are now available in every Claude Code conversation.


Option B: Docker Setup (Remote HTTP Mode)

Best for running on a server, sharing with a team, or keeping the server always-on. The server exposes an HTTP endpoint that Claude Code connects to via URL.

Step 1: Clone the repo

git clone https://github.com/GabrielRamirez/trello-mcp.git
cd trello-mcp

Step 2: Configure credentials

cp .env.example .env

Open .env in your editor and fill in your values:

TRELLO_API_KEY=your-api-key-here
TRELLO_TOKEN=your-token-here

Need credentials? Get your API key at trello.com/power-ups/admin, then click the token link on that page to authorize.

Step 3: Build and start the server

docker compose up --build

You should see:

trello-mcp-1  | Trello MCP server listening on http://0.0.0.0:3333/mcp

The server will refuse to start if credentials are missing, with a clear error telling you what's needed.

Step 4: Verify the server is running

In a new terminal:

curl http://localhost:3333/health

Expected response:

{"status":"ok"}

Step 5: Connect Claude Code to the server

claude mcp add --transport http trello http://localhost:3333/mcp

If the server is running on a remote machine, replace localhost with the server's hostname or IP:

claude mcp add --transport http trello http://your-server:3333/mcp

Step 6: Verify it works

Open Claude Code and ask:

List my Trello boards

Option C: Using the Published Docker Image

The image is published on Docker Hub. No cloning or Node.js required.

Step 1: Run the container

docker run -d -p 3333:3333 \
  -e TRELLO_API_KEY=your_key \
  -e TRELLO_TOKEN=your_token \
  --name trello-mcp \
  gabermz/trello-mcp

Step 2: Connect Claude Code

claude mcp add --transport http trello http://localhost:3333/mcp

That's it — no Node.js, no cloning, no npm install.


Environment Variables

Variable

Required

Default

Description

TRELLO_API_KEY

Yes

—

Your Trello API key (get one here)

TRELLO_TOKEN

Yes

—

Your Trello authorization token

PORT

No

3333

HTTP server port (Docker/remote mode only)


Sharing with Your Team

Option 1: Project-scoped config

Register the server for everyone working in a specific project:

claude mcp add --transport http trello --scope project http://localhost:3333/mcp

This saves the config to .mcp.json in the project root, which you can commit to git.

Option 2: Manual .mcp.json with environment variable support

Create .mcp.json in your project root:

{
  "mcpServers": {
    "trello": {
      "type": "http",
      "url": "${TRELLO_MCP_URL:-http://localhost:3333}/mcp"
    }
  }
}

Each teammate can set TRELLO_MCP_URL to point to their own server, or omit it to use the default localhost:3333.


What Can It Do?

Once connected, just ask Claude in natural language:

You say

What happens

"List my Trello boards"

Fetches all your boards

"Show me the cards in my Sprint board"

Gets all cards on that board

"Create a card called Fix login bug in the To Do list"

Creates a new card

"Move that card to In Progress"

Moves a card between lists

"Add a checklist called QA Steps to that card"

Creates a checklist

"Search for cards about authentication"

Searches across all boards

"Add a comment: Blocked by API rate limit"

Comments on a card

"Archive all done cards"

Archives completed cards


Tools Reference

Boards (14 tools)

Tool

Description

list_boards

List all boards for the authenticated user

get_board

Get board details by ID

get_board_lists

Get all lists on a board

get_board_cards

Get all cards on a board

get_board_labels

Get all labels on a board

get_board_members

Get all members of a board

get_board_actions

Get the activity feed for a board

get_board_custom_fields

Get custom field definitions on a board

create_board

Create a new board

update_board

Update name, description, closed status, or background

delete_board

Permanently delete a board (irreversible)

create_label

Create a new label on a board

add_board_member

Add a member to a board with a role

remove_board_member

Remove a member from a board

Cards (20 tools)

Tool

Description

get_card

Get card details with checklists, labels, and members

create_card

Create a new card on a list

update_card

Update card name, description, due date, or position

move_card

Move a card to a different list or board

archive_card

Archive a card (reversible)

unarchive_card

Unarchive (reopen) a closed card

delete_card

Permanently delete a card (irreversible)

add_comment

Add a comment to a card

update_comment

Edit a comment on a card

delete_comment

Delete a comment from a card

add_label_to_card

Add a label to a card

remove_label_from_card

Remove a label from a card

add_member_to_card

Assign a member to a card

remove_member_from_card

Unassign a member from a card

get_card_actions

Get the activity feed for a card

list_attachments

List all attachments on a card

add_attachment

Add a URL attachment to a card

delete_attachment

Delete an attachment from a card

get_card_custom_fields

Get custom field values for a card

update_custom_field_item

Set a custom field value on a card

Lists (8 tools)

Tool

Description

get_list

Get a list and all its cards

create_list

Create a new list on a board

update_list

Rename or reposition a list

archive_list

Archive a list

unarchive_list

Unarchive (reopen) a closed list

move_all_cards

Move all cards from one list to another

archive_all_cards

Archive all cards in a list

move_list_to_board

Move a list to a different board

Checklists (7 tools)

Tool

Description

create_checklist

Create a checklist on a card

get_checklist

Get a checklist by ID with all its items

update_checklist

Rename or reposition a checklist

delete_checklist

Permanently delete a checklist

add_checklist_item

Add an item to a checklist

update_checklist_item

Toggle, rename, or reposition a checklist item

delete_checklist_item

Delete an item from a checklist

Labels (3 tools)

Tool

Description

get_label

Get a label by ID

update_label

Update a label's name or color

delete_label

Permanently delete a label

Members (7 tools)

Tool

Description

get_member

Get member info by ID or username

get_member_cards

Get all cards assigned to a member

get_member_boards

Get all boards a member belongs to

get_member_organizations

Get all workspaces a member belongs to

get_notifications

Get notifications for the authenticated user

mark_all_notifications_read

Mark all notifications as read

search_members

Search for members by name, username, or email

Custom Fields (4 tools)

Tool

Description

create_custom_field

Create a custom field definition on a board

get_custom_field

Get a custom field definition by ID

delete_custom_field

Delete a custom field definition

get_custom_field_options

Get dropdown options for a list-type custom field

Organizations (5 tools)

Tool

Description

get_organization

Get workspace details by ID or name

get_organization_members

Get all members of a workspace

get_organization_boards

Get all boards in a workspace

create_organization

Create a new workspace

update_organization

Update workspace name, description, or website

Webhooks (4 tools)

Tool

Description

create_webhook

Create a webhook for model change notifications

get_webhook

Get webhook details by ID

update_webhook

Update a webhook's URL, model, or active status

delete_webhook

Delete a webhook

Search (1 tool)

Tool

Description

search

Search boards and cards with Trello search operators (@member, #label, list:name, is:open, etc.)

Tools that require Trello Premium or Enterprise (Custom Fields, some board features) will return a clear error message if your account doesn't have access.


Project Structure

trello-mcp/
├── src/
│   ├── index.ts              # Stdio entry point (local mode)
│   ├── remote.ts             # HTTP entry point (Docker/remote mode)
│   ├── server.ts             # Shared server factory
│   ├── trello-client.ts      # HTTP client with auth and error handling
│   ├── types.ts              # TypeScript interfaces for Trello objects
│   ├── tools/
│   │   ├── boards.ts         # Board tools (14)
│   │   ├── cards.ts          # Card tools (20)
│   │   ├── lists.ts          # List tools (8)
│   │   ├── checklists.ts     # Checklist tools (7)
│   │   ├── labels.ts         # Label tools (3)
│   │   ├── members.ts        # Member tools (7)
│   │   ├── customfields.ts   # Custom Field tools (4)
│   │   ├── organizations.ts  # Organization tools (5)
│   │   ├── webhooks.ts       # Webhook tools (4)
│   │   └── search.ts         # Search tool (1)
│   └── utils/
│       ├── env.ts            # .env file loader
│       └── response.ts       # Response formatting helpers
├── Dockerfile
├── docker-compose.yml
├── .env.example
├── package.json
├── tsconfig.json
└── tsup.config.ts

Troubleshooting

Problem

Solution

"Missing required environment variables"

Copy .env.example to .env and fill in your credentials, or pass them via -e flags.

"Trello API credentials are not configured"

Run npm run setup to configure credentials interactively.

401 Unauthorized

Your API key or token is invalid. Run npm run setup to generate new ones.

Server starts but no tools appear

Make sure you used claude mcp add, not just npx tsx src/index.ts directly.

"Cannot find module" errors

Run npm install to install dependencies.

Docker health check failing

Ensure port 3333 isn't already in use. Check logs with docker compose logs.

Can't connect to remote server

Check firewall rules allow port 3333. Verify with curl http://your-server:3333/health.


Development

# Install dependencies
npm install

# Run in dev mode (stdio, auto-loads .env)
npm run dev

# Build for production
npm run build

# Run HTTP server locally without Docker
npm run start:remote

# Run production build (stdio)
npm run start

License

MIT

Available Tools

73 tools
add_attachmentAdd AttachmentB

Add a URL attachment to a Trello card.

Inputs: url (required), cardId (required), name.

add_board_memberAdd Board MemberB

Add a member to a board with a specified role.

Inputs: boardId (required), memberId (required), type.

add_checklist_itemAdd Checklist ItemB

Add an item to an existing checklist.

Inputs: name (required), checklistId (required), pos, checked.

add_commentAdd CommentB

Add a comment to a Trello card.

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

add_label_to_cardAdd Label to CardC

Add an existing label to a card.

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

add_member_to_cardAdd Member to CardC

Assign a member to a card.

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

archive_all_cardsArchive All CardsA

Archive all cards in a list.

Inputs: listId (required).

archive_cardArchive CardB

Archive (close) a Trello card.

Inputs: cardId (required).

archive_listArchive ListC

Archive (close) a Trello list.

Inputs: listId (required).

create_boardCreate BoardB

Create a new Trello board.

Inputs: name (required), desc, defaultLists.

create_cardCreate CardC

Create a new card on a Trello list.

Inputs: name (required), idList (required), due, pos, +3 more.

create_checklistCreate ChecklistB

Create a new checklist on a Trello card.

Inputs: name (required), cardId (required).

create_custom_fieldCreate Custom FieldA

Create a new custom field definition on a board. Requires Trello Premium or Enterprise.

Inputs: name (required), type (required), idModel (required), pos.

create_labelCreate LabelB

Create a new label on a Trello board.

Inputs: name (required), color (required), boardId (required).

create_listCreate ListA

Create a new list on a Trello board.

Inputs: name (required), idBoard (required), pos.

create_organizationCreate OrganizationB

Create a new Trello organization (workspace).

Inputs: displayName (required), desc, name, website.

create_webhookCreate WebhookA

Create a webhook to receive notifications when a Trello model changes. The callback URL must be publicly accessible and respond to HEAD requests.

Inputs: idModel (required), callbackURL (required), active, description.

delete_attachmentDelete AttachmentB

Delete an attachment from a Trello card.

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

delete_boardDelete BoardA

Permanently delete a Trello board. WARNING: This is irreversible — all lists, cards, and data on the board will be lost.

Inputs: boardId (required).

delete_cardDelete CardA

Permanently delete a Trello card. This cannot be undone — use archive_card for reversible removal.

Inputs: cardId (required).

delete_checklistDelete ChecklistB

Permanently delete a checklist from a card.

Inputs: checklistId (required).

delete_checklist_itemDelete Checklist ItemB

Delete an item from a checklist.

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

delete_commentDelete CommentB

Delete a comment from a card.

Inputs: cardId (required), actionId (required).

delete_custom_fieldDelete Custom FieldA

Delete a custom field definition and all its values from every card. Requires Trello Premium or Enterprise.

Inputs: customFieldId (required).

delete_labelDelete LabelA

Permanently delete a label from the board.

Inputs: labelId (required).

delete_webhookDelete WebhookC

Delete a webhook.

Inputs: webhookId (required).

get_boardGet BoardA

Get detailed information about a specific Trello board by its ID.

Inputs: boardId (required).

get_board_actionsGet Board ActionsB

Get the activity feed (actions) for a board.

Inputs: boardId (required), limit, filter.

get_board_cardsGet Board CardsB

Get all cards on a Trello board.

Inputs: boardId (required), filter.

get_board_custom_fieldsGet Board Custom FieldsA

Get all custom field definitions on a board. Requires Trello Premium or Enterprise.

Inputs: boardId (required).

get_board_labelsGet Board LabelsA

Get all labels defined on a Trello board.

Inputs: boardId (required).

get_board_listsGet Board ListsC

Get all lists on a Trello board.

Inputs: boardId (required), filter.

get_board_membersGet Board MembersA

Get all members of a Trello board.

Inputs: boardId (required).

get_cardGet CardA

Get detailed information about a specific Trello card, including its checklists, labels, and members.

Inputs: cardId (required).

get_card_actionsGet Card ActionsC

Get the activity feed (actions) for a card.

Inputs: cardId (required), limit, filter.

get_card_custom_fieldsGet Card Custom FieldsA

Get custom field values for a Trello card. Requires Trello Premium or Enterprise.

Inputs: cardId (required).

get_checklistGet ChecklistA

Get a checklist by ID, including all its items.

Inputs: checklistId (required).

get_custom_fieldGet Custom FieldA

Get a custom field definition by ID. Requires Trello Premium or Enterprise.

Inputs: customFieldId (required).

get_custom_field_optionsGet Custom Field OptionsA

Get the dropdown options for a list-type custom field. Requires Trello Premium or Enterprise.

Inputs: customFieldId (required).

get_labelGet LabelA

Get a label by its ID.

Inputs: labelId (required).

get_listGet ListA

Get a Trello list and its cards by list ID.

Inputs: listId (required).

get_memberGet MemberA

Get information about a Trello member by ID or username. Use 'me' for the authenticated user.

Inputs: memberId (required).

get_member_boardsGet Member BoardsA

Get all boards a member belongs to. Use 'me' for the authenticated user.

Inputs: memberId (required), filter.

get_member_cardsGet Member CardsB

Get all cards assigned to a member. Use 'me' for the authenticated user.

Inputs: memberId (required), filter.

get_member_organizationsGet Member OrganizationsA

Get all organizations (workspaces) a member belongs to. Use 'me' for the authenticated user.

Inputs: memberId (required).

get_notificationsGet NotificationsB

Get notifications for the authenticated user.

Inputs: limit, readFilter.

get_organizationGet OrganizationA

Get details about a Trello organization (workspace) by ID or name.

Inputs: orgId (required).

get_organization_boardsGet Organization BoardsB

Get all boards in a Trello organization (workspace).

Inputs: orgId (required), filter.

get_organization_membersGet Organization MembersB

Get all members of a Trello organization (workspace).

Inputs: orgId (required).

get_webhookGet WebhookA

Get details of a webhook by ID.

Inputs: webhookId (required).

list_attachmentsList AttachmentsA

List all attachments on a Trello card.

Inputs: cardId (required).

list_boardsList BoardsA

List all Trello boards for the authenticated user. Returns board id, name, description, URL, and closed status.

Inputs: filter.

mark_all_notifications_readMark All Notifications ReadA

Mark all notifications as read for the authenticated user.

Inputs: no named parameters.

move_all_cardsMove All CardsB

Move all cards from one list to another.

Inputs: idList (required), listId (required), idBoard (required).

move_cardMove CardB

Move a card to a different list, and optionally to a different board.

Inputs: cardId (required), idList (required), pos, idBoard.

move_list_to_boardMove List to BoardC

Move a list to a different board.

Inputs: listId (required), boardId (required).

remove_board_memberRemove Board MemberB

Remove a member from a board.

Inputs: boardId (required), memberId (required).

remove_label_from_cardRemove Label from CardC

Remove a label from a card.

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

remove_member_from_cardRemove Member from CardA

Unassign a member from a card.

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

search_membersSearch MembersB

Search for Trello members by name, username, or email.

Inputs: query (required), limit, boardId, organizationId.

unarchive_cardUnarchive CardA

Unarchive (reopen) a closed Trello card.

Inputs: cardId (required).

unarchive_listUnarchive ListA

Unarchive (reopen) a closed Trello list.

Inputs: listId (required).

update_boardUpdate BoardA

Update a board's name, description, closed status, or background color.

Inputs: boardId (required), desc, name, closed, +1 more.

update_cardUpdate CardC

Update properties of an existing Trello card.

Inputs: cardId (required), due, pos, desc, +2 more.

update_checklistUpdate ChecklistC

Update a checklist's name or position.

Inputs: checklistId (required), pos, name.

update_checklist_itemUpdate Checklist ItemA

Update a checklist item (toggle complete/incomplete, rename, or reposition).

Inputs: cardId (required), checkItemId (required), pos, name, +1 more.

update_commentUpdate CommentA

Update the text of a comment on a card.

Inputs: text (required), cardId (required), actionId (required).

update_custom_field_itemUpdate Custom Field ItemA

Set the value of a custom field on a card. Requires Trello Premium or Enterprise.

Inputs: cardId (required), customFieldId (required), value, idValue.

update_labelUpdate LabelA

Update a label's name or color.

Inputs: labelId (required), name, color.

update_listUpdate ListB

Update a list's name or position.

Inputs: listId (required), pos, name.

update_organizationUpdate OrganizationC

Update a Trello organization's (workspace) name, description, or website.

Inputs: orgId (required), desc, name, website, +1 more.

update_webhookUpdate WebhookA

Update a webhook's callback URL, description, model, or active status.

Inputs: webhookId (required), active, idModel, callbackURL, +1 more.

Tool Schema Changelog

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

Loading tool schema changelog…

    TDQS

    B3.3/5.0

    Scored across 73 tools

    Disambiguation4/5

    Most tools target a distinct resource and action, and descriptions clarify intent. Some overlap exists among board-listing tools (list_boards, get_member_boards, get_organization_boards) and card-listing tools (get_board_cards, get_list), but the scopes are explained well enough to avoid frequent misselection.

    Naming Consistency4/5

    The dominant verb_noun pattern is consistent and readable, e.g., get_board_lists, create_card, update_list, delete_comment. Minor deviations like add_member_to_card vs remove_board_member, and list_attachments vs get_board_actions, introduce slight inconsistency but do not seriously undermine predictability.

    Tool Count1/5

    With 73 tools, this is an extremely large surface area for an MCP server, exceeding the 50+ threshold for a severe mismatch. While Trello is a broad domain, this many tools creates navigation and selection overhead, and many operations could be consolidated or split into separate focused servers.

    Completeness4/5

    The tool set covers nearly the full lifecycle for boards, lists, cards, comments, checklists, labels, attachments, members, organizations, custom fields, webhooks, and notifications. Minor gaps exist, such as no organization deletion, no custom-field definition update, and no single notification read, but agents can work around these.

    Maintenance

    ActivityInactive
    ResponsivenessOutdated data

    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.
      120 npm
      ISC
    • A
      license
      B
      quality
      B
      maintenance
      A Model Context Protocol (MCP) server for Trello that works with any MCP-compatible client -- Claude Desktop, Claude Code, Gemini CLI, and more. Provides 46 tools covering boards, cards, lists, labels, checklists, attachments, members, custom fields, and search.
      45
      246 npm
      3
      MIT
    • 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.
      120 npm
      1
      ISC