Atlassian Trello MCP Server
This server lets you interact with Trello through MCP, providing 50 tools to read, create, update, and manage Trello boards, lists, cards, labels, members, attachments, checklists, check items, custom fields, comments, and search.
Boards & lists: list boards, get board details, get/filter/create/update lists, get board members, labels, custom fields, and board cards
Cards: create, get, update, move, archive/unarchive, find by card number, and get list cards
Comments & activity: add/edit/delete comments, get card activity history, and board-wide actions with paging
Labels: create, update, delete labels, and add/remove labels from cards
Members on cards: get member details, add/remove members from cards
Attachments: list, get, create (URL or file upload), and delete card attachments; optionally download card images inline
Checklists: create, get, update, delete checklists, get/update checklist fields, resolve owning board/card, and list card checklists
Check items: create, get, update, delete check items, filter by state, assign members, set due dates, and check/uncheck
Search: search across boards, cards, members, and organizations with limits, compact mode, and board filters
Configuration options: read-only mode, compact responses, credential injection via env vars or per-request parameters
Provides tools for managing Trello boards, lists, cards, checklists, labels, attachments, members, custom fields, and search.
Trello MCP Server
🔀 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.
Visit https://trello.com/power-ups/admin and click New.
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.
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.
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.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-mcpOr install from source:
git clone https://github.com/agrath/Trello-Desktop-MCP.git
cd Trello-Desktop-MCP
npm install
npm run build3. Configure your MCP client
Edit your config file:
macOS:
~/Library/Application Support/Claude/claude_desktop_config.jsonWindows:
%APPDATA%\Claude\claude_desktop_config.jsonLinux:
~/.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-mcpSet 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.jsRelated MCP server: fastmcp-trello
Credentials
Credentials can be provided two ways:
Environment variables (recommended): Set
TRELLO_API_KEYandTRELLO_TOKENPer-request: Pass
apiKeyandtokenas tool parameters (overrides env vars)
Available Tools (50)
Boards & Lists
Tool | Description |
| List all accessible boards |
| Get boards with user profile info |
| Board metadata, lists, and optionally cards |
| Get all lists on a board |
| Filter lists by name (case-insensitive substring match) |
| Create a new list on a board |
| Rename, archive/unarchive, or reposition a list |
| Get all members on a board |
| Get all labels on a board |
| Get cards on a board (compact or full); optionally filter by assigned member |
| Get custom field definitions |
Cards
Tool | Description |
| Create a card with name, description, due date, labels, members |
| Get card details |
| Find a card by its board-local number (the |
| Update card properties |
| Move a card to a different list |
| Archive or unarchive a card |
| Get cards in a list (compact or full mode) |
Comments & Activity
Tool | Description |
| Add a comment to a card |
| Edit the text of an existing comment |
| Permanently delete a comment |
| Get card activity history and comments |
| Get board-wide activity history, with |
Labels
Tool | Description |
| Create a label on a board |
| Update label name or color |
| Delete a label |
| Assign a label to a card |
| Remove a label from a card |
Members on Cards
Tool | Description |
| Get member profile details |
| Assign a member to a card |
| Remove a member from a card |
Attachments
Tool | Description |
| List all attachments on a card |
| Get a specific attachment |
| Attach a URL or upload a local file |
| Delete an attachment |
Checklists
Tool | Description |
| Create a checklist on a card |
| Get a checklist with items |
| Update checklist name or position |
| Delete a checklist |
| Get a specific checklist field |
| Update a specific checklist field |
| Get the board a checklist belongs to |
| Get the card a checklist belongs to |
| Get all checklists on a card |
Check Items
Tool | Description |
| Add an item to a checklist |
| Get all items on a checklist |
| Get a specific check item |
| Update item (name, state, due date, assignee) |
| Delete a check item |
Search
Tool | Description |
| 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 testsBuild & test
npm install
npm run build
npm test
npm run type-checkKey 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 varsRetry with backoff: TrelloClient retries on 500/network errors (3 attempts, exponential backoff)
Rate limiting: Extracts and returns
x-rate-limit-*headers from every responseValidation: 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:
Fork this repo
Create a feature branch
Add tests for new functionality
Run
npm testandnpm run buildSubmit 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
anydbz-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
posvalues rejected when sent as strings by MCP clientsThatIanMcShane -- Bumped
@modelcontextprotocol/sdk1.0.4 → 1.29.0 to fix connection timeouts with current Claude Code releasesjosh-argyle -- Auto-download image attachments in
get_cardresponses as inline MCP image content blocks (with allowlist + size cap added during port)l-double-l --
trello_update_list,trello_get_board_actionswith since/before paging, and the member ID injection fix (widened during port to validate every ID field)Gileba -- Independent
trello_update_listimplementation, which informed the ported tool's shapeTheCodeSharman --
idShort(the board-local#Ncard number) surfaced across all card projections, andtrello_get_card_by_numberto resolve a quoted card number to a card
License
MIT
Available Tools
45 toolscreate_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_searchA
Universal search across all Trello content (boards, cards, members). Use this to find specific items by keywords or phrases.
Inputs: query (required), apiKey, token, modelTypes, +6 more.
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
Scored across 45 tools
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.
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.
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.
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
Related MCP Connectors
A comprehensive Model Context Protocol (MCP) server that enables AI assistants to interact with yo…
Nifty's MCP server — exposes tasks, projects, messages, and files as tools for AI agents.
Official Todoist MCP server. Manage tasks and projects. Hosted, no API key needed.
Model Context Protocol server for the Apideck Unified API. Connect any MCP-compatible agent framework to 100+ accounting systems, HRIS platforms, file storage providers, and more through one integration. More information https://www.apideck.com/mcp-server
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.121 npmISC
- AlicenseAqualityDmaintenanceA Trello MCP server that enables AI assistants to manage boards, cards, and lists via the Model Context Protocol.2529 PyPI2MIT
- AlicenseBqualityDmaintenanceA Model Context Protocol (MCP) server that connects Trello to Claude Code. Manage your boards, lists, cards, checklists, and more — all through natural language.73292 npm1MIT
- 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.121 npm1ISC