@delorenj/mcp-server-trello 0.2.0 → 0.3.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 +187 -5
- package/build/evals/evals.d.ts +5 -0
- package/build/evals/evals.js +50 -0
- package/build/evals/evals.js.map +1 -0
- package/build/index.js +194 -2
- package/build/index.js.map +1 -1
- package/build/rate-limiter.d.ts +16 -1
- package/build/rate-limiter.js +18 -1
- package/build/rate-limiter.js.map +1 -1
- package/build/trello-client.d.ts +47 -1
- package/build/trello-client.js +138 -4
- package/build/trello-client.js.map +1 -1
- package/build/types.d.ts +34 -0
- package/build/validators.d.ts +14 -0
- package/build/validators.js +42 -0
- package/build/validators.js.map +1 -1
- package/package.json +3 -2
package/README.md
CHANGED
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
[](https://mseep.ai/app/delorenj-mcp-server-trello)
|
|
2
|
+
|
|
1
3
|
# MCP Server Trello
|
|
2
4
|
[](https://smithery.ai/server/@modelcontextprotocol/mcp-server-trello)
|
|
3
5
|
|
|
@@ -7,8 +9,27 @@ A Model Context Protocol (MCP) server that provides tools for interacting with T
|
|
|
7
9
|
|
|
8
10
|
## Changelog
|
|
9
11
|
|
|
10
|
-
### 0.
|
|
12
|
+
### 0.3.0
|
|
13
|
+
|
|
14
|
+
- Added board and workspace management capabilities:
|
|
15
|
+
- `list_boards` - List all boards the user has access to
|
|
16
|
+
- `set_active_board` - Set the active board for future operations
|
|
17
|
+
- `list_workspaces` - List all workspaces the user has access to
|
|
18
|
+
- `set_active_workspace` - Set the active workspace for future operations
|
|
19
|
+
- `list_boards_in_workspace` - List all boards in a specific workspace
|
|
20
|
+
- `get_active_board_info` - Get information about the currently active board
|
|
21
|
+
- Added persistent configuration storage to remember active board/workspace
|
|
22
|
+
- Improved error handling for all new operations
|
|
23
|
+
|
|
24
|
+
### 0.2.1
|
|
25
|
+
|
|
26
|
+
- Added detailed JSDoc comments to rate limiter functions
|
|
27
|
+
- Improved error handling for image attachment functionality
|
|
28
|
+
- Updated documentation for attach_image_to_card tool
|
|
11
29
|
|
|
30
|
+
### 0.2.0
|
|
31
|
+
|
|
32
|
+
- Added `attach_image_to_card` tool to attach images to cards from URLs
|
|
12
33
|
- Added Docker support with multi-stage build
|
|
13
34
|
- Improved security by moving environment variables to `.env`
|
|
14
35
|
- Added Docker Compose configuration
|
|
@@ -30,6 +51,7 @@ A Model Context Protocol (MCP) server that provides tools for interacting with T
|
|
|
30
51
|
- **Type-Safe Implementation**: Written in TypeScript with comprehensive type definitions
|
|
31
52
|
- **Input Validation**: Robust validation for all API inputs
|
|
32
53
|
- **Error Handling**: Graceful error handling with informative messages
|
|
54
|
+
- **Dynamic Board Selection**: Switch between boards and workspaces without restarting
|
|
33
55
|
|
|
34
56
|
## Installation
|
|
35
57
|
|
|
@@ -68,18 +90,84 @@ npm install @delorenj/mcp-server-trello
|
|
|
68
90
|
|
|
69
91
|
## Configuration
|
|
70
92
|
|
|
93
|
+
### Environment Variables
|
|
94
|
+
|
|
71
95
|
The server can be configured using environment variables. Create a `.env` file in the root directory with the following variables:
|
|
72
96
|
|
|
73
97
|
```env
|
|
98
|
+
# Required: Your Trello API credentials
|
|
74
99
|
TRELLO_API_KEY=your-api-key
|
|
75
100
|
TRELLO_TOKEN=your-token
|
|
101
|
+
|
|
102
|
+
# Required: Initial board ID (can be changed later using set_active_board)
|
|
76
103
|
TRELLO_BOARD_ID=your-board-id
|
|
104
|
+
|
|
105
|
+
# Optional: Initial workspace ID (can be changed later using set_active_workspace)
|
|
106
|
+
TRELLO_WORKSPACE_ID=your-workspace-id
|
|
77
107
|
```
|
|
78
108
|
|
|
79
109
|
You can get these values from:
|
|
80
110
|
- API Key: https://trello.com/app-key
|
|
81
111
|
- Token: Generate using your API key
|
|
82
|
-
- Board ID: Found in the board URL
|
|
112
|
+
- Board ID: Found in the board URL (e.g., https://trello.com/b/BOARD_ID/board-name)
|
|
113
|
+
- Workspace ID: Found in workspace settings or using `list_workspaces` tool
|
|
114
|
+
|
|
115
|
+
### Board and Workspace Management
|
|
116
|
+
|
|
117
|
+
Starting with version 0.3.0, the MCP server supports dynamic board and workspace selection:
|
|
118
|
+
|
|
119
|
+
- The `TRELLO_BOARD_ID` in your `.env` file is used as the initial board ID when the server starts
|
|
120
|
+
- You can change the active board at any time using the `set_active_board` tool
|
|
121
|
+
- The selected board persists between server restarts (stored in `~/.trello-mcp/config.json`)
|
|
122
|
+
- Similarly, you can set and persist an active workspace using `set_active_workspace`
|
|
123
|
+
|
|
124
|
+
This allows you to work with multiple boards and workspaces without restarting the server or changing environment variables.
|
|
125
|
+
|
|
126
|
+
#### Example Workflow
|
|
127
|
+
|
|
128
|
+
1. Start by listing available boards:
|
|
129
|
+
```typescript
|
|
130
|
+
{
|
|
131
|
+
name: 'list_boards',
|
|
132
|
+
arguments: {}
|
|
133
|
+
}
|
|
134
|
+
```
|
|
135
|
+
|
|
136
|
+
2. Set your active board:
|
|
137
|
+
```typescript
|
|
138
|
+
{
|
|
139
|
+
name: 'set_active_board',
|
|
140
|
+
arguments: {
|
|
141
|
+
boardId: "abc123" // ID from list_boards response
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
```
|
|
145
|
+
|
|
146
|
+
3. List workspaces if needed:
|
|
147
|
+
```typescript
|
|
148
|
+
{
|
|
149
|
+
name: 'list_workspaces',
|
|
150
|
+
arguments: {}
|
|
151
|
+
}
|
|
152
|
+
```
|
|
153
|
+
|
|
154
|
+
4. Set active workspace if needed:
|
|
155
|
+
```typescript
|
|
156
|
+
{
|
|
157
|
+
name: 'set_active_workspace',
|
|
158
|
+
arguments: {
|
|
159
|
+
workspaceId: "xyz789" // ID from list_workspaces response
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
```
|
|
163
|
+
|
|
164
|
+
5. Check current active board info:
|
|
165
|
+
```typescript
|
|
166
|
+
{
|
|
167
|
+
name: 'get_active_board_info',
|
|
168
|
+
arguments: {}
|
|
169
|
+
}
|
|
170
|
+
```
|
|
83
171
|
|
|
84
172
|
## Available Tools
|
|
85
173
|
|
|
@@ -98,7 +186,7 @@ Fetch all cards from a specific list.
|
|
|
98
186
|
|
|
99
187
|
### get_lists
|
|
100
188
|
|
|
101
|
-
Retrieve all lists from the
|
|
189
|
+
Retrieve all lists from the currently active board.
|
|
102
190
|
|
|
103
191
|
```typescript
|
|
104
192
|
{
|
|
@@ -109,7 +197,7 @@ Retrieve all lists from the configured board.
|
|
|
109
197
|
|
|
110
198
|
### get_recent_activity
|
|
111
199
|
|
|
112
|
-
Fetch recent activity on the board.
|
|
200
|
+
Fetch recent activity on the currently active board.
|
|
113
201
|
|
|
114
202
|
```typescript
|
|
115
203
|
{
|
|
@@ -169,7 +257,7 @@ Send a card to the archive.
|
|
|
169
257
|
|
|
170
258
|
### add_list_to_board
|
|
171
259
|
|
|
172
|
-
Add a new list to the board.
|
|
260
|
+
Add a new list to the currently active board.
|
|
173
261
|
|
|
174
262
|
```typescript
|
|
175
263
|
{
|
|
@@ -218,6 +306,93 @@ Move a card to a different list.
|
|
|
218
306
|
}
|
|
219
307
|
```
|
|
220
308
|
|
|
309
|
+
### attach_image_to_card
|
|
310
|
+
|
|
311
|
+
Attach an image to a card directly from a URL.
|
|
312
|
+
|
|
313
|
+
```typescript
|
|
314
|
+
{
|
|
315
|
+
name: 'attach_image_to_card',
|
|
316
|
+
arguments: {
|
|
317
|
+
cardId: string, // ID of the card to attach the image to
|
|
318
|
+
imageUrl: string, // URL of the image to attach
|
|
319
|
+
name?: string // Optional: Name for the attachment (defaults to "Image Attachment")
|
|
320
|
+
}
|
|
321
|
+
}
|
|
322
|
+
```
|
|
323
|
+
|
|
324
|
+
### list_boards
|
|
325
|
+
|
|
326
|
+
List all boards the user has access to.
|
|
327
|
+
|
|
328
|
+
```typescript
|
|
329
|
+
{
|
|
330
|
+
name: 'list_boards',
|
|
331
|
+
arguments: {}
|
|
332
|
+
}
|
|
333
|
+
```
|
|
334
|
+
|
|
335
|
+
### set_active_board
|
|
336
|
+
|
|
337
|
+
Set the active board for future operations.
|
|
338
|
+
|
|
339
|
+
```typescript
|
|
340
|
+
{
|
|
341
|
+
name: 'set_active_board',
|
|
342
|
+
arguments: {
|
|
343
|
+
boardId: string // ID of the board to set as active
|
|
344
|
+
}
|
|
345
|
+
}
|
|
346
|
+
```
|
|
347
|
+
|
|
348
|
+
### list_workspaces
|
|
349
|
+
|
|
350
|
+
List all workspaces the user has access to.
|
|
351
|
+
|
|
352
|
+
```typescript
|
|
353
|
+
{
|
|
354
|
+
name: 'list_workspaces',
|
|
355
|
+
arguments: {}
|
|
356
|
+
}
|
|
357
|
+
```
|
|
358
|
+
|
|
359
|
+
### set_active_workspace
|
|
360
|
+
|
|
361
|
+
Set the active workspace for future operations.
|
|
362
|
+
|
|
363
|
+
```typescript
|
|
364
|
+
{
|
|
365
|
+
name: 'set_active_workspace',
|
|
366
|
+
arguments: {
|
|
367
|
+
workspaceId: string // ID of the workspace to set as active
|
|
368
|
+
}
|
|
369
|
+
}
|
|
370
|
+
```
|
|
371
|
+
|
|
372
|
+
### list_boards_in_workspace
|
|
373
|
+
|
|
374
|
+
List all boards in a specific workspace.
|
|
375
|
+
|
|
376
|
+
```typescript
|
|
377
|
+
{
|
|
378
|
+
name: 'list_boards_in_workspace',
|
|
379
|
+
arguments: {
|
|
380
|
+
workspaceId: string // ID of the workspace to list boards from
|
|
381
|
+
}
|
|
382
|
+
}
|
|
383
|
+
```
|
|
384
|
+
|
|
385
|
+
### get_active_board_info
|
|
386
|
+
|
|
387
|
+
Get information about the currently active board.
|
|
388
|
+
|
|
389
|
+
```typescript
|
|
390
|
+
{
|
|
391
|
+
name: 'get_active_board_info',
|
|
392
|
+
arguments: {}
|
|
393
|
+
}
|
|
394
|
+
```
|
|
395
|
+
|
|
221
396
|
## Rate Limiting
|
|
222
397
|
|
|
223
398
|
The server implements a token bucket algorithm for rate limiting to comply with Trello's API limits:
|
|
@@ -266,6 +441,13 @@ npm run build
|
|
|
266
441
|
```
|
|
267
442
|
|
|
268
443
|
|
|
444
|
+
## Running evals
|
|
445
|
+
|
|
446
|
+
The evals package loads an mcp client that then runs the index.ts file, so there is no need to rebuild between tests. You can load environment variables by prefixing the npx command. Full documentation can be found [here](https://www.mcpevals.io/docs).
|
|
447
|
+
|
|
448
|
+
```bash
|
|
449
|
+
OPENAI_API_KEY=your-key npx mcp-eval src/evals/evals.ts src/index.ts
|
|
450
|
+
```
|
|
269
451
|
## Contributing
|
|
270
452
|
|
|
271
453
|
Contributions are welcome!
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
//evals.ts
|
|
2
|
+
import { openai } from "@ai-sdk/openai";
|
|
3
|
+
import { grade } from "mcp-evals";
|
|
4
|
+
const get_cards_by_list_idEval = {
|
|
5
|
+
name: 'get_cards_by_list_id Tool Evaluation',
|
|
6
|
+
description: 'Evaluates the get_cards_by_list_id tool functionality',
|
|
7
|
+
run: async () => {
|
|
8
|
+
const result = await grade(openai("gpt-4"), "Can you fetch all cards from the Trello list with ID abc123?");
|
|
9
|
+
return JSON.parse(result);
|
|
10
|
+
}
|
|
11
|
+
};
|
|
12
|
+
const get_listsEval = {
|
|
13
|
+
name: 'get_lists Tool Evaluation',
|
|
14
|
+
description: 'Evaluates the get_lists tool by retrieving all lists from a specified board',
|
|
15
|
+
run: async () => {
|
|
16
|
+
const result = await grade(openai("gpt-4"), "Please retrieve all lists from the board with ID 12345 and provide their names.");
|
|
17
|
+
return JSON.parse(result);
|
|
18
|
+
}
|
|
19
|
+
};
|
|
20
|
+
const get_recent_activityEvalFunction = {
|
|
21
|
+
name: 'get_recent_activity Tool Evaluation',
|
|
22
|
+
description: 'Evaluates the ability to fetch recent activity on the Trello board',
|
|
23
|
+
run: async () => {
|
|
24
|
+
const result = await grade(openai("gpt-4"), "Fetch the recent activity on the Trello board, limit it to 5 items");
|
|
25
|
+
return JSON.parse(result);
|
|
26
|
+
}
|
|
27
|
+
};
|
|
28
|
+
const add_card_to_listEval = {
|
|
29
|
+
name: 'add_card_to_listEval',
|
|
30
|
+
description: 'Evaluates the add_card_to_list tool',
|
|
31
|
+
run: async () => {
|
|
32
|
+
const result = await grade(openai("gpt-4"), "Please add a new card named 'Demo Card' to the list with ID 'abc123', with a description of 'This is a test card', due date '2023-12-31T12:00:00Z', and a label 'priority'.");
|
|
33
|
+
return JSON.parse(result);
|
|
34
|
+
}
|
|
35
|
+
};
|
|
36
|
+
const update_card_detailsEval = {
|
|
37
|
+
name: 'update_card_details Evaluation',
|
|
38
|
+
description: 'Evaluates the update_card_details tool functionality',
|
|
39
|
+
run: async () => {
|
|
40
|
+
const result = await grade(openai("gpt-4"), "Please update the card with ID 'abc123' to have the name 'Updated Card Name', the description 'New description for the card', a due date of '2024-01-01T10:00:00Z', and labels ['priority','review'].");
|
|
41
|
+
return JSON.parse(result);
|
|
42
|
+
}
|
|
43
|
+
};
|
|
44
|
+
const config = {
|
|
45
|
+
model: openai("gpt-4"),
|
|
46
|
+
evals: [get_cards_by_list_idEval, get_listsEval, get_recent_activityEvalFunction, add_card_to_listEval, update_card_detailsEval]
|
|
47
|
+
};
|
|
48
|
+
export default config;
|
|
49
|
+
export const evals = [get_cards_by_list_idEval, get_listsEval, get_recent_activityEvalFunction, add_card_to_listEval, update_card_detailsEval];
|
|
50
|
+
//# sourceMappingURL=evals.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"evals.js","sourceRoot":"","sources":["../../src/evals/evals.ts"],"names":[],"mappings":"AAAA,UAAU;AAGV,OAAO,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AACxC,OAAO,EAAE,KAAK,EAAgB,MAAM,WAAW,CAAC;AAEhD,MAAM,wBAAwB,GAAiB;IAC3C,IAAI,EAAE,sCAAsC;IAC5C,WAAW,EAAE,uDAAuD;IACpE,GAAG,EAAE,KAAK,IAAI,EAAE;QACZ,MAAM,MAAM,GAAG,MAAM,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,8DAA8D,CAAC,CAAC;QAC5G,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IAC9B,CAAC;CACJ,CAAC;AAEF,MAAM,aAAa,GAAiB;IAChC,IAAI,EAAE,2BAA2B;IACjC,WAAW,EAAE,6EAA6E;IAC1F,GAAG,EAAE,KAAK,IAAI,EAAE;QACZ,MAAM,MAAM,GAAG,MAAM,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,iFAAiF,CAAC,CAAC;QAC/H,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IAC9B,CAAC;CACJ,CAAC;AAEF,MAAM,+BAA+B,GAAiB;IAClD,IAAI,EAAE,qCAAqC;IAC3C,WAAW,EAAE,oEAAoE;IACjF,GAAG,EAAE,KAAK,IAAI,EAAE;QACZ,MAAM,MAAM,GAAG,MAAM,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,oEAAoE,CAAC,CAAC;QAClH,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IAC9B,CAAC;CACJ,CAAC;AAEF,MAAM,oBAAoB,GAAiB;IACvC,IAAI,EAAE,sBAAsB;IAC5B,WAAW,EAAE,qCAAqC;IAClD,GAAG,EAAE,KAAK,IAAI,EAAE;QACZ,MAAM,MAAM,GAAG,MAAM,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,6KAA6K,CAAC,CAAC;QAC3N,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IAC9B,CAAC;CACJ,CAAC;AAEF,MAAM,uBAAuB,GAAiB;IAC1C,IAAI,EAAE,gCAAgC;IACtC,WAAW,EAAE,sDAAsD;IACnE,GAAG,EAAE,KAAK,IAAI,EAAE;QACZ,MAAM,MAAM,GAAG,MAAM,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,uMAAuM,CAAC,CAAC;QACrP,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IAC9B,CAAC;CACJ,CAAC;AAEF,MAAM,MAAM,GAAe;IACvB,KAAK,EAAE,MAAM,CAAC,OAAO,CAAC;IACtB,KAAK,EAAE,CAAC,wBAAwB,EAAE,aAAa,EAAE,+BAA+B,EAAE,oBAAoB,EAAE,uBAAuB,CAAC;CACnI,CAAC;AAEF,eAAe,MAAM,CAAC;AAEtB,MAAM,CAAC,MAAM,KAAK,GAAG,CAAC,wBAAwB,EAAE,aAAa,EAAE,+BAA+B,EAAE,oBAAoB,EAAE,uBAAuB,CAAC,CAAC"}
|
package/build/index.js
CHANGED
|
@@ -3,7 +3,7 @@ import { Server } from '@modelcontextprotocol/sdk/server/index.js';
|
|
|
3
3
|
import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js';
|
|
4
4
|
import { CallToolRequestSchema, ErrorCode, ListToolsRequestSchema, McpError, } from '@modelcontextprotocol/sdk/types.js';
|
|
5
5
|
import { TrelloClient } from './trello-client.js';
|
|
6
|
-
import { validateGetCardsListRequest, validateGetRecentActivityRequest, validateAddCardRequest, validateUpdateCardRequest, validateArchiveCardRequest, validateAddListRequest, validateArchiveListRequest, validateMoveCardRequest, } from './validators.js';
|
|
6
|
+
import { validateGetCardsListRequest, validateGetRecentActivityRequest, validateAddCardRequest, validateUpdateCardRequest, validateArchiveCardRequest, validateAddListRequest, validateArchiveListRequest, validateMoveCardRequest, validateAttachImageRequest, validateSetActiveBoardRequest, validateSetActiveWorkspaceRequest, validateListBoardsInWorkspaceRequest, } from './validators.js';
|
|
7
7
|
class TrelloServer {
|
|
8
8
|
constructor() {
|
|
9
9
|
const apiKey = process.env.TRELLO_API_KEY;
|
|
@@ -15,7 +15,7 @@ class TrelloServer {
|
|
|
15
15
|
this.trelloClient = new TrelloClient({ apiKey, token, boardId });
|
|
16
16
|
this.server = new Server({
|
|
17
17
|
name: 'trello-server',
|
|
18
|
-
version: '0.
|
|
18
|
+
version: '0.3.0',
|
|
19
19
|
}, {
|
|
20
20
|
capabilities: {
|
|
21
21
|
tools: {},
|
|
@@ -204,6 +204,97 @@ class TrelloServer {
|
|
|
204
204
|
required: [],
|
|
205
205
|
},
|
|
206
206
|
},
|
|
207
|
+
{
|
|
208
|
+
name: 'attach_image_to_card',
|
|
209
|
+
description: 'Attach an image to a card directly from a URL',
|
|
210
|
+
inputSchema: {
|
|
211
|
+
type: 'object',
|
|
212
|
+
properties: {
|
|
213
|
+
cardId: {
|
|
214
|
+
type: 'string',
|
|
215
|
+
description: 'ID of the card to attach the image to',
|
|
216
|
+
},
|
|
217
|
+
imageUrl: {
|
|
218
|
+
type: 'string',
|
|
219
|
+
description: 'URL of the image to attach',
|
|
220
|
+
},
|
|
221
|
+
name: {
|
|
222
|
+
type: 'string',
|
|
223
|
+
description: 'Optional name for the attachment (defaults to "Image Attachment")',
|
|
224
|
+
},
|
|
225
|
+
},
|
|
226
|
+
required: ['cardId', 'imageUrl'],
|
|
227
|
+
},
|
|
228
|
+
},
|
|
229
|
+
{
|
|
230
|
+
name: 'list_boards',
|
|
231
|
+
description: 'List all boards the user has access to',
|
|
232
|
+
inputSchema: {
|
|
233
|
+
type: 'object',
|
|
234
|
+
properties: {},
|
|
235
|
+
required: [],
|
|
236
|
+
},
|
|
237
|
+
},
|
|
238
|
+
{
|
|
239
|
+
name: 'set_active_board',
|
|
240
|
+
description: 'Set the active board for future operations',
|
|
241
|
+
inputSchema: {
|
|
242
|
+
type: 'object',
|
|
243
|
+
properties: {
|
|
244
|
+
boardId: {
|
|
245
|
+
type: 'string',
|
|
246
|
+
description: 'ID of the board to set as active',
|
|
247
|
+
},
|
|
248
|
+
},
|
|
249
|
+
required: ['boardId'],
|
|
250
|
+
},
|
|
251
|
+
},
|
|
252
|
+
{
|
|
253
|
+
name: 'list_workspaces',
|
|
254
|
+
description: 'List all workspaces the user has access to',
|
|
255
|
+
inputSchema: {
|
|
256
|
+
type: 'object',
|
|
257
|
+
properties: {},
|
|
258
|
+
required: [],
|
|
259
|
+
},
|
|
260
|
+
},
|
|
261
|
+
{
|
|
262
|
+
name: 'set_active_workspace',
|
|
263
|
+
description: 'Set the active workspace for future operations',
|
|
264
|
+
inputSchema: {
|
|
265
|
+
type: 'object',
|
|
266
|
+
properties: {
|
|
267
|
+
workspaceId: {
|
|
268
|
+
type: 'string',
|
|
269
|
+
description: 'ID of the workspace to set as active',
|
|
270
|
+
},
|
|
271
|
+
},
|
|
272
|
+
required: ['workspaceId'],
|
|
273
|
+
},
|
|
274
|
+
},
|
|
275
|
+
{
|
|
276
|
+
name: 'list_boards_in_workspace',
|
|
277
|
+
description: 'List all boards in a specific workspace',
|
|
278
|
+
inputSchema: {
|
|
279
|
+
type: 'object',
|
|
280
|
+
properties: {
|
|
281
|
+
workspaceId: {
|
|
282
|
+
type: 'string',
|
|
283
|
+
description: 'ID of the workspace to list boards from',
|
|
284
|
+
},
|
|
285
|
+
},
|
|
286
|
+
required: ['workspaceId'],
|
|
287
|
+
},
|
|
288
|
+
},
|
|
289
|
+
{
|
|
290
|
+
name: 'get_active_board_info',
|
|
291
|
+
description: 'Get information about the currently active board',
|
|
292
|
+
inputSchema: {
|
|
293
|
+
type: 'object',
|
|
294
|
+
properties: {},
|
|
295
|
+
required: [],
|
|
296
|
+
},
|
|
297
|
+
},
|
|
207
298
|
],
|
|
208
299
|
}));
|
|
209
300
|
this.server.setRequestHandler(CallToolRequestSchema, async (request) => {
|
|
@@ -281,6 +372,91 @@ class TrelloServer {
|
|
|
281
372
|
content: [{ type: 'text', text: JSON.stringify(cards, null, 2) }],
|
|
282
373
|
};
|
|
283
374
|
}
|
|
375
|
+
case 'attach_image_to_card': {
|
|
376
|
+
const validArgs = validateAttachImageRequest(args);
|
|
377
|
+
try {
|
|
378
|
+
const attachment = await this.trelloClient.attachImageToCard(validArgs.cardId, validArgs.imageUrl, validArgs.name);
|
|
379
|
+
return {
|
|
380
|
+
content: [{ type: 'text', text: JSON.stringify(attachment, null, 2) }],
|
|
381
|
+
};
|
|
382
|
+
}
|
|
383
|
+
catch (error) {
|
|
384
|
+
return this.handleErrorResponse(error);
|
|
385
|
+
}
|
|
386
|
+
}
|
|
387
|
+
case 'list_boards': {
|
|
388
|
+
const boards = await this.trelloClient.listBoards();
|
|
389
|
+
return {
|
|
390
|
+
content: [{ type: 'text', text: JSON.stringify(boards, null, 2) }],
|
|
391
|
+
};
|
|
392
|
+
}
|
|
393
|
+
case 'set_active_board': {
|
|
394
|
+
const validArgs = validateSetActiveBoardRequest(args);
|
|
395
|
+
try {
|
|
396
|
+
const board = await this.trelloClient.setActiveBoard(validArgs.boardId);
|
|
397
|
+
return {
|
|
398
|
+
content: [{
|
|
399
|
+
type: 'text',
|
|
400
|
+
text: `Successfully set active board to "${board.name}" (${board.id})`
|
|
401
|
+
}],
|
|
402
|
+
};
|
|
403
|
+
}
|
|
404
|
+
catch (error) {
|
|
405
|
+
return this.handleErrorResponse(error);
|
|
406
|
+
}
|
|
407
|
+
}
|
|
408
|
+
case 'list_workspaces': {
|
|
409
|
+
const workspaces = await this.trelloClient.listWorkspaces();
|
|
410
|
+
return {
|
|
411
|
+
content: [{ type: 'text', text: JSON.stringify(workspaces, null, 2) }],
|
|
412
|
+
};
|
|
413
|
+
}
|
|
414
|
+
case 'set_active_workspace': {
|
|
415
|
+
const validArgs = validateSetActiveWorkspaceRequest(args);
|
|
416
|
+
try {
|
|
417
|
+
const workspace = await this.trelloClient.setActiveWorkspace(validArgs.workspaceId);
|
|
418
|
+
return {
|
|
419
|
+
content: [{
|
|
420
|
+
type: 'text',
|
|
421
|
+
text: `Successfully set active workspace to "${workspace.displayName}" (${workspace.id})`
|
|
422
|
+
}],
|
|
423
|
+
};
|
|
424
|
+
}
|
|
425
|
+
catch (error) {
|
|
426
|
+
return this.handleErrorResponse(error);
|
|
427
|
+
}
|
|
428
|
+
}
|
|
429
|
+
case 'list_boards_in_workspace': {
|
|
430
|
+
const validArgs = validateListBoardsInWorkspaceRequest(args);
|
|
431
|
+
try {
|
|
432
|
+
const boards = await this.trelloClient.listBoardsInWorkspace(validArgs.workspaceId);
|
|
433
|
+
return {
|
|
434
|
+
content: [{ type: 'text', text: JSON.stringify(boards, null, 2) }],
|
|
435
|
+
};
|
|
436
|
+
}
|
|
437
|
+
catch (error) {
|
|
438
|
+
return this.handleErrorResponse(error);
|
|
439
|
+
}
|
|
440
|
+
}
|
|
441
|
+
case 'get_active_board_info': {
|
|
442
|
+
try {
|
|
443
|
+
const boardId = this.trelloClient.activeBoardId;
|
|
444
|
+
const board = await this.trelloClient.getBoardById(boardId);
|
|
445
|
+
return {
|
|
446
|
+
content: [{
|
|
447
|
+
type: 'text',
|
|
448
|
+
text: JSON.stringify({
|
|
449
|
+
...board,
|
|
450
|
+
isActive: true,
|
|
451
|
+
activeWorkspaceId: this.trelloClient.activeWorkspaceId || 'Not set'
|
|
452
|
+
}, null, 2)
|
|
453
|
+
}],
|
|
454
|
+
};
|
|
455
|
+
}
|
|
456
|
+
catch (error) {
|
|
457
|
+
return this.handleErrorResponse(error);
|
|
458
|
+
}
|
|
459
|
+
}
|
|
284
460
|
default:
|
|
285
461
|
throw new McpError(ErrorCode.MethodNotFound, `Unknown tool: ${request.params.name}`);
|
|
286
462
|
}
|
|
@@ -298,8 +474,24 @@ class TrelloServer {
|
|
|
298
474
|
}
|
|
299
475
|
});
|
|
300
476
|
}
|
|
477
|
+
handleErrorResponse(error) {
|
|
478
|
+
return {
|
|
479
|
+
content: [
|
|
480
|
+
{
|
|
481
|
+
type: 'text',
|
|
482
|
+
text: `Error: ${error instanceof Error ? error.message : 'Unknown error occurred'}`,
|
|
483
|
+
},
|
|
484
|
+
],
|
|
485
|
+
isError: true,
|
|
486
|
+
};
|
|
487
|
+
}
|
|
301
488
|
async run() {
|
|
302
489
|
const transport = new StdioServerTransport();
|
|
490
|
+
// Load configuration before starting the server
|
|
491
|
+
await this.trelloClient.loadConfig().catch((error) => {
|
|
492
|
+
console.error('Failed to load saved configuration:', error);
|
|
493
|
+
// Continue with default config if loading fails
|
|
494
|
+
});
|
|
303
495
|
await this.server.connect(transport);
|
|
304
496
|
console.error('Trello MCP server running on stdio');
|
|
305
497
|
}
|
package/build/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/build/rate-limiter.d.ts
CHANGED
|
@@ -13,5 +13,20 @@ export declare class TokenBucketRateLimiter implements RateLimiter {
|
|
|
13
13
|
export declare const createTrelloRateLimiters: () => {
|
|
14
14
|
apiKeyLimiter: TokenBucketRateLimiter;
|
|
15
15
|
tokenLimiter: TokenBucketRateLimiter;
|
|
16
|
-
|
|
16
|
+
/**
|
|
17
|
+
* Checks if a request can be made without hitting rate limits.
|
|
18
|
+
* This is useful for pre-checking before attempting a request,
|
|
19
|
+
* allowing for more graceful handling of rate limits without blocking.
|
|
20
|
+
*
|
|
21
|
+
* @returns {boolean} True if both API key and token limiters have available tokens
|
|
22
|
+
*/
|
|
23
|
+
canMakeRequest(): boolean;
|
|
24
|
+
/**
|
|
25
|
+
* Waits until tokens are available for both API key and token limiters.
|
|
26
|
+
* This method blocks execution until rate limits allow the request to proceed.
|
|
27
|
+
* Used by the axios interceptor to ensure all requests respect Trello's rate limits.
|
|
28
|
+
*
|
|
29
|
+
* @returns {Promise<void>} Resolves when tokens are available
|
|
30
|
+
*/
|
|
31
|
+
waitForAvailableToken(): Promise<void>;
|
|
17
32
|
};
|
package/build/rate-limiter.js
CHANGED
|
@@ -45,7 +45,24 @@ export const createTrelloRateLimiters = () => {
|
|
|
45
45
|
return {
|
|
46
46
|
apiKeyLimiter,
|
|
47
47
|
tokenLimiter,
|
|
48
|
-
|
|
48
|
+
/**
|
|
49
|
+
* Checks if a request can be made without hitting rate limits.
|
|
50
|
+
* This is useful for pre-checking before attempting a request,
|
|
51
|
+
* allowing for more graceful handling of rate limits without blocking.
|
|
52
|
+
*
|
|
53
|
+
* @returns {boolean} True if both API key and token limiters have available tokens
|
|
54
|
+
*/
|
|
55
|
+
canMakeRequest() {
|
|
56
|
+
return apiKeyLimiter.canMakeRequest() && tokenLimiter.canMakeRequest();
|
|
57
|
+
},
|
|
58
|
+
/**
|
|
59
|
+
* Waits until tokens are available for both API key and token limiters.
|
|
60
|
+
* This method blocks execution until rate limits allow the request to proceed.
|
|
61
|
+
* Used by the axios interceptor to ensure all requests respect Trello's rate limits.
|
|
62
|
+
*
|
|
63
|
+
* @returns {Promise<void>} Resolves when tokens are available
|
|
64
|
+
*/
|
|
65
|
+
async waitForAvailableToken() {
|
|
49
66
|
await Promise.all([
|
|
50
67
|
apiKeyLimiter.waitForAvailableToken(),
|
|
51
68
|
tokenLimiter.waitForAvailableToken(),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rate-limiter.js","sourceRoot":"","sources":["../src/rate-limiter.ts"],"names":[],"mappings":"AAEA,MAAM,OAAO,sBAAsB;IAOjC,YAAY,WAAmB,EAAE,QAAgB;QAC/C,IAAI,CAAC,SAAS,GAAG,WAAW,CAAC;QAC7B,IAAI,CAAC,MAAM,GAAG,WAAW,CAAC;QAC1B,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAC7B,IAAI,CAAC,cAAc,GAAG,QAAQ,CAAC;QAC/B,IAAI,CAAC,UAAU,GAAG,WAAW,GAAG,QAAQ,CAAC;IAC3C,CAAC;IAEO,YAAY;QAClB,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QACvB,MAAM,UAAU,GAAG,GAAG,GAAG,IAAI,CAAC,UAAU,CAAC;QACzC,MAAM,SAAS,GAAG,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC;QAC/C,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,MAAM,GAAG,SAAS,CAAC,CAAC;QAChE,IAAI,CAAC,UAAU,GAAG,GAAG,CAAC;IACxB,CAAC;IAED,cAAc;QACZ,IAAI,CAAC,YAAY,EAAE,CAAC;QACpB,IAAI,IAAI,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC;YACrB,IAAI,CAAC,MAAM,IAAI,CAAC,CAAC;YACjB,OAAO,IAAI,CAAC;QACd,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IAED,KAAK,CAAC,qBAAqB;QACzB,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;YAC7B,MAAM,KAAK,GAAG,GAAG,EAAE;gBACjB,IAAI,IAAI,CAAC,cAAc,EAAE,EAAE,CAAC;oBAC1B,OAAO,EAAE,CAAC;gBACZ,CAAC;qBAAM,CAAC;oBACN,+CAA+C;oBAC/C,MAAM,YAAY,GAAG,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC;oBACrC,MAAM,QAAQ,GAAG,CAAC,YAAY,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,IAAI,CAAC;oBACzD,UAAU,CAAC,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,4BAA4B;gBAC1E,CAAC;YACH,CAAC,CAAC;YACF,KAAK,EAAE,CAAC;QACV,CAAC,CAAC,CAAC;IACL,CAAC;CACF;AAED,gDAAgD;AAChD,MAAM,CAAC,MAAM,wBAAwB,GAAG,GAAG,EAAE;IAC3C,MAAM,aAAa,GAAG,IAAI,sBAAsB,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC,CAAC,8BAA8B;IAC5F,MAAM,YAAY,GAAG,IAAI,sBAAsB,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC,CAAC,8BAA8B;IAE3F,OAAO;QACL,aAAa;QACb,YAAY;QACZ,KAAK,CAAC,
|
|
1
|
+
{"version":3,"file":"rate-limiter.js","sourceRoot":"","sources":["../src/rate-limiter.ts"],"names":[],"mappings":"AAEA,MAAM,OAAO,sBAAsB;IAOjC,YAAY,WAAmB,EAAE,QAAgB;QAC/C,IAAI,CAAC,SAAS,GAAG,WAAW,CAAC;QAC7B,IAAI,CAAC,MAAM,GAAG,WAAW,CAAC;QAC1B,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAC7B,IAAI,CAAC,cAAc,GAAG,QAAQ,CAAC;QAC/B,IAAI,CAAC,UAAU,GAAG,WAAW,GAAG,QAAQ,CAAC;IAC3C,CAAC;IAEO,YAAY;QAClB,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QACvB,MAAM,UAAU,GAAG,GAAG,GAAG,IAAI,CAAC,UAAU,CAAC;QACzC,MAAM,SAAS,GAAG,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC;QAC/C,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,MAAM,GAAG,SAAS,CAAC,CAAC;QAChE,IAAI,CAAC,UAAU,GAAG,GAAG,CAAC;IACxB,CAAC;IAED,cAAc;QACZ,IAAI,CAAC,YAAY,EAAE,CAAC;QACpB,IAAI,IAAI,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC;YACrB,IAAI,CAAC,MAAM,IAAI,CAAC,CAAC;YACjB,OAAO,IAAI,CAAC;QACd,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IAED,KAAK,CAAC,qBAAqB;QACzB,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;YAC7B,MAAM,KAAK,GAAG,GAAG,EAAE;gBACjB,IAAI,IAAI,CAAC,cAAc,EAAE,EAAE,CAAC;oBAC1B,OAAO,EAAE,CAAC;gBACZ,CAAC;qBAAM,CAAC;oBACN,+CAA+C;oBAC/C,MAAM,YAAY,GAAG,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC;oBACrC,MAAM,QAAQ,GAAG,CAAC,YAAY,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,IAAI,CAAC;oBACzD,UAAU,CAAC,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,4BAA4B;gBAC1E,CAAC;YACH,CAAC,CAAC;YACF,KAAK,EAAE,CAAC;QACV,CAAC,CAAC,CAAC;IACL,CAAC;CACF;AAED,gDAAgD;AAChD,MAAM,CAAC,MAAM,wBAAwB,GAAG,GAAG,EAAE;IAC3C,MAAM,aAAa,GAAG,IAAI,sBAAsB,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC,CAAC,8BAA8B;IAC5F,MAAM,YAAY,GAAG,IAAI,sBAAsB,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC,CAAC,8BAA8B;IAE3F,OAAO;QACL,aAAa;QACb,YAAY;QACZ;;;;;;WAMG;QACH,cAAc;YACZ,OAAO,aAAa,CAAC,cAAc,EAAE,IAAI,YAAY,CAAC,cAAc,EAAE,CAAC;QACzE,CAAC;QACD;;;;;;WAMG;QACH,KAAK,CAAC,qBAAqB;YACzB,MAAM,OAAO,CAAC,GAAG,CAAC;gBAChB,aAAa,CAAC,qBAAqB,EAAE;gBACrC,YAAY,CAAC,qBAAqB,EAAE;aACrC,CAAC,CAAC;QACL,CAAC;KACF,CAAC;AACJ,CAAC,CAAC"}
|
package/build/trello-client.d.ts
CHANGED
|
@@ -1,10 +1,55 @@
|
|
|
1
|
-
import { TrelloConfig, TrelloCard, TrelloList, TrelloAction } from './types.js';
|
|
1
|
+
import { TrelloConfig, TrelloCard, TrelloList, TrelloAction, TrelloAttachment, TrelloBoard, TrelloWorkspace } from './types.js';
|
|
2
2
|
export declare class TrelloClient {
|
|
3
3
|
private config;
|
|
4
4
|
private axiosInstance;
|
|
5
5
|
private rateLimiter;
|
|
6
|
+
private activeConfig;
|
|
6
7
|
constructor(config: TrelloConfig);
|
|
8
|
+
/**
|
|
9
|
+
* Load saved configuration from disk
|
|
10
|
+
*/
|
|
11
|
+
loadConfig(): Promise<void>;
|
|
12
|
+
/**
|
|
13
|
+
* Save current configuration to disk
|
|
14
|
+
*/
|
|
15
|
+
private saveConfig;
|
|
16
|
+
/**
|
|
17
|
+
* Get the current active board ID
|
|
18
|
+
*/
|
|
19
|
+
get activeBoardId(): string;
|
|
20
|
+
/**
|
|
21
|
+
* Get the current active workspace ID
|
|
22
|
+
*/
|
|
23
|
+
get activeWorkspaceId(): string | undefined;
|
|
24
|
+
/**
|
|
25
|
+
* Set the active board
|
|
26
|
+
*/
|
|
27
|
+
setActiveBoard(boardId: string): Promise<TrelloBoard>;
|
|
28
|
+
/**
|
|
29
|
+
* Set the active workspace
|
|
30
|
+
*/
|
|
31
|
+
setActiveWorkspace(workspaceId: string): Promise<TrelloWorkspace>;
|
|
7
32
|
private handleRequest;
|
|
33
|
+
/**
|
|
34
|
+
* List all boards the user has access to
|
|
35
|
+
*/
|
|
36
|
+
listBoards(): Promise<TrelloBoard[]>;
|
|
37
|
+
/**
|
|
38
|
+
* Get a specific board by ID
|
|
39
|
+
*/
|
|
40
|
+
getBoardById(boardId: string): Promise<TrelloBoard>;
|
|
41
|
+
/**
|
|
42
|
+
* List all workspaces the user has access to
|
|
43
|
+
*/
|
|
44
|
+
listWorkspaces(): Promise<TrelloWorkspace[]>;
|
|
45
|
+
/**
|
|
46
|
+
* Get a specific workspace by ID
|
|
47
|
+
*/
|
|
48
|
+
getWorkspaceById(workspaceId: string): Promise<TrelloWorkspace>;
|
|
49
|
+
/**
|
|
50
|
+
* List boards in a specific workspace
|
|
51
|
+
*/
|
|
52
|
+
listBoardsInWorkspace(workspaceId: string): Promise<TrelloBoard[]>;
|
|
8
53
|
getCardsByList(listId: string): Promise<TrelloCard[]>;
|
|
9
54
|
getLists(): Promise<TrelloList[]>;
|
|
10
55
|
getRecentActivity(limit?: number): Promise<TrelloAction[]>;
|
|
@@ -27,4 +72,5 @@ export declare class TrelloClient {
|
|
|
27
72
|
addList(name: string): Promise<TrelloList>;
|
|
28
73
|
archiveList(listId: string): Promise<TrelloList>;
|
|
29
74
|
getMyCards(): Promise<TrelloCard[]>;
|
|
75
|
+
attachImageToCard(cardId: string, imageUrl: string, name?: string): Promise<TrelloAttachment>;
|
|
30
76
|
}
|
package/build/trello-client.js
CHANGED
|
@@ -1,8 +1,14 @@
|
|
|
1
1
|
import axios from 'axios';
|
|
2
2
|
import { createTrelloRateLimiters } from './rate-limiter.js';
|
|
3
|
+
import * as fs from 'fs/promises';
|
|
4
|
+
import * as path from 'path';
|
|
5
|
+
// Path for storing active board/workspace configuration
|
|
6
|
+
const CONFIG_DIR = path.join(process.env.HOME || process.env.USERPROFILE || '.', '.trello-mcp');
|
|
7
|
+
const CONFIG_FILE = path.join(CONFIG_DIR, 'config.json');
|
|
3
8
|
export class TrelloClient {
|
|
4
9
|
constructor(config) {
|
|
5
10
|
this.config = config;
|
|
11
|
+
this.activeConfig = { ...config };
|
|
6
12
|
this.axiosInstance = axios.create({
|
|
7
13
|
baseURL: 'https://api.trello.com/1',
|
|
8
14
|
params: {
|
|
@@ -13,10 +19,83 @@ export class TrelloClient {
|
|
|
13
19
|
this.rateLimiter = createTrelloRateLimiters();
|
|
14
20
|
// Add rate limiting interceptor
|
|
15
21
|
this.axiosInstance.interceptors.request.use(async (config) => {
|
|
16
|
-
await this.rateLimiter.
|
|
22
|
+
await this.rateLimiter.waitForAvailableToken();
|
|
17
23
|
return config;
|
|
18
24
|
});
|
|
19
25
|
}
|
|
26
|
+
/**
|
|
27
|
+
* Load saved configuration from disk
|
|
28
|
+
*/
|
|
29
|
+
async loadConfig() {
|
|
30
|
+
try {
|
|
31
|
+
await fs.mkdir(CONFIG_DIR, { recursive: true });
|
|
32
|
+
const data = await fs.readFile(CONFIG_FILE, 'utf8');
|
|
33
|
+
const savedConfig = JSON.parse(data);
|
|
34
|
+
// Only update boardId and workspaceId, keep credentials from env
|
|
35
|
+
if (savedConfig.boardId) {
|
|
36
|
+
this.activeConfig.boardId = savedConfig.boardId;
|
|
37
|
+
}
|
|
38
|
+
if (savedConfig.workspaceId) {
|
|
39
|
+
this.activeConfig.workspaceId = savedConfig.workspaceId;
|
|
40
|
+
}
|
|
41
|
+
console.log(`Loaded configuration: Board ID ${this.activeConfig.boardId}, Workspace ID ${this.activeConfig.workspaceId || 'not set'}`);
|
|
42
|
+
}
|
|
43
|
+
catch (error) {
|
|
44
|
+
// File might not exist yet, that's okay
|
|
45
|
+
if (error instanceof Error && 'code' in error && error.code !== 'ENOENT') {
|
|
46
|
+
throw error;
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* Save current configuration to disk
|
|
52
|
+
*/
|
|
53
|
+
async saveConfig() {
|
|
54
|
+
try {
|
|
55
|
+
await fs.mkdir(CONFIG_DIR, { recursive: true });
|
|
56
|
+
const configToSave = {
|
|
57
|
+
boardId: this.activeConfig.boardId,
|
|
58
|
+
workspaceId: this.activeConfig.workspaceId,
|
|
59
|
+
};
|
|
60
|
+
await fs.writeFile(CONFIG_FILE, JSON.stringify(configToSave, null, 2));
|
|
61
|
+
}
|
|
62
|
+
catch (error) {
|
|
63
|
+
console.error('Failed to save configuration:', error);
|
|
64
|
+
throw new Error('Failed to save configuration');
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
/**
|
|
68
|
+
* Get the current active board ID
|
|
69
|
+
*/
|
|
70
|
+
get activeBoardId() {
|
|
71
|
+
return this.activeConfig.boardId;
|
|
72
|
+
}
|
|
73
|
+
/**
|
|
74
|
+
* Get the current active workspace ID
|
|
75
|
+
*/
|
|
76
|
+
get activeWorkspaceId() {
|
|
77
|
+
return this.activeConfig.workspaceId;
|
|
78
|
+
}
|
|
79
|
+
/**
|
|
80
|
+
* Set the active board
|
|
81
|
+
*/
|
|
82
|
+
async setActiveBoard(boardId) {
|
|
83
|
+
// Verify the board exists
|
|
84
|
+
const board = await this.getBoardById(boardId);
|
|
85
|
+
this.activeConfig.boardId = boardId;
|
|
86
|
+
await this.saveConfig();
|
|
87
|
+
return board;
|
|
88
|
+
}
|
|
89
|
+
/**
|
|
90
|
+
* Set the active workspace
|
|
91
|
+
*/
|
|
92
|
+
async setActiveWorkspace(workspaceId) {
|
|
93
|
+
// Verify the workspace exists
|
|
94
|
+
const workspace = await this.getWorkspaceById(workspaceId);
|
|
95
|
+
this.activeConfig.workspaceId = workspaceId;
|
|
96
|
+
await this.saveConfig();
|
|
97
|
+
return workspace;
|
|
98
|
+
}
|
|
20
99
|
async handleRequest(request) {
|
|
21
100
|
try {
|
|
22
101
|
return await request();
|
|
@@ -33,6 +112,51 @@ export class TrelloClient {
|
|
|
33
112
|
throw error;
|
|
34
113
|
}
|
|
35
114
|
}
|
|
115
|
+
/**
|
|
116
|
+
* List all boards the user has access to
|
|
117
|
+
*/
|
|
118
|
+
async listBoards() {
|
|
119
|
+
return this.handleRequest(async () => {
|
|
120
|
+
const response = await this.axiosInstance.get('/members/me/boards');
|
|
121
|
+
return response.data;
|
|
122
|
+
});
|
|
123
|
+
}
|
|
124
|
+
/**
|
|
125
|
+
* Get a specific board by ID
|
|
126
|
+
*/
|
|
127
|
+
async getBoardById(boardId) {
|
|
128
|
+
return this.handleRequest(async () => {
|
|
129
|
+
const response = await this.axiosInstance.get(`/boards/${boardId}`);
|
|
130
|
+
return response.data;
|
|
131
|
+
});
|
|
132
|
+
}
|
|
133
|
+
/**
|
|
134
|
+
* List all workspaces the user has access to
|
|
135
|
+
*/
|
|
136
|
+
async listWorkspaces() {
|
|
137
|
+
return this.handleRequest(async () => {
|
|
138
|
+
const response = await this.axiosInstance.get('/members/me/organizations');
|
|
139
|
+
return response.data;
|
|
140
|
+
});
|
|
141
|
+
}
|
|
142
|
+
/**
|
|
143
|
+
* Get a specific workspace by ID
|
|
144
|
+
*/
|
|
145
|
+
async getWorkspaceById(workspaceId) {
|
|
146
|
+
return this.handleRequest(async () => {
|
|
147
|
+
const response = await this.axiosInstance.get(`/organizations/${workspaceId}`);
|
|
148
|
+
return response.data;
|
|
149
|
+
});
|
|
150
|
+
}
|
|
151
|
+
/**
|
|
152
|
+
* List boards in a specific workspace
|
|
153
|
+
*/
|
|
154
|
+
async listBoardsInWorkspace(workspaceId) {
|
|
155
|
+
return this.handleRequest(async () => {
|
|
156
|
+
const response = await this.axiosInstance.get(`/organizations/${workspaceId}/boards`);
|
|
157
|
+
return response.data;
|
|
158
|
+
});
|
|
159
|
+
}
|
|
36
160
|
async getCardsByList(listId) {
|
|
37
161
|
return this.handleRequest(async () => {
|
|
38
162
|
const response = await this.axiosInstance.get(`/lists/${listId}/cards`);
|
|
@@ -41,13 +165,13 @@ export class TrelloClient {
|
|
|
41
165
|
}
|
|
42
166
|
async getLists() {
|
|
43
167
|
return this.handleRequest(async () => {
|
|
44
|
-
const response = await this.axiosInstance.get(`/boards/${this.
|
|
168
|
+
const response = await this.axiosInstance.get(`/boards/${this.activeConfig.boardId}/lists`);
|
|
45
169
|
return response.data;
|
|
46
170
|
});
|
|
47
171
|
}
|
|
48
172
|
async getRecentActivity(limit = 10) {
|
|
49
173
|
return this.handleRequest(async () => {
|
|
50
|
-
const response = await this.axiosInstance.get(`/boards/${this.
|
|
174
|
+
const response = await this.axiosInstance.get(`/boards/${this.activeConfig.boardId}/actions`, {
|
|
51
175
|
params: { limit },
|
|
52
176
|
});
|
|
53
177
|
return response.data;
|
|
@@ -96,7 +220,7 @@ export class TrelloClient {
|
|
|
96
220
|
return this.handleRequest(async () => {
|
|
97
221
|
const response = await this.axiosInstance.post('/lists', {
|
|
98
222
|
name,
|
|
99
|
-
idBoard: this.
|
|
223
|
+
idBoard: this.activeConfig.boardId,
|
|
100
224
|
});
|
|
101
225
|
return response.data;
|
|
102
226
|
});
|
|
@@ -115,5 +239,15 @@ export class TrelloClient {
|
|
|
115
239
|
return response.data;
|
|
116
240
|
});
|
|
117
241
|
}
|
|
242
|
+
async attachImageToCard(cardId, imageUrl, name) {
|
|
243
|
+
return this.handleRequest(async () => {
|
|
244
|
+
// Attaching an image directly from URL without downloading it
|
|
245
|
+
const response = await this.axiosInstance.post(`/cards/${cardId}/attachments`, {
|
|
246
|
+
url: imageUrl,
|
|
247
|
+
name: name || 'Image Attachment',
|
|
248
|
+
});
|
|
249
|
+
return response.data;
|
|
250
|
+
});
|
|
251
|
+
}
|
|
118
252
|
}
|
|
119
253
|
//# sourceMappingURL=trello-client.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"trello-client.js","sourceRoot":"","sources":["../src/trello-client.ts"],"names":[],"mappings":"AAAA,OAAO,KAAwB,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"trello-client.js","sourceRoot":"","sources":["../src/trello-client.ts"],"names":[],"mappings":"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"}
|
package/build/types.d.ts
CHANGED
|
@@ -2,6 +2,24 @@ export interface TrelloConfig {
|
|
|
2
2
|
apiKey: string;
|
|
3
3
|
token: string;
|
|
4
4
|
boardId: string;
|
|
5
|
+
workspaceId?: string;
|
|
6
|
+
}
|
|
7
|
+
export interface TrelloBoard {
|
|
8
|
+
id: string;
|
|
9
|
+
name: string;
|
|
10
|
+
desc: string;
|
|
11
|
+
closed: boolean;
|
|
12
|
+
idOrganization: string;
|
|
13
|
+
url: string;
|
|
14
|
+
shortUrl: string;
|
|
15
|
+
}
|
|
16
|
+
export interface TrelloWorkspace {
|
|
17
|
+
id: string;
|
|
18
|
+
name: string;
|
|
19
|
+
displayName: string;
|
|
20
|
+
desc?: string;
|
|
21
|
+
url: string;
|
|
22
|
+
website?: string;
|
|
5
23
|
}
|
|
6
24
|
export interface TrelloCard {
|
|
7
25
|
id: string;
|
|
@@ -58,6 +76,22 @@ export interface TrelloMember {
|
|
|
58
76
|
username: string;
|
|
59
77
|
avatarUrl: string | null;
|
|
60
78
|
}
|
|
79
|
+
export interface TrelloAttachment {
|
|
80
|
+
id: string;
|
|
81
|
+
name: string;
|
|
82
|
+
url: string;
|
|
83
|
+
fileName: string | null;
|
|
84
|
+
bytes: number | null;
|
|
85
|
+
date: string;
|
|
86
|
+
mimeType: string;
|
|
87
|
+
previews: Array<{
|
|
88
|
+
id: string;
|
|
89
|
+
url: string;
|
|
90
|
+
width: number;
|
|
91
|
+
height: number;
|
|
92
|
+
}>;
|
|
93
|
+
isUpload: boolean;
|
|
94
|
+
}
|
|
61
95
|
export interface RateLimiter {
|
|
62
96
|
canMakeRequest(): boolean;
|
|
63
97
|
waitForAvailableToken(): Promise<void>;
|
package/build/validators.d.ts
CHANGED
|
@@ -37,3 +37,17 @@ export declare function validateMoveCardRequest(args: Record<string, unknown>):
|
|
|
37
37
|
cardId: string;
|
|
38
38
|
listId: string;
|
|
39
39
|
};
|
|
40
|
+
export declare function validateAttachImageRequest(args: Record<string, unknown>): {
|
|
41
|
+
cardId: string;
|
|
42
|
+
imageUrl: string;
|
|
43
|
+
name?: string;
|
|
44
|
+
};
|
|
45
|
+
export declare function validateSetActiveBoardRequest(args: Record<string, unknown>): {
|
|
46
|
+
boardId: string;
|
|
47
|
+
};
|
|
48
|
+
export declare function validateSetActiveWorkspaceRequest(args: Record<string, unknown>): {
|
|
49
|
+
workspaceId: string;
|
|
50
|
+
};
|
|
51
|
+
export declare function validateListBoardsInWorkspaceRequest(args: Record<string, unknown>): {
|
|
52
|
+
workspaceId: string;
|
|
53
|
+
};
|
package/build/validators.js
CHANGED
|
@@ -102,4 +102,46 @@ export function validateMoveCardRequest(args) {
|
|
|
102
102
|
listId: validateString(args.listId, 'listId'),
|
|
103
103
|
};
|
|
104
104
|
}
|
|
105
|
+
export function validateAttachImageRequest(args) {
|
|
106
|
+
if (!args.cardId || !args.imageUrl) {
|
|
107
|
+
throw new McpError(ErrorCode.InvalidParams, 'cardId and imageUrl are required');
|
|
108
|
+
}
|
|
109
|
+
// Validate image URL format
|
|
110
|
+
const imageUrl = validateString(args.imageUrl, 'imageUrl');
|
|
111
|
+
try {
|
|
112
|
+
new URL(imageUrl);
|
|
113
|
+
}
|
|
114
|
+
catch (e) {
|
|
115
|
+
throw new McpError(ErrorCode.InvalidParams, 'imageUrl must be a valid URL');
|
|
116
|
+
}
|
|
117
|
+
return {
|
|
118
|
+
cardId: validateString(args.cardId, 'cardId'),
|
|
119
|
+
imageUrl: imageUrl,
|
|
120
|
+
name: validateOptionalString(args.name),
|
|
121
|
+
};
|
|
122
|
+
}
|
|
123
|
+
export function validateSetActiveBoardRequest(args) {
|
|
124
|
+
if (!args.boardId) {
|
|
125
|
+
throw new McpError(ErrorCode.InvalidParams, 'boardId is required');
|
|
126
|
+
}
|
|
127
|
+
return {
|
|
128
|
+
boardId: validateString(args.boardId, 'boardId'),
|
|
129
|
+
};
|
|
130
|
+
}
|
|
131
|
+
export function validateSetActiveWorkspaceRequest(args) {
|
|
132
|
+
if (!args.workspaceId) {
|
|
133
|
+
throw new McpError(ErrorCode.InvalidParams, 'workspaceId is required');
|
|
134
|
+
}
|
|
135
|
+
return {
|
|
136
|
+
workspaceId: validateString(args.workspaceId, 'workspaceId'),
|
|
137
|
+
};
|
|
138
|
+
}
|
|
139
|
+
export function validateListBoardsInWorkspaceRequest(args) {
|
|
140
|
+
if (!args.workspaceId) {
|
|
141
|
+
throw new McpError(ErrorCode.InvalidParams, 'workspaceId is required');
|
|
142
|
+
}
|
|
143
|
+
return {
|
|
144
|
+
workspaceId: validateString(args.workspaceId, 'workspaceId'),
|
|
145
|
+
};
|
|
146
|
+
}
|
|
105
147
|
//# sourceMappingURL=validators.js.map
|
package/build/validators.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validators.js","sourceRoot":"","sources":["../src/validators.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"validators.js","sourceRoot":"","sources":["../src/validators.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@delorenj/mcp-server-trello",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.3.0",
|
|
4
4
|
"description": "A Model Context Protocol (MCP) server for interacting with Trello boards",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "build/index.js",
|
|
@@ -41,7 +41,8 @@
|
|
|
41
41
|
"homepage": "https://github.com/delorenj/mcp-server-trello#readme",
|
|
42
42
|
"dependencies": {
|
|
43
43
|
"@modelcontextprotocol/sdk": "^1.0.4",
|
|
44
|
-
"axios": "^1.6.2"
|
|
44
|
+
"axios": "^1.6.2",
|
|
45
|
+
"mcp-evals": "^1.0.18"
|
|
45
46
|
},
|
|
46
47
|
"devDependencies": {
|
|
47
48
|
"@types/node": "^20.10.0",
|