@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.
- package/README.md +185 -138
- package/build/index.js +8594 -1011
- package/package.json +19 -6
- 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
|
-
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
50
|
+
bash skill/scripts/install.sh
|
|
145
51
|
```
|
|
146
52
|
|
|
147
|
-
|
|
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
|
-
|
|
58
|
+
## Skill package structure
|
|
150
59
|
|
|
151
|
-
|
|
60
|
+
The skill is the agent-facing entry point for this repository.
|
|
152
61
|
|
|
153
|
-
|
|
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
|
-
|
|
156
|
-
|
|
157
|
-
|
|
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
|
-
|
|
177
|
-
|
|
178
|
-
<!-- end list -->
|
|
72
|
+
Maintainers can refresh the bundled source before packaging with:
|
|
179
73
|
|
|
180
74
|
```bash
|
|
181
|
-
|
|
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.,
|
|
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
|