@delorenj/mcp-server-trello 0.2.1 → 1.0.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 +362 -28
- 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 +1 -337
- package/build/index.js.map +1 -1
- package/build/rate-limiter.d.ts +14 -0
- package/build/rate-limiter.js +15 -1
- package/build/rate-limiter.js.map +1 -1
- package/build/trello-client.d.ts +57 -11
- package/build/trello-client.js +170 -19
- package/build/trello-client.js.map +1 -1
- package/build/types.d.ts +20 -1
- package/build/validators.d.ts +21 -0
- package/build/validators.js +38 -1
- package/build/validators.js.map +1 -1
- package/package.json +7 -3
package/build/trello-client.js
CHANGED
|
@@ -1,8 +1,24 @@
|
|
|
1
1
|
import axios from 'axios';
|
|
2
2
|
import { createTrelloRateLimiters } from './rate-limiter.js';
|
|
3
|
+
import { McpError, ErrorCode } from '@modelcontextprotocol/sdk/types.js';
|
|
4
|
+
import * as fs from 'fs/promises';
|
|
5
|
+
import * as path from 'path';
|
|
6
|
+
// Path for storing active board/workspace configuration
|
|
7
|
+
const CONFIG_DIR = path.join(process.env.HOME || process.env.USERPROFILE || '.', '.trello-mcp');
|
|
8
|
+
const CONFIG_FILE = path.join(CONFIG_DIR, 'config.json');
|
|
3
9
|
export class TrelloClient {
|
|
4
10
|
constructor(config) {
|
|
5
11
|
this.config = config;
|
|
12
|
+
this.defaultBoardId = config.defaultBoardId;
|
|
13
|
+
this.activeConfig = { ...config };
|
|
14
|
+
// If boardId is provided in config, use it as the active board
|
|
15
|
+
if (config.boardId && !this.activeConfig.boardId) {
|
|
16
|
+
this.activeConfig.boardId = config.boardId;
|
|
17
|
+
}
|
|
18
|
+
// If defaultBoardId is provided but boardId is not, use defaultBoardId
|
|
19
|
+
if (this.defaultBoardId && !this.activeConfig.boardId) {
|
|
20
|
+
this.activeConfig.boardId = this.defaultBoardId;
|
|
21
|
+
}
|
|
6
22
|
this.axiosInstance = axios.create({
|
|
7
23
|
baseURL: 'https://api.trello.com/1',
|
|
8
24
|
params: {
|
|
@@ -17,43 +33,173 @@ export class TrelloClient {
|
|
|
17
33
|
return config;
|
|
18
34
|
});
|
|
19
35
|
}
|
|
20
|
-
|
|
36
|
+
/**
|
|
37
|
+
* Load saved configuration from disk
|
|
38
|
+
*/
|
|
39
|
+
async loadConfig() {
|
|
40
|
+
try {
|
|
41
|
+
await fs.mkdir(CONFIG_DIR, { recursive: true });
|
|
42
|
+
const data = await fs.readFile(CONFIG_FILE, 'utf8');
|
|
43
|
+
const savedConfig = JSON.parse(data);
|
|
44
|
+
// Only update boardId and workspaceId, keep credentials from env
|
|
45
|
+
if (savedConfig.boardId) {
|
|
46
|
+
this.activeConfig.boardId = savedConfig.boardId;
|
|
47
|
+
}
|
|
48
|
+
if (savedConfig.workspaceId) {
|
|
49
|
+
this.activeConfig.workspaceId = savedConfig.workspaceId;
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
catch (error) {
|
|
53
|
+
// File might not exist yet, that's okay
|
|
54
|
+
if (error instanceof Error && 'code' in error && error.code !== 'ENOENT') {
|
|
55
|
+
throw error;
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* Save current configuration to disk
|
|
61
|
+
*/
|
|
62
|
+
async saveConfig() {
|
|
63
|
+
try {
|
|
64
|
+
await fs.mkdir(CONFIG_DIR, { recursive: true });
|
|
65
|
+
const configToSave = {
|
|
66
|
+
boardId: this.activeConfig.boardId,
|
|
67
|
+
workspaceId: this.activeConfig.workspaceId,
|
|
68
|
+
};
|
|
69
|
+
await fs.writeFile(CONFIG_FILE, JSON.stringify(configToSave, null, 2));
|
|
70
|
+
}
|
|
71
|
+
catch (error) {
|
|
72
|
+
// Failed to save configuration
|
|
73
|
+
throw new Error('Failed to save configuration');
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
/**
|
|
77
|
+
* Get the current active board ID
|
|
78
|
+
*/
|
|
79
|
+
get activeBoardId() {
|
|
80
|
+
return this.activeConfig.boardId;
|
|
81
|
+
}
|
|
82
|
+
/**
|
|
83
|
+
* Get the current active workspace ID
|
|
84
|
+
*/
|
|
85
|
+
get activeWorkspaceId() {
|
|
86
|
+
return this.activeConfig.workspaceId;
|
|
87
|
+
}
|
|
88
|
+
/**
|
|
89
|
+
* Set the active board
|
|
90
|
+
*/
|
|
91
|
+
async setActiveBoard(boardId) {
|
|
92
|
+
// Verify the board exists
|
|
93
|
+
const board = await this.getBoardById(boardId);
|
|
94
|
+
this.activeConfig.boardId = boardId;
|
|
95
|
+
await this.saveConfig();
|
|
96
|
+
return board;
|
|
97
|
+
}
|
|
98
|
+
/**
|
|
99
|
+
* Set the active workspace
|
|
100
|
+
*/
|
|
101
|
+
async setActiveWorkspace(workspaceId) {
|
|
102
|
+
// Verify the workspace exists
|
|
103
|
+
const workspace = await this.getWorkspaceById(workspaceId);
|
|
104
|
+
this.activeConfig.workspaceId = workspaceId;
|
|
105
|
+
await this.saveConfig();
|
|
106
|
+
return workspace;
|
|
107
|
+
}
|
|
108
|
+
async handleRequest(requestFn) {
|
|
21
109
|
try {
|
|
22
|
-
return await
|
|
110
|
+
return await requestFn();
|
|
23
111
|
}
|
|
24
112
|
catch (error) {
|
|
25
113
|
if (axios.isAxiosError(error)) {
|
|
26
114
|
if (error.response?.status === 429) {
|
|
27
115
|
// Rate limit exceeded, wait and retry
|
|
28
116
|
await new Promise(resolve => setTimeout(resolve, 1000));
|
|
29
|
-
return this.handleRequest(
|
|
117
|
+
return this.handleRequest(requestFn);
|
|
30
118
|
}
|
|
31
|
-
|
|
119
|
+
// Trello API Error
|
|
120
|
+
// Customize error handling based on Trello's error structure if needed
|
|
121
|
+
throw new McpError(ErrorCode.InternalError, `Trello API Error: ${error.response?.status} ${error.message}`, error.response?.data);
|
|
122
|
+
}
|
|
123
|
+
else {
|
|
124
|
+
// Unexpected Error
|
|
125
|
+
throw new McpError(ErrorCode.InternalError, 'An unexpected error occurred');
|
|
32
126
|
}
|
|
33
|
-
throw error;
|
|
34
127
|
}
|
|
35
128
|
}
|
|
36
|
-
|
|
129
|
+
/**
|
|
130
|
+
* List all boards the user has access to
|
|
131
|
+
*/
|
|
132
|
+
async listBoards() {
|
|
133
|
+
return this.handleRequest(async () => {
|
|
134
|
+
const response = await this.axiosInstance.get('/members/me/boards');
|
|
135
|
+
return response.data;
|
|
136
|
+
});
|
|
137
|
+
}
|
|
138
|
+
/**
|
|
139
|
+
* Get a specific board by ID
|
|
140
|
+
*/
|
|
141
|
+
async getBoardById(boardId) {
|
|
142
|
+
return this.handleRequest(async () => {
|
|
143
|
+
const response = await this.axiosInstance.get(`/boards/${boardId}`);
|
|
144
|
+
return response.data;
|
|
145
|
+
});
|
|
146
|
+
}
|
|
147
|
+
/**
|
|
148
|
+
* List all workspaces the user has access to
|
|
149
|
+
*/
|
|
150
|
+
async listWorkspaces() {
|
|
151
|
+
return this.handleRequest(async () => {
|
|
152
|
+
const response = await this.axiosInstance.get('/members/me/organizations');
|
|
153
|
+
return response.data;
|
|
154
|
+
});
|
|
155
|
+
}
|
|
156
|
+
/**
|
|
157
|
+
* Get a specific workspace by ID
|
|
158
|
+
*/
|
|
159
|
+
async getWorkspaceById(workspaceId) {
|
|
160
|
+
return this.handleRequest(async () => {
|
|
161
|
+
const response = await this.axiosInstance.get(`/organizations/${workspaceId}`);
|
|
162
|
+
return response.data;
|
|
163
|
+
});
|
|
164
|
+
}
|
|
165
|
+
/**
|
|
166
|
+
* List boards in a specific workspace
|
|
167
|
+
*/
|
|
168
|
+
async listBoardsInWorkspace(workspaceId) {
|
|
169
|
+
return this.handleRequest(async () => {
|
|
170
|
+
const response = await this.axiosInstance.get(`/organizations/${workspaceId}/boards`);
|
|
171
|
+
return response.data;
|
|
172
|
+
});
|
|
173
|
+
}
|
|
174
|
+
async getCardsByList(boardId, listId) {
|
|
37
175
|
return this.handleRequest(async () => {
|
|
38
176
|
const response = await this.axiosInstance.get(`/lists/${listId}/cards`);
|
|
39
177
|
return response.data;
|
|
40
178
|
});
|
|
41
179
|
}
|
|
42
|
-
async getLists() {
|
|
180
|
+
async getLists(boardId) {
|
|
181
|
+
const effectiveBoardId = boardId || this.activeConfig.boardId || this.defaultBoardId;
|
|
182
|
+
if (!effectiveBoardId) {
|
|
183
|
+
throw new McpError(ErrorCode.InvalidParams, 'boardId is required when no default board is configured');
|
|
184
|
+
}
|
|
43
185
|
return this.handleRequest(async () => {
|
|
44
|
-
const response = await this.axiosInstance.get(`/boards/${
|
|
186
|
+
const response = await this.axiosInstance.get(`/boards/${effectiveBoardId}/lists`);
|
|
45
187
|
return response.data;
|
|
46
188
|
});
|
|
47
189
|
}
|
|
48
|
-
async getRecentActivity(limit = 10) {
|
|
190
|
+
async getRecentActivity(boardId, limit = 10) {
|
|
191
|
+
const effectiveBoardId = boardId || this.activeConfig.boardId || this.defaultBoardId;
|
|
192
|
+
if (!effectiveBoardId) {
|
|
193
|
+
throw new McpError(ErrorCode.InvalidParams, 'boardId is required when no default board is configured');
|
|
194
|
+
}
|
|
49
195
|
return this.handleRequest(async () => {
|
|
50
|
-
const response = await this.axiosInstance.get(`/boards/${
|
|
196
|
+
const response = await this.axiosInstance.get(`/boards/${effectiveBoardId}/actions`, {
|
|
51
197
|
params: { limit },
|
|
52
198
|
});
|
|
53
199
|
return response.data;
|
|
54
200
|
});
|
|
55
201
|
}
|
|
56
|
-
async addCard(params) {
|
|
202
|
+
async addCard(boardId, params) {
|
|
57
203
|
return this.handleRequest(async () => {
|
|
58
204
|
const response = await this.axiosInstance.post('/cards', {
|
|
59
205
|
idList: params.listId,
|
|
@@ -65,7 +211,7 @@ export class TrelloClient {
|
|
|
65
211
|
return response.data;
|
|
66
212
|
});
|
|
67
213
|
}
|
|
68
|
-
async updateCard(params) {
|
|
214
|
+
async updateCard(boardId, params) {
|
|
69
215
|
return this.handleRequest(async () => {
|
|
70
216
|
const response = await this.axiosInstance.put(`/cards/${params.cardId}`, {
|
|
71
217
|
name: params.name,
|
|
@@ -76,7 +222,7 @@ export class TrelloClient {
|
|
|
76
222
|
return response.data;
|
|
77
223
|
});
|
|
78
224
|
}
|
|
79
|
-
async archiveCard(cardId) {
|
|
225
|
+
async archiveCard(boardId, cardId) {
|
|
80
226
|
return this.handleRequest(async () => {
|
|
81
227
|
const response = await this.axiosInstance.put(`/cards/${cardId}`, {
|
|
82
228
|
closed: true,
|
|
@@ -84,24 +230,30 @@ export class TrelloClient {
|
|
|
84
230
|
return response.data;
|
|
85
231
|
});
|
|
86
232
|
}
|
|
87
|
-
async moveCard(cardId, listId) {
|
|
233
|
+
async moveCard(boardId, cardId, listId) {
|
|
234
|
+
const effectiveBoardId = boardId || this.defaultBoardId;
|
|
88
235
|
return this.handleRequest(async () => {
|
|
89
236
|
const response = await this.axiosInstance.put(`/cards/${cardId}`, {
|
|
90
237
|
idList: listId,
|
|
238
|
+
...(effectiveBoardId && { idBoard: effectiveBoardId }),
|
|
91
239
|
});
|
|
92
240
|
return response.data;
|
|
93
241
|
});
|
|
94
242
|
}
|
|
95
|
-
async addList(name) {
|
|
243
|
+
async addList(boardId, name) {
|
|
244
|
+
const effectiveBoardId = boardId || this.activeConfig.boardId || this.defaultBoardId;
|
|
245
|
+
if (!effectiveBoardId) {
|
|
246
|
+
throw new McpError(ErrorCode.InvalidParams, 'boardId is required when no default board is configured');
|
|
247
|
+
}
|
|
96
248
|
return this.handleRequest(async () => {
|
|
97
249
|
const response = await this.axiosInstance.post('/lists', {
|
|
98
250
|
name,
|
|
99
|
-
idBoard:
|
|
251
|
+
idBoard: effectiveBoardId,
|
|
100
252
|
});
|
|
101
253
|
return response.data;
|
|
102
254
|
});
|
|
103
255
|
}
|
|
104
|
-
async archiveList(listId) {
|
|
256
|
+
async archiveList(boardId, listId) {
|
|
105
257
|
return this.handleRequest(async () => {
|
|
106
258
|
const response = await this.axiosInstance.put(`/lists/${listId}/closed`, {
|
|
107
259
|
value: true,
|
|
@@ -115,9 +267,8 @@ export class TrelloClient {
|
|
|
115
267
|
return response.data;
|
|
116
268
|
});
|
|
117
269
|
}
|
|
118
|
-
async attachImageToCard(cardId, imageUrl, name) {
|
|
270
|
+
async attachImageToCard(boardId, cardId, imageUrl, name) {
|
|
119
271
|
return this.handleRequest(async () => {
|
|
120
|
-
// Attaching an image directly from URL without downloading it
|
|
121
272
|
const response = await this.axiosInstance.post(`/cards/${cardId}/attachments`, {
|
|
122
273
|
url: imageUrl,
|
|
123
274
|
name: name || 'Image Attachment',
|
|
@@ -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
|
@@ -1,7 +1,26 @@
|
|
|
1
1
|
export interface TrelloConfig {
|
|
2
2
|
apiKey: string;
|
|
3
3
|
token: string;
|
|
4
|
-
|
|
4
|
+
defaultBoardId?: string;
|
|
5
|
+
boardId?: string;
|
|
6
|
+
workspaceId?: string;
|
|
7
|
+
}
|
|
8
|
+
export interface TrelloBoard {
|
|
9
|
+
id: string;
|
|
10
|
+
name: string;
|
|
11
|
+
desc: string;
|
|
12
|
+
closed: boolean;
|
|
13
|
+
idOrganization: string;
|
|
14
|
+
url: string;
|
|
15
|
+
shortUrl: string;
|
|
16
|
+
}
|
|
17
|
+
export interface TrelloWorkspace {
|
|
18
|
+
id: string;
|
|
19
|
+
name: string;
|
|
20
|
+
displayName: string;
|
|
21
|
+
desc?: string;
|
|
22
|
+
url: string;
|
|
23
|
+
website?: string;
|
|
5
24
|
}
|
|
6
25
|
export interface TrelloCard {
|
|
7
26
|
id: string;
|
package/build/validators.d.ts
CHANGED
|
@@ -5,12 +5,18 @@ export declare function validateOptionalNumber(value: unknown): number | undefin
|
|
|
5
5
|
export declare function validateStringArray(value: unknown): string[];
|
|
6
6
|
export declare function validateOptionalStringArray(value: unknown): string[] | undefined;
|
|
7
7
|
export declare function validateGetCardsListRequest(args: Record<string, unknown>): {
|
|
8
|
+
boardId?: string;
|
|
8
9
|
listId: string;
|
|
9
10
|
};
|
|
11
|
+
export declare function validateGetListsRequest(args: Record<string, unknown>): {
|
|
12
|
+
boardId?: string;
|
|
13
|
+
};
|
|
10
14
|
export declare function validateGetRecentActivityRequest(args: Record<string, unknown>): {
|
|
15
|
+
boardId?: string;
|
|
11
16
|
limit?: number;
|
|
12
17
|
};
|
|
13
18
|
export declare function validateAddCardRequest(args: Record<string, unknown>): {
|
|
19
|
+
boardId?: string;
|
|
14
20
|
listId: string;
|
|
15
21
|
name: string;
|
|
16
22
|
description?: string;
|
|
@@ -18,6 +24,7 @@ export declare function validateAddCardRequest(args: Record<string, unknown>): {
|
|
|
18
24
|
labels?: string[];
|
|
19
25
|
};
|
|
20
26
|
export declare function validateUpdateCardRequest(args: Record<string, unknown>): {
|
|
27
|
+
boardId?: string;
|
|
21
28
|
cardId: string;
|
|
22
29
|
name?: string;
|
|
23
30
|
description?: string;
|
|
@@ -25,20 +32,34 @@ export declare function validateUpdateCardRequest(args: Record<string, unknown>)
|
|
|
25
32
|
labels?: string[];
|
|
26
33
|
};
|
|
27
34
|
export declare function validateArchiveCardRequest(args: Record<string, unknown>): {
|
|
35
|
+
boardId?: string;
|
|
28
36
|
cardId: string;
|
|
29
37
|
};
|
|
30
38
|
export declare function validateAddListRequest(args: Record<string, unknown>): {
|
|
39
|
+
boardId?: string;
|
|
31
40
|
name: string;
|
|
32
41
|
};
|
|
33
42
|
export declare function validateArchiveListRequest(args: Record<string, unknown>): {
|
|
43
|
+
boardId?: string;
|
|
34
44
|
listId: string;
|
|
35
45
|
};
|
|
36
46
|
export declare function validateMoveCardRequest(args: Record<string, unknown>): {
|
|
47
|
+
boardId?: string;
|
|
37
48
|
cardId: string;
|
|
38
49
|
listId: string;
|
|
39
50
|
};
|
|
40
51
|
export declare function validateAttachImageRequest(args: Record<string, unknown>): {
|
|
52
|
+
boardId?: string;
|
|
41
53
|
cardId: string;
|
|
42
54
|
imageUrl: string;
|
|
43
55
|
name?: string;
|
|
44
56
|
};
|
|
57
|
+
export declare function validateSetActiveBoardRequest(args: Record<string, unknown>): {
|
|
58
|
+
boardId: string;
|
|
59
|
+
};
|
|
60
|
+
export declare function validateSetActiveWorkspaceRequest(args: Record<string, unknown>): {
|
|
61
|
+
workspaceId: string;
|
|
62
|
+
};
|
|
63
|
+
export declare function validateListBoardsInWorkspaceRequest(args: Record<string, unknown>): {
|
|
64
|
+
workspaceId: string;
|
|
65
|
+
};
|
package/build/validators.js
CHANGED
|
@@ -37,11 +37,18 @@ export function validateGetCardsListRequest(args) {
|
|
|
37
37
|
throw new McpError(ErrorCode.InvalidParams, 'listId is required');
|
|
38
38
|
}
|
|
39
39
|
return {
|
|
40
|
+
boardId: args.boardId ? validateString(args.boardId, 'boardId') : undefined,
|
|
40
41
|
listId: validateString(args.listId, 'listId'),
|
|
41
42
|
};
|
|
42
43
|
}
|
|
44
|
+
export function validateGetListsRequest(args) {
|
|
45
|
+
return {
|
|
46
|
+
boardId: args.boardId ? validateString(args.boardId, 'boardId') : undefined,
|
|
47
|
+
};
|
|
48
|
+
}
|
|
43
49
|
export function validateGetRecentActivityRequest(args) {
|
|
44
50
|
return {
|
|
51
|
+
boardId: args.boardId ? validateString(args.boardId, 'boardId') : undefined,
|
|
45
52
|
limit: validateOptionalNumber(args.limit),
|
|
46
53
|
};
|
|
47
54
|
}
|
|
@@ -50,6 +57,7 @@ export function validateAddCardRequest(args) {
|
|
|
50
57
|
throw new McpError(ErrorCode.InvalidParams, 'listId and name are required');
|
|
51
58
|
}
|
|
52
59
|
return {
|
|
60
|
+
boardId: args.boardId ? validateString(args.boardId, 'boardId') : undefined,
|
|
53
61
|
listId: validateString(args.listId, 'listId'),
|
|
54
62
|
name: validateString(args.name, 'name'),
|
|
55
63
|
description: validateOptionalString(args.description),
|
|
@@ -62,6 +70,7 @@ export function validateUpdateCardRequest(args) {
|
|
|
62
70
|
throw new McpError(ErrorCode.InvalidParams, 'cardId is required');
|
|
63
71
|
}
|
|
64
72
|
return {
|
|
73
|
+
boardId: args.boardId ? validateString(args.boardId, 'boardId') : undefined,
|
|
65
74
|
cardId: validateString(args.cardId, 'cardId'),
|
|
66
75
|
name: validateOptionalString(args.name),
|
|
67
76
|
description: validateOptionalString(args.description),
|
|
@@ -74,6 +83,7 @@ export function validateArchiveCardRequest(args) {
|
|
|
74
83
|
throw new McpError(ErrorCode.InvalidParams, 'cardId is required');
|
|
75
84
|
}
|
|
76
85
|
return {
|
|
86
|
+
boardId: args.boardId ? validateString(args.boardId, 'boardId') : undefined,
|
|
77
87
|
cardId: validateString(args.cardId, 'cardId'),
|
|
78
88
|
};
|
|
79
89
|
}
|
|
@@ -82,6 +92,7 @@ export function validateAddListRequest(args) {
|
|
|
82
92
|
throw new McpError(ErrorCode.InvalidParams, 'name is required');
|
|
83
93
|
}
|
|
84
94
|
return {
|
|
95
|
+
boardId: args.boardId ? validateString(args.boardId, 'boardId') : undefined,
|
|
85
96
|
name: validateString(args.name, 'name'),
|
|
86
97
|
};
|
|
87
98
|
}
|
|
@@ -90,6 +101,7 @@ export function validateArchiveListRequest(args) {
|
|
|
90
101
|
throw new McpError(ErrorCode.InvalidParams, 'listId is required');
|
|
91
102
|
}
|
|
92
103
|
return {
|
|
104
|
+
boardId: args.boardId ? validateString(args.boardId, 'boardId') : undefined,
|
|
93
105
|
listId: validateString(args.listId, 'listId'),
|
|
94
106
|
};
|
|
95
107
|
}
|
|
@@ -98,6 +110,7 @@ export function validateMoveCardRequest(args) {
|
|
|
98
110
|
throw new McpError(ErrorCode.InvalidParams, 'cardId and listId are required');
|
|
99
111
|
}
|
|
100
112
|
return {
|
|
113
|
+
boardId: args.boardId ? validateString(args.boardId, 'boardId') : undefined,
|
|
101
114
|
cardId: validateString(args.cardId, 'cardId'),
|
|
102
115
|
listId: validateString(args.listId, 'listId'),
|
|
103
116
|
};
|
|
@@ -106,7 +119,6 @@ export function validateAttachImageRequest(args) {
|
|
|
106
119
|
if (!args.cardId || !args.imageUrl) {
|
|
107
120
|
throw new McpError(ErrorCode.InvalidParams, 'cardId and imageUrl are required');
|
|
108
121
|
}
|
|
109
|
-
// Validate image URL format
|
|
110
122
|
const imageUrl = validateString(args.imageUrl, 'imageUrl');
|
|
111
123
|
try {
|
|
112
124
|
new URL(imageUrl);
|
|
@@ -115,9 +127,34 @@ export function validateAttachImageRequest(args) {
|
|
|
115
127
|
throw new McpError(ErrorCode.InvalidParams, 'imageUrl must be a valid URL');
|
|
116
128
|
}
|
|
117
129
|
return {
|
|
130
|
+
boardId: args.boardId ? validateString(args.boardId, 'boardId') : undefined,
|
|
118
131
|
cardId: validateString(args.cardId, 'cardId'),
|
|
119
132
|
imageUrl: imageUrl,
|
|
120
133
|
name: validateOptionalString(args.name),
|
|
121
134
|
};
|
|
122
135
|
}
|
|
136
|
+
export function validateSetActiveBoardRequest(args) {
|
|
137
|
+
if (!args.boardId) {
|
|
138
|
+
throw new McpError(ErrorCode.InvalidParams, 'boardId is required');
|
|
139
|
+
}
|
|
140
|
+
return {
|
|
141
|
+
boardId: validateString(args.boardId, 'boardId'),
|
|
142
|
+
};
|
|
143
|
+
}
|
|
144
|
+
export function validateSetActiveWorkspaceRequest(args) {
|
|
145
|
+
if (!args.workspaceId) {
|
|
146
|
+
throw new McpError(ErrorCode.InvalidParams, 'workspaceId is required');
|
|
147
|
+
}
|
|
148
|
+
return {
|
|
149
|
+
workspaceId: validateString(args.workspaceId, 'workspaceId'),
|
|
150
|
+
};
|
|
151
|
+
}
|
|
152
|
+
export function validateListBoardsInWorkspaceRequest(args) {
|
|
153
|
+
if (!args.workspaceId) {
|
|
154
|
+
throw new McpError(ErrorCode.InvalidParams, 'workspaceId is required');
|
|
155
|
+
}
|
|
156
|
+
return {
|
|
157
|
+
workspaceId: validateString(args.workspaceId, 'workspaceId'),
|
|
158
|
+
};
|
|
159
|
+
}
|
|
123
160
|
//# 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":"AAAA,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,oCAAoC,CAAC;AAEzE,MAAM,UAAU,cAAc,CAAC,KAAc,EAAE,KAAa;IAC1D,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,MAAM,IAAI,QAAQ,CAAC,SAAS,CAAC,aAAa,EAAE,GAAG,KAAK,mBAAmB,CAAC,CAAC;IAC3E,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,MAAM,UAAU,sBAAsB,CAAC,KAAc;IACnD,IAAI,KAAK,KAAK,SAAS;QAAE,OAAO,SAAS,CAAC;IAC1C,OAAO,cAAc,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;AACxC,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,KAAc,EAAE,KAAa;IAC1D,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,MAAM,IAAI,QAAQ,CAAC,SAAS,CAAC,aAAa,EAAE,GAAG,KAAK,mBAAmB,CAAC,CAAC;IAC3E,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,MAAM,UAAU,sBAAsB,CAAC,KAAc;IACnD,IAAI,KAAK,KAAK,SAAS;QAAE,OAAO,SAAS,CAAC;IAC1C,OAAO,cAAc,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;AACxC,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,KAAc;IAChD,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,IAAI,KAAK,QAAQ,CAAC,EAAE,CAAC;QAC5E,MAAM,IAAI,QAAQ,CAAC,SAAS,CAAC,aAAa,EAAE,mCAAmC,CAAC,CAAC;IACnF,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,MAAM,UAAU,2BAA2B,CAAC,KAAc;IACxD,IAAI,KAAK,KAAK,SAAS;QAAE,OAAO,SAAS,CAAC;IAC1C,OAAO,mBAAmB,CAAC,KAAK,CAAC,CAAC;AACpC,CAAC;AAED,MAAM,UAAU,2BAA2B,CAAC,IAA6B;
|
|
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": "1.0.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",
|
|
@@ -9,7 +9,8 @@
|
|
|
9
9
|
"mcp-server-trello": "./build/index.js"
|
|
10
10
|
},
|
|
11
11
|
"scripts": {
|
|
12
|
-
"build": "tsc && chmod +x build/index.js",
|
|
12
|
+
"build:dev": "tsc && chmod +x build/index.js",
|
|
13
|
+
"build": "tsc && terser build/index.js --compress drop_console=true --mangle --output build/index.js && chmod +x build/index.js",
|
|
13
14
|
"start": "node build/index.js",
|
|
14
15
|
"dev": "ts-node --esm src/index.ts",
|
|
15
16
|
"lint": "eslint . --ext .ts",
|
|
@@ -41,9 +42,11 @@
|
|
|
41
42
|
"homepage": "https://github.com/delorenj/mcp-server-trello#readme",
|
|
42
43
|
"dependencies": {
|
|
43
44
|
"@modelcontextprotocol/sdk": "^1.0.4",
|
|
44
|
-
"axios": "^1.6.2"
|
|
45
|
+
"axios": "^1.6.2",
|
|
46
|
+
"mcp-evals": "^1.0.18"
|
|
45
47
|
},
|
|
46
48
|
"devDependencies": {
|
|
49
|
+
"@ai-sdk/openai": "^1.3.23",
|
|
47
50
|
"@types/node": "^20.10.0",
|
|
48
51
|
"@typescript-eslint/eslint-plugin": "^6.12.0",
|
|
49
52
|
"@typescript-eslint/parser": "^6.12.0",
|
|
@@ -51,6 +54,7 @@
|
|
|
51
54
|
"eslint-config-prettier": "^9.0.0",
|
|
52
55
|
"eslint-plugin-prettier": "^5.0.1",
|
|
53
56
|
"prettier": "^3.1.0",
|
|
57
|
+
"terser": "^5.24.0",
|
|
54
58
|
"ts-node": "^10.9.1",
|
|
55
59
|
"typescript": "^5.3.2"
|
|
56
60
|
},
|