@delorenj/mcp-server-trello 1.7.1 → 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.
Files changed (3) hide show
  1. package/README.md +229 -140
  2. package/build/index.js +8611 -1010
  3. package/package.json +19 -6
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 **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,154 +41,80 @@ For a detailed list of changes, please refer to the [CHANGELOG.md](CHANGELOG.md)
39
41
 
40
42
  ## Installation
41
43
 
42
- ### 🚀 Install from MCP Registry (Recommended)
43
-
44
- The MCP Server Trello is now available in the official MCP Registry\! MCP clients can automatically discover and install this server.
45
-
46
- For clients that support the MCP Registry:
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.
47
45
 
48
- 1. Search for "mcp-server-trello" or "io.github.delorenj/mcp-server-trello"
49
- 2. Install directly from the registry
50
- 3. Configure with your Trello credentials
46
+ ### Quickstart (Claude Desktop, Cursor, and other MCP clients)
51
47
 
52
- ### 🚀 Quick Start with Bun (Fastest)
53
-
54
- If you have [Bun](https://bun.sh) installed, using `bunx` is the fastest way to run the server:
48
+ Add the server to your client's MCP configuration:
55
49
 
56
50
  ```json
57
51
  {
58
-   "mcpServers": {
59
-     "trello": {
60
-       "command": "bunx",
61
-       "args": ["@delorenj/mcp-server-trello"],
62
-       "env": {
63
-         "TRELLO_API_KEY": "your-api-key",
64
-         "TRELLO_TOKEN": "your-token"
65
-       }
66
-     }
67
-   }
68
- }
69
- ```
70
-
71
- ### Quick Start with npx / pnpx / bunx
72
-
73
- You can still use `npx` or `pnpx`. This doesn't require a global install and will work just fine, though `bunx` (above) is faster.
74
-
75
- ```json
76
- {
77
-   "mcpServers": {
78
-     "trello": {
79
-       "command": "bunx",
80
-       "args": ["@delorenj/mcp-server-trello"],
81
-       "env": {
82
-         "TRELLO_API_KEY": "your-api-key",
83
-         "TRELLO_TOKEN": "your-token"
84
-       }
85
-     }
86
-   }
87
- }
88
- ```
89
-
90
- Or if you're using mise, you can explicitly execute `bunx` with `mise exec`:
91
-
92
- ```json
93
- {
94
-   "mcpServers": {
95
-     "trello": {
96
-       "command": "mise",
97
-       "args": ["x", "--", "bunx", "@delorenj/mcp-server-trello"],
98
-       "env": {
99
-         "TRELLO_API_KEY": "your-api-key",
100
-         "TRELLO_TOKEN": "your-token"
101
-       }
102
-     }
103
-   }
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
+ }
104
62
  }
105
63
  ```
106
64
 
107
- To connect a Trello workspace, you'll need to manually retrieve a `TRELLO_TOKEN` once per workspace. After setting up your Trello Power-Up, visit the following URL:
108
-
109
- ```
110
- https://trello.com/1/authorize?expiration=never&name=YOUR_APP_NAME&scope=read,write&response_type=token&key=YOUR_API_KEY
111
- ```
112
-
113
- Replace:
114
-
115
- * `YOUR_APP_NAME` with a name for your application (e.g., "My Trello Integration"). This name is shown to the user on the Trello authorization screen.
116
- * `YOUR_API_KEY` with the API key for your Trello Power-Up
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.
117
66
 
118
- This will generate the token required for integration.
67
+ ### Claude Code
119
68
 
120
- > [\!NOTE]
121
- > The `expiration=never` parameter creates a token that does not expire. For enhanced security, consider using `expiration=30days` and renewing the token periodically if your setup allows for it.
122
-
123
- #### Don't have Bun?
124
-
125
- The simplest way to get `bun` (and thus `bunx`) is through [mise](https://mise.jdx.dev/):
69
+ Register the server with the CLI:
126
70
 
127
71
  ```bash
128
- # Install mise (if you don't have it)
129
- curl https://mise.run | sh
130
-
131
- # Install bun and make the @latest version your system default
132
- mise use bun@latest -g
133
-
134
- # Or just run `mise install` from the project directory to install Bun locally
135
- cd /path/to/mcp-server-trello
136
- mise install
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
137
76
  ```
138
77
 
139
- ### Installing via npm
78
+ ### MCP Registry
140
79
 
141
- If you prefer using `npm` directly:
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.
142
81
 
143
- ```bash
144
- npm install -g @delorenj/mcp-server-trello
145
- ```
146
-
147
- *(A fast alternative is `bun add -g @delorenj/mcp-server-trello`)*
82
+ ### Agent skill package (optional)
148
83
 
149
- Then use `npx mcp-server-trello` as the command in your MCP configuration.
84
+ This repository also ships a **BMAD-compatible skill package** for the
85
+ Trello MCP server. Install the `skill/` directory through your agent's skill
86
+ management workflow, or place it in the agent's skills directory.
150
87
 
151
- ### Installing via Smithery
152
-
153
- To install Trello Server for Claude Desktop automatically via [Smithery](https://smithery.ai/server/@delorenj/mcp-server-trello):
88
+ When an agent activates the skill, it follows `skill/SKILL.md`. On first use,
89
+ the agent runs the bundled installer:
154
90
 
155
91
  ```bash
156
- # Using bunx (recommended)
157
- bunx -y @smithery/cli install @delorenj/mcp-server-trello --client claude
158
-
159
- # Using npx
160
- npx -y @smithery/cli install @delorenj/mcp-server-trello --client claude
92
+ bash skill/scripts/install.sh
161
93
  ```
162
94
 
163
- ### Docker Installation
95
+ The installer builds the MCP server from `skill/assets/source/` when Bun is
96
+ available. If Bun is unavailable, it falls back to the published Smithery
97
+ install path for `@delorenj/mcp-server-trello` and creates the same local
98
+ `build/index.js` command path used by the skill activation check.
164
99
 
165
- For containerized environments:
100
+ ## Skill package structure
166
101
 
167
- 1. Clone the repository:
102
+ The skill is the agent-facing entry point for this repository.
168
103
 
169
- <!-- end list -->
170
-
171
- ```bash
172
- git clone https://github.com/delorenj/mcp-server-trello
173
- cd mcp-server-trello
174
- ```
175
-
176
- 2. Copy the environment template and fill in your Trello credentials:
177
-
178
- <!-- end list -->
104
+ - `skill/SKILL.md`: Activation, routing, and agent workflow rules.
105
+ - `skill/scripts/install.sh`: First-run installer for the bundled server.
106
+ - `skill/references/trello-mcp/`: Focused references for setup, tools,
107
+ workflows, and gotchas.
108
+ - `skill/assets/source/`: Bundled MCP server source used for local builds.
179
109
 
180
- ```bash
181
- cp .env.template .env
182
- ```
110
+ For AI agents, start with `skill/SKILL.md` rather than this README. The README
111
+ is the human-facing overview; the skill references are the operational surface
112
+ for tool selection and Trello workflow rules.
183
113
 
184
- 3. Build and run with Docker Compose:
185
-
186
- <!-- end list -->
114
+ Maintainers can refresh the bundled source before packaging with:
187
115
 
188
116
  ```bash
189
- docker compose up --build
117
+ mise run package
190
118
  ```
191
119
 
192
120
  ## Configuration
@@ -205,13 +133,22 @@ TRELLO_BOARD_ID=your-board-id
205
133
 
206
134
  # Optional: Initial workspace ID (can be changed later using set_active_workspace)
207
135
  TRELLO_WORKSPACE_ID=your-workspace-id
136
+
137
+ # Optional: HTTPS proxy URL (for corporate proxies or restricted networks)
138
+ https_proxy=http://your-proxy:8080
139
+
140
+ # Optional: Restrict access to specific workspaces (comma-separated IDs)
141
+ # If set, only the listed workspaces will be accessible via MCP tools
142
+ TRELLO_ALLOWED_WORKSPACES=workspace-id-1,workspace-id-2
208
143
  ```
209
144
 
145
+ > **Proxy Support:** If you're behind a corporate proxy or in an environment that routes traffic through a proxy, set the `https_proxy` or `HTTPS_PROXY` environment variable. The server will automatically route all Trello API requests through the specified proxy.
146
+
210
147
  You can get these values from:
211
148
 
212
149
  - API Key: [https://trello.com/app-key](https://trello.com/app-key)
213
150
  - Token: Generate using your API key
214
- - Board ID (optional, deprecated): Found in the board URL (e.g., [suspicious link removed])
151
+ - Board ID (optional, deprecated): Found in the board URL (e.g., `https://trello.com/b/abc123/example-board`)
215
152
  - Workspace ID: Found in workspace settings or using `list_workspaces` tool
216
153
 
217
154
  ### Board and Workspace Management
@@ -230,6 +167,29 @@ Starting with version 0.3.0, the MCP server supports multiple ways to work with
230
167
 
231
168
  This allows you to work with multiple boards and workspaces without restarting the server.
232
169
 
170
+ ### Workspace Access Restriction
171
+
172
+ You can optionally restrict MCP access to specific workspaces using the `TRELLO_ALLOWED_WORKSPACES` environment variable. This is useful for:
173
+
174
+ - **Security**: Limiting AI agent access to only approved workspaces
175
+ - **Multi-tenant setups**: Ensuring agents only access relevant workspaces
176
+ - **Testing**: Isolating test environments from production data
177
+
178
+ When `TRELLO_ALLOWED_WORKSPACES` is set:
179
+ - `list_workspaces` only returns workspaces in the allowed list
180
+ - `list_boards` only returns boards from allowed workspaces
181
+ - `set_active_workspace` rejects workspaces not in the allowed list
182
+ - `list_boards_in_workspace` rejects non-allowed workspace IDs
183
+ - `create_board` rejects creation in non-allowed workspaces
184
+
185
+ Example configuration:
186
+ ```bash
187
+ # Only allow access to two specific workspaces
188
+ TRELLO_ALLOWED_WORKSPACES=697c549ce04dc460af133a75,5f8a3b2c1d4e5f6a7b8c9d0e
189
+ ```
190
+
191
+ If `TRELLO_ALLOWED_WORKSPACES` is not set or empty, all workspaces the token has access to will be available (default behaviour).
192
+
233
193
  #### Example Workflow
234
194
 
235
195
  1. Start by listing available boards:
@@ -339,11 +299,11 @@ Search for checklist items containing specific text.
339
299
 
340
300
  ```typescript
341
301
  {
342
- nbsp; name: 'find_checklist_items_by_description',
302
+ name: 'find_checklist_items_by_description',
343
303
    arguments: {
344
304
      description: string,  // Text to search for in checklist item descriptions
345
305
      boardId?: string      // Optional: ID of the board (uses default if not provided)
346
- nbsp; }
306
+ }
347
307
  }
348
308
  ```
349
309
 
@@ -381,6 +341,40 @@ Get a complete checklist with all items and completion percentage.
381
341
  - `items`: Array of `CheckListItem` objects
382
342
  - `percentComplete`: Completion percentage (0-100)
383
343
 
344
+ #### update\_checklist\_item
345
+
346
+ Update an existing checklist item.
347
+
348
+ ```typescript
349
+ {
350
+ name: 'update_checklist_item',
351
+ arguments: {
352
+ cardId: string, // ID of the card containing the checklist item
353
+ checkItemId: string, // ID of the checklist item to update
354
+ name?: string, // Optional: new checklist item text
355
+ state?: 'complete' | 'incomplete', // Optional: new checklist item state
356
+ pos?: number | 'top' | 'bottom', // Optional: new checklist item position
357
+ due?: string | null, // Optional: ISO 8601 due date, or null to clear it
358
+ dueReminder?: number | null, // Optional: reminder offset in minutes, or null to clear it
359
+ idMember?: string | null // Optional: member ID to assign, or null to clear it
360
+ }
361
+ }
362
+ ```
363
+
364
+ #### delete\_checklist\_item
365
+
366
+ Delete an existing checklist item.
367
+
368
+ ```typescript
369
+ {
370
+ name: 'delete_checklist_item',
371
+ arguments: {
372
+ cardId: string, // ID of the card containing the checklist item
373
+ checkItemId: string // ID of the checklist item to delete
374
+ }
375
+ }
376
+ ```
377
+
384
378
  ### get\_card 🆕
385
379
 
386
380
  Get comprehensive details of a specific Trello card with human-level parity.
@@ -506,7 +500,7 @@ Add a new list to a board.
506
500
 
507
501
  ```typescript
508
502
  {
509
- nbsp; name: 'add_list_to_board',
503
+ name: 'add_list_to_board',
510
504
    arguments: {
511
505
      boardId?: string, // Optional: ID of the board (uses default if not provided)
512
506
      name: string      // Name of the new list
@@ -528,6 +522,37 @@ Send a list to the archive.
528
522
  }
529
523
  ```
530
524
 
525
+ ### update\_list
526
+
527
+ Update a list's name, archive state, subscription state, or board. Use `update_list_position` to reorder lists within a board.
528
+
529
+ ```typescript
530
+ {
531
+ name: 'update_list',
532
+ arguments: {
533
+ listId: string, // ID of the list to update
534
+ name?: string, // Optional: New name for the list
535
+ closed?: boolean, // Optional: Whether to close (archive) the list
536
+ subscribed?: boolean, // Optional: Whether to subscribe to the list
537
+ idBoard?: string // Optional: ID of a board to move the list to
538
+ }
539
+ }
540
+ ```
541
+
542
+ ### update\_list\_position
543
+
544
+ Update the position of a list on the board. Trello uses fractional indexing: each list has a float position, and to place a list between two others, use the average of their positions (e.g., between pos 1024 and 2048, use 1536). Use `"top"`/`"bottom"` shortcuts to move to the edges.
545
+
546
+ ```typescript
547
+ {
548
+ name: 'update_list_position',
549
+ arguments: {
550
+ listId: string, // ID of the list to reposition
551
+ position: string // "top", "bottom", or a positive numeric string (e.g. "1536")
552
+ }
553
+ }
554
+ ```
555
+
531
556
  ### get\_my\_cards
532
557
 
533
558
  Fetch all cards assigned to the current user.
@@ -563,7 +588,7 @@ Attach an image to a card directly from a URL.
563
588
    name: 'attach_image_to_card',
564
589
    arguments: {
565
590
      boardId?: string, // Optional: ID of the board (uses default if not provided)
566
-     cardId: string,  nbsp; // ID of the card to attach the image to
591
+     cardId: string,  // ID of the card to attach the image to
567
592
      imageUrl: string, // URL of the image to attach
568
593
      name?: string     // Optional: Name for the attachment (defaults to "Image Attachment")
569
594
    }
@@ -577,7 +602,7 @@ Attach any type of file to a card from a URL or a local file path (e.g., `file:/
577
602
  ```typescript
578
603
  {
579
604
    name: 'attach_file_to_card',
580
- nbsp; arguments: {
605
+ arguments: {
581
606
      boardId?: string,  // Optional: ID of the board (uses default if not provided)
582
607
      cardId: string,s;   // ID of the card to attach the file to
583
608
      fileUrl: string,   // URL or local file path (using the file:// protocol) of the file to attach
@@ -587,6 +612,25 @@ nbsp; arguments: {
587
612
  }
588
613
  ```
589
614
 
615
+ ### download\_attachment
616
+
617
+ Download an attachment from a card by ID. Attachment IDs are available in the `attachments` array returned by `get_card`.
618
+
619
+ ```typescript
620
+ {
621
+ name: 'download_attachment',
622
+ arguments: {
623
+ cardId: string, // ID of the card containing the attachment
624
+ attachmentId: string // ID of the attachment to download
625
+ }
626
+ }
627
+ ```
628
+
629
+ **Returns:** For image attachments (`image/*`), returns the image as inline viewable data. For all other file types, returns a JSON object with:
630
+ - `fileName`: Original filename
631
+ - `mimeType`: MIME type of the file
632
+ - `data`: Base64-encoded file contents
633
+
590
634
  ### Comment Management Tools
591
635
 
592
636
  #### add\_comment
@@ -717,6 +761,51 @@ s; name: 'get_active_board_info',
717
761
  }
718
762
  ```
719
763
 
764
+ ### Custom Field Management Tools
765
+
766
+ > **Note:** Custom fields require Trello Standard plan or higher.
767
+
768
+ #### get\_board\_custom\_fields
769
+
770
+ Get all custom field definitions on a board. For dropdown/list fields, also returns the available options with their IDs.
771
+
772
+ ```typescript
773
+ {
774
+ name: 'get_board_custom_fields',
775
+ arguments: {
776
+ boardId?: string // Optional: ID of the board (uses default if not provided)
777
+ }
778
+ }
779
+ ```
780
+
781
+ **Returns:** Array of custom field definitions including:
782
+ - Field ID, name, type (`text`, `number`, `checkbox`, `date`, `list`)
783
+ - For `list` type fields: available options with IDs (use these IDs when setting values)
784
+
785
+ #### update\_card\_custom\_field
786
+
787
+ Set or clear a custom field value on a card.
788
+
789
+ ```typescript
790
+ {
791
+ name: 'update_card_custom_field',
792
+ arguments: {
793
+ cardId: string, // ID of the card to update
794
+ customFieldId: string,// ID of the custom field definition
795
+ type: string, // Field type: 'text' | 'number' | 'checkbox' | 'date' | 'list' | 'clear'
796
+ value?: string // The value to set (not needed when type is 'clear')
797
+ }
798
+ }
799
+ ```
800
+
801
+ **Value format by type:**
802
+ - `text`: any string
803
+ - `number`: numeric string (e.g. `"42.5"`)
804
+ - `checkbox`: `"true"` or `"false"`
805
+ - `date`: ISO 8601 string (e.g. `"2025-12-31T00:00:00.000Z"`)
806
+ - `list`: option ID from `get_board_custom_fields`
807
+ - `clear`: omit value to remove the field value
808
+
720
809
  ## Integration Examples
721
810
 
722
811
  ### 🎨 Pairing with Ideogram MCP Server
@@ -767,7 +856,7 @@ Add both servers to your Claude Desktop configuration. Use `bunx` for the fastes
767
856
      "trello": {
768
857
        "command": "bunx",
769
858
        "args": ["@delorenj/mcp-server-trello"],
770
- nbsp;   "env": {
859
+   "env": {
771
860
          "TRELLO_API_KEY": "your-trello-api-key",
772
861
          "TRELLO_TOKEN": "your-trello-token"
773
862
        }
@@ -859,7 +948,7 @@ Contributions are welcome\!
859
948
 
860
949
  ## License
861
950
 
862
- 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.
863
952
 
864
953
  ## Acknowledgments
865
954