@delorenj/mcp-server-trello 1.8.0 → 1.8.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +63 -21
- package/build/index.js +20 -2
- package/package.json +5 -5
- package/src/index.ts +0 -1878
package/README.md
CHANGED
|
@@ -6,30 +6,32 @@
|
|
|
6
6
|
|
|
7
7
|
<a href="https://glama.ai/mcp/servers/klqkamy7wt"><img width="380" height="200" src="https://glama.ai/mcp/servers/klqkamy7wt/badge" alt="Server Trello MCP server" /></a>
|
|
8
8
|
|
|
9
|
-
A Model Context Protocol (MCP) server that
|
|
9
|
+
A Model Context Protocol (MCP) server that gives AI agents full access to your Trello boards — cards, lists, checklists, attachments, comments, custom fields, and workspaces — with built-in rate limiting, type safety, and workflow-level tools you won't find in a plain API wrapper, like acceptance-criteria extraction and checklist dependency queries. 57 tools, one `npx` install, powered by Bun.
|
|
10
10
|
|
|
11
|
-
##
|
|
11
|
+
## Highlights
|
|
12
12
|
|
|
13
|
-
**
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
- 📖 **Comprehensive Examples**: A new `examples` directory with detailed implementations in JavaScript, Python, and TypeScript.
|
|
20
|
-
|
|
21
|
-
**Plus:** Modern MCP SDK architecture, enhanced type safety, and comprehensive documentation!
|
|
13
|
+
- **Acceptance criteria, natively**: `get_acceptance_criteria` pulls a card's AC checklist straight into your agent's context — no competitor offers it.
|
|
14
|
+
- **Watch anything**: `watch_card` and `watch_list` route card and list activity into your Trello notifications.
|
|
15
|
+
- **Full list management**: create, update, reorder (`update_list_position`), and archive lists.
|
|
16
|
+
- **Board and workspace switching on the fly**: no restarts, no config edits.
|
|
17
|
+
- **Rate limiting handled for you**: respects Trello's API limits automatically (300 req/10s per key, 100 req/10s per token).
|
|
18
|
+
- **Bun-powered**: fast startup and a 2.8-4.4x performance boost over the old Node build. `npx` and `npm` work too.
|
|
22
19
|
|
|
23
20
|
## Changelog
|
|
24
21
|
|
|
25
|
-
For a detailed list of changes,
|
|
22
|
+
For a detailed list of changes, see [CHANGELOG.md](CHANGELOG.md).
|
|
26
23
|
|
|
27
24
|
## Features
|
|
28
25
|
|
|
29
26
|
- **Full Trello Board Integration**: Interact with cards, lists, and board activities
|
|
30
|
-
-
|
|
27
|
+
- **Acceptance Criteria Extraction**: Pull a card's acceptance criteria checklist directly into agent context
|
|
28
|
+
- **Checklist Intelligence**: Query checklist items by name or description, track completion, manage items
|
|
29
|
+
- **Complete Card Data Extraction**: Fetch all card details including checklists, attachments, labels, members, and comments
|
|
31
30
|
- **💬 Comment Management**: Add, update, delete, and retrieve comments on cards
|
|
31
|
+
- **Activity Subscriptions**: Watch cards and lists so their activity surfaces in Trello notifications
|
|
32
|
+
- **List Management**: Create, update, reorder, and archive lists
|
|
32
33
|
- **File Attachments**: Attach any type of file to cards (PDFs, documents, videos, images, etc.) from URLs
|
|
34
|
+
- **Custom Fields**: Read board custom field definitions and update card values
|
|
33
35
|
- **Built-in Rate Limiting**: Respects Trello's API limits (300 requests/10s per API key, 100 requests/10s per token)
|
|
34
36
|
- **Type-Safe Implementation**: Written in TypeScript with comprehensive type definitions
|
|
35
37
|
- **Input Validation**: Robust validation for all API inputs
|
|
@@ -39,7 +41,47 @@ For a detailed list of changes, please refer to the [CHANGELOG.md](CHANGELOG.md)
|
|
|
39
41
|
|
|
40
42
|
## Installation
|
|
41
43
|
|
|
42
|
-
|
|
44
|
+
The server is published on npm as `@delorenj/mcp-server-trello`. Add it to your MCP client and you're done — no clone, no build.
|
|
45
|
+
|
|
46
|
+
### Quickstart (Claude Desktop, Cursor, and other MCP clients)
|
|
47
|
+
|
|
48
|
+
Add the server to your client's MCP configuration:
|
|
49
|
+
|
|
50
|
+
```json
|
|
51
|
+
{
|
|
52
|
+
"mcpServers": {
|
|
53
|
+
"trello": {
|
|
54
|
+
"command": "bunx",
|
|
55
|
+
"args": ["@delorenj/mcp-server-trello"],
|
|
56
|
+
"env": {
|
|
57
|
+
"TRELLO_API_KEY": "your-trello-api-key",
|
|
58
|
+
"TRELLO_TOKEN": "your-trello-token"
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
```
|
|
64
|
+
|
|
65
|
+
`bunx` starts fastest, but `npx` works identically. Get your API key at [trello.com/app-key](https://trello.com/app-key) and generate a token from the same page.
|
|
66
|
+
|
|
67
|
+
### Claude Code
|
|
68
|
+
|
|
69
|
+
Register the server with the CLI:
|
|
70
|
+
|
|
71
|
+
```bash
|
|
72
|
+
claude mcp add trello \
|
|
73
|
+
--env TRELLO_API_KEY=your-trello-api-key \
|
|
74
|
+
--env TRELLO_TOKEN=your-trello-token \
|
|
75
|
+
-- bunx @delorenj/mcp-server-trello
|
|
76
|
+
```
|
|
77
|
+
|
|
78
|
+
### MCP Registry
|
|
79
|
+
|
|
80
|
+
The server is listed on the [official MCP Registry](https://registry.modelcontextprotocol.io/servers/io.github.delorenj/mcp-server-trello) as `io.github.delorenj/mcp-server-trello`, so registry-aware clients can discover and install it directly.
|
|
81
|
+
|
|
82
|
+
### Agent skill package (optional)
|
|
83
|
+
|
|
84
|
+
This repository also ships a **BMAD-compatible skill package** for the
|
|
43
85
|
Trello MCP server. Install the `skill/` directory through your agent's skill
|
|
44
86
|
management workflow, or place it in the agent's skills directory.
|
|
45
87
|
|
|
@@ -257,11 +299,11 @@ Search for checklist items containing specific text.
|
|
|
257
299
|
|
|
258
300
|
```typescript
|
|
259
301
|
{
|
|
260
|
-
|
|
302
|
+
name: 'find_checklist_items_by_description',
|
|
261
303
|
arguments: {
|
|
262
304
|
description: string, // Text to search for in checklist item descriptions
|
|
263
305
|
boardId?: string // Optional: ID of the board (uses default if not provided)
|
|
264
|
-
|
|
306
|
+
}
|
|
265
307
|
}
|
|
266
308
|
```
|
|
267
309
|
|
|
@@ -458,7 +500,7 @@ Add a new list to a board.
|
|
|
458
500
|
|
|
459
501
|
```typescript
|
|
460
502
|
{
|
|
461
|
-
|
|
503
|
+
name: 'add_list_to_board',
|
|
462
504
|
arguments: {
|
|
463
505
|
boardId?: string, // Optional: ID of the board (uses default if not provided)
|
|
464
506
|
name: string // Name of the new list
|
|
@@ -546,7 +588,7 @@ Attach an image to a card directly from a URL.
|
|
|
546
588
|
name: 'attach_image_to_card',
|
|
547
589
|
arguments: {
|
|
548
590
|
boardId?: string, // Optional: ID of the board (uses default if not provided)
|
|
549
|
-
cardId: string,
|
|
591
|
+
cardId: string, // ID of the card to attach the image to
|
|
550
592
|
imageUrl: string, // URL of the image to attach
|
|
551
593
|
name?: string // Optional: Name for the attachment (defaults to "Image Attachment")
|
|
552
594
|
}
|
|
@@ -560,7 +602,7 @@ Attach any type of file to a card from a URL or a local file path (e.g., `file:/
|
|
|
560
602
|
```typescript
|
|
561
603
|
{
|
|
562
604
|
name: 'attach_file_to_card',
|
|
563
|
-
|
|
605
|
+
arguments: {
|
|
564
606
|
boardId?: string, // Optional: ID of the board (uses default if not provided)
|
|
565
607
|
cardId: string,s; // ID of the card to attach the file to
|
|
566
608
|
fileUrl: string, // URL or local file path (using the file:// protocol) of the file to attach
|
|
@@ -814,7 +856,7 @@ Add both servers to your Claude Desktop configuration. Use `bunx` for the fastes
|
|
|
814
856
|
"trello": {
|
|
815
857
|
"command": "bunx",
|
|
816
858
|
"args": ["@delorenj/mcp-server-trello"],
|
|
817
|
-
|
|
859
|
+
"env": {
|
|
818
860
|
"TRELLO_API_KEY": "your-trello-api-key",
|
|
819
861
|
"TRELLO_TOKEN": "your-trello-token"
|
|
820
862
|
}
|
|
@@ -906,7 +948,7 @@ Contributions are welcome\!
|
|
|
906
948
|
|
|
907
949
|
## License
|
|
908
950
|
|
|
909
|
-
This project is licensed under the MIT License - see the [LICENSE](
|
|
951
|
+
This project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.
|
|
910
952
|
|
|
911
953
|
## Acknowledgments
|
|
912
954
|
|
package/build/index.js
CHANGED
|
@@ -36959,7 +36959,7 @@ class JSONSchemaGenerator {
|
|
|
36959
36959
|
if (val === undefined) {
|
|
36960
36960
|
if (this.unrepresentable === "throw") {
|
|
36961
36961
|
throw new Error("Literal `undefined` cannot be represented in JSON Schema");
|
|
36962
|
-
}
|
|
36962
|
+
} else {}
|
|
36963
36963
|
} else if (typeof val === "bigint") {
|
|
36964
36964
|
if (this.unrepresentable === "throw") {
|
|
36965
36965
|
throw new Error("BigInt literals cannot be represented in JSON Schema");
|
|
@@ -47599,6 +47599,24 @@ ${status}: ${dueDate.toLocaleString()}
|
|
|
47599
47599
|
return true;
|
|
47600
47600
|
});
|
|
47601
47601
|
}
|
|
47602
|
+
async searchLabels(boardId, query) {
|
|
47603
|
+
const labels = await this.getBoardLabels(boardId);
|
|
47604
|
+
const normalizedQuery = query.trim().toLowerCase();
|
|
47605
|
+
if (!normalizedQuery) {
|
|
47606
|
+
return [];
|
|
47607
|
+
}
|
|
47608
|
+
return labels.filter((label) => {
|
|
47609
|
+
const normalizedName = label.name.toLowerCase();
|
|
47610
|
+
const normalizedColor = label.color?.toLowerCase() ?? "";
|
|
47611
|
+
return normalizedName.includes(normalizedQuery) || normalizedColor.includes(normalizedQuery);
|
|
47612
|
+
});
|
|
47613
|
+
}
|
|
47614
|
+
async removeLabelFromCard(cardId, labelId) {
|
|
47615
|
+
return this.handleRequest(async () => {
|
|
47616
|
+
await this.axiosInstance.delete(`/cards/${cardId}/idLabels/${labelId}`);
|
|
47617
|
+
return true;
|
|
47618
|
+
});
|
|
47619
|
+
}
|
|
47602
47620
|
async copyCard(params) {
|
|
47603
47621
|
return this.handleRequest(async () => {
|
|
47604
47622
|
const response = await this.axiosInstance.post("/cards", {
|
|
@@ -48577,7 +48595,7 @@ class TrelloServer {
|
|
|
48577
48595
|
this.healthEndpoints = new TrelloHealthEndpoints(this.trelloClient);
|
|
48578
48596
|
this.server = new McpServer({
|
|
48579
48597
|
name: "trello-server",
|
|
48580
|
-
version: "1.8.
|
|
48598
|
+
version: "1.8.1"
|
|
48581
48599
|
});
|
|
48582
48600
|
this.setupTools();
|
|
48583
48601
|
this.setupHealthEndpoints();
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@delorenj/mcp-server-trello",
|
|
3
3
|
"mcpName": "io.github.delorenj/mcp-server-trello",
|
|
4
|
-
"version": "1.8.
|
|
4
|
+
"version": "1.8.1",
|
|
5
5
|
"description": "An MCP server for Trello boards, powered by Bun for maximum performance.",
|
|
6
6
|
"keywords": [
|
|
7
7
|
"mcp",
|
|
@@ -38,7 +38,7 @@
|
|
|
38
38
|
"@ai-sdk/openai": "^1.3.24",
|
|
39
39
|
"@typescript-eslint/eslint-plugin": "^6.21.0",
|
|
40
40
|
"@typescript-eslint/parser": "^6.21.0",
|
|
41
|
-
"@vitest/coverage-v8": "
|
|
41
|
+
"@vitest/coverage-v8": "4.1.10",
|
|
42
42
|
"bun-types": "latest",
|
|
43
43
|
"eslint": "^8.57.1",
|
|
44
44
|
"eslint-config-prettier": "^9.1.2",
|
|
@@ -47,13 +47,13 @@
|
|
|
47
47
|
"prettier": "^3.7.4",
|
|
48
48
|
"terser": "^5.44.1",
|
|
49
49
|
"typescript": "^5.9.3",
|
|
50
|
-
"vitest": "
|
|
50
|
+
"vitest": "4.1.10"
|
|
51
51
|
},
|
|
52
52
|
"files": [
|
|
53
53
|
"build/**/*"
|
|
54
54
|
],
|
|
55
55
|
"bin": {
|
|
56
|
-
"mcp-server-trello": "
|
|
56
|
+
"mcp-server-trello": "build/index.js"
|
|
57
57
|
},
|
|
58
58
|
"type": "module",
|
|
59
59
|
"engines": {
|
|
@@ -77,6 +77,6 @@
|
|
|
77
77
|
"test:smoke": "vitest run tests/smoke",
|
|
78
78
|
"test:coverage": "vitest run --coverage",
|
|
79
79
|
"test:watch": "vitest",
|
|
80
|
-
"
|
|
80
|
+
"release": "bun run build && npm publish"
|
|
81
81
|
}
|
|
82
82
|
}
|