@grackle-ai/mcp 0.19.0 → 0.21.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/dist/error-handler.d.ts +7 -0
- package/dist/error-handler.d.ts.map +1 -0
- package/dist/error-handler.js +40 -0
- package/dist/error-handler.js.map +1 -0
- package/dist/mcp-server.d.ts.map +1 -1
- package/dist/mcp-server.js +29 -7
- package/dist/mcp-server.js.map +1 -1
- package/dist/result-helpers.d.ts +7 -0
- package/dist/result-helpers.d.ts.map +1 -0
- package/dist/result-helpers.js +15 -0
- package/dist/result-helpers.js.map +1 -0
- package/dist/tool-registry.d.ts +12 -9
- package/dist/tool-registry.d.ts.map +1 -1
- package/dist/tool-registry.js +6 -0
- package/dist/tool-registry.js.map +1 -1
- package/dist/tools/env.d.ts +4 -0
- package/dist/tools/env.d.ts.map +1 -0
- package/dist/tools/env.js +267 -0
- package/dist/tools/env.js.map +1 -0
- package/dist/tools/finding.d.ts +4 -0
- package/dist/tools/finding.d.ts.map +1 -0
- package/dist/tools/finding.js +95 -0
- package/dist/tools/finding.js.map +1 -0
- package/dist/tools/index.d.ts.map +1 -1
- package/dist/tools/index.js +14 -4
- package/dist/tools/index.js.map +1 -1
- package/dist/tools/logs.d.ts +4 -0
- package/dist/tools/logs.d.ts.map +1 -0
- package/dist/tools/logs.js +149 -0
- package/dist/tools/logs.js.map +1 -0
- package/dist/tools/persona.d.ts +4 -0
- package/dist/tools/persona.d.ts.map +1 -0
- package/dist/tools/persona.js +172 -0
- package/dist/tools/persona.js.map +1 -0
- package/dist/tools/project.d.ts +4 -0
- package/dist/tools/project.d.ts.map +1 -0
- package/dist/tools/project.js +208 -0
- package/dist/tools/project.js.map +1 -0
- package/dist/tools/session.d.ts +4 -0
- package/dist/tools/session.d.ts.map +1 -0
- package/dist/tools/session.js +239 -0
- package/dist/tools/session.js.map +1 -0
- package/dist/tools/task.d.ts +4 -0
- package/dist/tools/task.d.ts.map +1 -0
- package/dist/tools/task.js +398 -0
- package/dist/tools/task.js.map +1 -0
- package/package.json +4 -2
- package/dist/tools/list-environments.d.ts +0 -4
- package/dist/tools/list-environments.d.ts.map +0 -1
- package/dist/tools/list-environments.js +0 -28
- package/dist/tools/list-environments.js.map +0 -1
- package/dist/tools/list-projects.d.ts +0 -4
- package/dist/tools/list-projects.d.ts.map +0 -1
- package/dist/tools/list-projects.js +0 -28
- package/dist/tools/list-projects.js.map +0 -1
|
@@ -0,0 +1,398 @@
|
|
|
1
|
+
import { taskStatusToEnum, taskStatusToString, issueStateToEnum, } from "@grackle-ai/common";
|
|
2
|
+
import { z } from "zod";
|
|
3
|
+
import { jsonResult } from "../result-helpers.js";
|
|
4
|
+
import { grpcErrorToToolResult } from "../error-handler.js";
|
|
5
|
+
/** Convert a proto Task message to a plain object with human-readable status. */
|
|
6
|
+
function taskToJson(task) {
|
|
7
|
+
return {
|
|
8
|
+
...task,
|
|
9
|
+
status: taskStatusToString(task.status) || task.status,
|
|
10
|
+
};
|
|
11
|
+
}
|
|
12
|
+
/** MCP tools for Grackle task management (list, create, show, update, start, delete, approve, reject, import). */
|
|
13
|
+
export const taskTools = [
|
|
14
|
+
// ── task_list ───────────────────────────────────────────────────────────
|
|
15
|
+
{
|
|
16
|
+
name: "task_list",
|
|
17
|
+
group: "task",
|
|
18
|
+
description: "List all tasks in a Grackle project with their status, title, and assignment information.",
|
|
19
|
+
inputSchema: z.object({
|
|
20
|
+
projectId: z.string().describe("The project ID to list tasks for"),
|
|
21
|
+
}),
|
|
22
|
+
rpcMethod: "listTasks",
|
|
23
|
+
mutating: false,
|
|
24
|
+
annotations: {
|
|
25
|
+
readOnlyHint: true,
|
|
26
|
+
destructiveHint: false,
|
|
27
|
+
idempotentHint: true,
|
|
28
|
+
openWorldHint: false,
|
|
29
|
+
},
|
|
30
|
+
async handler(args, client) {
|
|
31
|
+
try {
|
|
32
|
+
const response = await client.listTasks({
|
|
33
|
+
id: args.projectId,
|
|
34
|
+
});
|
|
35
|
+
const summaries = response.tasks.map((task) => ({
|
|
36
|
+
id: task.id,
|
|
37
|
+
title: task.title,
|
|
38
|
+
status: taskStatusToString(task.status) || task.status,
|
|
39
|
+
branch: task.branch,
|
|
40
|
+
environmentId: task.environmentId,
|
|
41
|
+
sessionId: task.sessionId,
|
|
42
|
+
sortOrder: task.sortOrder,
|
|
43
|
+
parentTaskId: task.parentTaskId,
|
|
44
|
+
depth: task.depth,
|
|
45
|
+
childTaskIds: task.childTaskIds,
|
|
46
|
+
personaId: task.personaId,
|
|
47
|
+
}));
|
|
48
|
+
return jsonResult(summaries);
|
|
49
|
+
}
|
|
50
|
+
catch (error) {
|
|
51
|
+
return grpcErrorToToolResult(error);
|
|
52
|
+
}
|
|
53
|
+
},
|
|
54
|
+
},
|
|
55
|
+
// ── task_create ─────────────────────────────────────────────────────────
|
|
56
|
+
{
|
|
57
|
+
name: "task_create",
|
|
58
|
+
group: "task",
|
|
59
|
+
description: "Create a new task in a Grackle project with a title, optional description, and dependency configuration.",
|
|
60
|
+
inputSchema: z.object({
|
|
61
|
+
projectId: z.string().describe("The project ID to create the task in"),
|
|
62
|
+
title: z.string().describe("Short descriptive title for the task"),
|
|
63
|
+
description: z
|
|
64
|
+
.string()
|
|
65
|
+
.optional()
|
|
66
|
+
.describe("Detailed description of what the task involves"),
|
|
67
|
+
environmentId: z
|
|
68
|
+
.string()
|
|
69
|
+
.optional()
|
|
70
|
+
.describe("Environment ID to associate with this task"),
|
|
71
|
+
dependsOn: z
|
|
72
|
+
.array(z.string())
|
|
73
|
+
.optional()
|
|
74
|
+
.describe("Array of task IDs that this task depends on"),
|
|
75
|
+
personaId: z
|
|
76
|
+
.string()
|
|
77
|
+
.optional()
|
|
78
|
+
.describe("Persona ID to configure agent behavior for this task"),
|
|
79
|
+
}),
|
|
80
|
+
rpcMethod: "createTask",
|
|
81
|
+
mutating: true,
|
|
82
|
+
annotations: {
|
|
83
|
+
readOnlyHint: false,
|
|
84
|
+
destructiveHint: false,
|
|
85
|
+
idempotentHint: false,
|
|
86
|
+
openWorldHint: false,
|
|
87
|
+
},
|
|
88
|
+
async handler(args, client) {
|
|
89
|
+
try {
|
|
90
|
+
const task = await client.createTask({
|
|
91
|
+
projectId: args.projectId,
|
|
92
|
+
title: args.title,
|
|
93
|
+
description: args.description ?? "",
|
|
94
|
+
environmentId: args.environmentId ?? "",
|
|
95
|
+
dependsOn: args.dependsOn ?? [],
|
|
96
|
+
parentTaskId: "",
|
|
97
|
+
personaId: args.personaId ?? "",
|
|
98
|
+
});
|
|
99
|
+
return jsonResult(taskToJson(task));
|
|
100
|
+
}
|
|
101
|
+
catch (error) {
|
|
102
|
+
return grpcErrorToToolResult(error);
|
|
103
|
+
}
|
|
104
|
+
},
|
|
105
|
+
},
|
|
106
|
+
// ── task_show ───────────────────────────────────────────────────────────
|
|
107
|
+
{
|
|
108
|
+
name: "task_show",
|
|
109
|
+
group: "task",
|
|
110
|
+
description: "Get full details of a specific task including its status, dependencies, timestamps, and review notes.",
|
|
111
|
+
inputSchema: z.object({
|
|
112
|
+
taskId: z.string().describe("The ID of the task to retrieve"),
|
|
113
|
+
}),
|
|
114
|
+
rpcMethod: "getTask",
|
|
115
|
+
mutating: false,
|
|
116
|
+
annotations: {
|
|
117
|
+
readOnlyHint: true,
|
|
118
|
+
destructiveHint: false,
|
|
119
|
+
idempotentHint: true,
|
|
120
|
+
openWorldHint: false,
|
|
121
|
+
},
|
|
122
|
+
async handler(args, client) {
|
|
123
|
+
try {
|
|
124
|
+
const task = await client.getTask({
|
|
125
|
+
id: args.taskId,
|
|
126
|
+
});
|
|
127
|
+
return jsonResult(taskToJson(task));
|
|
128
|
+
}
|
|
129
|
+
catch (error) {
|
|
130
|
+
return grpcErrorToToolResult(error);
|
|
131
|
+
}
|
|
132
|
+
},
|
|
133
|
+
},
|
|
134
|
+
// ── task_update ─────────────────────────────────────────────────────────
|
|
135
|
+
{
|
|
136
|
+
name: "task_update",
|
|
137
|
+
group: "task",
|
|
138
|
+
description: "Update a task's title, description, status, environment, dependencies, or review notes.",
|
|
139
|
+
inputSchema: z.object({
|
|
140
|
+
taskId: z.string().describe("The ID of the task to update"),
|
|
141
|
+
title: z.string().optional().describe("New title for the task"),
|
|
142
|
+
description: z
|
|
143
|
+
.string()
|
|
144
|
+
.optional()
|
|
145
|
+
.describe("New description for the task"),
|
|
146
|
+
status: z
|
|
147
|
+
.enum([
|
|
148
|
+
"pending",
|
|
149
|
+
"assigned",
|
|
150
|
+
"in_progress",
|
|
151
|
+
"review",
|
|
152
|
+
"done",
|
|
153
|
+
"failed",
|
|
154
|
+
"waiting_input",
|
|
155
|
+
])
|
|
156
|
+
.optional()
|
|
157
|
+
.describe("New status for the task (pending, assigned, in_progress, review, done, failed, waiting_input)"),
|
|
158
|
+
environmentId: z
|
|
159
|
+
.string()
|
|
160
|
+
.optional()
|
|
161
|
+
.describe("New environment ID to associate with this task"),
|
|
162
|
+
reviewNotes: z
|
|
163
|
+
.string()
|
|
164
|
+
.optional()
|
|
165
|
+
.describe("Review notes or feedback for the task"),
|
|
166
|
+
dependsOn: z
|
|
167
|
+
.array(z.string())
|
|
168
|
+
.optional()
|
|
169
|
+
.describe("Updated array of task IDs that this task depends on"),
|
|
170
|
+
}),
|
|
171
|
+
rpcMethod: "updateTask",
|
|
172
|
+
mutating: true,
|
|
173
|
+
annotations: {
|
|
174
|
+
readOnlyHint: false,
|
|
175
|
+
destructiveHint: false,
|
|
176
|
+
idempotentHint: true,
|
|
177
|
+
openWorldHint: false,
|
|
178
|
+
},
|
|
179
|
+
async handler(args, client) {
|
|
180
|
+
try {
|
|
181
|
+
const statusString = args.status;
|
|
182
|
+
const statusValue = statusString
|
|
183
|
+
? taskStatusToEnum(statusString)
|
|
184
|
+
: 0;
|
|
185
|
+
const task = await client.updateTask({
|
|
186
|
+
id: args.taskId,
|
|
187
|
+
title: args.title ?? "",
|
|
188
|
+
description: args.description ?? "",
|
|
189
|
+
status: statusValue,
|
|
190
|
+
environmentId: args.environmentId ?? "",
|
|
191
|
+
dependsOn: args.dependsOn ?? [],
|
|
192
|
+
reviewNotes: args.reviewNotes ?? "",
|
|
193
|
+
});
|
|
194
|
+
return jsonResult(taskToJson(task));
|
|
195
|
+
}
|
|
196
|
+
catch (error) {
|
|
197
|
+
return grpcErrorToToolResult(error);
|
|
198
|
+
}
|
|
199
|
+
},
|
|
200
|
+
},
|
|
201
|
+
// ── task_start ──────────────────────────────────────────────────────────
|
|
202
|
+
{
|
|
203
|
+
name: "task_start",
|
|
204
|
+
group: "task",
|
|
205
|
+
description: "Start a task by spawning an AI agent session to work on it, with optional runtime and model configuration.",
|
|
206
|
+
inputSchema: z.object({
|
|
207
|
+
taskId: z.string().describe("The ID of the task to start"),
|
|
208
|
+
runtime: z
|
|
209
|
+
.string()
|
|
210
|
+
.optional()
|
|
211
|
+
.describe("The runtime to use (e.g. claude-code)"),
|
|
212
|
+
model: z
|
|
213
|
+
.string()
|
|
214
|
+
.optional()
|
|
215
|
+
.describe("The AI model to use (e.g. claude-sonnet-4-20250514)"),
|
|
216
|
+
personaId: z
|
|
217
|
+
.string()
|
|
218
|
+
.optional()
|
|
219
|
+
.describe("Persona ID to configure agent behavior"),
|
|
220
|
+
}),
|
|
221
|
+
rpcMethod: "startTask",
|
|
222
|
+
mutating: true,
|
|
223
|
+
annotations: {
|
|
224
|
+
readOnlyHint: false,
|
|
225
|
+
destructiveHint: false,
|
|
226
|
+
idempotentHint: false,
|
|
227
|
+
openWorldHint: false,
|
|
228
|
+
},
|
|
229
|
+
async handler(args, client) {
|
|
230
|
+
try {
|
|
231
|
+
const response = await client.startTask({
|
|
232
|
+
taskId: args.taskId,
|
|
233
|
+
runtime: args.runtime ?? "",
|
|
234
|
+
model: args.model ?? "",
|
|
235
|
+
personaId: args.personaId ?? "",
|
|
236
|
+
});
|
|
237
|
+
return jsonResult(response);
|
|
238
|
+
}
|
|
239
|
+
catch (error) {
|
|
240
|
+
return grpcErrorToToolResult(error);
|
|
241
|
+
}
|
|
242
|
+
},
|
|
243
|
+
},
|
|
244
|
+
// ── task_delete ─────────────────────────────────────────────────────────
|
|
245
|
+
{
|
|
246
|
+
name: "task_delete",
|
|
247
|
+
group: "task",
|
|
248
|
+
description: "Permanently delete a task from the project. This action cannot be undone.",
|
|
249
|
+
inputSchema: z.object({
|
|
250
|
+
taskId: z.string().describe("The ID of the task to delete"),
|
|
251
|
+
}),
|
|
252
|
+
rpcMethod: "deleteTask",
|
|
253
|
+
mutating: true,
|
|
254
|
+
annotations: {
|
|
255
|
+
readOnlyHint: false,
|
|
256
|
+
destructiveHint: true,
|
|
257
|
+
idempotentHint: true,
|
|
258
|
+
openWorldHint: false,
|
|
259
|
+
},
|
|
260
|
+
async handler(args, client) {
|
|
261
|
+
try {
|
|
262
|
+
await client.deleteTask({
|
|
263
|
+
id: args.taskId,
|
|
264
|
+
});
|
|
265
|
+
return jsonResult({ success: true });
|
|
266
|
+
}
|
|
267
|
+
catch (error) {
|
|
268
|
+
return grpcErrorToToolResult(error);
|
|
269
|
+
}
|
|
270
|
+
},
|
|
271
|
+
},
|
|
272
|
+
// ── task_approve ────────────────────────────────────────────────────────
|
|
273
|
+
{
|
|
274
|
+
name: "task_approve",
|
|
275
|
+
group: "task",
|
|
276
|
+
description: "Approve a completed task, marking it as reviewed and accepted.",
|
|
277
|
+
inputSchema: z.object({
|
|
278
|
+
taskId: z.string().describe("The ID of the task to approve"),
|
|
279
|
+
}),
|
|
280
|
+
rpcMethod: "approveTask",
|
|
281
|
+
mutating: true,
|
|
282
|
+
annotations: {
|
|
283
|
+
readOnlyHint: false,
|
|
284
|
+
destructiveHint: false,
|
|
285
|
+
idempotentHint: true,
|
|
286
|
+
openWorldHint: false,
|
|
287
|
+
},
|
|
288
|
+
async handler(args, client) {
|
|
289
|
+
try {
|
|
290
|
+
const task = await client.approveTask({
|
|
291
|
+
id: args.taskId,
|
|
292
|
+
});
|
|
293
|
+
return jsonResult(taskToJson(task));
|
|
294
|
+
}
|
|
295
|
+
catch (error) {
|
|
296
|
+
return grpcErrorToToolResult(error);
|
|
297
|
+
}
|
|
298
|
+
},
|
|
299
|
+
},
|
|
300
|
+
// ── task_reject ─────────────────────────────────────────────────────────
|
|
301
|
+
{
|
|
302
|
+
name: "task_reject",
|
|
303
|
+
group: "task",
|
|
304
|
+
description: "Reject a task that needs further work, optionally providing review notes with feedback.",
|
|
305
|
+
inputSchema: z.object({
|
|
306
|
+
taskId: z.string().describe("The ID of the task to reject"),
|
|
307
|
+
reviewNotes: z
|
|
308
|
+
.string()
|
|
309
|
+
.optional()
|
|
310
|
+
.describe("Feedback explaining why the task was rejected"),
|
|
311
|
+
}),
|
|
312
|
+
rpcMethod: "rejectTask",
|
|
313
|
+
mutating: true,
|
|
314
|
+
annotations: {
|
|
315
|
+
readOnlyHint: false,
|
|
316
|
+
destructiveHint: false,
|
|
317
|
+
idempotentHint: true,
|
|
318
|
+
openWorldHint: false,
|
|
319
|
+
},
|
|
320
|
+
async handler(args, client) {
|
|
321
|
+
try {
|
|
322
|
+
const task = await client.rejectTask({
|
|
323
|
+
id: args.taskId,
|
|
324
|
+
title: "",
|
|
325
|
+
description: "",
|
|
326
|
+
status: 0,
|
|
327
|
+
environmentId: "",
|
|
328
|
+
dependsOn: [],
|
|
329
|
+
reviewNotes: args.reviewNotes ?? "",
|
|
330
|
+
});
|
|
331
|
+
return jsonResult(taskToJson(task));
|
|
332
|
+
}
|
|
333
|
+
catch (error) {
|
|
334
|
+
return grpcErrorToToolResult(error);
|
|
335
|
+
}
|
|
336
|
+
},
|
|
337
|
+
},
|
|
338
|
+
// ── task_import_github ──────────────────────────────────────────────────
|
|
339
|
+
{
|
|
340
|
+
name: "task_import_github",
|
|
341
|
+
group: "task",
|
|
342
|
+
description: "Import GitHub issues from a repository as tasks into a Grackle project, with optional label and state filtering.",
|
|
343
|
+
inputSchema: z.object({
|
|
344
|
+
projectId: z.string().describe("The project ID to import tasks into"),
|
|
345
|
+
repo: z
|
|
346
|
+
.string()
|
|
347
|
+
.describe("GitHub repository in owner/repo format (e.g. octocat/hello-world)"),
|
|
348
|
+
label: z
|
|
349
|
+
.string()
|
|
350
|
+
.optional()
|
|
351
|
+
.describe("Only import issues with this label"),
|
|
352
|
+
state: z
|
|
353
|
+
.enum(["open", "closed"])
|
|
354
|
+
.optional()
|
|
355
|
+
.default("open")
|
|
356
|
+
.describe("Issue state to filter by (open or closed, defaults to open)"),
|
|
357
|
+
environmentId: z
|
|
358
|
+
.string()
|
|
359
|
+
.optional()
|
|
360
|
+
.describe("Environment ID to associate with imported tasks"),
|
|
361
|
+
includeComments: z
|
|
362
|
+
.boolean()
|
|
363
|
+
.optional()
|
|
364
|
+
.describe("Whether to include issue comments in the task description"),
|
|
365
|
+
}),
|
|
366
|
+
rpcMethod: "importGitHubIssues",
|
|
367
|
+
mutating: true,
|
|
368
|
+
annotations: {
|
|
369
|
+
readOnlyHint: false,
|
|
370
|
+
destructiveHint: false,
|
|
371
|
+
idempotentHint: false,
|
|
372
|
+
openWorldHint: true,
|
|
373
|
+
},
|
|
374
|
+
async handler(args, client) {
|
|
375
|
+
try {
|
|
376
|
+
const stateString = args.state ?? "open";
|
|
377
|
+
const stateValue = issueStateToEnum(stateString);
|
|
378
|
+
const response = await client.importGitHubIssues({
|
|
379
|
+
projectId: args.projectId,
|
|
380
|
+
repo: args.repo,
|
|
381
|
+
label: args.label ?? "",
|
|
382
|
+
state: stateValue,
|
|
383
|
+
environmentId: args.environmentId ?? "",
|
|
384
|
+
includeComments: args.includeComments ?? true,
|
|
385
|
+
});
|
|
386
|
+
return jsonResult({
|
|
387
|
+
imported: response.imported,
|
|
388
|
+
linked: response.linked,
|
|
389
|
+
skipped: response.skipped,
|
|
390
|
+
});
|
|
391
|
+
}
|
|
392
|
+
catch (error) {
|
|
393
|
+
return grpcErrorToToolResult(error);
|
|
394
|
+
}
|
|
395
|
+
},
|
|
396
|
+
},
|
|
397
|
+
];
|
|
398
|
+
//# sourceMappingURL=task.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"task.js","sourceRoot":"","sources":["../../src/tools/task.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@grackle-ai/mcp",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.21.0",
|
|
4
4
|
"description": "MCP (Model Context Protocol) server for Grackle — translates MCP tool calls to ConnectRPC",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"repository": {
|
|
@@ -32,7 +32,9 @@
|
|
|
32
32
|
"@connectrpc/connect-node": "^2.0.0",
|
|
33
33
|
"@modelcontextprotocol/sdk": "^1.27.0",
|
|
34
34
|
"pino": "^10.3.1",
|
|
35
|
-
"
|
|
35
|
+
"zod": "^3.23.0",
|
|
36
|
+
"zod-to-json-schema": "^3.24.0",
|
|
37
|
+
"@grackle-ai/common": "0.21.0"
|
|
36
38
|
},
|
|
37
39
|
"devDependencies": {
|
|
38
40
|
"@rushstack/heft": "1.2.4",
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"list-environments.d.ts","sourceRoot":"","sources":["../../src/tools/list-environments.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,cAAc,EAAc,MAAM,qBAAqB,CAAC;AAEtE,+DAA+D;AAC/D,eAAO,MAAM,oBAAoB,EAAE,cAyBlC,CAAC"}
|
|
@@ -1,28 +0,0 @@
|
|
|
1
|
-
/** MCP tool that lists all registered Grackle environments. */
|
|
2
|
-
export const listEnvironmentsTool = {
|
|
3
|
-
name: "list_environments",
|
|
4
|
-
description: "List all registered Grackle environments with their connection status, adapter type, and configuration.",
|
|
5
|
-
inputSchema: {
|
|
6
|
-
type: "object",
|
|
7
|
-
properties: {},
|
|
8
|
-
},
|
|
9
|
-
annotations: {
|
|
10
|
-
readOnlyHint: true,
|
|
11
|
-
destructiveHint: false,
|
|
12
|
-
idempotentHint: true,
|
|
13
|
-
openWorldHint: false,
|
|
14
|
-
},
|
|
15
|
-
async handler(_args, client) {
|
|
16
|
-
const response = await client.listEnvironments({});
|
|
17
|
-
const environments = response.environments.map((env) => ({
|
|
18
|
-
id: env.id,
|
|
19
|
-
displayName: env.displayName,
|
|
20
|
-
adapterType: env.adapterType,
|
|
21
|
-
status: env.status,
|
|
22
|
-
}));
|
|
23
|
-
return {
|
|
24
|
-
content: [{ type: "text", text: JSON.stringify(environments, null, 2) }],
|
|
25
|
-
};
|
|
26
|
-
},
|
|
27
|
-
};
|
|
28
|
-
//# sourceMappingURL=list-environments.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"list-environments.js","sourceRoot":"","sources":["../../src/tools/list-environments.ts"],"names":[],"mappings":"AAIA,+DAA+D;AAC/D,MAAM,CAAC,MAAM,oBAAoB,GAAmB;IAClD,IAAI,EAAE,mBAAmB;IACzB,WAAW,EAAE,yGAAyG;IACtH,WAAW,EAAE;QACX,IAAI,EAAE,QAAQ;QACd,UAAU,EAAE,EAAE;KACf;IACD,WAAW,EAAE;QACX,YAAY,EAAE,IAAI;QAClB,eAAe,EAAE,KAAK;QACtB,cAAc,EAAE,IAAI;QACpB,aAAa,EAAE,KAAK;KACrB;IACD,KAAK,CAAC,OAAO,CAAC,KAA8B,EAAE,MAAsC;QAClF,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,gBAAgB,CAAC,EAAE,CAAC,CAAC;QACnD,MAAM,YAAY,GAAG,QAAQ,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;YACvD,EAAE,EAAE,GAAG,CAAC,EAAE;YACV,WAAW,EAAE,GAAG,CAAC,WAAW;YAC5B,WAAW,EAAE,GAAG,CAAC,WAAW;YAC5B,MAAM,EAAE,GAAG,CAAC,MAAM;SACnB,CAAC,CAAC,CAAC;QACJ,OAAO;YACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,YAAY,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC;SACzE,CAAC;IACJ,CAAC;CACF,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"list-projects.d.ts","sourceRoot":"","sources":["../../src/tools/list-projects.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,cAAc,EAAc,MAAM,qBAAqB,CAAC;AAEtE,gDAAgD;AAChD,eAAO,MAAM,gBAAgB,EAAE,cAyB9B,CAAC"}
|
|
@@ -1,28 +0,0 @@
|
|
|
1
|
-
/** MCP tool that lists all Grackle projects. */
|
|
2
|
-
export const listProjectsTool = {
|
|
3
|
-
name: "list_projects",
|
|
4
|
-
description: "List all Grackle projects with their names, descriptions, and associated repositories.",
|
|
5
|
-
inputSchema: {
|
|
6
|
-
type: "object",
|
|
7
|
-
properties: {},
|
|
8
|
-
},
|
|
9
|
-
annotations: {
|
|
10
|
-
readOnlyHint: true,
|
|
11
|
-
destructiveHint: false,
|
|
12
|
-
idempotentHint: true,
|
|
13
|
-
openWorldHint: false,
|
|
14
|
-
},
|
|
15
|
-
async handler(_args, client) {
|
|
16
|
-
const response = await client.listProjects({});
|
|
17
|
-
const projects = response.projects.map((project) => ({
|
|
18
|
-
id: project.id,
|
|
19
|
-
name: project.name,
|
|
20
|
-
description: project.description,
|
|
21
|
-
repoUrl: project.repoUrl,
|
|
22
|
-
}));
|
|
23
|
-
return {
|
|
24
|
-
content: [{ type: "text", text: JSON.stringify(projects, null, 2) }],
|
|
25
|
-
};
|
|
26
|
-
},
|
|
27
|
-
};
|
|
28
|
-
//# sourceMappingURL=list-projects.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"list-projects.js","sourceRoot":"","sources":["../../src/tools/list-projects.ts"],"names":[],"mappings":"AAIA,gDAAgD;AAChD,MAAM,CAAC,MAAM,gBAAgB,GAAmB;IAC9C,IAAI,EAAE,eAAe;IACrB,WAAW,EAAE,wFAAwF;IACrG,WAAW,EAAE;QACX,IAAI,EAAE,QAAQ;QACd,UAAU,EAAE,EAAE;KACf;IACD,WAAW,EAAE;QACX,YAAY,EAAE,IAAI;QAClB,eAAe,EAAE,KAAK;QACtB,cAAc,EAAE,IAAI;QACpB,aAAa,EAAE,KAAK;KACrB;IACD,KAAK,CAAC,OAAO,CAAC,KAA8B,EAAE,MAAsC;QAClF,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC;QAC/C,MAAM,QAAQ,GAAG,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;YACnD,EAAE,EAAE,OAAO,CAAC,EAAE;YACd,IAAI,EAAE,OAAO,CAAC,IAAI;YAClB,WAAW,EAAE,OAAO,CAAC,WAAW;YAChC,OAAO,EAAE,OAAO,CAAC,OAAO;SACzB,CAAC,CAAC,CAAC;QACJ,OAAO;YACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC;SACrE,CAAC;IACJ,CAAC;CACF,CAAC"}
|