qorrelate-mcp-server 0.1.3 → 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 +30 -2
- package/dist/client.d.ts +100 -0
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +324 -2
- package/dist/client.js.map +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +86 -6
- package/dist/index.js.map +1 -1
- package/dist/tools/ai-chat.d.ts +15 -0
- package/dist/tools/ai-chat.d.ts.map +1 -0
- package/dist/tools/ai-chat.js +133 -0
- package/dist/tools/ai-chat.js.map +1 -0
- package/dist/tools/alerts.d.ts.map +1 -1
- package/dist/tools/alerts.js +11 -5
- package/dist/tools/alerts.js.map +1 -1
- package/dist/tools/analytics.d.ts +15 -0
- package/dist/tools/analytics.d.ts.map +1 -0
- package/dist/tools/analytics.js +327 -0
- package/dist/tools/analytics.js.map +1 -0
- package/dist/tools/auth.d.ts +16 -0
- package/dist/tools/auth.d.ts.map +1 -0
- package/dist/tools/auth.js +204 -0
- package/dist/tools/auth.js.map +1 -0
- package/dist/tools/notifications.d.ts +16 -0
- package/dist/tools/notifications.d.ts.map +1 -0
- package/dist/tools/notifications.js +244 -0
- package/dist/tools/notifications.js.map +1 -0
- package/dist/tools/organizations.d.ts.map +1 -1
- package/dist/tools/organizations.js +285 -0
- package/dist/tools/organizations.js.map +1 -1
- package/dist/tools/saved-searches.d.ts +15 -0
- package/dist/tools/saved-searches.d.ts.map +1 -0
- package/dist/tools/saved-searches.js +110 -0
- package/dist/tools/saved-searches.js.map +1 -0
- package/dist/tools/services.d.ts.map +1 -1
- package/dist/tools/services.js +21 -4
- package/dist/tools/services.js.map +1 -1
- package/dist/tools/user.d.ts +15 -0
- package/dist/tools/user.d.ts.map +1 -0
- package/dist/tools/user.js +136 -0
- package/dist/tools/user.js.map +1 -0
- package/dist/tools/workflows.d.ts +16 -0
- package/dist/tools/workflows.d.ts.map +1 -0
- package/dist/tools/workflows.js +297 -0
- package/dist/tools/workflows.js.map +1 -0
- package/package.json +1 -1
|
@@ -0,0 +1,297 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Workflow Management Tools
|
|
4
|
+
*
|
|
5
|
+
* Tools for creating and managing automated workflows triggered by alerts,
|
|
6
|
+
* schedules, or manual invocation.
|
|
7
|
+
*/
|
|
8
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
|
+
exports.registerWorkflowTools = registerWorkflowTools;
|
|
10
|
+
exports.handleWorkflowTool = handleWorkflowTool;
|
|
11
|
+
const index_js_1 = require("../index.js");
|
|
12
|
+
function registerWorkflowTools() {
|
|
13
|
+
return [
|
|
14
|
+
{
|
|
15
|
+
name: "list_workflows",
|
|
16
|
+
description: "List all workflows for an organization",
|
|
17
|
+
inputSchema: {
|
|
18
|
+
type: "object",
|
|
19
|
+
properties: {
|
|
20
|
+
organization_id: {
|
|
21
|
+
type: "string",
|
|
22
|
+
description: "Organization ID",
|
|
23
|
+
},
|
|
24
|
+
},
|
|
25
|
+
required: ["organization_id"],
|
|
26
|
+
},
|
|
27
|
+
},
|
|
28
|
+
{
|
|
29
|
+
name: "get_workflow",
|
|
30
|
+
description: "Get details of a specific workflow including its steps and trigger configuration",
|
|
31
|
+
inputSchema: {
|
|
32
|
+
type: "object",
|
|
33
|
+
properties: {
|
|
34
|
+
organization_id: {
|
|
35
|
+
type: "string",
|
|
36
|
+
description: "Organization ID",
|
|
37
|
+
},
|
|
38
|
+
workflow_id: {
|
|
39
|
+
type: "string",
|
|
40
|
+
description: "Workflow ID",
|
|
41
|
+
},
|
|
42
|
+
},
|
|
43
|
+
required: ["organization_id", "workflow_id"],
|
|
44
|
+
},
|
|
45
|
+
},
|
|
46
|
+
{
|
|
47
|
+
name: "create_workflow",
|
|
48
|
+
description: `Create a new workflow automation.
|
|
49
|
+
|
|
50
|
+
Trigger types:
|
|
51
|
+
- alert: Triggered when an alert fires
|
|
52
|
+
- schedule: Triggered on a cron schedule
|
|
53
|
+
- manual: Triggered manually or via API
|
|
54
|
+
|
|
55
|
+
Step types:
|
|
56
|
+
- send_slack: Send a Slack message
|
|
57
|
+
- send_email: Send an email
|
|
58
|
+
- run_query: Execute a query
|
|
59
|
+
- webhook: Call an external URL
|
|
60
|
+
- condition: Branch based on conditions`,
|
|
61
|
+
inputSchema: {
|
|
62
|
+
type: "object",
|
|
63
|
+
properties: {
|
|
64
|
+
organization_id: {
|
|
65
|
+
type: "string",
|
|
66
|
+
description: "Organization ID",
|
|
67
|
+
},
|
|
68
|
+
name: {
|
|
69
|
+
type: "string",
|
|
70
|
+
description: "Workflow name",
|
|
71
|
+
},
|
|
72
|
+
description: {
|
|
73
|
+
type: "string",
|
|
74
|
+
description: "Description of what the workflow does",
|
|
75
|
+
},
|
|
76
|
+
trigger: {
|
|
77
|
+
type: "object",
|
|
78
|
+
description: "Trigger configuration (e.g., {type: 'alert', alert_id: '...'} or {type: 'schedule', cron: '0 * * * *'})",
|
|
79
|
+
},
|
|
80
|
+
steps: {
|
|
81
|
+
type: "array",
|
|
82
|
+
description: "Array of step configurations",
|
|
83
|
+
},
|
|
84
|
+
},
|
|
85
|
+
required: ["organization_id", "name", "trigger", "steps"],
|
|
86
|
+
},
|
|
87
|
+
},
|
|
88
|
+
{
|
|
89
|
+
name: "update_workflow",
|
|
90
|
+
description: "Update an existing workflow's configuration",
|
|
91
|
+
inputSchema: {
|
|
92
|
+
type: "object",
|
|
93
|
+
properties: {
|
|
94
|
+
organization_id: {
|
|
95
|
+
type: "string",
|
|
96
|
+
description: "Organization ID",
|
|
97
|
+
},
|
|
98
|
+
workflow_id: {
|
|
99
|
+
type: "string",
|
|
100
|
+
description: "Workflow ID to update",
|
|
101
|
+
},
|
|
102
|
+
name: {
|
|
103
|
+
type: "string",
|
|
104
|
+
description: "New name",
|
|
105
|
+
},
|
|
106
|
+
description: {
|
|
107
|
+
type: "string",
|
|
108
|
+
description: "New description",
|
|
109
|
+
},
|
|
110
|
+
enabled: {
|
|
111
|
+
type: "boolean",
|
|
112
|
+
description: "Enable or disable the workflow",
|
|
113
|
+
},
|
|
114
|
+
trigger: {
|
|
115
|
+
type: "object",
|
|
116
|
+
description: "New trigger configuration",
|
|
117
|
+
},
|
|
118
|
+
steps: {
|
|
119
|
+
type: "array",
|
|
120
|
+
description: "New steps configuration",
|
|
121
|
+
},
|
|
122
|
+
},
|
|
123
|
+
required: ["organization_id", "workflow_id"],
|
|
124
|
+
},
|
|
125
|
+
},
|
|
126
|
+
{
|
|
127
|
+
name: "delete_workflow",
|
|
128
|
+
description: "Delete a workflow",
|
|
129
|
+
inputSchema: {
|
|
130
|
+
type: "object",
|
|
131
|
+
properties: {
|
|
132
|
+
organization_id: {
|
|
133
|
+
type: "string",
|
|
134
|
+
description: "Organization ID",
|
|
135
|
+
},
|
|
136
|
+
workflow_id: {
|
|
137
|
+
type: "string",
|
|
138
|
+
description: "Workflow ID to delete",
|
|
139
|
+
},
|
|
140
|
+
},
|
|
141
|
+
required: ["organization_id", "workflow_id"],
|
|
142
|
+
},
|
|
143
|
+
},
|
|
144
|
+
{
|
|
145
|
+
name: "run_workflow",
|
|
146
|
+
description: "Manually trigger a workflow execution",
|
|
147
|
+
inputSchema: {
|
|
148
|
+
type: "object",
|
|
149
|
+
properties: {
|
|
150
|
+
organization_id: {
|
|
151
|
+
type: "string",
|
|
152
|
+
description: "Organization ID",
|
|
153
|
+
},
|
|
154
|
+
workflow_id: {
|
|
155
|
+
type: "string",
|
|
156
|
+
description: "Workflow ID to run",
|
|
157
|
+
},
|
|
158
|
+
inputs: {
|
|
159
|
+
type: "object",
|
|
160
|
+
description: "Optional input parameters for the workflow",
|
|
161
|
+
},
|
|
162
|
+
},
|
|
163
|
+
required: ["organization_id", "workflow_id"],
|
|
164
|
+
},
|
|
165
|
+
},
|
|
166
|
+
{
|
|
167
|
+
name: "get_workflow_executions",
|
|
168
|
+
description: "Get execution history for a workflow",
|
|
169
|
+
inputSchema: {
|
|
170
|
+
type: "object",
|
|
171
|
+
properties: {
|
|
172
|
+
organization_id: {
|
|
173
|
+
type: "string",
|
|
174
|
+
description: "Organization ID",
|
|
175
|
+
},
|
|
176
|
+
workflow_id: {
|
|
177
|
+
type: "string",
|
|
178
|
+
description: "Workflow ID",
|
|
179
|
+
},
|
|
180
|
+
},
|
|
181
|
+
required: ["organization_id", "workflow_id"],
|
|
182
|
+
},
|
|
183
|
+
},
|
|
184
|
+
{
|
|
185
|
+
name: "get_workflow_execution",
|
|
186
|
+
description: "Get details of a specific workflow execution including step results",
|
|
187
|
+
inputSchema: {
|
|
188
|
+
type: "object",
|
|
189
|
+
properties: {
|
|
190
|
+
organization_id: {
|
|
191
|
+
type: "string",
|
|
192
|
+
description: "Organization ID",
|
|
193
|
+
},
|
|
194
|
+
execution_id: {
|
|
195
|
+
type: "string",
|
|
196
|
+
description: "Execution ID",
|
|
197
|
+
},
|
|
198
|
+
},
|
|
199
|
+
required: ["organization_id", "execution_id"],
|
|
200
|
+
},
|
|
201
|
+
},
|
|
202
|
+
];
|
|
203
|
+
}
|
|
204
|
+
async function handleWorkflowTool(client, name, args) {
|
|
205
|
+
const orgId = args.organization_id || index_js_1.defaultOrgId;
|
|
206
|
+
if (!orgId)
|
|
207
|
+
throw new Error("organization_id is required (set QORRELATE_ORG_ID or pass organization_id)");
|
|
208
|
+
switch (name) {
|
|
209
|
+
case "list_workflows": {
|
|
210
|
+
const result = await client.listWorkflows(orgId);
|
|
211
|
+
return {
|
|
212
|
+
content: [{ type: "text", text: JSON.stringify(result, null, 2) }],
|
|
213
|
+
};
|
|
214
|
+
}
|
|
215
|
+
case "get_workflow": {
|
|
216
|
+
const workflowId = args.workflow_id;
|
|
217
|
+
if (!workflowId)
|
|
218
|
+
throw new Error("workflow_id is required");
|
|
219
|
+
const result = await client.getWorkflow(orgId, workflowId);
|
|
220
|
+
return {
|
|
221
|
+
content: [{ type: "text", text: JSON.stringify(result, null, 2) }],
|
|
222
|
+
};
|
|
223
|
+
}
|
|
224
|
+
case "create_workflow": {
|
|
225
|
+
const workflow = {
|
|
226
|
+
name: args.name,
|
|
227
|
+
description: args.description,
|
|
228
|
+
trigger: args.trigger,
|
|
229
|
+
steps: args.steps,
|
|
230
|
+
};
|
|
231
|
+
const result = await client.createWorkflow(orgId, workflow);
|
|
232
|
+
return {
|
|
233
|
+
content: [{ type: "text", text: `Workflow created!\n\n${JSON.stringify(result, null, 2)}` }],
|
|
234
|
+
};
|
|
235
|
+
}
|
|
236
|
+
case "update_workflow": {
|
|
237
|
+
const workflowId = args.workflow_id;
|
|
238
|
+
if (!workflowId)
|
|
239
|
+
throw new Error("workflow_id is required");
|
|
240
|
+
const updates = {};
|
|
241
|
+
if (args.name)
|
|
242
|
+
updates.name = args.name;
|
|
243
|
+
if (args.description)
|
|
244
|
+
updates.description = args.description;
|
|
245
|
+
if (args.enabled !== undefined)
|
|
246
|
+
updates.enabled = args.enabled;
|
|
247
|
+
if (args.trigger)
|
|
248
|
+
updates.trigger = args.trigger;
|
|
249
|
+
if (args.steps)
|
|
250
|
+
updates.steps = args.steps;
|
|
251
|
+
const result = await client.updateWorkflow(orgId, workflowId, updates);
|
|
252
|
+
return {
|
|
253
|
+
content: [{ type: "text", text: `Workflow updated!\n\n${JSON.stringify(result, null, 2)}` }],
|
|
254
|
+
};
|
|
255
|
+
}
|
|
256
|
+
case "delete_workflow": {
|
|
257
|
+
const workflowId = args.workflow_id;
|
|
258
|
+
if (!workflowId)
|
|
259
|
+
throw new Error("workflow_id is required");
|
|
260
|
+
const result = await client.deleteWorkflow(orgId, workflowId);
|
|
261
|
+
return {
|
|
262
|
+
content: [{ type: "text", text: `Workflow deleted.\n\n${JSON.stringify(result, null, 2)}` }],
|
|
263
|
+
};
|
|
264
|
+
}
|
|
265
|
+
case "run_workflow": {
|
|
266
|
+
const workflowId = args.workflow_id;
|
|
267
|
+
if (!workflowId)
|
|
268
|
+
throw new Error("workflow_id is required");
|
|
269
|
+
const inputs = args.inputs;
|
|
270
|
+
const result = await client.runWorkflow(orgId, workflowId, inputs);
|
|
271
|
+
return {
|
|
272
|
+
content: [{ type: "text", text: `Workflow execution started!\n\n${JSON.stringify(result, null, 2)}` }],
|
|
273
|
+
};
|
|
274
|
+
}
|
|
275
|
+
case "get_workflow_executions": {
|
|
276
|
+
const workflowId = args.workflow_id;
|
|
277
|
+
if (!workflowId)
|
|
278
|
+
throw new Error("workflow_id is required");
|
|
279
|
+
const result = await client.getWorkflowExecutions(orgId, workflowId);
|
|
280
|
+
return {
|
|
281
|
+
content: [{ type: "text", text: JSON.stringify(result, null, 2) }],
|
|
282
|
+
};
|
|
283
|
+
}
|
|
284
|
+
case "get_workflow_execution": {
|
|
285
|
+
const executionId = args.execution_id;
|
|
286
|
+
if (!executionId)
|
|
287
|
+
throw new Error("execution_id is required");
|
|
288
|
+
const result = await client.getWorkflowExecution(orgId, executionId);
|
|
289
|
+
return {
|
|
290
|
+
content: [{ type: "text", text: JSON.stringify(result, null, 2) }],
|
|
291
|
+
};
|
|
292
|
+
}
|
|
293
|
+
default:
|
|
294
|
+
throw new Error(`Unknown workflow tool: ${name}`);
|
|
295
|
+
}
|
|
296
|
+
}
|
|
297
|
+
//# sourceMappingURL=workflows.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"workflows.js","sourceRoot":"","sources":["../../src/tools/workflows.ts"],"names":[],"mappings":"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"}
|