@delorenj/mcp-server-trello 1.7.1 → 1.8.0

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 (4) hide show
  1. package/README.md +185 -138
  2. package/build/index.js +8594 -1011
  3. package/package.json +19 -6
  4. package/src/index.ts +1878 -0
package/README.md CHANGED
@@ -15,7 +15,7 @@ A Model Context Protocol (MCP) server that provides tools for interacting with T
15
15
  ### ✨ New in This Release:
16
16
 
17
17
  - 🚀 **Performance Boost**: Enjoy a faster, more responsive server.
18
- - BUN **Bun-Powered**: The project now runs on the lightning-fast Bun runtime.
18
+ - **Bun-Powered**: The project now runs on the lightning-fast Bun runtime.
19
19
  - 📖 **Comprehensive Examples**: A new `examples` directory with detailed implementations in JavaScript, Python, and TypeScript.
20
20
 
21
21
  **Plus:** Modern MCP SDK architecture, enhanced type safety, and comprehensive documentation!
@@ -39,154 +39,40 @@ For a detailed list of changes, please refer to the [CHANGELOG.md](CHANGELOG.md)
39
39
 
40
40
  ## Installation
41
41
 
42
- ### 🚀 Install from MCP Registry (Recommended)
42
+ This repository is distributed as a **BMAD-compatible skill package** for the
43
+ Trello MCP server. Install the `skill/` directory through your agent's skill
44
+ management workflow, or place it in the agent's skills directory.
43
45
 
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:
47
-
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
51
-
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:
55
-
56
- ```json
57
- {
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
-   }
104
- }
105
- ```
106
-
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
117
-
118
- This will generate the token required for integration.
119
-
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/):
126
-
127
- ```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
137
- ```
138
-
139
- ### Installing via npm
140
-
141
- If you prefer using `npm` directly:
46
+ When an agent activates the skill, it follows `skill/SKILL.md`. On first use,
47
+ the agent runs the bundled installer:
142
48
 
143
49
  ```bash
144
- npm install -g @delorenj/mcp-server-trello
50
+ bash skill/scripts/install.sh
145
51
  ```
146
52
 
147
- *(A fast alternative is `bun add -g @delorenj/mcp-server-trello`)*
53
+ The installer builds the MCP server from `skill/assets/source/` when Bun is
54
+ available. If Bun is unavailable, it falls back to the published Smithery
55
+ install path for `@delorenj/mcp-server-trello` and creates the same local
56
+ `build/index.js` command path used by the skill activation check.
148
57
 
149
- Then use `npx mcp-server-trello` as the command in your MCP configuration.
58
+ ## Skill package structure
150
59
 
151
- ### Installing via Smithery
60
+ The skill is the agent-facing entry point for this repository.
152
61
 
153
- To install Trello Server for Claude Desktop automatically via [Smithery](https://smithery.ai/server/@delorenj/mcp-server-trello):
62
+ - `skill/SKILL.md`: Activation, routing, and agent workflow rules.
63
+ - `skill/scripts/install.sh`: First-run installer for the bundled server.
64
+ - `skill/references/trello-mcp/`: Focused references for setup, tools,
65
+ workflows, and gotchas.
66
+ - `skill/assets/source/`: Bundled MCP server source used for local builds.
154
67
 
155
- ```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
161
- ```
162
-
163
- ### Docker Installation
164
-
165
- For containerized environments:
166
-
167
- 1. Clone the repository:
168
-
169
- <!-- end list -->
170
-
171
- ```bash
172
- git clone https://github.com/delorenj/mcp-server-trello
173
- cd mcp-server-trello
174
- ```
68
+ For AI agents, start with `skill/SKILL.md` rather than this README. The README
69
+ is the human-facing overview; the skill references are the operational surface
70
+ for tool selection and Trello workflow rules.
175
71
 
176
- 2. Copy the environment template and fill in your Trello credentials:
177
-
178
- <!-- end list -->
72
+ Maintainers can refresh the bundled source before packaging with:
179
73
 
180
74
  ```bash
181
- cp .env.template .env
182
- ```
183
-
184
- 3. Build and run with Docker Compose:
185
-
186
- <!-- end list -->
187
-
188
- ```bash
189
- docker compose up --build
75
+ mise run package
190
76
  ```
191
77
 
192
78
  ## Configuration
@@ -205,13 +91,22 @@ TRELLO_BOARD_ID=your-board-id
205
91
 
206
92
  # Optional: Initial workspace ID (can be changed later using set_active_workspace)
207
93
  TRELLO_WORKSPACE_ID=your-workspace-id
94
+
95
+ # Optional: HTTPS proxy URL (for corporate proxies or restricted networks)
96
+ https_proxy=http://your-proxy:8080
97
+
98
+ # Optional: Restrict access to specific workspaces (comma-separated IDs)
99
+ # If set, only the listed workspaces will be accessible via MCP tools
100
+ TRELLO_ALLOWED_WORKSPACES=workspace-id-1,workspace-id-2
208
101
  ```
209
102
 
103
+ > **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.
104
+
210
105
  You can get these values from:
211
106
 
212
107
  - API Key: [https://trello.com/app-key](https://trello.com/app-key)
213
108
  - Token: Generate using your API key
214
- - Board ID (optional, deprecated): Found in the board URL (e.g., [suspicious link removed])
109
+ - Board ID (optional, deprecated): Found in the board URL (e.g., `https://trello.com/b/abc123/example-board`)
215
110
  - Workspace ID: Found in workspace settings or using `list_workspaces` tool
216
111
 
217
112
  ### Board and Workspace Management
@@ -230,6 +125,29 @@ Starting with version 0.3.0, the MCP server supports multiple ways to work with
230
125
 
231
126
  This allows you to work with multiple boards and workspaces without restarting the server.
232
127
 
128
+ ### Workspace Access Restriction
129
+
130
+ You can optionally restrict MCP access to specific workspaces using the `TRELLO_ALLOWED_WORKSPACES` environment variable. This is useful for:
131
+
132
+ - **Security**: Limiting AI agent access to only approved workspaces
133
+ - **Multi-tenant setups**: Ensuring agents only access relevant workspaces
134
+ - **Testing**: Isolating test environments from production data
135
+
136
+ When `TRELLO_ALLOWED_WORKSPACES` is set:
137
+ - `list_workspaces` only returns workspaces in the allowed list
138
+ - `list_boards` only returns boards from allowed workspaces
139
+ - `set_active_workspace` rejects workspaces not in the allowed list
140
+ - `list_boards_in_workspace` rejects non-allowed workspace IDs
141
+ - `create_board` rejects creation in non-allowed workspaces
142
+
143
+ Example configuration:
144
+ ```bash
145
+ # Only allow access to two specific workspaces
146
+ TRELLO_ALLOWED_WORKSPACES=697c549ce04dc460af133a75,5f8a3b2c1d4e5f6a7b8c9d0e
147
+ ```
148
+
149
+ If `TRELLO_ALLOWED_WORKSPACES` is not set or empty, all workspaces the token has access to will be available (default behaviour).
150
+
233
151
  #### Example Workflow
234
152
 
235
153
  1. Start by listing available boards:
@@ -381,6 +299,40 @@ Get a complete checklist with all items and completion percentage.
381
299
  - `items`: Array of `CheckListItem` objects
382
300
  - `percentComplete`: Completion percentage (0-100)
383
301
 
302
+ #### update\_checklist\_item
303
+
304
+ Update an existing checklist item.
305
+
306
+ ```typescript
307
+ {
308
+ name: 'update_checklist_item',
309
+ arguments: {
310
+ cardId: string, // ID of the card containing the checklist item
311
+ checkItemId: string, // ID of the checklist item to update
312
+ name?: string, // Optional: new checklist item text
313
+ state?: 'complete' | 'incomplete', // Optional: new checklist item state
314
+ pos?: number | 'top' | 'bottom', // Optional: new checklist item position
315
+ due?: string | null, // Optional: ISO 8601 due date, or null to clear it
316
+ dueReminder?: number | null, // Optional: reminder offset in minutes, or null to clear it
317
+ idMember?: string | null // Optional: member ID to assign, or null to clear it
318
+ }
319
+ }
320
+ ```
321
+
322
+ #### delete\_checklist\_item
323
+
324
+ Delete an existing checklist item.
325
+
326
+ ```typescript
327
+ {
328
+ name: 'delete_checklist_item',
329
+ arguments: {
330
+ cardId: string, // ID of the card containing the checklist item
331
+ checkItemId: string // ID of the checklist item to delete
332
+ }
333
+ }
334
+ ```
335
+
384
336
  ### get\_card 🆕
385
337
 
386
338
  Get comprehensive details of a specific Trello card with human-level parity.
@@ -528,6 +480,37 @@ Send a list to the archive.
528
480
  }
529
481
  ```
530
482
 
483
+ ### update\_list
484
+
485
+ Update a list's name, archive state, subscription state, or board. Use `update_list_position` to reorder lists within a board.
486
+
487
+ ```typescript
488
+ {
489
+ name: 'update_list',
490
+ arguments: {
491
+ listId: string, // ID of the list to update
492
+ name?: string, // Optional: New name for the list
493
+ closed?: boolean, // Optional: Whether to close (archive) the list
494
+ subscribed?: boolean, // Optional: Whether to subscribe to the list
495
+ idBoard?: string // Optional: ID of a board to move the list to
496
+ }
497
+ }
498
+ ```
499
+
500
+ ### update\_list\_position
501
+
502
+ 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.
503
+
504
+ ```typescript
505
+ {
506
+ name: 'update_list_position',
507
+ arguments: {
508
+ listId: string, // ID of the list to reposition
509
+ position: string // "top", "bottom", or a positive numeric string (e.g. "1536")
510
+ }
511
+ }
512
+ ```
513
+
531
514
  ### get\_my\_cards
532
515
 
533
516
  Fetch all cards assigned to the current user.
@@ -587,6 +570,25 @@ nbsp; arguments: {
587
570
  }
588
571
  ```
589
572
 
573
+ ### download\_attachment
574
+
575
+ Download an attachment from a card by ID. Attachment IDs are available in the `attachments` array returned by `get_card`.
576
+
577
+ ```typescript
578
+ {
579
+ name: 'download_attachment',
580
+ arguments: {
581
+ cardId: string, // ID of the card containing the attachment
582
+ attachmentId: string // ID of the attachment to download
583
+ }
584
+ }
585
+ ```
586
+
587
+ **Returns:** For image attachments (`image/*`), returns the image as inline viewable data. For all other file types, returns a JSON object with:
588
+ - `fileName`: Original filename
589
+ - `mimeType`: MIME type of the file
590
+ - `data`: Base64-encoded file contents
591
+
590
592
  ### Comment Management Tools
591
593
 
592
594
  #### add\_comment
@@ -717,6 +719,51 @@ s; name: 'get_active_board_info',
717
719
  }
718
720
  ```
719
721
 
722
+ ### Custom Field Management Tools
723
+
724
+ > **Note:** Custom fields require Trello Standard plan or higher.
725
+
726
+ #### get\_board\_custom\_fields
727
+
728
+ Get all custom field definitions on a board. For dropdown/list fields, also returns the available options with their IDs.
729
+
730
+ ```typescript
731
+ {
732
+ name: 'get_board_custom_fields',
733
+ arguments: {
734
+ boardId?: string // Optional: ID of the board (uses default if not provided)
735
+ }
736
+ }
737
+ ```
738
+
739
+ **Returns:** Array of custom field definitions including:
740
+ - Field ID, name, type (`text`, `number`, `checkbox`, `date`, `list`)
741
+ - For `list` type fields: available options with IDs (use these IDs when setting values)
742
+
743
+ #### update\_card\_custom\_field
744
+
745
+ Set or clear a custom field value on a card.
746
+
747
+ ```typescript
748
+ {
749
+ name: 'update_card_custom_field',
750
+ arguments: {
751
+ cardId: string, // ID of the card to update
752
+ customFieldId: string,// ID of the custom field definition
753
+ type: string, // Field type: 'text' | 'number' | 'checkbox' | 'date' | 'list' | 'clear'
754
+ value?: string // The value to set (not needed when type is 'clear')
755
+ }
756
+ }
757
+ ```
758
+
759
+ **Value format by type:**
760
+ - `text`: any string
761
+ - `number`: numeric string (e.g. `"42.5"`)
762
+ - `checkbox`: `"true"` or `"false"`
763
+ - `date`: ISO 8601 string (e.g. `"2025-12-31T00:00:00.000Z"`)
764
+ - `list`: option ID from `get_board_custom_fields`
765
+ - `clear`: omit value to remove the field value
766
+
720
767
  ## Integration Examples
721
768
 
722
769
  ### 🎨 Pairing with Ideogram MCP Server