Trello MCP
A personal remote MCP server that lets Claude read and update Trello boards, with safety guards and access control.
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_cardsource OR destination refused.create_cardto this list refused. - WIP-limit warnings — when a
move_cardorcreate_cardputs 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_cardis 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
- In Trello: copy the board's 24-char ID from the URL or from a
list_boardscall. - In
src/trello/constants.ts: add an entry toBOARD_ALIASES. - Optionally add list aliases under
LIST_ALIASES. - Optionally mark any list as forbidden or read-only.
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
A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.
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.
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.
VeyraX MCP
Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.
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.
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.
E2B
Using MCP to run code via e2b.
Neon Database
MCP server for interacting with Neon Management API and databases
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.
Qdrant Server
This repository is an example of how to create a MCP server for Qdrant, a vector search engine.