trello-mcp

trello-mcp

MCP server that provides read and write access to Trello boards, enabling AI assistants to list, search, create, update, move, comment, label, and archive cards via natural language.

Category
Visit Server

README

trello-mcp

A Model Context Protocol server for Trello. It gives an AI assistant read and write access to your Trello boards: list boards and cards, read a card with its comments and checklists, search, create and update cards, move them between lists, comment, label, and archive.

It runs over stdio with your own free Trello API key and token, so it works with Claude Code, Claude Desktop, Codex CLI, Cursor, and any other MCP client.

There is no delete tool. See Safety.

Requirements

  • Node.js 20 or newer
  • A Trello account (free is fine)

Get your credentials

Trello needs two values: an API key and a token. Both are personal secrets.

  1. Go to https://trello.com/power-ups/admin and create a Power-Up. Name and workspace do not matter; this is just how Trello hands out API keys these days.
  2. Open the Power-Up's API key tab. The value in the "API key" field is your TRELLO_API_KEY.
  3. In the paragraph to the right of that field ("… you can manually generate a Token"), click the Token link. Approve the access request. The long string Trello then shows you is your TRELLO_TOKEN.

Ignore the Secret field and Allowed origins on that page — they belong to Trello's OAuth flow, which this server does not use. The token, not the secret, is what pairs with your API key here.

The token inherits your own Trello permissions: the server can see and change exactly what you can, and nothing more. You can revoke it any time from https://trello.com/my/account under "Applications".

Quick start

TRELLO_API_KEY=your-key TRELLO_TOKEN=your-token npx -y github:rilolabs/trello-mcp

It will print trello-mcp <version> ready on stdio to stderr and then wait for MCP traffic on stdin. That is the correct behaviour — it is meant to be launched by an MCP client, not used by hand. Started without credentials, it exits immediately with instructions.

The github: form fetches this repository and builds it on your machine; the first run takes a minute, later runs use npx's cache. It is not published to the npm registry.

Configuration

Claude Code

claude mcp add trello \
  -e TRELLO_API_KEY=your-key \
  -e TRELLO_TOKEN=your-token \
  -- npx -y github:rilolabs/trello-mcp

Claude Desktop

Edit claude_desktop_config.json (macOS: ~/Library/Application Support/Claude/claude_desktop_config.json, Windows: %APPDATA%\Claude\claude_desktop_config.json) and add:

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

Restart Claude Desktop afterwards.

Codex CLI

In ~/.codex/config.toml:

[mcp_servers.trello]
command = "npx"
args = ["-y", "github:rilolabs/trello-mcp"]
env = { TRELLO_API_KEY = "your-key", TRELLO_TOKEN = "your-token" }

Any other stdio MCP client

Cursor (.cursor/mcp.json), Windsurf, Zed, and most other clients take the same generic shape:

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

Transport is stdio; there is no HTTP mode.

Tools

Ids flow downward: list_boards gives you board ids, get_lists gives list ids, get_cards and search_cards give card ids, get_labels gives label ids.

Tool Type Parameters What it does
list_boards read — Every board the token can see: id, name, url, closed.
get_lists read board_id Open lists on a board, in board order.
get_cards read board_id, list_id?, label?, include_archived? (false), limit? (50) Cards on a board, optionally filtered to one list or one label name. Returns trimmed summaries.
get_card read card_id One card in full: description, labels, due, members, checklist done/total, recent comments.
search_cards read query, board_id? Trello search, including operators like due:week or label:urgent. Up to 25 results.
get_labels read board_id Board labels with id, name and colour.
get_board_activity read board_id, days? (7) Recent actions on a board, one readable line each.
create_card write list_id, name, desc?, due?, label_ids? Creates a card at the bottom of a list.
update_card write card_id, name?, desc?, due? Updates title, description, or due date. due: null clears the due date.
move_card write card_id, list_id, position? (top/bottom) Moves a card to another list.
add_comment write card_id, text Posts a comment as the authenticated user.
add_label write card_id, label_id Attaches an existing board label to a card.
remove_label write card_id, label_id Detaches a label from a card. The label stays on the board.
archive_card write card_id Archives a card. Reversible.
unarchive_card write card_id Restores an archived card to its list.

Results come back as compact JSON with the useful fields selected, not as raw Trello API objects.

Safety

No delete tool, by design. Trello's DELETE /cards/{id} is permanent. There is no trash and no undo, and the card's comments, checklists, and history are destroyed with it. An assistant that can delete cards can wipe out work irrecoverably on a single wrong id. archive_card is the reversible equivalent and covers every legitimate "get this off the board" case, so this server ships no card deletion and will not be adding one.

Credentials stay in environment variables. TRELLO_API_KEY and TRELLO_TOKEN are read from the environment at startup and never written to disk, never echoed to stdout, and never included in a tool result.

Trello authenticates by putting the key and token in the URL query string, which makes any raw URL in an error message a credential leak. Every error path in this server is routed through a redactor that strips key= and token= values and scrubs the secret strings themselves before anything is thrown, logged, or returned. Diagnostics go to stderr; stdout carries protocol traffic only.

Scope. The token has your Trello permissions, no more. If you want to limit exposure, use a Trello account that is only a member of the boards you want reachable, and revoke the token from https://trello.com/my/account when you are done.

Development

npm install
npm run build     # compile to dist/
npm run dev       # run from source with tsx

Smoke-test the wire protocol without touching Trello:

printf '%s\n' \
  '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2025-06-18","capabilities":{},"clientInfo":{"name":"smoke","version":"0"}}}' \
  '{"jsonrpc":"2.0","method":"notifications/initialized"}' \
  '{"jsonrpc":"2.0","id":2,"method":"tools/list","params":{}}' \
  | TRELLO_API_KEY=x TRELLO_TOKEN=x node dist/index.js

Layout:

src/index.ts        entry point: env check, server wiring, stdio transport
src/trello.ts       Trello REST client + credential redaction
src/format.ts       result formatting and error mapping
src/tools/read.ts   read-only tools
src/tools/write.ts  write tools

License

MIT © Rilo Labs

Recommended Servers

playwright-mcp

playwright-mcp

A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.

Official
Featured
TypeScript
Magic Component Platform (MCP)

Magic Component Platform (MCP)

An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.

Official
Featured
Local
TypeScript
Audiense Insights MCP Server

Audiense Insights MCP Server

Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.

Official
Featured
Local
TypeScript
VeyraX MCP

VeyraX MCP

Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.

Official
Featured
Local
graphlit-mcp-server

graphlit-mcp-server

The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.

Official
Featured
TypeScript
Kagi MCP Server

Kagi MCP Server

An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.

Official
Featured
Python
Neon Database

Neon Database

MCP server for interacting with Neon Management API and databases

Official
Featured
E2B

E2B

Using MCP to run code via e2b.

Official
Featured
Exa Search

Exa Search

A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.

Official
Featured
Qdrant Server

Qdrant Server

This repository is an example of how to create a MCP server for Qdrant, a vector search engine.

Official
Featured