Skip to main content
Glama
adriangrahldev

Advanced Trello MCP Server

README.md
# πŸš€ Advanced Trello MCP Server

> **Enhanced Model Context Protocol Server for Trello integration with Cursor AI**  
> Production-hardened API layer, batch tools, and attachment downloads

[TypeScript](https://www.typescriptlang.org/)
[Trello API](https://developer.atlassian.com/cloud/trello/rest/)
[MCP Protocol](https://modelcontextprotocol.io/)
[License](LICENSE)



## πŸ“‹ Overview

This is an **enhanced version** of the Trello MCP Server that provides comprehensive integration between Trello and Cursor AI (and similar MCP clients). It includes **~35 tools** across boards, lists, cards, labels, and actions, plus a **reliable HTTP layer** suited to heavy or sequential API use.

## ✨ Features

### πŸ›‘οΈ **Reliability (production-tested)**

All Trello calls (MCP **resources** and **tools**) go through a shared client in `src/utils/api.ts`:

- **HTTPS keep-alive** β€” reuses TLS connections (helps avoid CloudFront / CDN connection churn on burst traffic)
- `**fetchWithRetry`** β€” ~60s timeout, exponential backoff with jitter (up to 7 attempts), retries on network errors and 5xx
- **Sliding-window rate limit** β€” ~80 requests / 10s (mutex-protected)
- **429 handling** β€” respects `Retry-After` when present

### 🎯 **API coverage (current)**


| Area        | Tools | Notes                                               |
| ----------- | ----- | --------------------------------------------------- |
| **Lists**   | 10    | Full list lifecycle, bulk card moves                |
| **Cards**   | 12    | Batch create/move/archive/comments, **attachments** |
| **Labels**  | 8     | Including batch add                                 |
| **Actions** | 4     | Get / update / delete action, list reactions        |
| **Boards**  | 1     | List accessible boards                              |


### πŸ”§ **Other**

- **TypeScript** + **Zod** validation on tool inputs
- **Batch operations** β€” fewer round-trips for agents (`create-cards`, `move-cards`, `archive-cards`, `add-comments`, etc.)
- **Attachment pipeline** β€” list metadata + optional download to disk (see below)

## πŸš€ Quick Start

### Prerequisites

- Node.js 18+
- Trello API Key and Token
- Cursor (or any MCP client)

### Installation

1. **Clone the repository**
  ```bash
   git clone https://github.com/adriangrahldev/advanced-trello-mcp-server.git
   cd advanced-trello-mcp-server
  ```
2. **Install dependencies**
  ```bash
   npm install
  ```
3. **Build the project**
  ```bash
   npm run build
  ```
4. **Configure environment variables**
  ```bash
   export TRELLO_API_KEY="your_api_key"
   export TRELLO_API_TOKEN="your_api_token"
  ```
5. **Configure Cursor MCP**
  Add to your `~/.cursor/mcp.json` (paths adjusted for your machine):

## πŸ› οΈ Available Tools

### πŸ“‹ **Lists (10)**

- `get-lists` β€” Lists on a board
- `create-list` / `update-list` / `archive-list`
- `move-list-to-board`
- `get-list-actions` / `get-list-board` / `get-list-cards`
- `archive-all-cards-in-list` / `move-all-cards-in-list`

### 🎯 **Cards (12)**

- `create-card` β€” Optional `**due`** and `**start**` (ISO 8601)
- `create-cards` β€” Batch create; each card may include `**due**` / `**start**`
- `update-card` β€” Name and/or description
- `move-card` / `move-cards`
- `add-comment` / `**add-comments**` (batch comments on multiple cards)
- `get-tickets-by-list`
- `archive-card` / `archive-cards`
- `**get-card-attachments**` β€” Metadata + `commentContext` (e.g. screenshots on comments)
- `**download-card-attachments**` β€” Downloads files to a folder (numbered files + `_manifest.json`). File URLs often require **OAuth-style `Authorization` header** (not query-string key/token); this tool handles that.

### 🏷️ **Labels (8)**

- `create-label` / `create-labels`
- `add-label` / `add-labels`
- `get-label` / `update-label` / `delete-label` / `update-label-field`

### πŸ“Š **Actions (4)**

- `get-action` β€” With optional display/entities/member params
- `update-action` / `delete-action`
- `get-action-reactions`

### 🏒 **Boards (1)**

- `get-boards`

## ❓ Why is an old Pull Request still β€œopen” on GitHub?

GitHub marks a PR as **Merged** only when you merge **that PR** (green β€œMerge pull request” button), or when the PR branch is merged in a way GitHub links to the PR.

If you **cherry-picked, copied files, or merged locally** into `main` and **pushed `main`**, the code is on the repo but **the PR stays open** until you:

1. **Close the PR** manually β€” add a comment such as: *β€œLanded on `main` via commit ** β€” thanks!”*
2. Or use **GitHub’s merge** flow next time so the PR closes automatically.

Conflicts on fork-based PRs are normal; resolving on your machine and pushing `main` is fine β€” just close the PR afterward so contributors know it’s done.

## πŸ“ˆ Roadmap

Broader Trello API coverage (checklists, members, webhooks, search, etc.) is planned. PRs welcome.

## πŸ”§ Development

### Project structure

```
advanced-trello-mcp-server/
β”œβ”€β”€ src/
β”‚   β”œβ”€β”€ index.ts
β”‚   β”œβ”€β”€ tools/       # boards, lists, cards, labels, actions
β”‚   β”œβ”€β”€ types/
β”‚   └── utils/       # api.ts β€” fetchWithRetry, keep-alive, rate limit
β”œβ”€β”€ build/
β”œβ”€β”€ scripts/build.js
β”œβ”€β”€ package.json
└── README.md
```

### Building

```bash
npm run build    # TypeScript + shebang on build/index.js
npm run compile  # tsc only
```

**Cross-platform build** (Windows / macOS / Linux): compiles TS, adds `#!/usr/bin/env node`, sets execute bit on Unix.

## 🀝 Contributing

1. Fork the repository
2. Branch (`git checkout -b feature/...`)
3. Commit ([Conventional Commits](https://www.conventionalcommits.org/) encouraged)
4. Open a Pull Request

If the maintainer merges your work outside the GitHub PR UI, they may close the PR with a link to the landing commit β€” that does **not** mean your contribution wasn’t accepted.

## πŸ“š API documentation

Tools follow the [Trello REST API](https://developer.atlassian.com/cloud/trello/rest/). Inputs are validated with Zod.

## πŸ› Troubleshooting


| Issue                     | What to check                                                                  |
| ------------------------- | ------------------------------------------------------------------------------ |
| Credentials               | `TRELLO_API_KEY` + `TRELLO_API_TOKEN`; token scopes (`read` / `write`)         |
| Tool not found            | Rebuild (`npm run build`), restart MCP client                                  |
| `fetch failed` / timeouts | Retry layer should help; sustained 429 β†’ slow down workflows                   |
| Attachment download 401   | Use `download-card-attachments` (header auth), not raw URL with `?key=&token=` |


## πŸ“„ License

MIT β€” see [LICENSE](LICENSE).

## πŸ™ Acknowledgments

- Original Trello MCP Server β€” [yairhaimo/trello-mcp-server](https://github.com/yairhaimo/trello-mcp-server)
- [Trello API](https://developer.atlassian.com/cloud/trello/rest/) Β· [MCP](https://modelcontextprotocol.io/) Β· [Cursor](https://cursor.com/)

---

**Built with ❀️ for the Cursor AI community**

TDQS

D1.5/5.0

Scored across 32 tools

Disambiguation2/5

Multiple tools have unclear boundaries, such as add-comment vs add-comments, archive-card vs archive-cards, and create-card vs create-cards, which could cause confusion. While some tools target distinct resources (e.g., get-boards vs get-list-cards), the overlapping singular/plural pairs and vague purposes like delete-action vs update-action reduce clarity.

Naming Consistency4/5

Tool names follow a mostly consistent verb_noun pattern with hyphens, such as create-card, get-boards, and update-label. However, there are minor deviations like get-tickets-by-list (which uses 'tickets' instead of 'cards') and inconsistent handling of plurals (e.g., add-comment vs add-comments), slightly affecting predictability.

Tool Count2/5

With 32 tools, the count is too high for the Trello domain, leading to redundancy and bloat. Many tools could be consolidated (e.g., singular and plural versions), making the set feel heavy and overwhelming for typical agent workflows, despite covering a broad scope.

Completeness3/5

The tool set covers core CRUD operations for boards, lists, cards, labels, and actions, but there are notable gaps, such as missing tools for managing board settings or user permissions. The inclusion of redundant tools (e.g., multiple archive/move variants) does not fill these gaps, leaving the surface somewhat incomplete for advanced Trello management.

Maintenance

ActivityInactive
ResponsivenessNo issues