@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 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 provides tools for interacting with Trello boards. This server enables seamless integration with Trello's API while handling rate limiting, type safety, and error handling automatically.
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
- ## 🎉 New in v1.5.0: Now Powered by Bun! ⚡
11
+ ## Highlights
12
12
 
13
- **This project is now powered by Bun!** 🚀 We've migrated the entire project to the Bun runtime, resulting in a 2.8-4.4x performance boost. All existing `npx`, `pnpx`, and `npm` commands will **continue to work perfectly**.
14
-
15
- ### New in This Release:
16
-
17
- - 🚀 **Performance Boost**: Enjoy a faster, more responsive server.
18
- - **Bun-Powered**: The project now runs on the lightning-fast Bun runtime.
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, please refer to the [CHANGELOG.md](CHANGELOG.md) file.
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
- - **🆕 Complete Card Data Extraction**: Fetch all card details including checklists, attachments, labels, members, and comments
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
- This repository is distributed as a **BMAD-compatible skill package** for the
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
- nbsp; name: 'find_checklist_items_by_description',
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
- nbsp; }
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
- nbsp; name: 'add_list_to_board',
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,  nbsp; // ID of the card to attach the image to
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
- nbsp; arguments: {
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
- nbsp;   "env": {
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](https://www.google.com/search?q=LICENSE) file for details.
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.0"
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.0",
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": "^4.1.10",
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": "^4.0.18"
50
+ "vitest": "4.1.10"
51
51
  },
52
52
  "files": [
53
53
  "build/**/*"
54
54
  ],
55
55
  "bin": {
56
- "mcp-server-trello": "src/index.ts"
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
- "publish": "bun run build && npm publish"
80
+ "release": "bun run build && npm publish"
81
81
  }
82
82
  }