@flowdot.ai/mcp-server 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 +162 -0
- package/bin/flowdot-mcp.js +15 -0
- package/dist/api-client.d.ts +349 -0
- package/dist/api-client.d.ts.map +1 -0
- package/dist/api-client.js +789 -0
- package/dist/api-client.js.map +1 -0
- package/dist/index.d.ts +26 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +32 -0
- package/dist/index.js.map +1 -0
- package/dist/server.d.ts +15 -0
- package/dist/server.d.ts.map +1 -0
- package/dist/server.js +96 -0
- package/dist/server.js.map +1 -0
- package/dist/tools/add-connection.d.ts +16 -0
- package/dist/tools/add-connection.d.ts.map +1 -0
- package/dist/tools/add-connection.js +62 -0
- package/dist/tools/add-connection.js.map +1 -0
- package/dist/tools/add-custom-node-comment.d.ts +15 -0
- package/dist/tools/add-custom-node-comment.d.ts.map +1 -0
- package/dist/tools/add-custom-node-comment.js +69 -0
- package/dist/tools/add-custom-node-comment.js.map +1 -0
- package/dist/tools/add-node.d.ts +18 -0
- package/dist/tools/add-node.d.ts.map +1 -0
- package/dist/tools/add-node.js +66 -0
- package/dist/tools/add-node.js.map +1 -0
- package/dist/tools/add-shared-result-comment.d.ts +15 -0
- package/dist/tools/add-shared-result-comment.d.ts.map +1 -0
- package/dist/tools/add-shared-result-comment.js +70 -0
- package/dist/tools/add-shared-result-comment.js.map +1 -0
- package/dist/tools/add-workflow-comment.d.ts +14 -0
- package/dist/tools/add-workflow-comment.d.ts.map +1 -0
- package/dist/tools/add-workflow-comment.js +66 -0
- package/dist/tools/add-workflow-comment.js.map +1 -0
- package/dist/tools/agent-chat.d.ts +14 -0
- package/dist/tools/agent-chat.d.ts.map +1 -0
- package/dist/tools/agent-chat.js +80 -0
- package/dist/tools/agent-chat.js.map +1 -0
- package/dist/tools/cancel-execution.d.ts +12 -0
- package/dist/tools/cancel-execution.d.ts.map +1 -0
- package/dist/tools/cancel-execution.js +37 -0
- package/dist/tools/cancel-execution.js.map +1 -0
- package/dist/tools/clone-app.d.ts +11 -0
- package/dist/tools/clone-app.d.ts.map +1 -0
- package/dist/tools/clone-app.js +63 -0
- package/dist/tools/clone-app.js.map +1 -0
- package/dist/tools/copy-custom-node.d.ts +14 -0
- package/dist/tools/copy-custom-node.d.ts.map +1 -0
- package/dist/tools/copy-custom-node.js +50 -0
- package/dist/tools/copy-custom-node.js.map +1 -0
- package/dist/tools/create-app.d.ts +11 -0
- package/dist/tools/create-app.d.ts.map +1 -0
- package/dist/tools/create-app.js +182 -0
- package/dist/tools/create-app.js.map +1 -0
- package/dist/tools/create-custom-node.d.ts +28 -0
- package/dist/tools/create-custom-node.d.ts.map +1 -0
- package/dist/tools/create-custom-node.js +221 -0
- package/dist/tools/create-custom-node.js.map +1 -0
- package/dist/tools/create-input-preset.d.ts +15 -0
- package/dist/tools/create-input-preset.d.ts.map +1 -0
- package/dist/tools/create-input-preset.js +76 -0
- package/dist/tools/create-input-preset.js.map +1 -0
- package/dist/tools/create-shared-result.d.ts +17 -0
- package/dist/tools/create-shared-result.d.ts.map +1 -0
- package/dist/tools/create-shared-result.js +78 -0
- package/dist/tools/create-shared-result.js.map +1 -0
- package/dist/tools/create-workflow.d.ts +13 -0
- package/dist/tools/create-workflow.d.ts.map +1 -0
- package/dist/tools/create-workflow.js +49 -0
- package/dist/tools/create-workflow.js.map +1 -0
- package/dist/tools/delete-app.d.ts +11 -0
- package/dist/tools/delete-app.d.ts.map +1 -0
- package/dist/tools/delete-app.js +40 -0
- package/dist/tools/delete-app.js.map +1 -0
- package/dist/tools/delete-connection.d.ts +13 -0
- package/dist/tools/delete-connection.d.ts.map +1 -0
- package/dist/tools/delete-connection.js +41 -0
- package/dist/tools/delete-connection.js.map +1 -0
- package/dist/tools/delete-custom-node.d.ts +13 -0
- package/dist/tools/delete-custom-node.d.ts.map +1 -0
- package/dist/tools/delete-custom-node.js +41 -0
- package/dist/tools/delete-custom-node.js.map +1 -0
- package/dist/tools/delete-input-preset.d.ts +13 -0
- package/dist/tools/delete-input-preset.d.ts.map +1 -0
- package/dist/tools/delete-input-preset.js +42 -0
- package/dist/tools/delete-input-preset.js.map +1 -0
- package/dist/tools/delete-node.d.ts +13 -0
- package/dist/tools/delete-node.d.ts.map +1 -0
- package/dist/tools/delete-node.js +41 -0
- package/dist/tools/delete-node.js.map +1 -0
- package/dist/tools/delete-workflow.d.ts +12 -0
- package/dist/tools/delete-workflow.d.ts.map +1 -0
- package/dist/tools/delete-workflow.js +37 -0
- package/dist/tools/delete-workflow.js.map +1 -0
- package/dist/tools/duplicate-workflow.d.ts +13 -0
- package/dist/tools/duplicate-workflow.d.ts.map +1 -0
- package/dist/tools/duplicate-workflow.js +49 -0
- package/dist/tools/duplicate-workflow.js.map +1 -0
- package/dist/tools/execute-workflow.d.ts +15 -0
- package/dist/tools/execute-workflow.d.ts.map +1 -0
- package/dist/tools/execute-workflow.js +112 -0
- package/dist/tools/execute-workflow.js.map +1 -0
- package/dist/tools/favorite-custom-node.d.ts +14 -0
- package/dist/tools/favorite-custom-node.d.ts.map +1 -0
- package/dist/tools/favorite-custom-node.js +48 -0
- package/dist/tools/favorite-custom-node.js.map +1 -0
- package/dist/tools/favorite-workflow.d.ts +13 -0
- package/dist/tools/favorite-workflow.d.ts.map +1 -0
- package/dist/tools/favorite-workflow.js +42 -0
- package/dist/tools/favorite-workflow.js.map +1 -0
- package/dist/tools/get-app-template.d.ts +10 -0
- package/dist/tools/get-app-template.d.ts.map +1 -0
- package/dist/tools/get-app-template.js +856 -0
- package/dist/tools/get-app-template.js.map +1 -0
- package/dist/tools/get-app.d.ts +11 -0
- package/dist/tools/get-app.d.ts.map +1 -0
- package/dist/tools/get-app.js +124 -0
- package/dist/tools/get-app.js.map +1 -0
- package/dist/tools/get-custom-node-comments.d.ts +13 -0
- package/dist/tools/get-custom-node-comments.d.ts.map +1 -0
- package/dist/tools/get-custom-node-comments.js +65 -0
- package/dist/tools/get-custom-node-comments.js.map +1 -0
- package/dist/tools/get-custom-node-template.d.ts +31 -0
- package/dist/tools/get-custom-node-template.d.ts.map +1 -0
- package/dist/tools/get-custom-node-template.js +212 -0
- package/dist/tools/get-custom-node-template.js.map +1 -0
- package/dist/tools/get-custom-node.d.ts +13 -0
- package/dist/tools/get-custom-node.d.ts.map +1 -0
- package/dist/tools/get-custom-node.js +98 -0
- package/dist/tools/get-custom-node.js.map +1 -0
- package/dist/tools/get-execution-history.d.ts +14 -0
- package/dist/tools/get-execution-history.d.ts.map +1 -0
- package/dist/tools/get-execution-history.js +65 -0
- package/dist/tools/get-execution-history.js.map +1 -0
- package/dist/tools/get-execution.d.ts +12 -0
- package/dist/tools/get-execution.d.ts.map +1 -0
- package/dist/tools/get-execution.js +81 -0
- package/dist/tools/get-execution.js.map +1 -0
- package/dist/tools/get-input-preset.d.ts +13 -0
- package/dist/tools/get-input-preset.d.ts.map +1 -0
- package/dist/tools/get-input-preset.js +69 -0
- package/dist/tools/get-input-preset.js.map +1 -0
- package/dist/tools/get-node-connections.d.ts +13 -0
- package/dist/tools/get-node-connections.d.ts.map +1 -0
- package/dist/tools/get-node-connections.js +67 -0
- package/dist/tools/get-node-connections.js.map +1 -0
- package/dist/tools/get-node-schema.d.ts +12 -0
- package/dist/tools/get-node-schema.d.ts.map +1 -0
- package/dist/tools/get-node-schema.js +113 -0
- package/dist/tools/get-node-schema.js.map +1 -0
- package/dist/tools/get-public-workflows.d.ts +13 -0
- package/dist/tools/get-public-workflows.d.ts.map +1 -0
- package/dist/tools/get-public-workflows.js +63 -0
- package/dist/tools/get-public-workflows.js.map +1 -0
- package/dist/tools/get-shared-result-comments.d.ts +13 -0
- package/dist/tools/get-shared-result-comments.d.ts.map +1 -0
- package/dist/tools/get-shared-result-comments.js +62 -0
- package/dist/tools/get-shared-result-comments.js.map +1 -0
- package/dist/tools/get-shared-result.d.ts +13 -0
- package/dist/tools/get-shared-result.d.ts.map +1 -0
- package/dist/tools/get-shared-result.js +83 -0
- package/dist/tools/get-shared-result.js.map +1 -0
- package/dist/tools/get-workflow-comments.d.ts +12 -0
- package/dist/tools/get-workflow-comments.d.ts.map +1 -0
- package/dist/tools/get-workflow-comments.js +60 -0
- package/dist/tools/get-workflow-comments.js.map +1 -0
- package/dist/tools/get-workflow-details.d.ts +12 -0
- package/dist/tools/get-workflow-details.d.ts.map +1 -0
- package/dist/tools/get-workflow-details.js +87 -0
- package/dist/tools/get-workflow-details.js.map +1 -0
- package/dist/tools/get-workflow-graph.d.ts +12 -0
- package/dist/tools/get-workflow-graph.d.ts.map +1 -0
- package/dist/tools/get-workflow-graph.js +83 -0
- package/dist/tools/get-workflow-graph.js.map +1 -0
- package/dist/tools/get-workflow-inputs-schema.d.ts +12 -0
- package/dist/tools/get-workflow-inputs-schema.d.ts.map +1 -0
- package/dist/tools/get-workflow-inputs-schema.js +74 -0
- package/dist/tools/get-workflow-inputs-schema.js.map +1 -0
- package/dist/tools/get-workflow-metrics.d.ts +13 -0
- package/dist/tools/get-workflow-metrics.d.ts.map +1 -0
- package/dist/tools/get-workflow-metrics.js +65 -0
- package/dist/tools/get-workflow-metrics.js.map +1 -0
- package/dist/tools/get-workflow-public-url.d.ts +12 -0
- package/dist/tools/get-workflow-public-url.d.ts.map +1 -0
- package/dist/tools/get-workflow-public-url.js +48 -0
- package/dist/tools/get-workflow-public-url.js.map +1 -0
- package/dist/tools/get-workflow-tags.d.ts +12 -0
- package/dist/tools/get-workflow-tags.d.ts.map +1 -0
- package/dist/tools/get-workflow-tags.js +42 -0
- package/dist/tools/get-workflow-tags.js.map +1 -0
- package/dist/tools/index.d.ts +12 -0
- package/dist/tools/index.d.ts.map +1 -0
- package/dist/tools/index.js +407 -0
- package/dist/tools/index.js.map +1 -0
- package/dist/tools/link-app-workflow.d.ts +11 -0
- package/dist/tools/link-app-workflow.d.ts.map +1 -0
- package/dist/tools/link-app-workflow.js +69 -0
- package/dist/tools/link-app-workflow.js.map +1 -0
- package/dist/tools/list-apps.d.ts +11 -0
- package/dist/tools/list-apps.d.ts.map +1 -0
- package/dist/tools/list-apps.js +75 -0
- package/dist/tools/list-apps.js.map +1 -0
- package/dist/tools/list-available-nodes.d.ts +10 -0
- package/dist/tools/list-available-nodes.d.ts.map +1 -0
- package/dist/tools/list-available-nodes.js +94 -0
- package/dist/tools/list-available-nodes.js.map +1 -0
- package/dist/tools/list-custom-nodes.d.ts +16 -0
- package/dist/tools/list-custom-nodes.d.ts.map +1 -0
- package/dist/tools/list-custom-nodes.js +80 -0
- package/dist/tools/list-custom-nodes.js.map +1 -0
- package/dist/tools/list-input-presets.d.ts +15 -0
- package/dist/tools/list-input-presets.d.ts.map +1 -0
- package/dist/tools/list-input-presets.js +100 -0
- package/dist/tools/list-input-presets.js.map +1 -0
- package/dist/tools/list-shared-results.d.ts +15 -0
- package/dist/tools/list-shared-results.d.ts.map +1 -0
- package/dist/tools/list-shared-results.js +80 -0
- package/dist/tools/list-shared-results.js.map +1 -0
- package/dist/tools/list-workflows.d.ts +13 -0
- package/dist/tools/list-workflows.d.ts.map +1 -0
- package/dist/tools/list-workflows.js +70 -0
- package/dist/tools/list-workflows.js.map +1 -0
- package/dist/tools/publish-app.d.ts +11 -0
- package/dist/tools/publish-app.d.ts.map +1 -0
- package/dist/tools/publish-app.js +44 -0
- package/dist/tools/publish-app.js.map +1 -0
- package/dist/tools/retry-execution.d.ts +12 -0
- package/dist/tools/retry-execution.d.ts.map +1 -0
- package/dist/tools/retry-execution.js +45 -0
- package/dist/tools/retry-execution.js.map +1 -0
- package/dist/tools/search-apps.d.ts +11 -0
- package/dist/tools/search-apps.d.ts.map +1 -0
- package/dist/tools/search-apps.js +104 -0
- package/dist/tools/search-apps.js.map +1 -0
- package/dist/tools/search-public-custom-nodes.d.ts +19 -0
- package/dist/tools/search-public-custom-nodes.d.ts.map +1 -0
- package/dist/tools/search-public-custom-nodes.js +101 -0
- package/dist/tools/search-public-custom-nodes.js.map +1 -0
- package/dist/tools/search-workflows.d.ts +14 -0
- package/dist/tools/search-workflows.d.ts.map +1 -0
- package/dist/tools/search-workflows.js +62 -0
- package/dist/tools/search-workflows.js.map +1 -0
- package/dist/tools/set-workflow-tags.d.ts +13 -0
- package/dist/tools/set-workflow-tags.d.ts.map +1 -0
- package/dist/tools/set-workflow-tags.js +42 -0
- package/dist/tools/set-workflow-tags.js.map +1 -0
- package/dist/tools/stream-execution.d.ts +13 -0
- package/dist/tools/stream-execution.d.ts.map +1 -0
- package/dist/tools/stream-execution.js +70 -0
- package/dist/tools/stream-execution.js.map +1 -0
- package/dist/tools/toggle-community-inputs.d.ts +13 -0
- package/dist/tools/toggle-community-inputs.d.ts.map +1 -0
- package/dist/tools/toggle-community-inputs.js +49 -0
- package/dist/tools/toggle-community-inputs.js.map +1 -0
- package/dist/tools/toggle-custom-node-visibility.d.ts +14 -0
- package/dist/tools/toggle-custom-node-visibility.d.ts.map +1 -0
- package/dist/tools/toggle-custom-node-visibility.js +59 -0
- package/dist/tools/toggle-custom-node-visibility.js.map +1 -0
- package/dist/tools/toggle-workflow-public.d.ts +13 -0
- package/dist/tools/toggle-workflow-public.d.ts.map +1 -0
- package/dist/tools/toggle-workflow-public.js +42 -0
- package/dist/tools/toggle-workflow-public.js.map +1 -0
- package/dist/tools/unlink-app-workflow.d.ts +11 -0
- package/dist/tools/unlink-app-workflow.d.ts.map +1 -0
- package/dist/tools/unlink-app-workflow.js +44 -0
- package/dist/tools/unlink-app-workflow.js.map +1 -0
- package/dist/tools/unpublish-app.d.ts +11 -0
- package/dist/tools/unpublish-app.d.ts.map +1 -0
- package/dist/tools/unpublish-app.js +39 -0
- package/dist/tools/unpublish-app.js.map +1 -0
- package/dist/tools/update-app.d.ts +11 -0
- package/dist/tools/update-app.d.ts.map +1 -0
- package/dist/tools/update-app.js +101 -0
- package/dist/tools/update-app.js.map +1 -0
- package/dist/tools/update-custom-node.d.ts +28 -0
- package/dist/tools/update-custom-node.d.ts.map +1 -0
- package/dist/tools/update-custom-node.js +174 -0
- package/dist/tools/update-custom-node.js.map +1 -0
- package/dist/tools/update-input-preset.d.ts +16 -0
- package/dist/tools/update-input-preset.d.ts.map +1 -0
- package/dist/tools/update-input-preset.js +79 -0
- package/dist/tools/update-input-preset.js.map +1 -0
- package/dist/tools/update-node.d.ts +18 -0
- package/dist/tools/update-node.d.ts.map +1 -0
- package/dist/tools/update-node.js +73 -0
- package/dist/tools/update-node.js.map +1 -0
- package/dist/tools/validate-workflow.d.ts +12 -0
- package/dist/tools/validate-workflow.d.ts.map +1 -0
- package/dist/tools/validate-workflow.js +61 -0
- package/dist/tools/validate-workflow.js.map +1 -0
- package/dist/tools/vote-custom-node.d.ts +14 -0
- package/dist/tools/vote-custom-node.d.ts.map +1 -0
- package/dist/tools/vote-custom-node.js +60 -0
- package/dist/tools/vote-custom-node.js.map +1 -0
- package/dist/tools/vote-input-preset.d.ts +14 -0
- package/dist/tools/vote-input-preset.d.ts.map +1 -0
- package/dist/tools/vote-input-preset.js +49 -0
- package/dist/tools/vote-input-preset.js.map +1 -0
- package/dist/tools/vote-shared-result.d.ts +14 -0
- package/dist/tools/vote-shared-result.d.ts.map +1 -0
- package/dist/tools/vote-shared-result.js +49 -0
- package/dist/tools/vote-shared-result.js.map +1 -0
- package/dist/tools/vote-workflow.d.ts +13 -0
- package/dist/tools/vote-workflow.d.ts.map +1 -0
- package/dist/tools/vote-workflow.js +45 -0
- package/dist/tools/vote-workflow.js.map +1 -0
- package/dist/types.d.ts +670 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +5 -0
- package/dist/types.js.map +1 -0
- package/dist/utils/script-validator.d.ts +35 -0
- package/dist/utils/script-validator.d.ts.map +1 -0
- package/dist/utils/script-validator.js +282 -0
- package/dist/utils/script-validator.js.map +1 -0
- package/package.json +54 -0
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* get_workflow_metrics MCP Tool
|
|
3
|
+
*
|
|
4
|
+
* Gets execution metrics for a workflow including counts, success rates, and average duration.
|
|
5
|
+
*/
|
|
6
|
+
export const getWorkflowMetricsTool = {
|
|
7
|
+
name: 'get_workflow_metrics',
|
|
8
|
+
description: 'Get execution metrics for a workflow including total executions, success/failure rates, average duration, and daily breakdowns.',
|
|
9
|
+
inputSchema: {
|
|
10
|
+
type: 'object',
|
|
11
|
+
properties: {
|
|
12
|
+
workflow_id: {
|
|
13
|
+
type: 'string',
|
|
14
|
+
description: 'The workflow ID (hash)',
|
|
15
|
+
},
|
|
16
|
+
period: {
|
|
17
|
+
type: 'string',
|
|
18
|
+
description: 'Time period: 7d, 30d, 90d, or all',
|
|
19
|
+
default: '30d',
|
|
20
|
+
},
|
|
21
|
+
},
|
|
22
|
+
required: ['workflow_id'],
|
|
23
|
+
},
|
|
24
|
+
};
|
|
25
|
+
export async function handleGetWorkflowMetrics(api, args) {
|
|
26
|
+
try {
|
|
27
|
+
const metrics = await api.getWorkflowMetrics(args.workflow_id, args.period);
|
|
28
|
+
// success_rate from API is already a percentage (0-100), not a decimal
|
|
29
|
+
const successRate = typeof metrics.success_rate === 'number' ? metrics.success_rate : 0;
|
|
30
|
+
// Duration should be positive; use absolute value and handle edge cases
|
|
31
|
+
const avgDuration = metrics.avg_duration_ms;
|
|
32
|
+
const durationDisplay = avgDuration && avgDuration > 0
|
|
33
|
+
? `${avgDuration}ms`
|
|
34
|
+
: avgDuration && avgDuration < 0
|
|
35
|
+
? `${Math.abs(avgDuration)}ms` // Handle negative durations
|
|
36
|
+
: 'N/A';
|
|
37
|
+
const lines = [
|
|
38
|
+
`## Workflow Metrics (${metrics.period || 'all time'})`,
|
|
39
|
+
'',
|
|
40
|
+
`**Total Executions:** ${metrics.total_executions || 0}`,
|
|
41
|
+
`**Successful:** ${metrics.successful_executions || 0}`,
|
|
42
|
+
`**Failed:** ${metrics.failed_executions || 0}`,
|
|
43
|
+
`**Success Rate:** ${successRate.toFixed(1)}%`,
|
|
44
|
+
`**Avg Duration:** ${durationDisplay}`,
|
|
45
|
+
];
|
|
46
|
+
const dailyData = Array.isArray(metrics.executions_by_day) ? metrics.executions_by_day : [];
|
|
47
|
+
if (dailyData.length > 0) {
|
|
48
|
+
lines.push('', '### Daily Breakdown (last 7 days):');
|
|
49
|
+
for (const day of dailyData.slice(-7)) {
|
|
50
|
+
lines.push(`- ${day.date}: ${day.count} (${day.success_count} success, ${day.failure_count} failed)`);
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
return {
|
|
54
|
+
content: [{ type: 'text', text: lines.join('\n') }],
|
|
55
|
+
};
|
|
56
|
+
}
|
|
57
|
+
catch (error) {
|
|
58
|
+
const message = error instanceof Error ? error.message : 'Unknown error';
|
|
59
|
+
return {
|
|
60
|
+
content: [{ type: 'text', text: `Error getting workflow metrics: ${message}` }],
|
|
61
|
+
isError: true,
|
|
62
|
+
};
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
//# sourceMappingURL=get-workflow-metrics.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"get-workflow-metrics.js","sourceRoot":"","sources":["../../src/tools/get-workflow-metrics.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAKH,MAAM,CAAC,MAAM,sBAAsB,GAAS;IAC1C,IAAI,EAAE,sBAAsB;IAC5B,WAAW,EAAE,iIAAiI;IAC9I,WAAW,EAAE;QACX,IAAI,EAAE,QAAQ;QACd,UAAU,EAAE;YACV,WAAW,EAAE;gBACX,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,wBAAwB;aACtC;YACD,MAAM,EAAE;gBACN,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,mCAAmC;gBAChD,OAAO,EAAE,KAAK;aACf;SACF;QACD,QAAQ,EAAE,CAAC,aAAa,CAAC;KAC1B;CACF,CAAC;AAEF,MAAM,CAAC,KAAK,UAAU,wBAAwB,CAC5C,GAAqB,EACrB,IAA8C;IAE9C,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,MAAM,GAAG,CAAC,kBAAkB,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;QAE5E,uEAAuE;QACvE,MAAM,WAAW,GAAG,OAAO,OAAO,CAAC,YAAY,KAAK,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC;QAExF,wEAAwE;QACxE,MAAM,WAAW,GAAG,OAAO,CAAC,eAAe,CAAC;QAC5C,MAAM,eAAe,GAAG,WAAW,IAAI,WAAW,GAAG,CAAC;YACpD,CAAC,CAAC,GAAG,WAAW,IAAI;YACpB,CAAC,CAAC,WAAW,IAAI,WAAW,GAAG,CAAC;gBAC9B,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,IAAI,CAAC,4BAA4B;gBAC3D,CAAC,CAAC,KAAK,CAAC;QAEZ,MAAM,KAAK,GAAG;YACZ,wBAAwB,OAAO,CAAC,MAAM,IAAI,UAAU,GAAG;YACvD,EAAE;YACF,yBAAyB,OAAO,CAAC,gBAAgB,IAAI,CAAC,EAAE;YACxD,mBAAmB,OAAO,CAAC,qBAAqB,IAAI,CAAC,EAAE;YACvD,eAAe,OAAO,CAAC,iBAAiB,IAAI,CAAC,EAAE;YAC/C,qBAAqB,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG;YAC9C,qBAAqB,eAAe,EAAE;SACvC,CAAC;QAEF,MAAM,SAAS,GAAG,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,iBAAiB,CAAC,CAAC,CAAC,EAAE,CAAC;QAC5F,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACzB,KAAK,CAAC,IAAI,CAAC,EAAE,EAAE,oCAAoC,CAAC,CAAC;YACrD,KAAK,MAAM,GAAG,IAAI,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;gBACtC,KAAK,CAAC,IAAI,CAAC,KAAK,GAAG,CAAC,IAAI,KAAK,GAAG,CAAC,KAAK,KAAK,GAAG,CAAC,aAAa,aAAa,GAAG,CAAC,aAAa,UAAU,CAAC,CAAC;YACxG,CAAC;QACH,CAAC;QAED,OAAO;YACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;SACpD,CAAC;IACJ,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,CAAC;QACzE,OAAO;YACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,mCAAmC,OAAO,EAAE,EAAE,CAAC;YAC/E,OAAO,EAAE,IAAI;SACd,CAAC;IACJ,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* get_workflow_public_url MCP Tool
|
|
3
|
+
*
|
|
4
|
+
* Gets the public URL for a workflow.
|
|
5
|
+
*/
|
|
6
|
+
import { Tool, CallToolResult } from '@modelcontextprotocol/sdk/types.js';
|
|
7
|
+
import { FlowDotApiClient } from '../api-client.js';
|
|
8
|
+
export declare const getWorkflowPublicUrlTool: Tool;
|
|
9
|
+
export declare function handleGetWorkflowPublicUrl(api: FlowDotApiClient, args: {
|
|
10
|
+
workflow_id: string;
|
|
11
|
+
}): Promise<CallToolResult>;
|
|
12
|
+
//# sourceMappingURL=get-workflow-public-url.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"get-workflow-public-url.d.ts","sourceRoot":"","sources":["../../src/tools/get-workflow-public-url.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,MAAM,oCAAoC,CAAC;AAC1E,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAEpD,eAAO,MAAM,wBAAwB,EAAE,IAatC,CAAC;AAEF,wBAAsB,0BAA0B,CAC9C,GAAG,EAAE,gBAAgB,EACrB,IAAI,EAAE;IAAE,WAAW,EAAE,MAAM,CAAA;CAAE,GAC5B,OAAO,CAAC,cAAc,CAAC,CA6BzB"}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* get_workflow_public_url MCP Tool
|
|
3
|
+
*
|
|
4
|
+
* Gets the public URL for a workflow.
|
|
5
|
+
*/
|
|
6
|
+
export const getWorkflowPublicUrlTool = {
|
|
7
|
+
name: 'get_workflow_public_url',
|
|
8
|
+
description: 'Get the public shareable URL for a workflow. Returns the URL and indicates if the workflow is currently accessible to others.',
|
|
9
|
+
inputSchema: {
|
|
10
|
+
type: 'object',
|
|
11
|
+
properties: {
|
|
12
|
+
workflow_id: {
|
|
13
|
+
type: 'string',
|
|
14
|
+
description: 'The workflow ID (hash)',
|
|
15
|
+
},
|
|
16
|
+
},
|
|
17
|
+
required: ['workflow_id'],
|
|
18
|
+
},
|
|
19
|
+
};
|
|
20
|
+
export async function handleGetWorkflowPublicUrl(api, args) {
|
|
21
|
+
try {
|
|
22
|
+
const result = await api.getWorkflowPublicUrl(args.workflow_id);
|
|
23
|
+
const lines = [
|
|
24
|
+
`## Public URL for "${result.workflow_name}"`,
|
|
25
|
+
'',
|
|
26
|
+
`**URL:** ${result.public_url}`,
|
|
27
|
+
'',
|
|
28
|
+
`**Status:** ${result.is_public ? '✓ Public' : '✗ Private'}`,
|
|
29
|
+
'',
|
|
30
|
+
result.message,
|
|
31
|
+
];
|
|
32
|
+
if (!result.is_public) {
|
|
33
|
+
lines.push('');
|
|
34
|
+
lines.push('> Tip: Use `toggle_workflow_public` tool to make this workflow public.');
|
|
35
|
+
}
|
|
36
|
+
return {
|
|
37
|
+
content: [{ type: 'text', text: lines.join('\n') }],
|
|
38
|
+
};
|
|
39
|
+
}
|
|
40
|
+
catch (error) {
|
|
41
|
+
const message = error instanceof Error ? error.message : 'Unknown error';
|
|
42
|
+
return {
|
|
43
|
+
content: [{ type: 'text', text: `Error getting workflow public URL: ${message}` }],
|
|
44
|
+
isError: true,
|
|
45
|
+
};
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
//# sourceMappingURL=get-workflow-public-url.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"get-workflow-public-url.js","sourceRoot":"","sources":["../../src/tools/get-workflow-public-url.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAKH,MAAM,CAAC,MAAM,wBAAwB,GAAS;IAC5C,IAAI,EAAE,yBAAyB;IAC/B,WAAW,EAAE,+HAA+H;IAC5I,WAAW,EAAE;QACX,IAAI,EAAE,QAAQ;QACd,UAAU,EAAE;YACV,WAAW,EAAE;gBACX,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,wBAAwB;aACtC;SACF;QACD,QAAQ,EAAE,CAAC,aAAa,CAAC;KAC1B;CACF,CAAC;AAEF,MAAM,CAAC,KAAK,UAAU,0BAA0B,CAC9C,GAAqB,EACrB,IAA6B;IAE7B,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,oBAAoB,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QAEhE,MAAM,KAAK,GAAG;YACZ,sBAAsB,MAAM,CAAC,aAAa,GAAG;YAC7C,EAAE;YACF,YAAY,MAAM,CAAC,UAAU,EAAE;YAC/B,EAAE;YACF,eAAe,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,WAAW,EAAE;YAC5D,EAAE;YACF,MAAM,CAAC,OAAO;SACf,CAAC;QAEF,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC;YACtB,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACf,KAAK,CAAC,IAAI,CAAC,wEAAwE,CAAC,CAAC;QACvF,CAAC;QAED,OAAO;YACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;SACpD,CAAC;IACJ,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,CAAC;QACzE,OAAO;YACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,sCAAsC,OAAO,EAAE,EAAE,CAAC;YAClF,OAAO,EAAE,IAAI;SACd,CAAC;IACJ,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* get_workflow_tags MCP Tool
|
|
3
|
+
*
|
|
4
|
+
* Gets the tags associated with a workflow.
|
|
5
|
+
*/
|
|
6
|
+
import { Tool, CallToolResult } from '@modelcontextprotocol/sdk/types.js';
|
|
7
|
+
import { FlowDotApiClient } from '../api-client.js';
|
|
8
|
+
export declare const getWorkflowTagsTool: Tool;
|
|
9
|
+
export declare function handleGetWorkflowTags(api: FlowDotApiClient, args: {
|
|
10
|
+
workflow_id: string;
|
|
11
|
+
}): Promise<CallToolResult>;
|
|
12
|
+
//# sourceMappingURL=get-workflow-tags.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"get-workflow-tags.d.ts","sourceRoot":"","sources":["../../src/tools/get-workflow-tags.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,MAAM,oCAAoC,CAAC;AAC1E,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAEpD,eAAO,MAAM,mBAAmB,EAAE,IAajC,CAAC;AAEF,wBAAsB,qBAAqB,CACzC,GAAG,EAAE,gBAAgB,EACrB,IAAI,EAAE;IAAE,WAAW,EAAE,MAAM,CAAA;CAAE,GAC5B,OAAO,CAAC,cAAc,CAAC,CAuBzB"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* get_workflow_tags MCP Tool
|
|
3
|
+
*
|
|
4
|
+
* Gets the tags associated with a workflow.
|
|
5
|
+
*/
|
|
6
|
+
export const getWorkflowTagsTool = {
|
|
7
|
+
name: 'get_workflow_tags',
|
|
8
|
+
description: 'Get the tags/categories associated with a workflow.',
|
|
9
|
+
inputSchema: {
|
|
10
|
+
type: 'object',
|
|
11
|
+
properties: {
|
|
12
|
+
workflow_id: {
|
|
13
|
+
type: 'string',
|
|
14
|
+
description: 'The workflow ID (hash)',
|
|
15
|
+
},
|
|
16
|
+
},
|
|
17
|
+
required: ['workflow_id'],
|
|
18
|
+
},
|
|
19
|
+
};
|
|
20
|
+
export async function handleGetWorkflowTags(api, args) {
|
|
21
|
+
try {
|
|
22
|
+
const result = await api.getWorkflowTags(args.workflow_id);
|
|
23
|
+
// API returns { workflow_id, tags: [...] }
|
|
24
|
+
const tags = Array.isArray(result?.tags) ? result.tags : [];
|
|
25
|
+
if (tags.length === 0) {
|
|
26
|
+
return {
|
|
27
|
+
content: [{ type: 'text', text: 'This workflow has no tags.' }],
|
|
28
|
+
};
|
|
29
|
+
}
|
|
30
|
+
return {
|
|
31
|
+
content: [{ type: 'text', text: `**Tags:** ${tags.join(', ')}` }],
|
|
32
|
+
};
|
|
33
|
+
}
|
|
34
|
+
catch (error) {
|
|
35
|
+
const message = error instanceof Error ? error.message : 'Unknown error';
|
|
36
|
+
return {
|
|
37
|
+
content: [{ type: 'text', text: `Error getting workflow tags: ${message}` }],
|
|
38
|
+
isError: true,
|
|
39
|
+
};
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
//# sourceMappingURL=get-workflow-tags.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"get-workflow-tags.js","sourceRoot":"","sources":["../../src/tools/get-workflow-tags.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAKH,MAAM,CAAC,MAAM,mBAAmB,GAAS;IACvC,IAAI,EAAE,mBAAmB;IACzB,WAAW,EAAE,qDAAqD;IAClE,WAAW,EAAE;QACX,IAAI,EAAE,QAAQ;QACd,UAAU,EAAE;YACV,WAAW,EAAE;gBACX,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,wBAAwB;aACtC;SACF;QACD,QAAQ,EAAE,CAAC,aAAa,CAAC;KAC1B;CACF,CAAC;AAEF,MAAM,CAAC,KAAK,UAAU,qBAAqB,CACzC,GAAqB,EACrB,IAA6B;IAE7B,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,eAAe,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QAE3D,2CAA2C;QAC3C,MAAM,IAAI,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;QAE5D,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACtB,OAAO;gBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,4BAA4B,EAAE,CAAC;aAChE,CAAC;QACJ,CAAC;QAED,OAAO;YACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,aAAa,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC;SAClE,CAAC;IACJ,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,CAAC;QACzE,OAAO;YACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,gCAAgC,OAAO,EAAE,EAAE,CAAC;YAC5E,OAAO,EAAE,IAAI;SACd,CAAC;IACJ,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* MCP Tools Registry
|
|
3
|
+
*
|
|
4
|
+
* Registers all available MCP tools with the server.
|
|
5
|
+
*/
|
|
6
|
+
import { Server } from '@modelcontextprotocol/sdk/server/index.js';
|
|
7
|
+
import { FlowDotApiClient } from '../api-client.js';
|
|
8
|
+
/**
|
|
9
|
+
* Register all tools with the MCP server.
|
|
10
|
+
*/
|
|
11
|
+
export declare function registerTools(server: Server, api: FlowDotApiClient): void;
|
|
12
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,2CAA2C,CAAC;AAKnE,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAkNpD;;GAEG;AACH,wBAAgB,aAAa,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,gBAAgB,GAAG,IAAI,CAqWzE"}
|
|
@@ -0,0 +1,407 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* MCP Tools Registry
|
|
3
|
+
*
|
|
4
|
+
* Registers all available MCP tools with the server.
|
|
5
|
+
*/
|
|
6
|
+
import { CallToolRequestSchema, ListToolsRequestSchema, } from '@modelcontextprotocol/sdk/types.js';
|
|
7
|
+
// ============================================
|
|
8
|
+
// Core Tools (Existing)
|
|
9
|
+
// ============================================
|
|
10
|
+
import { listWorkflowsTool, handleListWorkflows } from './list-workflows.js';
|
|
11
|
+
import { executeWorkflowTool, handleExecuteWorkflow } from './execute-workflow.js';
|
|
12
|
+
import { getExecutionTool, handleGetExecution } from './get-execution.js';
|
|
13
|
+
import { agentChatTool, handleAgentChat } from './agent-chat.js';
|
|
14
|
+
// ============================================
|
|
15
|
+
// Analytics & Feedback Tools (analytics:read)
|
|
16
|
+
// ============================================
|
|
17
|
+
import { getWorkflowMetricsTool, handleGetWorkflowMetrics } from './get-workflow-metrics.js';
|
|
18
|
+
import { getWorkflowCommentsTool, handleGetWorkflowComments } from './get-workflow-comments.js';
|
|
19
|
+
import { getExecutionHistoryTool, handleGetExecutionHistory } from './get-execution-history.js';
|
|
20
|
+
// ============================================
|
|
21
|
+
// Workflow Management Tools (workflows:manage)
|
|
22
|
+
// ============================================
|
|
23
|
+
import { getWorkflowDetailsTool, handleGetWorkflowDetails } from './get-workflow-details.js';
|
|
24
|
+
import { getWorkflowInputsSchemaTool, handleGetWorkflowInputsSchema } from './get-workflow-inputs-schema.js';
|
|
25
|
+
import { duplicateWorkflowTool, handleDuplicateWorkflow } from './duplicate-workflow.js';
|
|
26
|
+
import { toggleWorkflowPublicTool, handleToggleWorkflowPublic } from './toggle-workflow-public.js';
|
|
27
|
+
import { favoriteWorkflowTool, handleFavoriteWorkflow } from './favorite-workflow.js';
|
|
28
|
+
// ============================================
|
|
29
|
+
// Execution Enhancements Tools (executions:manage)
|
|
30
|
+
// ============================================
|
|
31
|
+
import { cancelExecutionTool, handleCancelExecution } from './cancel-execution.js';
|
|
32
|
+
import { retryExecutionTool, handleRetryExecution } from './retry-execution.js';
|
|
33
|
+
import { streamExecutionTool, handleStreamExecution } from './stream-execution.js';
|
|
34
|
+
// ============================================
|
|
35
|
+
// Discovery & Organization Tools (discovery:read)
|
|
36
|
+
// ============================================
|
|
37
|
+
import { getWorkflowTagsTool, handleGetWorkflowTags } from './get-workflow-tags.js';
|
|
38
|
+
import { setWorkflowTagsTool, handleSetWorkflowTags } from './set-workflow-tags.js';
|
|
39
|
+
import { searchWorkflowsTool, handleSearchWorkflows } from './search-workflows.js';
|
|
40
|
+
import { getPublicWorkflowsTool, handleGetPublicWorkflows } from './get-public-workflows.js';
|
|
41
|
+
// ============================================
|
|
42
|
+
// Workflow Building Tools (workflows:build)
|
|
43
|
+
// ============================================
|
|
44
|
+
import { createWorkflowTool, handleCreateWorkflow } from './create-workflow.js';
|
|
45
|
+
import { deleteWorkflowTool, handleDeleteWorkflow } from './delete-workflow.js';
|
|
46
|
+
import { getWorkflowGraphTool, handleGetWorkflowGraph } from './get-workflow-graph.js';
|
|
47
|
+
import { validateWorkflowTool, handleValidateWorkflow } from './validate-workflow.js';
|
|
48
|
+
// ============================================
|
|
49
|
+
// Node Operations Tools (nodes:manage)
|
|
50
|
+
// ============================================
|
|
51
|
+
import { listAvailableNodesTool, handleListAvailableNodes } from './list-available-nodes.js';
|
|
52
|
+
import { getNodeSchemaTool, handleGetNodeSchema } from './get-node-schema.js';
|
|
53
|
+
import { addNodeTool, handleAddNode } from './add-node.js';
|
|
54
|
+
import { updateNodeTool, handleUpdateNode } from './update-node.js';
|
|
55
|
+
import { deleteNodeTool, handleDeleteNode } from './delete-node.js';
|
|
56
|
+
// ============================================
|
|
57
|
+
// Connection Operations Tools (connections:manage)
|
|
58
|
+
// ============================================
|
|
59
|
+
import { addConnectionTool, handleAddConnection } from './add-connection.js';
|
|
60
|
+
import { deleteConnectionTool, handleDeleteConnection } from './delete-connection.js';
|
|
61
|
+
import { getNodeConnectionsTool, handleGetNodeConnections } from './get-node-connections.js';
|
|
62
|
+
// ============================================
|
|
63
|
+
// Custom Node Operations Tools (custom_nodes:read / custom_nodes:manage)
|
|
64
|
+
// ============================================
|
|
65
|
+
import { listCustomNodesTool, handleListCustomNodes } from './list-custom-nodes.js';
|
|
66
|
+
import { searchPublicCustomNodesTool, handleSearchPublicCustomNodes } from './search-public-custom-nodes.js';
|
|
67
|
+
import { getCustomNodeTool, handleGetCustomNode } from './get-custom-node.js';
|
|
68
|
+
import { getCustomNodeCommentsTool, handleGetCustomNodeComments } from './get-custom-node-comments.js';
|
|
69
|
+
import { getCustomNodeTemplateTool, handleGetCustomNodeTemplate } from './get-custom-node-template.js';
|
|
70
|
+
import { createCustomNodeTool, handleCreateCustomNode } from './create-custom-node.js';
|
|
71
|
+
import { updateCustomNodeTool, handleUpdateCustomNode } from './update-custom-node.js';
|
|
72
|
+
import { deleteCustomNodeTool, handleDeleteCustomNode } from './delete-custom-node.js';
|
|
73
|
+
import { copyCustomNodeTool, handleCopyCustomNode } from './copy-custom-node.js';
|
|
74
|
+
import { toggleCustomNodeVisibilityTool, handleToggleCustomNodeVisibility } from './toggle-custom-node-visibility.js';
|
|
75
|
+
import { voteCustomNodeTool, handleVoteCustomNode } from './vote-custom-node.js';
|
|
76
|
+
import { favoriteCustomNodeTool, handleFavoriteCustomNode } from './favorite-custom-node.js';
|
|
77
|
+
import { addCustomNodeCommentTool, handleAddCustomNodeComment } from './add-custom-node-comment.js';
|
|
78
|
+
// ============================================
|
|
79
|
+
// App Operations Tools (apps:read / apps:manage)
|
|
80
|
+
// ============================================
|
|
81
|
+
import { listAppsTool, handleListApps } from './list-apps.js';
|
|
82
|
+
import { searchAppsTool, handleSearchApps } from './search-apps.js';
|
|
83
|
+
import { getAppTool, handleGetApp } from './get-app.js';
|
|
84
|
+
import { createAppTool, handleCreateApp } from './create-app.js';
|
|
85
|
+
import { updateAppTool, handleUpdateApp } from './update-app.js';
|
|
86
|
+
import { deleteAppTool, handleDeleteApp } from './delete-app.js';
|
|
87
|
+
import { publishAppTool, handlePublishApp } from './publish-app.js';
|
|
88
|
+
import { unpublishAppTool, handleUnpublishApp } from './unpublish-app.js';
|
|
89
|
+
import { cloneAppTool, handleCloneApp } from './clone-app.js';
|
|
90
|
+
import { linkAppWorkflowTool, handleLinkAppWorkflow } from './link-app-workflow.js';
|
|
91
|
+
import { unlinkAppWorkflowTool, handleUnlinkAppWorkflow } from './unlink-app-workflow.js';
|
|
92
|
+
import { getAppTemplateTool, handleGetAppTemplate } from './get-app-template.js';
|
|
93
|
+
// ============================================
|
|
94
|
+
// Sharing & Public URLs Tools (sharing:read / sharing:manage)
|
|
95
|
+
// ============================================
|
|
96
|
+
import { getWorkflowPublicUrlTool, handleGetWorkflowPublicUrl } from './get-workflow-public-url.js';
|
|
97
|
+
import { listSharedResultsTool, handleListSharedResults } from './list-shared-results.js';
|
|
98
|
+
import { getSharedResultTool, handleGetSharedResult } from './get-shared-result.js';
|
|
99
|
+
import { getSharedResultCommentsTool, handleGetSharedResultComments } from './get-shared-result-comments.js';
|
|
100
|
+
import { createSharedResultTool, handleCreateSharedResult } from './create-shared-result.js';
|
|
101
|
+
import { addWorkflowCommentTool, handleAddWorkflowComment } from './add-workflow-comment.js';
|
|
102
|
+
import { addSharedResultCommentTool, handleAddSharedResultComment } from './add-shared-result-comment.js';
|
|
103
|
+
import { voteWorkflowTool, handleVoteWorkflow } from './vote-workflow.js';
|
|
104
|
+
import { voteSharedResultTool, handleVoteSharedResult } from './vote-shared-result.js';
|
|
105
|
+
// ============================================
|
|
106
|
+
// Input Preset Tools (presets:read / presets:manage)
|
|
107
|
+
// ============================================
|
|
108
|
+
import { listInputPresetsTool, handleListInputPresets } from './list-input-presets.js';
|
|
109
|
+
import { getInputPresetTool, handleGetInputPreset } from './get-input-preset.js';
|
|
110
|
+
import { createInputPresetTool, handleCreateInputPreset } from './create-input-preset.js';
|
|
111
|
+
import { updateInputPresetTool, handleUpdateInputPreset } from './update-input-preset.js';
|
|
112
|
+
import { deleteInputPresetTool, handleDeleteInputPreset } from './delete-input-preset.js';
|
|
113
|
+
import { voteInputPresetTool, handleVoteInputPreset } from './vote-input-preset.js';
|
|
114
|
+
import { toggleCommunityInputsTool, handleToggleCommunityInputs } from './toggle-community-inputs.js';
|
|
115
|
+
// All available tools
|
|
116
|
+
const tools = [
|
|
117
|
+
// Core (4)
|
|
118
|
+
listWorkflowsTool,
|
|
119
|
+
executeWorkflowTool,
|
|
120
|
+
getExecutionTool,
|
|
121
|
+
agentChatTool,
|
|
122
|
+
// Analytics & Feedback (3)
|
|
123
|
+
getWorkflowMetricsTool,
|
|
124
|
+
getWorkflowCommentsTool,
|
|
125
|
+
getExecutionHistoryTool,
|
|
126
|
+
// Workflow Management (5)
|
|
127
|
+
getWorkflowDetailsTool,
|
|
128
|
+
getWorkflowInputsSchemaTool,
|
|
129
|
+
duplicateWorkflowTool,
|
|
130
|
+
toggleWorkflowPublicTool,
|
|
131
|
+
favoriteWorkflowTool,
|
|
132
|
+
// Execution Enhancements (3)
|
|
133
|
+
cancelExecutionTool,
|
|
134
|
+
retryExecutionTool,
|
|
135
|
+
streamExecutionTool,
|
|
136
|
+
// Discovery & Organization (4)
|
|
137
|
+
getWorkflowTagsTool,
|
|
138
|
+
setWorkflowTagsTool,
|
|
139
|
+
searchWorkflowsTool,
|
|
140
|
+
getPublicWorkflowsTool,
|
|
141
|
+
// Workflow Building (4)
|
|
142
|
+
createWorkflowTool,
|
|
143
|
+
deleteWorkflowTool,
|
|
144
|
+
getWorkflowGraphTool,
|
|
145
|
+
validateWorkflowTool,
|
|
146
|
+
// Node Operations (5)
|
|
147
|
+
listAvailableNodesTool,
|
|
148
|
+
getNodeSchemaTool,
|
|
149
|
+
addNodeTool,
|
|
150
|
+
updateNodeTool,
|
|
151
|
+
deleteNodeTool,
|
|
152
|
+
// Connection Operations (3)
|
|
153
|
+
addConnectionTool,
|
|
154
|
+
deleteConnectionTool,
|
|
155
|
+
getNodeConnectionsTool,
|
|
156
|
+
// Custom Node Operations (13)
|
|
157
|
+
listCustomNodesTool,
|
|
158
|
+
searchPublicCustomNodesTool,
|
|
159
|
+
getCustomNodeTool,
|
|
160
|
+
getCustomNodeCommentsTool,
|
|
161
|
+
getCustomNodeTemplateTool,
|
|
162
|
+
createCustomNodeTool,
|
|
163
|
+
updateCustomNodeTool,
|
|
164
|
+
deleteCustomNodeTool,
|
|
165
|
+
copyCustomNodeTool,
|
|
166
|
+
toggleCustomNodeVisibilityTool,
|
|
167
|
+
voteCustomNodeTool,
|
|
168
|
+
favoriteCustomNodeTool,
|
|
169
|
+
addCustomNodeCommentTool,
|
|
170
|
+
// App Operations (12)
|
|
171
|
+
listAppsTool,
|
|
172
|
+
searchAppsTool,
|
|
173
|
+
getAppTool,
|
|
174
|
+
createAppTool,
|
|
175
|
+
updateAppTool,
|
|
176
|
+
deleteAppTool,
|
|
177
|
+
publishAppTool,
|
|
178
|
+
unpublishAppTool,
|
|
179
|
+
cloneAppTool,
|
|
180
|
+
linkAppWorkflowTool,
|
|
181
|
+
unlinkAppWorkflowTool,
|
|
182
|
+
getAppTemplateTool,
|
|
183
|
+
// Sharing & Public URLs (9)
|
|
184
|
+
getWorkflowPublicUrlTool,
|
|
185
|
+
listSharedResultsTool,
|
|
186
|
+
getSharedResultTool,
|
|
187
|
+
getSharedResultCommentsTool,
|
|
188
|
+
createSharedResultTool,
|
|
189
|
+
addWorkflowCommentTool,
|
|
190
|
+
addSharedResultCommentTool,
|
|
191
|
+
voteWorkflowTool,
|
|
192
|
+
voteSharedResultTool,
|
|
193
|
+
// Input Presets (7)
|
|
194
|
+
listInputPresetsTool,
|
|
195
|
+
getInputPresetTool,
|
|
196
|
+
createInputPresetTool,
|
|
197
|
+
updateInputPresetTool,
|
|
198
|
+
deleteInputPresetTool,
|
|
199
|
+
voteInputPresetTool,
|
|
200
|
+
toggleCommunityInputsTool,
|
|
201
|
+
];
|
|
202
|
+
/**
|
|
203
|
+
* Register all tools with the MCP server.
|
|
204
|
+
*/
|
|
205
|
+
export function registerTools(server, api) {
|
|
206
|
+
// Handle tools/list request
|
|
207
|
+
server.setRequestHandler(ListToolsRequestSchema, async () => {
|
|
208
|
+
return { tools };
|
|
209
|
+
});
|
|
210
|
+
// Handle tools/call request
|
|
211
|
+
server.setRequestHandler(CallToolRequestSchema, async (request) => {
|
|
212
|
+
const { name, arguments: args } = request.params;
|
|
213
|
+
switch (name) {
|
|
214
|
+
// ============================================
|
|
215
|
+
// Core Tools
|
|
216
|
+
// ============================================
|
|
217
|
+
case 'list_workflows':
|
|
218
|
+
return handleListWorkflows(api, args);
|
|
219
|
+
case 'execute_workflow':
|
|
220
|
+
return handleExecuteWorkflow(api, args);
|
|
221
|
+
case 'get_execution_status':
|
|
222
|
+
return handleGetExecution(api, args);
|
|
223
|
+
case 'agent_chat':
|
|
224
|
+
return handleAgentChat(api, args);
|
|
225
|
+
// ============================================
|
|
226
|
+
// Analytics & Feedback Tools
|
|
227
|
+
// ============================================
|
|
228
|
+
case 'get_workflow_metrics':
|
|
229
|
+
return handleGetWorkflowMetrics(api, args);
|
|
230
|
+
case 'get_workflow_comments':
|
|
231
|
+
return handleGetWorkflowComments(api, args);
|
|
232
|
+
case 'get_execution_history':
|
|
233
|
+
return handleGetExecutionHistory(api, args);
|
|
234
|
+
// ============================================
|
|
235
|
+
// Workflow Management Tools
|
|
236
|
+
// ============================================
|
|
237
|
+
case 'get_workflow_details':
|
|
238
|
+
return handleGetWorkflowDetails(api, args);
|
|
239
|
+
case 'get_workflow_inputs_schema':
|
|
240
|
+
return handleGetWorkflowInputsSchema(api, args);
|
|
241
|
+
case 'duplicate_workflow':
|
|
242
|
+
return handleDuplicateWorkflow(api, args);
|
|
243
|
+
case 'toggle_workflow_public':
|
|
244
|
+
return handleToggleWorkflowPublic(api, args);
|
|
245
|
+
case 'favorite_workflow':
|
|
246
|
+
return handleFavoriteWorkflow(api, args);
|
|
247
|
+
// ============================================
|
|
248
|
+
// Execution Enhancements Tools
|
|
249
|
+
// ============================================
|
|
250
|
+
case 'cancel_execution':
|
|
251
|
+
return handleCancelExecution(api, args);
|
|
252
|
+
case 'retry_execution':
|
|
253
|
+
return handleRetryExecution(api, args);
|
|
254
|
+
case 'stream_execution':
|
|
255
|
+
return handleStreamExecution(api, args);
|
|
256
|
+
// ============================================
|
|
257
|
+
// Discovery & Organization Tools
|
|
258
|
+
// ============================================
|
|
259
|
+
case 'get_workflow_tags':
|
|
260
|
+
return handleGetWorkflowTags(api, args);
|
|
261
|
+
case 'set_workflow_tags':
|
|
262
|
+
return handleSetWorkflowTags(api, args);
|
|
263
|
+
case 'search_workflows':
|
|
264
|
+
return handleSearchWorkflows(api, args);
|
|
265
|
+
case 'get_public_workflows':
|
|
266
|
+
return handleGetPublicWorkflows(api, args);
|
|
267
|
+
// ============================================
|
|
268
|
+
// Workflow Building Tools
|
|
269
|
+
// ============================================
|
|
270
|
+
case 'create_workflow':
|
|
271
|
+
return handleCreateWorkflow(api, args);
|
|
272
|
+
case 'delete_workflow':
|
|
273
|
+
return handleDeleteWorkflow(api, args);
|
|
274
|
+
case 'get_workflow_graph':
|
|
275
|
+
return handleGetWorkflowGraph(api, args);
|
|
276
|
+
case 'validate_workflow':
|
|
277
|
+
return handleValidateWorkflow(api, args);
|
|
278
|
+
// ============================================
|
|
279
|
+
// Node Operations Tools
|
|
280
|
+
// ============================================
|
|
281
|
+
case 'list_available_nodes':
|
|
282
|
+
return handleListAvailableNodes(api, args);
|
|
283
|
+
case 'get_node_schema':
|
|
284
|
+
return handleGetNodeSchema(api, args);
|
|
285
|
+
case 'add_node':
|
|
286
|
+
return handleAddNode(api, args);
|
|
287
|
+
case 'update_node':
|
|
288
|
+
return handleUpdateNode(api, args);
|
|
289
|
+
case 'delete_node':
|
|
290
|
+
return handleDeleteNode(api, args);
|
|
291
|
+
// ============================================
|
|
292
|
+
// Connection Operations Tools
|
|
293
|
+
// ============================================
|
|
294
|
+
case 'add_connection':
|
|
295
|
+
return handleAddConnection(api, args);
|
|
296
|
+
case 'delete_connection':
|
|
297
|
+
return handleDeleteConnection(api, args);
|
|
298
|
+
case 'get_node_connections':
|
|
299
|
+
return handleGetNodeConnections(api, args);
|
|
300
|
+
// ============================================
|
|
301
|
+
// Custom Node Operations Tools
|
|
302
|
+
// ============================================
|
|
303
|
+
case 'list_custom_nodes':
|
|
304
|
+
return handleListCustomNodes(api, args);
|
|
305
|
+
case 'search_public_custom_nodes':
|
|
306
|
+
return handleSearchPublicCustomNodes(api, args);
|
|
307
|
+
case 'get_custom_node':
|
|
308
|
+
return handleGetCustomNode(api, args);
|
|
309
|
+
case 'get_custom_node_comments':
|
|
310
|
+
return handleGetCustomNodeComments(api, args);
|
|
311
|
+
case 'get_custom_node_template':
|
|
312
|
+
return handleGetCustomNodeTemplate(args);
|
|
313
|
+
case 'create_custom_node':
|
|
314
|
+
return handleCreateCustomNode(api, args);
|
|
315
|
+
case 'update_custom_node':
|
|
316
|
+
return handleUpdateCustomNode(api, args);
|
|
317
|
+
case 'delete_custom_node':
|
|
318
|
+
return handleDeleteCustomNode(api, args);
|
|
319
|
+
case 'copy_custom_node':
|
|
320
|
+
return handleCopyCustomNode(api, args);
|
|
321
|
+
case 'toggle_custom_node_visibility':
|
|
322
|
+
return handleToggleCustomNodeVisibility(api, args);
|
|
323
|
+
case 'vote_custom_node':
|
|
324
|
+
return handleVoteCustomNode(api, args);
|
|
325
|
+
case 'favorite_custom_node':
|
|
326
|
+
return handleFavoriteCustomNode(api, args);
|
|
327
|
+
case 'add_custom_node_comment':
|
|
328
|
+
return handleAddCustomNodeComment(api, args);
|
|
329
|
+
// ============================================
|
|
330
|
+
// App Operations Tools
|
|
331
|
+
// ============================================
|
|
332
|
+
case 'list_apps':
|
|
333
|
+
return handleListApps(api, args);
|
|
334
|
+
case 'search_apps':
|
|
335
|
+
return handleSearchApps(api, args);
|
|
336
|
+
case 'get_app':
|
|
337
|
+
return handleGetApp(api, args);
|
|
338
|
+
case 'create_app':
|
|
339
|
+
return handleCreateApp(api, args);
|
|
340
|
+
case 'update_app':
|
|
341
|
+
return handleUpdateApp(api, args);
|
|
342
|
+
case 'delete_app':
|
|
343
|
+
return handleDeleteApp(api, args);
|
|
344
|
+
case 'publish_app':
|
|
345
|
+
return handlePublishApp(api, args);
|
|
346
|
+
case 'unpublish_app':
|
|
347
|
+
return handleUnpublishApp(api, args);
|
|
348
|
+
case 'clone_app':
|
|
349
|
+
return handleCloneApp(api, args);
|
|
350
|
+
case 'link_app_workflow':
|
|
351
|
+
return handleLinkAppWorkflow(api, args);
|
|
352
|
+
case 'unlink_app_workflow':
|
|
353
|
+
return handleUnlinkAppWorkflow(api, args);
|
|
354
|
+
case 'get_app_template':
|
|
355
|
+
return handleGetAppTemplate(args);
|
|
356
|
+
// ============================================
|
|
357
|
+
// Sharing & Public URLs Tools
|
|
358
|
+
// ============================================
|
|
359
|
+
case 'get_workflow_public_url':
|
|
360
|
+
return handleGetWorkflowPublicUrl(api, args);
|
|
361
|
+
case 'list_shared_results':
|
|
362
|
+
return handleListSharedResults(api, args);
|
|
363
|
+
case 'get_shared_result':
|
|
364
|
+
return handleGetSharedResult(api, args);
|
|
365
|
+
case 'get_shared_result_comments':
|
|
366
|
+
return handleGetSharedResultComments(api, args);
|
|
367
|
+
case 'create_shared_result':
|
|
368
|
+
return handleCreateSharedResult(api, args);
|
|
369
|
+
case 'add_workflow_comment':
|
|
370
|
+
return handleAddWorkflowComment(api, args);
|
|
371
|
+
case 'add_shared_result_comment':
|
|
372
|
+
return handleAddSharedResultComment(api, args);
|
|
373
|
+
case 'vote_workflow':
|
|
374
|
+
return handleVoteWorkflow(api, args);
|
|
375
|
+
case 'vote_shared_result':
|
|
376
|
+
return handleVoteSharedResult(api, args);
|
|
377
|
+
// ============================================
|
|
378
|
+
// Input Preset Tools
|
|
379
|
+
// ============================================
|
|
380
|
+
case 'list_input_presets':
|
|
381
|
+
return handleListInputPresets(api, args);
|
|
382
|
+
case 'get_input_preset':
|
|
383
|
+
return handleGetInputPreset(api, args);
|
|
384
|
+
case 'create_input_preset':
|
|
385
|
+
return handleCreateInputPreset(api, args);
|
|
386
|
+
case 'update_input_preset':
|
|
387
|
+
return handleUpdateInputPreset(api, args);
|
|
388
|
+
case 'delete_input_preset':
|
|
389
|
+
return handleDeleteInputPreset(api, args);
|
|
390
|
+
case 'vote_input_preset':
|
|
391
|
+
return handleVoteInputPreset(api, args);
|
|
392
|
+
case 'toggle_community_inputs':
|
|
393
|
+
return handleToggleCommunityInputs(api, args);
|
|
394
|
+
default:
|
|
395
|
+
return {
|
|
396
|
+
content: [
|
|
397
|
+
{
|
|
398
|
+
type: 'text',
|
|
399
|
+
text: `Unknown tool: ${name}`,
|
|
400
|
+
},
|
|
401
|
+
],
|
|
402
|
+
isError: true,
|
|
403
|
+
};
|
|
404
|
+
}
|
|
405
|
+
});
|
|
406
|
+
}
|
|
407
|
+
//# sourceMappingURL=index.js.map
|