Verified MCP server: Trello

The Trello MCP server, verified live on a real Mac.

  • Tools enumerated2026-08-03macOS 15.7.7
  • Package@delorenj/mcp-server-trello 1.8.1
  • Self-reportedtrello-server 1.8.1
  • MCP protocol2025-06-18
  • RuntimeNode v24.18.0

The tool list below is a live capture from the running server; an authenticated tool call is still pending credentials.

The short answer

Last verified 2026-08-03

The Trello MCP server connects an AI assistant to your Trello boards, so it can read cards, lists, checklists, comments and labels, and create, move, copy and archive them. It is a community project, published to npm as @delorenj/mcp-server-trello and developed in the open by a single maintainer, not an official Trello or Atlassian release. Its credential is a pair of strings you generate yourself, a Trello API key and a token, which go into two environment variables. Every claim below comes from one live run, not from the README. We ran it on a Mac with placeholder values in those two variables: the server started, completed the MCP handshake, and answered tools/list with all 57 tools, which is the table below, word for word. The one real tool call we made, list_boards, reached Trello and came back with a live 401, printed further down, because a placeholder is not a token, so a successful authenticated call still waits for a key and token of your own. [1][4][5]

  • Tools

    57, enumerated live

  • Credentials

    API key and token required [5]

  • Transport

    stdio, runs on your Mac [5]

  • Maintainer

    delorenj, community [1][4]

  • Downloads

    5,763 last week [2]

  • License

    MIT [1][4]

Verification

How this MCP server was verified.

Method

We spawned the server with npx over stdio with TRELLO_API_KEY and TRELLO_TOKEN set to obvious placeholder strings, never real credentials, completed the MCP initialize handshake, and called tools/list: it answered with all 57 tools, and the table below is that answer, word for word. It agreed to the protocol version we asked for, 2025-06-18, with no downgrade. We then made one real tool call, list_boards with no arguments, which went out to api.trello.com over HTTPS and came back with the live 401 printed below, because a placeholder is not a token. This server writes nothing to standard error at startup, so the banner below is the initialize response it sent on the wire instead. Four more runs of the same package version on the same Mac gave us the other errors quoted on this page: one started with neither variable set and crashed before the handshake, one sent get_cards_by_list_id a listId of the wrong type, one asked for two tool names the server does not publish, get_board_info and list_boardz, and one called a real tool with a board id we invented. So the tools are enumerated live and every error here is real output, while a successful authenticated call still waits for a Trello API key and token of your own.

Startup banner

{"result":{"protocolVersion":"2025-06-18","capabilities":{"tools":{"listChanged":true}},"serverInfo":{"name":"trello-server","version":"1.8.1"}},"jsonrpc":"2.0","id":1}

One real tool call

tools/call list_boards {}
Error: MCP error -32603: Trello API Error: 401 Request failed with status code 401

Real lines from the captured result: enough to prove the call answered.

Tools

Every tool, enumerated from the running server.

The server answered tools/list with 57 tools on 2026-08-03. The names, descriptions and parameters below are its own words, copied from that response and never edited.

ToolWhat it does
get_cards_by_list_idboardIdlistId*fieldsnameFilterdescMaxLengthomitDescThresholdBytes

Fetch cards from a specific Trello list on a specific board. Descriptions are previewed by default to keep responses compact; set fields without "desc" to omit descriptions, or increase descMaxLength/omitDescThresholdBytes and use get_card for full details.

get_listsboardId

Retrieve all lists from the specified board

get_recent_activityboardIdlimitsincebefore

Fetch recent activity on the Trello board

add_card_to_listboardIdlistId*name*descriptiondueDatedueReminderstartlabels

Add a new card to a specified list on a specific board

update_card_detailsboardIdcardId*namedescriptiondueDatedueReminderstartdueCompletelabelspos

Update an existing card's details on a specific board

archive_cardboardIdcardId*

Send a card to the archive on a specific board

watch_cardcardId*subscribed*

Subscribe or unsubscribe from watching a card for activity notifications

watch_listlistId*subscribed*

Subscribe or unsubscribe from watching a list for activity notifications

move_cardboardIdcardId*listId*pos

Move a card to a different list, potentially on a different board

add_list_to_boardboardIdname*

Add a new list to the specified board

archive_listboardIdlistId*

Send a list to the archive on a specific board

update_listlistId*nameclosedsubscribedidBoard

Update a list name, archive state, subscription state, or board. Use update_list_position for moving a list within a board.

update_list_positionlistId*position*

Update the position of a list on the board. Trello uses fractional indexing: each list has a float position, and to place a list between two others, use the average of their positions (e.g., between pos 1024 and 2048, use 1536). Use "top"/"bottom" shortcuts to move to the edges.

get_my_cards

Fetch all cards assigned to the current user

attach_image_to_cardboardIdcardId*imageUrl*name

Attach an image to a card from a URL on a specific board

attach_file_to_cardboardIdcardId*fileUrl*namemimeType

Attach any file to a card from a URL on a specific board

attach_data_to_cardboardIdcardId*data*namemimeType

Attach binary data (image, markdown, PDF, text, etc.) to a card from base64-encoded data or a data URL. Use this for any non-image content. For image/screenshot uploads with PNG defaults, see attach_image_data_to_card.

attach_image_data_to_cardboardIdcardId*imageData*namemimeType

Attach an image to a card from base64 data or a data URL. Image-flavored convenience over attach_data_to_card: defaults assume PNG when mimeType/name are omitted, suitable for screenshot pasting. For non-image content, use attach_data_to_card.

list_boards

List all boards the user has access to

set_active_boardboardId*

Set the active board for future operations

list_workspaces

List workspaces the user has access to. If TRELLO_ALLOWED_WORKSPACES is configured, only allowed workspaces are returned.

create_boardname*descidOrganizationdefaultLabelsdefaultLists

Create a new Trello board optionally within a workspace

set_active_workspaceworkspaceId*

Set the active workspace for future operations

list_boards_in_workspaceworkspaceId*

List all boards in a specific workspace

get_active_board_info

Get information about the currently active board

get_cardcardId*includeMarkdown

Get detailed information about a specific Trello card

add_commentcardId*text*

Add the given text as a new comment to the given card

update_commentcommentId*text*

Update the given comment with the new text

delete_commentcommentId*

Delete a comment from a Trello card

get_card_commentscardId*limit

Retrieve all comments from a specific Trello card

create_checklistname*cardId*

Create a new checklist

get_checklist_itemsname*cardIdboardId

Get all items from a checklist by name

add_checklist_itemtext*checkListName*cardIdboardId

Add a new item to a checklist

find_checklist_items_by_descriptiondescription*cardIdboardId

Search for checklist items containing specific text in their description

get_acceptance_criteriacardIdboardId

Get all items from the "Acceptance Criteria" checklist

get_checklist_by_namename*cardIdboardId

Get a complete checklist with all its items and completion percentage

update_checklist_itemcardId*checkItemId*statenameposduedueReminderidMember

Update a checklist item name, state, position, due date, reminder, or assigned member

delete_checklist_itemcardId*checkItemId*

Delete a checklist item from a card

get_board_membersboardId

Get all members of a specific board

assign_member_to_cardcardId*memberId*

Assign a member to a specific card

remove_member_from_cardcardId*memberId*

Remove a member from a specific card

get_board_labelsboardId

Get all labels of a specific board

create_labelboardIdname*color

Create a new label on a board

update_labellabelId*namecolor

Update an existing label

delete_labellabelId*

Delete a label from a board

copy_cardsourceCardId*listId*namedescriptionkeepFromSourcepos

Copy/duplicate a Trello card to any list (even on a different board). Copies all properties by default including checklists, attachments, comments, labels, etc.

copy_checklistsourceChecklistId*cardId*namepos

Copy a checklist (with all its items) from one card to another. Works across different boards.

add_cards_to_listlistId*cards*

Add multiple cards to a list in one operation. Cards are created sequentially (Trello API does not support batch writes). Rate limiting is handled automatically.

get_board_custom_fieldsboardId

Get all custom field definitions on a board. Returns field IDs, names, and types. For dropdown/list fields, also returns available options with their IDs. Requires Trello Standard plan or higher.

update_card_custom_fieldcardId*customFieldId*type*value

Set or clear a custom field value on a card. Requires Trello Standard plan or higher. Use get_board_custom_fields first to find field IDs and types. Value format depends on type: text=any string, number=numeric string, checkbox="true"/"false", date=ISO 8601 string, list=option ID from get_board_custom_fields. To clear a field, set type to "clear" and omit value.

get_card_historycardId*filterlimit

Get the history/actions of a specific card

download_attachmentcardId*attachmentId*

Download an attachment from a card. Returns base64-encoded data that can be saved or viewed.

get_health

Get quick system health status for monitoring and load balancing

get_health_detailed

Get comprehensive system health diagnostic with all subsystem checks

get_health_metadata

Verify metadata consistency between boards, lists, cards, and checklists

get_health_performance

Get detailed performance metrics and analysis

perform_system_repair

Attempt to automatically repair common system issues

Parameters marked with * are required.

Setup

Working configs, one per app.

Copy the block for the app you use. Each one is the configuration this server was verified with.

Claude Desktop

Open the file ~/Library/Application Support/Claude/claude_desktop_config.json (in Claude Desktop: Settings, then Developer, then Edit Config) and add:

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

Replace both placeholder values with the key and token you generate at trello.com/app-key, then quit and reopen Claude Desktop. The project's own example uses bunx in place of npx, and its README says bunx starts fastest but npx works identically; npx is the one we ran, and it needs the -y above so it installs without asking. [6][5]

Claude Code

One command in your terminal:

claude mcp add trello -e TRELLO_API_KEY=your-trello-api-key -e TRELLO_TOKEN=your-trello-token -- npx -y @delorenj/mcp-server-trello

Everything after the double dash is the exact command Claude Code will run, and each -e sets one environment variable it runs with. The README recommends the same command with bunx in place of npx; the line above is the one we verified on this Mac. [7][5]

Cursor

Add to ~/.cursor/mcp.json for every project, or to .cursor/mcp.json inside one project:

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

Cursor picks the file up on restart. It is the same mcpServers block Claude Desktop takes, in the file shape and the two locations Cursor documents itself, and it carries the same two variables every other client needs. [8][5]

Routines

No JSON file and no terminal. In Routines: Settings, then Assistant, then Connections, then Add MCP Server. Switch the form to Command (stdio) and enter:

Name        Trello
Command     npx
Arguments   -y @delorenj/mcp-server-trello

Environment Variables
TRELLO_API_KEY    your-trello-api-key
TRELLO_TOKEN      your-trello-token

The Arguments field splits on spaces, so keep it to exactly those three words. Both secrets go in Environment Variables, one row each, never in Arguments. Click Test Connection first: a working server answers with its tool count, fifty-seven for this one. A green test means the server started, not that Trello accepted your token, so ask the assistant a small read-only question next, such as listing your boards. [9][5]

No terminal needed

Set the Trello MCP server up without the terminal.

If you have never opened Terminal and never want to, this is your path. Routines is a Mac app that runs MCP servers for you: fill in four fields once, and this server's tools are available to your AI in chat and in scheduled routines.

  1. 01

    Install Routines

    Download the app from getroutines.ai/download, drag it to Applications, and sign in.

  2. 02

    Get your Trello API key and token

    The project points you at trello.com/app-key. Signed in to Trello, that page shows your API key, and a link on it generates a token for that key once you approve the access Trello asks about. Copy both strings. Together they act as your Trello account, so treat them like a password.

  3. 03

    Open the MCP settings

    Click your account at the bottom of the sidebar and choose Settings. Open the Assistant section, then the Connections tab, scroll to MCP Servers, and click Add MCP Server.

  4. 04

    Choose Command (stdio)

    Switch the form to Command (stdio): this server is a command your Mac runs, not a web address. Name it Trello. Command: npx. Arguments: -y @delorenj/mcp-server-trello, exactly as written, with one space between each part.

  5. 05

    Paste the two secrets, then test

    In the Environment Variables field add two rows: TRELLO_API_KEY with your key, and TRELLO_TOKEN with your token, each value copied in full with no spaces around it. Click Test Connection: Routines starts the server and reports how many tools it found, fifty-seven for this one. Then click Add Server.

  6. 06

    Use it

    The tools work in chat right away, and asking for your board list is the quickest way to confirm Trello accepted the token. To let a scheduled routine use them, open the routine, find the Tools & connections card, and tick the server under Apps.

Routine ideas

Routines worth scheduling.

Once the server is connected, a scheduled routine can use its tools while you are away. Copy a prompt, paste it into Routines, and pick a time.

A morning board digest

Prompt

Every weekday at 8:00, look at my Trello board, find the cards due today or already overdue, and write a short list to trello-today.md with each card name, the list it sits in, and its due date.

A Friday stuck-card review

Prompt

Every Friday at 16:00, read the cards in my In Progress list on Trello, check when each one last changed, and write the ones that have not moved in over a week to stuck-cards.md with a note on what they are waiting for.

A Monday inbox triage

Prompt

Every Monday at 9:00, read every card in my Inbox list on Trello and write me one line per card: what it is, and what it is missing, such as a due date, a checklist or an assigned member.

Troubleshooting

The errors we hit, and what fixed them.

Real errors captured during the verification run, printed exactly as the server returned them.

Every tool call comes back with a 401

What you see

Error: MCP error -32603: Trello API Error: 401 Request failed with status code 401

The fix

Trello rejected the key and token. This is the exact reply our own sample call received, because we started the server with placeholder values on purpose. Check that TRELLO_API_KEY holds the key from trello.com/app-key and TRELLO_TOKEN the token generated from it, that you copied both in full with no trailing space, and that you restarted the client after changing them: the values are read when the server starts, not when the tool runs. A token you revoked in Trello returns the same 401. Worth knowing: a separate run that asked get_lists for the lists of a board id we invented came back with this same 401 rather than a not-found error, so while the credential is being rejected you never find out whether what you asked for exists.

The server quits the moment it starts

What you see

Error: TRELLO_API_KEY and TRELLO_TOKEN environment variables are required

The fix

Both variables are mandatory, and with either one missing the server throws before it can answer anything: Node prints this line inside a short stack trace, the process exits having written nothing to stdout, and your client reports the connection as failed rather than a tool that would not run. Add both in the env block of your JSON config, after -e on the Claude Code command, or as two rows in the Environment Variables field in Routines, then start the client again.

A tool call comes back with an input validation error

What you see

MCP error -32602: Input validation error: Invalid arguments for tool get_cards_by_list_id: [
  {
    "expected": "string",
    "code": "invalid_type",
    "path": [
      "listId"
    ],
    "message": "Invalid input: expected string, received number"
  }
]

The fix

Good news dressed as bad news. This server checks every argument against its own schema before it calls Trello, and names the field and the type it wanted, so a malformed request costs you a fast local error instead of a confusing reply from the API. We triggered this on purpose by sending listId as a number when the tool wants the id as a string. Trello ids are strings of letters and digits, so in a real client just name the list you mean and let the assistant fill the id in. Most tools also take an optional boardId, which falls back to the board you picked with set_active_board.

The assistant asks for a tool that does not exist

What you see

MCP error -32602: Tool get_board_info not found

The fix

The name in the request is not one of the 57 the server publishes, so nothing runs. We asked for two missing names on purpose in the same run: a plausible-looking guess, get_board_info, where the real tool is called get_active_board_info, and a plain typo, list_boardz, which came back with the same line carrying that name instead. Assistants occasionally guess a tool name from memory instead of the list they were given. Point at the table above, name the real tool, and the call goes through; if it keeps happening, restart the client so it re-reads the tool list.

FAQ

Questions people ask.

What is the Trello MCP server?

It is a community-built Model Context Protocol server for Trello, published to npm as @delorenj/mcp-server-trello and developed in the open on GitHub by the maintainer delorenj. Once connected, an assistant such as Claude can work inside your Trello account: reading boards, lists and cards, creating and moving cards, ticking off checklist items, leaving comments and attaching files. It runs as a local process on your Mac, started by npx, and talks to your AI app over stdio. It is not published by Trello or Atlassian. [1][4][5]

What tools does the Trello MCP server include?

The running server exposes 57 tools, and the table above is that live tools/list output, word for word. They fall into groups: eleven for cards (get_card, get_cards_by_list_id, get_my_cards, add_card_to_list, add_cards_to_list, update_card_details, move_card, copy_card, archive_card, watch_card, get_card_history), nine for checklists, seven for boards and workspaces, six for lists, five for attachments, four for comments, four for labels, three for members, two for custom fields, one for board activity, and five health and repair tools the server uses to report on itself.

Is the Trello MCP server safe?

Be clear-eyed about scope. A Trello token is account-wide: it covers every board you can see, not the one you had in mind, and the tool list includes archive_card, archive_list, delete_comment, delete_label and delete_checklist_item. The one narrowing the server offers is TRELLO_ALLOWED_WORKSPACES, an optional variable holding a comma-separated list of workspace ids the tools are allowed to touch, which is worth setting if your account spans work and personal boards. Beyond that, the sensible habits are the usual ones: keep the key and token where your client stores them privately, ask the assistant to tell you what it plans to change before it changes it, and revoke the token in Trello when you stop using the connection. [5]

Do I need the terminal to set it up?

No. In Routines you fill four fields in Settings and click Test Connection; the walkthrough above shows every click, including where the key and token go. Claude Desktop and Cursor need a small JSON file edited once. Only Claude Code is terminal-first by nature. [9][6]

Does it need an API key, and does Trello have to be a paid plan?

It needs two values, both free to generate: an API key from trello.com/app-key and a token created from that same page, which you paste into TRELLO_API_KEY and TRELLO_TOKEN. Nothing is installed inside Trello itself; this is a plain API client, not a Power-Up. A free Trello account is enough for the bulk of the tools, with one exception the server states in its own tool descriptions: get_board_custom_fields and update_card_custom_field require a Trello Standard plan or higher. [5]

There are several Trello MCP servers on npm. Which one is this?

Searching npm for Trello MCP servers turns up dozens of them, and the downloads make the choice for you: @delorenj/mcp-server-trello was pulled 5,763 times in the week ending 2026-08-02, while the next-closest package we checked, atlassian-trello-mcp, managed 85 in the same window. Its repository is active rather than parked, with 427 stars and a push dated the day the version we ran was published. That is the one this page verified, and the configs above name it in full, scope included, because a name typed without the @delorenj/ prefix installs something else entirely. [2][3][4][1]

Which apps can use the Trello MCP server?

Any MCP client that can launch a local stdio server: Claude Desktop, Claude Code, Cursor and Routines all can, and the exact config for each is above. The server itself is identical in every client; only the place you paste the config differs. It is a command your Mac runs rather than a web address, which is how we ran it, so a client that only accepts a hosted URL cannot use it. [6][7][8][9]

Sources

Every external claim, receipted.

Anything on this page we did not observe in the run is linked here, with the date we read it. The run itself is the receipt for the rest.

  1. [1]

    npm registry: @delorenj/mcp-server-trelloaccessed 2026-08-03

    Latest version 1.8.1, published 2026-07-25; license MIT; repository git+https://github.com/delorenj/mcp-server-trello.git; the published bin entry points at the compiled build/index.js.

  2. [2]

    npm downloads API: last weekaccessed 2026-08-03

    5,763 downloads for the week 2026-07-27 to 2026-08-02.

  3. [3]

    npm downloads API: last week, atlassian-trello-mcpaccessed 2026-08-03

    85 downloads for the same week, the closest rival we measured among the other Trello MCP packages on npm.

  4. [4]

    GitHub: delorenj/mcp-server-trelloaccessed 2026-08-03

    427 stars, 21 open issues, MIT licensed, not archived, created 2025-01-03 and pushed 2026-07-25 at access time, per the GitHub API. It is owned by the individual account delorenj, not by an organisation.

  5. [5]

    mcp-server-trello READMEaccessed 2026-08-03

    Source for the client config JSON, the note that bunx starts fastest but npx works identically, the required TRELLO_API_KEY and TRELLO_TOKEN variables, the optional TRELLO_BOARD_ID, TRELLO_WORKSPACE_ID and TRELLO_ALLOWED_WORKSPACES ones, the claim of 57 tools that our run matched exactly, and the trello.com/app-key credential step.

  6. [6]

    modelcontextprotocol.io: Connect to local MCP serversaccessed 2026-08-03

    The claude_desktop_config.json shape and where the file lives.

  7. [7]

    Claude Code docs: MCPaccessed 2026-08-03

    The claude mcp add syntax for local stdio servers, including environment variables.

  8. [8]

    Cursor docs: Model Context Protocolaccessed 2026-08-03

    The mcp.json shape and file locations.

  9. [9]

    Routines: Connectorsaccessed 2026-08-03

    How Routines runs one-click OAuth connectors and any MCP server.

This page describes Trello as it behaved in one dated run on one Mac. Versions move: if something here no longer matches what you see, the capture date at the top says how old the reading is.

Behind this directory

Routines, the app behind this directory, runs MCP servers like this one without a terminal: see how connectors work. Your notes stay markdown files on your Mac, there is no cloud bill, and it works offline. Download Routines