snow-flow 1.1.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.
Files changed (240) hide show
  1. package/.env.example +49 -0
  2. package/.mcp.json +106 -0
  3. package/.mcp.json.template +106 -0
  4. package/LICENSE +21 -0
  5. package/README.md +236 -0
  6. package/bin/snow-flow +4 -0
  7. package/bin/snow-flow.js +3 -0
  8. package/claude-flow +79 -0
  9. package/claude-flow.bat +18 -0
  10. package/claude-flow.config.json +20 -0
  11. package/claude-flow.ps1 +24 -0
  12. package/dist/agents/app-creator.agent.d.ts +55 -0
  13. package/dist/agents/app-creator.agent.d.ts.map +1 -0
  14. package/dist/agents/app-creator.agent.js +1292 -0
  15. package/dist/agents/app-creator.agent.js.map +1 -0
  16. package/dist/agents/base-snow-agent.d.ts +63 -0
  17. package/dist/agents/base-snow-agent.d.ts.map +1 -0
  18. package/dist/agents/base-snow-agent.js +296 -0
  19. package/dist/agents/base-snow-agent.js.map +1 -0
  20. package/dist/agents/script-generator.agent.d.ts +32 -0
  21. package/dist/agents/script-generator.agent.d.ts.map +1 -0
  22. package/dist/agents/script-generator.agent.js +772 -0
  23. package/dist/agents/script-generator.agent.js.map +1 -0
  24. package/dist/agents/ui-builder.agent.d.ts +50 -0
  25. package/dist/agents/ui-builder.agent.d.ts.map +1 -0
  26. package/dist/agents/ui-builder.agent.js +1539 -0
  27. package/dist/agents/ui-builder.agent.js.map +1 -0
  28. package/dist/agents/widget-builder.agent.d.ts +32 -0
  29. package/dist/agents/widget-builder.agent.d.ts.map +1 -0
  30. package/dist/agents/widget-builder.agent.js +439 -0
  31. package/dist/agents/widget-builder.agent.js.map +1 -0
  32. package/dist/agents/workflow-designer.agent.d.ts +31 -0
  33. package/dist/agents/workflow-designer.agent.d.ts.map +1 -0
  34. package/dist/agents/workflow-designer.agent.js +583 -0
  35. package/dist/agents/workflow-designer.agent.js.map +1 -0
  36. package/dist/api/error-handling.d.ts +214 -0
  37. package/dist/api/error-handling.d.ts.map +1 -0
  38. package/dist/api/error-handling.js +594 -0
  39. package/dist/api/error-handling.js.map +1 -0
  40. package/dist/api/flow-designer-api.d.ts +167 -0
  41. package/dist/api/flow-designer-api.d.ts.map +1 -0
  42. package/dist/api/flow-designer-api.js +555 -0
  43. package/dist/api/flow-designer-api.js.map +1 -0
  44. package/dist/api/natural-language-mapper.d.ts +126 -0
  45. package/dist/api/natural-language-mapper.d.ts.map +1 -0
  46. package/dist/api/natural-language-mapper.js +498 -0
  47. package/dist/api/natural-language-mapper.js.map +1 -0
  48. package/dist/api/performance-optimizer.d.ts +240 -0
  49. package/dist/api/performance-optimizer.d.ts.map +1 -0
  50. package/dist/api/performance-optimizer.js +701 -0
  51. package/dist/api/performance-optimizer.js.map +1 -0
  52. package/dist/api/transaction-manager.d.ts +189 -0
  53. package/dist/api/transaction-manager.d.ts.map +1 -0
  54. package/dist/api/transaction-manager.js +576 -0
  55. package/dist/api/transaction-manager.js.map +1 -0
  56. package/dist/cli/deploy-artifact.d.ts +7 -0
  57. package/dist/cli/deploy-artifact.d.ts.map +1 -0
  58. package/dist/cli/deploy-artifact.js +279 -0
  59. package/dist/cli/deploy-artifact.js.map +1 -0
  60. package/dist/cli.d.ts +6 -0
  61. package/dist/cli.d.ts.map +1 -0
  62. package/dist/cli.js +2057 -0
  63. package/dist/cli.js.map +1 -0
  64. package/dist/index.d.ts +10 -0
  65. package/dist/index.d.ts.map +1 -0
  66. package/dist/index.js +35 -0
  67. package/dist/index.js.map +1 -0
  68. package/dist/managers/scope-manager.d.ts +75 -0
  69. package/dist/managers/scope-manager.d.ts.map +1 -0
  70. package/dist/managers/scope-manager.js +448 -0
  71. package/dist/managers/scope-manager.js.map +1 -0
  72. package/dist/mcp/mcp-wrapper.d.ts +8 -0
  73. package/dist/mcp/mcp-wrapper.d.ts.map +1 -0
  74. package/dist/mcp/mcp-wrapper.js +77 -0
  75. package/dist/mcp/mcp-wrapper.js.map +1 -0
  76. package/dist/mcp/servicenow-automation-mcp.d.ts +8 -0
  77. package/dist/mcp/servicenow-automation-mcp.d.ts.map +1 -0
  78. package/dist/mcp/servicenow-automation-mcp.js +683 -0
  79. package/dist/mcp/servicenow-automation-mcp.js.map +1 -0
  80. package/dist/mcp/servicenow-deployment-mcp.d.ts +7 -0
  81. package/dist/mcp/servicenow-deployment-mcp.d.ts.map +1 -0
  82. package/dist/mcp/servicenow-deployment-mcp.js +972 -0
  83. package/dist/mcp/servicenow-deployment-mcp.js.map +1 -0
  84. package/dist/mcp/servicenow-flow-composer-mcp.d.ts +7 -0
  85. package/dist/mcp/servicenow-flow-composer-mcp.d.ts.map +1 -0
  86. package/dist/mcp/servicenow-flow-composer-mcp.js +1121 -0
  87. package/dist/mcp/servicenow-flow-composer-mcp.js.map +1 -0
  88. package/dist/mcp/servicenow-graph-memory-mcp.d.ts +7 -0
  89. package/dist/mcp/servicenow-graph-memory-mcp.d.ts.map +1 -0
  90. package/dist/mcp/servicenow-graph-memory-mcp.js +703 -0
  91. package/dist/mcp/servicenow-graph-memory-mcp.js.map +1 -0
  92. package/dist/mcp/servicenow-integration-mcp.d.ts +8 -0
  93. package/dist/mcp/servicenow-integration-mcp.d.ts.map +1 -0
  94. package/dist/mcp/servicenow-integration-mcp.js +689 -0
  95. package/dist/mcp/servicenow-integration-mcp.js.map +1 -0
  96. package/dist/mcp/servicenow-intelligent-mcp.d.ts +7 -0
  97. package/dist/mcp/servicenow-intelligent-mcp.d.ts.map +1 -0
  98. package/dist/mcp/servicenow-intelligent-mcp.js +1138 -0
  99. package/dist/mcp/servicenow-intelligent-mcp.js.map +1 -0
  100. package/dist/mcp/servicenow-mcp-server.d.ts +37 -0
  101. package/dist/mcp/servicenow-mcp-server.d.ts.map +1 -0
  102. package/dist/mcp/servicenow-mcp-server.js +648 -0
  103. package/dist/mcp/servicenow-mcp-server.js.map +1 -0
  104. package/dist/mcp/servicenow-operations-mcp.d.ts +15 -0
  105. package/dist/mcp/servicenow-operations-mcp.d.ts.map +1 -0
  106. package/dist/mcp/servicenow-operations-mcp.js +1287 -0
  107. package/dist/mcp/servicenow-operations-mcp.js.map +1 -0
  108. package/dist/mcp/servicenow-platform-development-mcp.d.ts +8 -0
  109. package/dist/mcp/servicenow-platform-development-mcp.d.ts.map +1 -0
  110. package/dist/mcp/servicenow-platform-development-mcp.js +557 -0
  111. package/dist/mcp/servicenow-platform-development-mcp.js.map +1 -0
  112. package/dist/mcp/servicenow-progressive-indexer.d.ts +79 -0
  113. package/dist/mcp/servicenow-progressive-indexer.d.ts.map +1 -0
  114. package/dist/mcp/servicenow-progressive-indexer.js +320 -0
  115. package/dist/mcp/servicenow-progressive-indexer.js.map +1 -0
  116. package/dist/mcp/servicenow-reporting-analytics-mcp.d.ts +8 -0
  117. package/dist/mcp/servicenow-reporting-analytics-mcp.d.ts.map +1 -0
  118. package/dist/mcp/servicenow-reporting-analytics-mcp.js +888 -0
  119. package/dist/mcp/servicenow-reporting-analytics-mcp.js.map +1 -0
  120. package/dist/mcp/servicenow-security-compliance-mcp.d.ts +8 -0
  121. package/dist/mcp/servicenow-security-compliance-mcp.d.ts.map +1 -0
  122. package/dist/mcp/servicenow-security-compliance-mcp.js +812 -0
  123. package/dist/mcp/servicenow-security-compliance-mcp.js.map +1 -0
  124. package/dist/mcp/servicenow-update-set-mcp.d.ts +7 -0
  125. package/dist/mcp/servicenow-update-set-mcp.d.ts.map +1 -0
  126. package/dist/mcp/servicenow-update-set-mcp.js +599 -0
  127. package/dist/mcp/servicenow-update-set-mcp.js.map +1 -0
  128. package/dist/mcp/start-all-mcp-servers.d.ts +6 -0
  129. package/dist/mcp/start-all-mcp-servers.d.ts.map +1 -0
  130. package/dist/mcp/start-all-mcp-servers.js +65 -0
  131. package/dist/mcp/start-all-mcp-servers.js.map +1 -0
  132. package/dist/mcp/start-servicenow-mcp.d.ts +7 -0
  133. package/dist/mcp/start-servicenow-mcp.d.ts.map +1 -0
  134. package/dist/mcp/start-servicenow-mcp.js +64 -0
  135. package/dist/mcp/start-servicenow-mcp.js.map +1 -0
  136. package/dist/mcp/test-simple-mcp.d.ts +6 -0
  137. package/dist/mcp/test-simple-mcp.d.ts.map +1 -0
  138. package/dist/mcp/test-simple-mcp.js +64 -0
  139. package/dist/mcp/test-simple-mcp.js.map +1 -0
  140. package/dist/orchestrator/flow-composer.d.ts +269 -0
  141. package/dist/orchestrator/flow-composer.d.ts.map +1 -0
  142. package/dist/orchestrator/flow-composer.js +2221 -0
  143. package/dist/orchestrator/flow-composer.js.map +1 -0
  144. package/dist/orchestrator/flow-pattern-templates.d.ts +260 -0
  145. package/dist/orchestrator/flow-pattern-templates.d.ts.map +1 -0
  146. package/dist/orchestrator/flow-pattern-templates.js +906 -0
  147. package/dist/orchestrator/flow-pattern-templates.js.map +1 -0
  148. package/dist/orchestrator/flow-subflow-decision-engine.d.ts +202 -0
  149. package/dist/orchestrator/flow-subflow-decision-engine.d.ts.map +1 -0
  150. package/dist/orchestrator/flow-subflow-decision-engine.js +769 -0
  151. package/dist/orchestrator/flow-subflow-decision-engine.js.map +1 -0
  152. package/dist/orchestrator/flow-validation-engine.d.ts +145 -0
  153. package/dist/orchestrator/flow-validation-engine.d.ts.map +1 -0
  154. package/dist/orchestrator/flow-validation-engine.js +663 -0
  155. package/dist/orchestrator/flow-validation-engine.js.map +1 -0
  156. package/dist/orchestrator/snow-orchestrator.d.ts +49 -0
  157. package/dist/orchestrator/snow-orchestrator.d.ts.map +1 -0
  158. package/dist/orchestrator/snow-orchestrator.js +235 -0
  159. package/dist/orchestrator/snow-orchestrator.js.map +1 -0
  160. package/dist/orchestrator/subflow-creation-handler.d.ts +230 -0
  161. package/dist/orchestrator/subflow-creation-handler.d.ts.map +1 -0
  162. package/dist/orchestrator/subflow-creation-handler.js +791 -0
  163. package/dist/orchestrator/subflow-creation-handler.js.map +1 -0
  164. package/dist/strategies/global-scope-strategy.d.ts +123 -0
  165. package/dist/strategies/global-scope-strategy.d.ts.map +1 -0
  166. package/dist/strategies/global-scope-strategy.js +585 -0
  167. package/dist/strategies/global-scope-strategy.js.map +1 -0
  168. package/dist/types/index.d.ts +138 -0
  169. package/dist/types/index.d.ts.map +1 -0
  170. package/dist/types/index.js +4 -0
  171. package/dist/types/index.js.map +1 -0
  172. package/dist/types/servicenow.types.d.ts +260 -0
  173. package/dist/types/servicenow.types.d.ts.map +1 -0
  174. package/dist/types/servicenow.types.js +3 -0
  175. package/dist/types/servicenow.types.js.map +1 -0
  176. package/dist/types/snow-flow.types.d.ts +114 -0
  177. package/dist/types/snow-flow.types.d.ts.map +1 -0
  178. package/dist/types/snow-flow.types.js +3 -0
  179. package/dist/types/snow-flow.types.js.map +1 -0
  180. package/dist/utils/action-type-cache.d.ts +66 -0
  181. package/dist/utils/action-type-cache.d.ts.map +1 -0
  182. package/dist/utils/action-type-cache.js +237 -0
  183. package/dist/utils/action-type-cache.js.map +1 -0
  184. package/dist/utils/agent-detector.d.ts +35 -0
  185. package/dist/utils/agent-detector.d.ts.map +1 -0
  186. package/dist/utils/agent-detector.js +353 -0
  187. package/dist/utils/agent-detector.js.map +1 -0
  188. package/dist/utils/flow-api-discovery.d.ts +151 -0
  189. package/dist/utils/flow-api-discovery.d.ts.map +1 -0
  190. package/dist/utils/flow-api-discovery.js +440 -0
  191. package/dist/utils/flow-api-discovery.js.map +1 -0
  192. package/dist/utils/flow-xml-generator.d.ts +41 -0
  193. package/dist/utils/flow-xml-generator.d.ts.map +1 -0
  194. package/dist/utils/flow-xml-generator.js +258 -0
  195. package/dist/utils/flow-xml-generator.js.map +1 -0
  196. package/dist/utils/logger.d.ts +13 -0
  197. package/dist/utils/logger.d.ts.map +1 -0
  198. package/dist/utils/logger.js +51 -0
  199. package/dist/utils/logger.js.map +1 -0
  200. package/dist/utils/mcp-auth-middleware.d.ts +58 -0
  201. package/dist/utils/mcp-auth-middleware.d.ts.map +1 -0
  202. package/dist/utils/mcp-auth-middleware.js +227 -0
  203. package/dist/utils/mcp-auth-middleware.js.map +1 -0
  204. package/dist/utils/mcp-config-manager.d.ts +126 -0
  205. package/dist/utils/mcp-config-manager.d.ts.map +1 -0
  206. package/dist/utils/mcp-config-manager.js +209 -0
  207. package/dist/utils/mcp-config-manager.js.map +1 -0
  208. package/dist/utils/mcp-server-manager.d.ts +91 -0
  209. package/dist/utils/mcp-server-manager.d.ts.map +1 -0
  210. package/dist/utils/mcp-server-manager.js +338 -0
  211. package/dist/utils/mcp-server-manager.js.map +1 -0
  212. package/dist/utils/scope-utils.d.ts +72 -0
  213. package/dist/utils/scope-utils.d.ts.map +1 -0
  214. package/dist/utils/scope-utils.js +386 -0
  215. package/dist/utils/scope-utils.js.map +1 -0
  216. package/dist/utils/servicenow-client.d.ts +233 -0
  217. package/dist/utils/servicenow-client.d.ts.map +1 -0
  218. package/dist/utils/servicenow-client.js +1465 -0
  219. package/dist/utils/servicenow-client.js.map +1 -0
  220. package/dist/utils/snow-oauth-old.d.ts +65 -0
  221. package/dist/utils/snow-oauth-old.d.ts.map +1 -0
  222. package/dist/utils/snow-oauth-old.js +345 -0
  223. package/dist/utils/snow-oauth-old.js.map +1 -0
  224. package/dist/utils/snow-oauth.d.ts +85 -0
  225. package/dist/utils/snow-oauth.d.ts.map +1 -0
  226. package/dist/utils/snow-oauth.js +512 -0
  227. package/dist/utils/snow-oauth.js.map +1 -0
  228. package/dist/utils/template-engine.d.ts +76 -0
  229. package/dist/utils/template-engine.d.ts.map +1 -0
  230. package/dist/utils/template-engine.js +391 -0
  231. package/dist/utils/template-engine.js.map +1 -0
  232. package/dist/version.d.ts +35 -0
  233. package/dist/version.d.ts.map +1 -0
  234. package/dist/version.js +72 -0
  235. package/dist/version.js.map +1 -0
  236. package/mcp-wrapper.sh +12 -0
  237. package/package.json +77 -0
  238. package/reports/swarm-auto-centralized-1752649029776.json +13 -0
  239. package/scripts/postinstall.js +30 -0
  240. package/scripts/setup-mcp.js +89 -0
@@ -0,0 +1,648 @@
1
+ #!/usr/bin/env node
2
+ "use strict";
3
+ /**
4
+ * ServiceNow MCP Server
5
+ * Provides Claude Code with direct access to ServiceNow APIs via MCP protocol
6
+ */
7
+ Object.defineProperty(exports, "__esModule", { value: true });
8
+ exports.ServiceNowMCPServer = void 0;
9
+ const index_js_1 = require("@modelcontextprotocol/sdk/server/index.js");
10
+ const stdio_js_1 = require("@modelcontextprotocol/sdk/server/stdio.js");
11
+ const types_js_1 = require("@modelcontextprotocol/sdk/types.js");
12
+ const servicenow_client_js_1 = require("../utils/servicenow-client.js");
13
+ const snow_oauth_js_1 = require("../utils/snow-oauth.js");
14
+ class ServiceNowMCPServer {
15
+ constructor(config) {
16
+ this.isAuthenticated = false;
17
+ this.config = config;
18
+ this.oauth = new snow_oauth_js_1.ServiceNowOAuth();
19
+ this.snowClient = new servicenow_client_js_1.ServiceNowClient();
20
+ this.server = new index_js_1.Server({
21
+ name: config.name,
22
+ version: config.version,
23
+ }, {
24
+ capabilities: {
25
+ tools: {}
26
+ }
27
+ });
28
+ this.setupToolHandlers();
29
+ this.setupRequestHandlers();
30
+ }
31
+ async checkAuthentication() {
32
+ try {
33
+ this.isAuthenticated = await this.oauth.isAuthenticated();
34
+ return this.isAuthenticated;
35
+ }
36
+ catch (error) {
37
+ console.error('Authentication check failed:', error);
38
+ return false;
39
+ }
40
+ }
41
+ setupRequestHandlers() {
42
+ this.server.setRequestHandler(types_js_1.ListToolsRequestSchema, async () => {
43
+ const isAuth = await this.checkAuthentication();
44
+ const tools = [
45
+ {
46
+ name: "snow_auth_status",
47
+ description: "Check ServiceNow authentication status",
48
+ inputSchema: {
49
+ type: "object",
50
+ properties: {},
51
+ required: []
52
+ }
53
+ }
54
+ ];
55
+ if (isAuth) {
56
+ tools.push({
57
+ name: "snow_create_widget",
58
+ description: "Create a new ServiceNow Service Portal widget",
59
+ inputSchema: {
60
+ type: "object",
61
+ properties: {
62
+ name: {
63
+ type: "string",
64
+ description: "Widget name"
65
+ },
66
+ id: {
67
+ type: "string",
68
+ description: "Widget ID (unique identifier)"
69
+ },
70
+ title: {
71
+ type: "string",
72
+ description: "Widget display title"
73
+ },
74
+ description: {
75
+ type: "string",
76
+ description: "Widget description"
77
+ },
78
+ template: {
79
+ type: "string",
80
+ description: "HTML template for the widget"
81
+ },
82
+ css: {
83
+ type: "string",
84
+ description: "CSS styling for the widget"
85
+ },
86
+ client_script: {
87
+ type: "string",
88
+ description: "Client-side AngularJS script"
89
+ },
90
+ server_script: {
91
+ type: "string",
92
+ description: "Server-side script"
93
+ },
94
+ category: {
95
+ type: "string",
96
+ description: "Widget category (e.g., 'incident', 'custom')"
97
+ }
98
+ },
99
+ required: ["name", "id", "title", "description", "template", "css", "client_script", "server_script"]
100
+ }
101
+ }, {
102
+ name: "snow_update_widget",
103
+ description: "Update an existing ServiceNow widget",
104
+ inputSchema: {
105
+ type: "object",
106
+ properties: {
107
+ sys_id: {
108
+ type: "string",
109
+ description: "System ID of the widget to update"
110
+ },
111
+ updates: {
112
+ type: "object",
113
+ description: "Object containing fields to update",
114
+ properties: {
115
+ name: { type: "string" },
116
+ title: { type: "string" },
117
+ description: { type: "string" },
118
+ template: { type: "string" },
119
+ css: { type: "string" },
120
+ client_script: { type: "string" },
121
+ server_script: { type: "string" }
122
+ }
123
+ }
124
+ },
125
+ required: ["sys_id", "updates"]
126
+ }
127
+ }, {
128
+ name: "snow_get_widget",
129
+ description: "Get details of a ServiceNow widget by ID",
130
+ inputSchema: {
131
+ type: "object",
132
+ properties: {
133
+ widget_id: {
134
+ type: "string",
135
+ description: "Widget ID to retrieve"
136
+ }
137
+ },
138
+ required: ["widget_id"]
139
+ }
140
+ }, {
141
+ name: "snow_list_widgets",
142
+ description: "List all ServiceNow widgets",
143
+ inputSchema: {
144
+ type: "object",
145
+ properties: {
146
+ limit: {
147
+ type: "number",
148
+ description: "Maximum number of widgets to return (default: 50)"
149
+ }
150
+ },
151
+ required: []
152
+ }
153
+ }, {
154
+ name: "snow_create_workflow",
155
+ description: "Create a new ServiceNow workflow",
156
+ inputSchema: {
157
+ type: "object",
158
+ properties: {
159
+ name: {
160
+ type: "string",
161
+ description: "Workflow name"
162
+ },
163
+ description: {
164
+ type: "string",
165
+ description: "Workflow description"
166
+ },
167
+ active: {
168
+ type: "boolean",
169
+ description: "Whether workflow is active"
170
+ },
171
+ workflow_version: {
172
+ type: "string",
173
+ description: "Workflow version"
174
+ },
175
+ table: {
176
+ type: "string",
177
+ description: "Table this workflow applies to"
178
+ },
179
+ condition: {
180
+ type: "string",
181
+ description: "Workflow activation condition"
182
+ }
183
+ },
184
+ required: ["name", "description", "active", "workflow_version"]
185
+ }
186
+ }, {
187
+ name: "snow_execute_script",
188
+ description: "Execute a server-side script in ServiceNow",
189
+ inputSchema: {
190
+ type: "object",
191
+ properties: {
192
+ script: {
193
+ type: "string",
194
+ description: "JavaScript code to execute"
195
+ },
196
+ description: {
197
+ type: "string",
198
+ description: "Description of what the script does"
199
+ }
200
+ },
201
+ required: ["script"]
202
+ }
203
+ }, {
204
+ name: "snow_test_connection",
205
+ description: "Test connection to ServiceNow and get current user info",
206
+ inputSchema: {
207
+ type: "object",
208
+ properties: {},
209
+ required: []
210
+ }
211
+ }, {
212
+ name: "snow_get_instance_info",
213
+ description: "Get ServiceNow instance information",
214
+ inputSchema: {
215
+ type: "object",
216
+ properties: {},
217
+ required: []
218
+ }
219
+ });
220
+ }
221
+ return { tools };
222
+ });
223
+ }
224
+ setupToolHandlers() {
225
+ this.server.setRequestHandler(types_js_1.CallToolRequestSchema, async (request) => {
226
+ const { name, arguments: args } = request.params;
227
+ try {
228
+ switch (name) {
229
+ case "snow_auth_status":
230
+ return await this.handleAuthStatus();
231
+ case "snow_create_widget":
232
+ return await this.handleCreateWidget(args);
233
+ case "snow_update_widget":
234
+ return await this.handleUpdateWidget(args);
235
+ case "snow_get_widget":
236
+ return await this.handleGetWidget(args);
237
+ case "snow_list_widgets":
238
+ return await this.handleListWidgets(args);
239
+ case "snow_create_workflow":
240
+ return await this.handleCreateWorkflow(args);
241
+ case "snow_execute_script":
242
+ return await this.handleExecuteScript(args);
243
+ case "snow_test_connection":
244
+ return await this.handleTestConnection();
245
+ case "snow_get_instance_info":
246
+ return await this.handleGetInstanceInfo();
247
+ default:
248
+ throw new Error(`Unknown tool: ${name}`);
249
+ }
250
+ }
251
+ catch (error) {
252
+ const errorMessage = error instanceof Error ? error.message : String(error);
253
+ return {
254
+ content: [
255
+ {
256
+ type: "text",
257
+ text: `Error executing ${name}: ${errorMessage}`
258
+ }
259
+ ]
260
+ };
261
+ }
262
+ });
263
+ }
264
+ async handleAuthStatus() {
265
+ const isAuth = await this.checkAuthentication();
266
+ const credentials = await this.oauth.loadCredentials();
267
+ let statusText = "🔐 ServiceNow Authentication Status:\n\n";
268
+ if (isAuth && credentials) {
269
+ statusText += `✅ Status: Authenticated\n`;
270
+ statusText += `🏢 Instance: ${credentials.instance}\n`;
271
+ statusText += `🔑 Client ID: ${credentials.clientId}\n`;
272
+ statusText += `📅 Expires: ${credentials.expiresAt ? new Date(credentials.expiresAt).toLocaleString() : 'Unknown'}\n`;
273
+ }
274
+ else {
275
+ statusText += `❌ Status: Not authenticated\n`;
276
+ statusText += `💡 Run "snow-flow auth login" to authenticate\n`;
277
+ }
278
+ return {
279
+ content: [
280
+ {
281
+ type: "text",
282
+ text: statusText
283
+ }
284
+ ]
285
+ };
286
+ }
287
+ async handleCreateWidget(args) {
288
+ if (!await this.checkAuthentication()) {
289
+ return {
290
+ content: [
291
+ {
292
+ type: "text",
293
+ text: "❌ Not authenticated. Please run 'snow-flow auth login' first."
294
+ }
295
+ ]
296
+ };
297
+ }
298
+ const result = await this.snowClient.createWidget({
299
+ name: args.name,
300
+ id: args.id,
301
+ title: args.title,
302
+ description: args.description,
303
+ template: args.template,
304
+ css: args.css,
305
+ client_script: args.client_script,
306
+ server_script: args.server_script,
307
+ category: args.category || 'custom'
308
+ });
309
+ if (result.success) {
310
+ const credentials = await this.oauth.loadCredentials();
311
+ const instanceUrl = `https://${credentials?.instance}`;
312
+ const widgetUrl = `${instanceUrl}/sp_config/?id=widget_editor&widget_id=${result.data?.sys_id}`;
313
+ return {
314
+ content: [
315
+ {
316
+ type: "text",
317
+ text: `✅ Widget created successfully!\n\n` +
318
+ `🆔 Widget ID: ${result.data?.sys_id}\n` +
319
+ `📛 Name: ${result.data?.name}\n` +
320
+ `🔗 Edit Widget: ${widgetUrl}\n` +
321
+ `🌐 Instance: ${instanceUrl}\n\n` +
322
+ `The widget has been created in your ServiceNow instance and is ready for testing!`
323
+ }
324
+ ]
325
+ };
326
+ }
327
+ else {
328
+ return {
329
+ content: [
330
+ {
331
+ type: "text",
332
+ text: `❌ Failed to create widget: ${result.error}`
333
+ }
334
+ ]
335
+ };
336
+ }
337
+ }
338
+ async handleUpdateWidget(args) {
339
+ if (!await this.checkAuthentication()) {
340
+ return {
341
+ content: [
342
+ {
343
+ type: "text",
344
+ text: "❌ Not authenticated. Please run 'snow-flow auth login' first."
345
+ }
346
+ ]
347
+ };
348
+ }
349
+ const result = await this.snowClient.updateWidget(args.sys_id, args.updates);
350
+ if (result.success) {
351
+ const credentials = await this.oauth.loadCredentials();
352
+ const instanceUrl = `https://${credentials?.instance}`;
353
+ const widgetUrl = `${instanceUrl}/sp_config/?id=widget_editor&widget_id=${args.sys_id}`;
354
+ return {
355
+ content: [
356
+ {
357
+ type: "text",
358
+ text: `✅ Widget updated successfully!\n\n` +
359
+ `🆔 Widget ID: ${args.sys_id}\n` +
360
+ `🔗 Edit Widget: ${widgetUrl}\n` +
361
+ `🌐 Instance: ${instanceUrl}\n\n` +
362
+ `The widget has been updated in your ServiceNow instance!`
363
+ }
364
+ ]
365
+ };
366
+ }
367
+ else {
368
+ return {
369
+ content: [
370
+ {
371
+ type: "text",
372
+ text: `❌ Failed to update widget: ${result.error}`
373
+ }
374
+ ]
375
+ };
376
+ }
377
+ }
378
+ async handleGetWidget(args) {
379
+ if (!await this.checkAuthentication()) {
380
+ return {
381
+ content: [
382
+ {
383
+ type: "text",
384
+ text: "❌ Not authenticated. Please run 'snow-flow auth login' first."
385
+ }
386
+ ]
387
+ };
388
+ }
389
+ const result = await this.snowClient.getWidget(args.widget_id);
390
+ if (result.success) {
391
+ return {
392
+ content: [
393
+ {
394
+ type: "text",
395
+ text: `✅ Widget found!\n\n` +
396
+ `🆔 System ID: ${result.data?.sys_id}\n` +
397
+ `📛 Name: ${result.data?.name}\n` +
398
+ `🏷️ ID: ${result.data?.id}\n` +
399
+ `📝 Title: ${result.data?.title}\n` +
400
+ `📄 Description: ${result.data?.description}\n` +
401
+ `🏷️ Category: ${result.data?.category}\n\n` +
402
+ `Template:\n${result.data?.template}\n\n` +
403
+ `CSS:\n${result.data?.css}\n\n` +
404
+ `Client Script:\n${result.data?.client_script}\n\n` +
405
+ `Server Script:\n${result.data?.server_script}`
406
+ }
407
+ ]
408
+ };
409
+ }
410
+ else {
411
+ return {
412
+ content: [
413
+ {
414
+ type: "text",
415
+ text: `❌ Widget not found: ${result.error}`
416
+ }
417
+ ]
418
+ };
419
+ }
420
+ }
421
+ async handleListWidgets(args) {
422
+ if (!await this.checkAuthentication()) {
423
+ return {
424
+ content: [
425
+ {
426
+ type: "text",
427
+ text: "❌ Not authenticated. Please run 'snow-flow auth login' first."
428
+ }
429
+ ]
430
+ };
431
+ }
432
+ const result = await this.snowClient.getWidgets();
433
+ if (result.success && result.result) {
434
+ const widgets = result.result.slice(0, args.limit || 50);
435
+ let widgetList = `✅ Found ${widgets.length} widgets:\n\n`;
436
+ widgets.forEach((widget, index) => {
437
+ widgetList += `${index + 1}. ${widget.name} (${widget.id})\n`;
438
+ widgetList += ` 🆔 System ID: ${widget.sys_id}\n`;
439
+ widgetList += ` 📝 Title: ${widget.title}\n`;
440
+ widgetList += ` 📄 Description: ${widget.description}\n`;
441
+ widgetList += ` 🏷️ Category: ${widget.category}\n\n`;
442
+ });
443
+ return {
444
+ content: [
445
+ {
446
+ type: "text",
447
+ text: widgetList
448
+ }
449
+ ]
450
+ };
451
+ }
452
+ else {
453
+ return {
454
+ content: [
455
+ {
456
+ type: "text",
457
+ text: `❌ Failed to list widgets: ${result.error}`
458
+ }
459
+ ]
460
+ };
461
+ }
462
+ }
463
+ async handleCreateWorkflow(args) {
464
+ if (!await this.checkAuthentication()) {
465
+ return {
466
+ content: [
467
+ {
468
+ type: "text",
469
+ text: "❌ Not authenticated. Please run 'snow-flow auth login' first."
470
+ }
471
+ ]
472
+ };
473
+ }
474
+ const result = await this.snowClient.createWorkflow({
475
+ name: args.name,
476
+ description: args.description,
477
+ active: args.active,
478
+ workflow_version: args.workflow_version,
479
+ table: args.table,
480
+ condition: args.condition
481
+ });
482
+ if (result.success) {
483
+ const credentials = await this.oauth.loadCredentials();
484
+ const instanceUrl = `https://${credentials?.instance}`;
485
+ return {
486
+ content: [
487
+ {
488
+ type: "text",
489
+ text: `✅ Workflow created successfully!\n\n` +
490
+ `🆔 Workflow ID: ${result.data?.sys_id}\n` +
491
+ `📛 Name: ${result.data?.name}\n` +
492
+ `🌐 Instance: ${instanceUrl}\n\n` +
493
+ `The workflow has been created in your ServiceNow instance!`
494
+ }
495
+ ]
496
+ };
497
+ }
498
+ else {
499
+ return {
500
+ content: [
501
+ {
502
+ type: "text",
503
+ text: `❌ Failed to create workflow: ${result.error}`
504
+ }
505
+ ]
506
+ };
507
+ }
508
+ }
509
+ async handleExecuteScript(args) {
510
+ if (!await this.checkAuthentication()) {
511
+ return {
512
+ content: [
513
+ {
514
+ type: "text",
515
+ text: "❌ Not authenticated. Please run 'snow-flow auth login' first."
516
+ }
517
+ ]
518
+ };
519
+ }
520
+ const result = await this.snowClient.executeScript(args.script);
521
+ if (result.success) {
522
+ return {
523
+ content: [
524
+ {
525
+ type: "text",
526
+ text: `✅ Script executed successfully!\n\n` +
527
+ `📄 Description: ${args.description || 'No description provided'}\n` +
528
+ `⚡ Script:\n${args.script}\n\n` +
529
+ `📊 Result:\n${JSON.stringify(result.data, null, 2)}`
530
+ }
531
+ ]
532
+ };
533
+ }
534
+ else {
535
+ return {
536
+ content: [
537
+ {
538
+ type: "text",
539
+ text: `❌ Failed to execute script: ${result.error}`
540
+ }
541
+ ]
542
+ };
543
+ }
544
+ }
545
+ async handleTestConnection() {
546
+ if (!await this.checkAuthentication()) {
547
+ return {
548
+ content: [
549
+ {
550
+ type: "text",
551
+ text: "❌ Not authenticated. Please run 'snow-flow auth login' first."
552
+ }
553
+ ]
554
+ };
555
+ }
556
+ const result = await this.snowClient.testConnection();
557
+ if (result.success) {
558
+ return {
559
+ content: [
560
+ {
561
+ type: "text",
562
+ text: `✅ Connection test successful!\n\n` +
563
+ `👤 User: ${result.data?.name} (${result.data?.user_name})\n` +
564
+ `📧 Email: ${result.data?.email}\n` +
565
+ `🏢 Company: ${result.data?.company?.display_value || 'N/A'}\n` +
566
+ `🎭 Role: ${result.data?.title || 'N/A'}\n` +
567
+ `📅 Last Login: ${result.data?.last_login_time || 'N/A'}\n\n` +
568
+ `ServiceNow connection is working properly!`
569
+ }
570
+ ]
571
+ };
572
+ }
573
+ else {
574
+ return {
575
+ content: [
576
+ {
577
+ type: "text",
578
+ text: `❌ Connection test failed: ${result.error}`
579
+ }
580
+ ]
581
+ };
582
+ }
583
+ }
584
+ async handleGetInstanceInfo() {
585
+ if (!await this.checkAuthentication()) {
586
+ return {
587
+ content: [
588
+ {
589
+ type: "text",
590
+ text: "❌ Not authenticated. Please run 'snow-flow auth login' first."
591
+ }
592
+ ]
593
+ };
594
+ }
595
+ const result = await this.snowClient.getInstanceInfo();
596
+ if (result.success) {
597
+ const credentials = await this.oauth.loadCredentials();
598
+ return {
599
+ content: [
600
+ {
601
+ type: "text",
602
+ text: `✅ Instance information retrieved!\n\n` +
603
+ `🏢 Instance: ${credentials?.instance}\n` +
604
+ `🌐 URL: https://${credentials?.instance}\n` +
605
+ `📊 Property: ${result.data?.name}\n` +
606
+ `💾 Value: ${result.data?.value}\n\n` +
607
+ `Instance is accessible and responding!`
608
+ }
609
+ ]
610
+ };
611
+ }
612
+ else {
613
+ return {
614
+ content: [
615
+ {
616
+ type: "text",
617
+ text: `❌ Failed to get instance info: ${result.error}`
618
+ }
619
+ ]
620
+ };
621
+ }
622
+ }
623
+ async run() {
624
+ const transport = new stdio_js_1.StdioServerTransport();
625
+ await this.server.connect(transport);
626
+ // Keep the server running
627
+ await new Promise((resolve) => {
628
+ process.on('SIGINT', () => {
629
+ console.log('\nServiceNow MCP Server shutting down...');
630
+ resolve();
631
+ });
632
+ });
633
+ }
634
+ }
635
+ exports.ServiceNowMCPServer = ServiceNowMCPServer;
636
+ // CLI entry point
637
+ async function main() {
638
+ const config = {
639
+ name: "servicenow-mcp-server",
640
+ version: "1.0.0"
641
+ };
642
+ const server = new ServiceNowMCPServer(config);
643
+ await server.run();
644
+ }
645
+ if (require.main === module) {
646
+ main().catch(console.error);
647
+ }
648
+ //# sourceMappingURL=servicenow-mcp-server.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"servicenow-mcp-server.js","sourceRoot":"","sources":["../../src/mcp/servicenow-mcp-server.ts"],"names":[],"mappings":"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"}