Trello MCP Server
Provides tools for managing Trello boards, lists, cards, checklists, labels, members, custom fields, organizations, and webhooks, enabling natural language interaction with Trello through Claude.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Trello MCP Server List my Trello boards"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
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
Claude Code CLI installed and authenticated
A Trello account
Docker (only needed for remote/Docker mode)
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 installStep 2: Get your Trello credentials
Run the interactive setup wizard:
npm run setupIt will:
Ask for your API key — get one at trello.com/power-ups/admin
Open your browser to authorize the app
You click Allow, copy the token, and paste it back
Save both values to a
.envfile automatically
The
.envfile is git-ignored. Your credentials stay local.
Step 3: Register the server with Claude Code
claude mcp add trello -- npx tsx src/index.tsStep 4: Verify it works
Open Claude Code and ask:
List my Trello boardsYou 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-mcpStep 2: Configure credentials
cp .env.example .envOpen .env in your editor and fill in your values:
TRELLO_API_KEY=your-api-key-here
TRELLO_TOKEN=your-token-hereNeed 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 --buildYou should see:
trello-mcp-1 | Trello MCP server listening on http://0.0.0.0:3333/mcpThe 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/healthExpected response:
{"status":"ok"}Step 5: Connect Claude Code to the server
claude mcp add --transport http trello http://localhost:3333/mcpIf 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/mcpStep 6: Verify it works
Open Claude Code and ask:
List my Trello boardsOption 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-mcpStep 2: Connect Claude Code
claude mcp add --transport http trello http://localhost:3333/mcpThat's it — no Node.js, no cloning, no npm install.
Environment Variables
Variable | Required | Default | Description |
| Yes | — | Your Trello API key (get one here) |
| Yes | — | Your Trello authorization token |
| No |
| 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/mcpThis 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 all boards for the authenticated user |
| Get board details by ID |
| Get all lists on a board |
| Get all cards on a board |
| Get all labels on a board |
| Get all members of a board |
| Get the activity feed for a board |
| Get custom field definitions on a board |
| Create a new board |
| Update name, description, closed status, or background |
| Permanently delete a board (irreversible) |
| Create a new label on a board |
| Add a member to a board with a role |
| Remove a member from a board |
Cards (20 tools)
Tool | Description |
| Get card details with checklists, labels, and members |
| Create a new card on a list |
| Update card name, description, due date, or position |
| Move a card to a different list or board |
| Archive a card (reversible) |
| Unarchive (reopen) a closed card |
| Permanently delete a card (irreversible) |
| Add a comment to a card |
| Edit a comment on a card |
| Delete a comment from a card |
| Add a label to a card |
| Remove a label from a card |
| Assign a member to a card |
| Unassign a member from a card |
| Get the activity feed for a card |
| List all attachments on a card |
| Add a URL attachment to a card |
| Delete an attachment from a card |
| Get custom field values for a card |
| Set a custom field value on a card |
Lists (8 tools)
Tool | Description |
| Get a list and all its cards |
| Create a new list on a board |
| Rename or reposition a list |
| Archive a list |
| Unarchive (reopen) a closed list |
| Move all cards from one list to another |
| Archive all cards in a list |
| Move a list to a different board |
Checklists (7 tools)
Tool | Description |
| Create a checklist on a card |
| Get a checklist by ID with all its items |
| Rename or reposition a checklist |
| Permanently delete a checklist |
| Add an item to a checklist |
| Toggle, rename, or reposition a checklist item |
| Delete an item from a checklist |
Labels (3 tools)
Tool | Description |
| Get a label by ID |
| Update a label's name or color |
| Permanently delete a label |
Members (7 tools)
Tool | Description |
| Get member info by ID or username |
| Get all cards assigned to a member |
| Get all boards a member belongs to |
| Get all workspaces a member belongs to |
| Get notifications for the authenticated user |
| Mark all notifications as read |
| Search for members by name, username, or email |
Custom Fields (4 tools)
Tool | Description |
| Create a custom field definition on a board |
| Get a custom field definition by ID |
| Delete a custom field definition |
| Get dropdown options for a list-type custom field |
Organizations (5 tools)
Tool | Description |
| Get workspace details by ID or name |
| Get all members of a workspace |
| Get all boards in a workspace |
| Create a new workspace |
| Update workspace name, description, or website |
Webhooks (4 tools)
Tool | Description |
| Create a webhook for model change notifications |
| Get webhook details by ID |
| Update a webhook's URL, model, or active status |
| Delete a webhook |
Search (1 tool)
Tool | Description |
| Search boards and cards with Trello search operators ( |
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.tsTroubleshooting
Problem | Solution |
"Missing required environment variables" | Copy |
"Trello API credentials are not configured" | Run |
401 Unauthorized | Your API key or token is invalid. Run |
Server starts but no tools appear | Make sure you used |
"Cannot find module" errors | Run |
Docker health check failing | Ensure port 3333 isn't already in use. Check logs with |
Can't connect to remote server | Check firewall rules allow port 3333. Verify with |
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 startLicense
Available Tools
73 toolsadd_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).
searchSearch TrelloA
Search for boards and cards in Trello. Supports Trello search operators like @member, #label, list:name, is:open, is:archived, etc.
Inputs: query (required), partial, boardIds, cardsLimit, +2 more.
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
Scored across 73 tools
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.
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.
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.
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
Related MCP Connectors
A comprehensive Model Context Protocol (MCP) server that enables AI assistants to interact with yo…
Trello in Claude Code in 60 seconds. No API key, no hosting. Hosted, OAuth sign-in, 18 tools.
AI-native Kanban board — connect Claude to claim, work and move your tasks over MCP.
Official Todoist MCP server. Manage tasks and projects. Hosted, no API key needed.
Related MCP Servers
- AlicenseNot gradedqualityCmaintenanceAn 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 npmISC
- AlicenseBqualityBmaintenanceA 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.45246 npm3MIT
- AlicenseAqualityDmaintenanceA Trello MCP server that enables AI assistants to manage boards, cards, and lists via the Model Context Protocol.2536 PyPI2MIT
- AlicenseNot gradedqualityDmaintenanceA 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 npm1ISC