Trello MCP

Trello MCP

A personal remote MCP server that lets Claude read and update Trello boards, with safety guards and access control.

Category
Visit Server

README

Trello MCP — Personal remote connector for Claude

A small, opinionated MCP server that lets Claude read and update Trello boards. Runs on Cloudflare Workers, gated behind GitHub OAuth, allowlisted to a single GitHub user.

Designed primarily around Dann Bleeker Pedersen's GTD workflow, but the underlying tools are generic — friendly aliases for boards / lists / labels live in src/trello/constants.ts and are easy to extend for other workflows.

Tools (20)

Reads

Tool Purpose
list_boards All open boards the authenticated Trello user belongs to
list_lists Lists on a board (alias or ID)
list_cards Cards on a list or board; includes desc; optional label / staleDays filters
get_card Full details for one card
search_cards Fuzzy name search, scoped or unscoped; includes desc
list_checklist_items Checklists + items on a card
list_attachments Attachments on a card (id, name, url, date, mimeType)

Writes

Tool Purpose
create_card New card on a list (with guards + WIP warning)
move_card Move card between lists (guards source AND destination)
update_card Edit name / description / due date
archive_card Soft archive (closed=true). Hard delete is not implemented.
set_due_complete Mark due date as done (triggers Butler automations)
set_checklist_item_state Tick / untick a single checklist item
add_label Apply a label by ID or name
remove_label Remove a label by ID or name
add_comment Append a comment to a card
add_checklist_item Append an item to the card's checklist
add_attachment Attach a URL to a card
add_file_attachment Upload a real file (base64 → multipart). 10 MB hard cap — for larger files, host the file and use add_attachment with a URL.
remove_attachment Remove an attachment from a card

Safety guards

Enforced server-side before any Trello call — same rules for every tool, no per-tool drift:

  • Forbidden lists (Butler, Repeater Cards) — all writes refused. These lists hold automation rules and recurring templates; the connector observes but never modifies them.
  • Read-only lists (Rolling Big Rocks) — move_card source OR destination refused. create_card to this list refused.
  • WIP-limit warnings — when a move_card or create_card puts a list with a (WIP limit N) suffix over its limit, the response includes a warning, but the call still succeeds (treats WIP as guidance, not enforcement).
  • No hard delete — the capability is not in the code. archive_card is the only destructive-feeling operation, and it's reversible from the Trello UI.

Access control

Only one GitHub login (dannbleeker) can call any tool — hard-coded in src/index.ts. Any other authenticated GitHub user reaches the OAuth flow but every tool call returns a refusal message.

Setup

1. GitHub OAuth app

Create an OAuth app at https://github.com/settings/developers:

  • Homepage URL: https://trello-mcp.<your-subdomain>.workers.dev
  • Authorization callback URL: https://trello-mcp.<your-subdomain>.workers.dev/callback
  • Note the Client ID and generate a Client secret.

For local development, register a second OAuth app with:

  • Homepage URL: http://localhost:8788
  • Authorization callback URL: http://localhost:8788/callback

2. Trello credentials

You need an API key and a user token:

Value Where
API key https://trello.com/power-ups/admin → create an app → API key
Token https://trello.com/1/authorize?key=YOUR_KEY&name=Claude&expiration=never&response_type=token&scope=read,write

3. KV namespace + secrets

# install deps
pnpm install

# create the KV namespace, then paste the returned id into wrangler.jsonc
pnpm exec wrangler kv namespace create OAUTH_KV

# production secrets
pnpm exec wrangler secret put GITHUB_CLIENT_ID
pnpm exec wrangler secret put GITHUB_CLIENT_SECRET
pnpm exec wrangler secret put COOKIE_ENCRYPTION_KEY   # openssl rand -hex 32
pnpm exec wrangler secret put TRELLO_KEY
pnpm exec wrangler secret put TRELLO_TOKEN

# deploy
pnpm exec wrangler deploy

For local dev, copy .dev.vars.example to .dev.vars and fill in the values; then pnpm dev.

4. Add to claude.ai

Settings → Connectors → Add custom connector. URL: https://trello-mcp.<your-subdomain>.workers.dev/mcp. Sign in with GitHub when prompted.

Adding a new board

  1. In Trello: copy the board's 24-char ID from the URL or from a list_boards call.
  2. In src/trello/constants.ts: add an entry to BOARD_ALIASES.
  3. Optionally add list aliases under LIST_ALIASES.
  4. Optionally mark any list as forbidden or read-only.
  5. pnpm exec wrangler deploy.

No tool code changes are needed — the existing tools resolve aliases at call time.

Project layout

src/
  index.ts                  — Worker entry, OAuth wiring, tool registrations
  github-handler.ts         — OAuth consent screen + GitHub callback
  utils.ts                  — auth helpers (unchanged from template)
  workers-oauth-utils.ts    — cookie/state utilities (unchanged from template)
  trello/
    client.ts               — typed Trello REST client (retry on 429 + 5xx)
    constants.ts            — aliases, forbidden + read-only lists, WIP parser
    guards.ts               — server-side safety guards
    tools.ts                — 20 tool implementations (testable in plain Node)
wrangler.jsonc              — Cloudflare Workers config
package.json
tsconfig.json
.dev.vars.example

Development

pnpm install
pnpm type-check         # tsc --noEmit
pnpm dev                # wrangler dev → http://localhost:8788

Related

  • dannbleeker/trello-plugin — the local Python MCP for Claude Code on the same Trello account. The two coexist; this one is the remote connector for claude.ai.

License

MIT.

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
E2B

E2B

Using MCP to run code via e2b.

Official
Featured
Neon Database

Neon Database

MCP server for interacting with Neon Management API and databases

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