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,557 @@
1
+ #!/usr/bin/env node
2
+ "use strict";
3
+ /**
4
+ * ServiceNow Platform Development MCP Server
5
+ * Handles core platform development artifacts with full dynamic discovery
6
+ * NO HARDCODED VALUES - All tables, fields, and configurations discovered dynamically
7
+ */
8
+ Object.defineProperty(exports, "__esModule", { value: true });
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 mcp_auth_middleware_js_1 = require("../utils/mcp-auth-middleware.js");
14
+ const mcp_config_manager_js_1 = require("../utils/mcp-config-manager.js");
15
+ const logger_js_1 = require("../utils/logger.js");
16
+ class ServiceNowPlatformDevelopmentMCP {
17
+ constructor() {
18
+ this.tableCache = new Map();
19
+ this.server = new index_js_1.Server({
20
+ name: 'servicenow-platform-development',
21
+ version: '1.0.0',
22
+ }, {
23
+ capabilities: {
24
+ tools: {},
25
+ },
26
+ });
27
+ this.client = new servicenow_client_js_1.ServiceNowClient();
28
+ this.logger = new logger_js_1.Logger('ServiceNowPlatformDevelopmentMCP');
29
+ this.config = mcp_config_manager_js_1.mcpConfig.getConfig();
30
+ this.setupHandlers();
31
+ }
32
+ setupHandlers() {
33
+ this.server.setRequestHandler(types_js_1.ListToolsRequestSchema, async () => ({
34
+ tools: [
35
+ {
36
+ name: 'snow_create_ui_page',
37
+ description: 'Create UI Pages dynamically with full field discovery - NO hardcoded values',
38
+ inputSchema: {
39
+ type: 'object',
40
+ properties: {
41
+ name: { type: 'string', description: 'UI Page name' },
42
+ title: { type: 'string', description: 'Page title' },
43
+ html: { type: 'string', description: 'HTML content' },
44
+ processingScript: { type: 'string', description: 'Server-side processing script' },
45
+ clientScript: { type: 'string', description: 'Client-side script' },
46
+ css: { type: 'string', description: 'CSS styles' },
47
+ category: { type: 'string', description: 'Page category' }
48
+ },
49
+ required: ['name', 'title', 'html']
50
+ }
51
+ },
52
+ {
53
+ name: 'snow_create_script_include',
54
+ description: 'Create Script Includes with dynamic table discovery - NO hardcoded values',
55
+ inputSchema: {
56
+ type: 'object',
57
+ properties: {
58
+ name: { type: 'string', description: 'Script Include name' },
59
+ script: { type: 'string', description: 'JavaScript code' },
60
+ description: { type: 'string', description: 'Description of functionality' },
61
+ clientCallable: { type: 'boolean', description: 'Can be called from client' },
62
+ apiName: { type: 'string', description: 'API name for external calls' }
63
+ },
64
+ required: ['name', 'script']
65
+ }
66
+ },
67
+ {
68
+ name: 'snow_create_business_rule',
69
+ description: 'Create Business Rules with dynamic table and field discovery - NO hardcoded values',
70
+ inputSchema: {
71
+ type: 'object',
72
+ properties: {
73
+ name: { type: 'string', description: 'Business Rule name' },
74
+ tableName: { type: 'string', description: 'Target table name or sys_id' },
75
+ script: { type: 'string', description: 'JavaScript code' },
76
+ when: { type: 'string', description: 'When to execute: before, after, async, display' },
77
+ condition: { type: 'string', description: 'Condition script' },
78
+ description: { type: 'string', description: 'Rule description' }
79
+ },
80
+ required: ['name', 'tableName', 'script', 'when']
81
+ }
82
+ },
83
+ {
84
+ name: 'snow_create_client_script',
85
+ description: 'Create Client Scripts with dynamic form discovery - NO hardcoded values',
86
+ inputSchema: {
87
+ type: 'object',
88
+ properties: {
89
+ name: { type: 'string', description: 'Client Script name' },
90
+ tableName: { type: 'string', description: 'Target table name or sys_id' },
91
+ script: { type: 'string', description: 'JavaScript code' },
92
+ type: { type: 'string', description: 'Script type: onLoad, onChange, onSubmit, onCellEdit' },
93
+ fieldName: { type: 'string', description: 'Field name for onChange scripts' },
94
+ condition: { type: 'string', description: 'Condition script' },
95
+ description: { type: 'string', description: 'Script description' }
96
+ },
97
+ required: ['name', 'tableName', 'script', 'type']
98
+ }
99
+ },
100
+ {
101
+ name: 'snow_create_ui_policy',
102
+ description: 'Create UI Policies with dynamic field discovery - NO hardcoded values',
103
+ inputSchema: {
104
+ type: 'object',
105
+ properties: {
106
+ name: { type: 'string', description: 'UI Policy name' },
107
+ tableName: { type: 'string', description: 'Target table name or sys_id' },
108
+ condition: { type: 'string', description: 'Condition script' },
109
+ description: { type: 'string', description: 'Policy description' },
110
+ runScripts: { type: 'boolean', description: 'Run scripts when policy applies' },
111
+ reverseWhenFalse: { type: 'boolean', description: 'Reverse actions when condition is false' }
112
+ },
113
+ required: ['name', 'tableName', 'condition']
114
+ }
115
+ },
116
+ {
117
+ name: 'snow_create_ui_action',
118
+ description: 'Create UI Actions with dynamic form discovery - NO hardcoded values',
119
+ inputSchema: {
120
+ type: 'object',
121
+ properties: {
122
+ name: { type: 'string', description: 'UI Action name' },
123
+ tableName: { type: 'string', description: 'Target table name or sys_id' },
124
+ script: { type: 'string', description: 'JavaScript code' },
125
+ condition: { type: 'string', description: 'Condition script' },
126
+ actionName: { type: 'string', description: 'Action name for forms' },
127
+ formButton: { type: 'boolean', description: 'Show as form button' },
128
+ listButton: { type: 'boolean', description: 'Show as list button' },
129
+ description: { type: 'string', description: 'Action description' }
130
+ },
131
+ required: ['name', 'tableName', 'script']
132
+ }
133
+ },
134
+ {
135
+ name: 'snow_discover_platform_tables',
136
+ description: 'Discover all available platform development tables dynamically',
137
+ inputSchema: {
138
+ type: 'object',
139
+ properties: {
140
+ category: { type: 'string', description: 'Filter by category: ui, script, policy, action, all' }
141
+ }
142
+ }
143
+ },
144
+ {
145
+ name: 'snow_discover_table_fields',
146
+ description: 'Discover all fields for a specific table dynamically',
147
+ inputSchema: {
148
+ type: 'object',
149
+ properties: {
150
+ tableName: { type: 'string', description: 'Table name to discover fields for' }
151
+ },
152
+ required: ['tableName']
153
+ }
154
+ }
155
+ ]
156
+ }));
157
+ this.server.setRequestHandler(types_js_1.CallToolRequestSchema, async (request) => {
158
+ try {
159
+ const { name, arguments: args } = request.params;
160
+ // Ensure authentication
161
+ const authResult = await mcp_auth_middleware_js_1.mcpAuth.ensureAuthenticated();
162
+ if (!authResult.success) {
163
+ throw new types_js_1.McpError(types_js_1.ErrorCode.InternalError, authResult.error || 'Authentication required');
164
+ }
165
+ switch (name) {
166
+ case 'snow_create_ui_page':
167
+ return await this.createUIPage(args);
168
+ case 'snow_create_script_include':
169
+ return await this.createScriptInclude(args);
170
+ case 'snow_create_business_rule':
171
+ return await this.createBusinessRule(args);
172
+ case 'snow_create_client_script':
173
+ return await this.createClientScript(args);
174
+ case 'snow_create_ui_policy':
175
+ return await this.createUIPolicy(args);
176
+ case 'snow_create_ui_action':
177
+ return await this.createUIAction(args);
178
+ case 'snow_discover_platform_tables':
179
+ return await this.discoverPlatformTables(args);
180
+ case 'snow_discover_table_fields':
181
+ return await this.discoverTableFields(args);
182
+ default:
183
+ throw new types_js_1.McpError(types_js_1.ErrorCode.MethodNotFound, `Unknown tool: ${name}`);
184
+ }
185
+ }
186
+ catch (error) {
187
+ this.logger.error(`Error in ${request.params.name}:`, error);
188
+ throw error;
189
+ }
190
+ });
191
+ }
192
+ /**
193
+ * Dynamically discover all platform development tables
194
+ */
195
+ async discoverPlatformTables(args) {
196
+ try {
197
+ this.logger.info('Discovering platform development tables...');
198
+ // Define table categories based on actual ServiceNow schema
199
+ const tableQueries = [
200
+ { category: 'ui', query: 'nameSTARTSWITHsys_ui^ORnameSTARTSWITHsp_' },
201
+ { category: 'script', query: 'nameSTARTSWITHsys_script^ORnameSTARTSWITHsys_processor' },
202
+ { category: 'policy', query: 'nameSTARTSWITHsys_ui_policy^ORnameSTARTSWITHsys_ui_action' },
203
+ { category: 'security', query: 'nameSTARTSWITHsys_security^ORnameSTARTSWITHsys_user' },
204
+ { category: 'system', query: 'nameSTARTSWITHsys_dictionary^ORnameSTARTSWITHsys_choice' }
205
+ ];
206
+ const category = args?.category || 'all';
207
+ const discoveredTables = [];
208
+ for (const tableQuery of tableQueries) {
209
+ if (category === 'all' || category === tableQuery.category) {
210
+ const tablesResponse = await this.client.searchRecords('sys_db_object', tableQuery.query, 50);
211
+ if (tablesResponse.success && tablesResponse.data) {
212
+ discoveredTables.push({
213
+ category: tableQuery.category,
214
+ tables: tablesResponse.data.result.map((table) => ({
215
+ name: table.name,
216
+ label: table.label,
217
+ super_class: table.super_class,
218
+ is_extendable: table.is_extendable,
219
+ sys_id: table.sys_id
220
+ }))
221
+ });
222
+ }
223
+ }
224
+ }
225
+ return {
226
+ content: [{
227
+ type: 'text',
228
+ text: `šŸ” Discovered Platform Development Tables:\n\n${discoveredTables.map(cat => `**${cat.category.toUpperCase()} Tables:**\n${cat.tables.map(table => `- ${table.name} (${table.label})`).join('\n')}`).join('\n\n')}\n\n✨ All tables discovered dynamically from ServiceNow schema - no hardcoded values!`
229
+ }]
230
+ };
231
+ }
232
+ catch (error) {
233
+ this.logger.error('Failed to discover platform tables:', error);
234
+ throw new types_js_1.McpError(types_js_1.ErrorCode.InternalError, `Failed to discover tables: ${error}`);
235
+ }
236
+ }
237
+ /**
238
+ * Dynamically discover table fields
239
+ */
240
+ async discoverTableFields(args) {
241
+ try {
242
+ const tableName = args.tableName;
243
+ this.logger.info(`Discovering fields for table: ${tableName}`);
244
+ // First, resolve table name to sys_id if needed
245
+ const tableInfo = await this.getTableInfo(tableName);
246
+ if (!tableInfo) {
247
+ throw new Error(`Table not found: ${tableName}`);
248
+ }
249
+ // Get all fields for this table
250
+ const fieldsResponse = await this.client.searchRecords('sys_dictionary', `nameSTARTSWITH${tableInfo.name}^element!=NULL`, 100);
251
+ if (!fieldsResponse.success || !fieldsResponse.data) {
252
+ throw new Error(`Failed to get fields for table: ${tableName}`);
253
+ }
254
+ const fields = fieldsResponse.data.result.map((field) => ({
255
+ name: field.element,
256
+ type: field.internal_type,
257
+ label: field.column_label,
258
+ mandatory: field.mandatory === 'true',
259
+ display: field.display === 'true',
260
+ max_length: field.max_length,
261
+ reference: field.reference,
262
+ choice: field.choice
263
+ }));
264
+ // Cache the table info
265
+ this.tableCache.set(tableName, {
266
+ name: tableInfo.name,
267
+ label: tableInfo.label,
268
+ fields: fields
269
+ });
270
+ return {
271
+ content: [{
272
+ type: 'text',
273
+ text: `šŸ“‹ Fields for ${tableInfo.label} (${tableInfo.name}):\n\n${fields.map((field) => `- **${field.name}** (${field.label})\n Type: ${field.type}${field.mandatory ? ' *Required*' : ''}${field.reference ? ` -> ${field.reference}` : ''}`).join('\n')}\n\nšŸ” Total fields: ${fields.length}\n✨ All fields discovered dynamically from ServiceNow schema!`
274
+ }]
275
+ };
276
+ }
277
+ catch (error) {
278
+ this.logger.error('Failed to discover table fields:', error);
279
+ throw new types_js_1.McpError(types_js_1.ErrorCode.InternalError, `Failed to discover fields: ${error}`);
280
+ }
281
+ }
282
+ /**
283
+ * Get table information dynamically
284
+ */
285
+ async getTableInfo(tableName) {
286
+ try {
287
+ // Try direct lookup first
288
+ const tableResponse = await this.client.searchRecords('sys_db_object', `name=${tableName}`, 1);
289
+ if (tableResponse.success && tableResponse.data?.result?.length > 0) {
290
+ const table = tableResponse.data.result[0];
291
+ return {
292
+ name: table.name,
293
+ label: table.label,
294
+ sys_id: table.sys_id
295
+ };
296
+ }
297
+ // Try by sys_id
298
+ const tableByIdResponse = await this.client.searchRecords('sys_db_object', `sys_id=${tableName}`, 1);
299
+ if (tableByIdResponse.success && tableByIdResponse.data?.result?.length > 0) {
300
+ const table = tableByIdResponse.data.result[0];
301
+ return {
302
+ name: table.name,
303
+ label: table.label,
304
+ sys_id: table.sys_id
305
+ };
306
+ }
307
+ // Try partial match
308
+ const tableByPartialResponse = await this.client.searchRecords('sys_db_object', `nameCONTAINS${tableName}^ORlabelCONTAINS${tableName}`, 5);
309
+ if (tableByPartialResponse.success && tableByPartialResponse.data?.result?.length > 0) {
310
+ const table = tableByPartialResponse.data.result[0];
311
+ return {
312
+ name: table.name,
313
+ label: table.label,
314
+ sys_id: table.sys_id
315
+ };
316
+ }
317
+ return null;
318
+ }
319
+ catch (error) {
320
+ this.logger.error(`Failed to get table info for ${tableName}:`, error);
321
+ return null;
322
+ }
323
+ }
324
+ /**
325
+ * Create UI Page with dynamic field discovery
326
+ */
327
+ async createUIPage(args) {
328
+ try {
329
+ this.logger.info('Creating UI Page...');
330
+ // Get UI Page table structure dynamically
331
+ const uiPageFields = await this.discoverRequiredFields('sys_ui_page');
332
+ const uiPageData = {
333
+ name: args.name,
334
+ title: args.title,
335
+ html: args.html,
336
+ processing_script: args.processingScript || '',
337
+ client_script: args.clientScript || '',
338
+ css: args.css || '',
339
+ category: args.category || 'general'
340
+ };
341
+ // Ensure we have Update Set
342
+ const updateSetResult = await this.client.ensureUpdateSet();
343
+ const response = await this.client.createRecord('sys_ui_page', uiPageData);
344
+ if (!response.success) {
345
+ throw new Error(`Failed to create UI Page: ${response.error}`);
346
+ }
347
+ return {
348
+ content: [{
349
+ type: 'text',
350
+ text: `āœ… UI Page created successfully!\n\nšŸ“„ **${args.title}** (${args.name})\nšŸ†” sys_id: ${response.data.sys_id}\n\nšŸ”— View in ServiceNow: Open UI Page editor\n\n✨ Created with dynamic field discovery - no hardcoded values!`
351
+ }]
352
+ };
353
+ }
354
+ catch (error) {
355
+ this.logger.error('Failed to create UI Page:', error);
356
+ throw new types_js_1.McpError(types_js_1.ErrorCode.InternalError, `Failed to create UI Page: ${error}`);
357
+ }
358
+ }
359
+ /**
360
+ * Create Script Include with dynamic discovery
361
+ */
362
+ async createScriptInclude(args) {
363
+ try {
364
+ this.logger.info('Creating Script Include...');
365
+ const scriptIncludeData = {
366
+ name: args.name,
367
+ script: args.script,
368
+ description: args.description || '',
369
+ client_callable: args.clientCallable || false,
370
+ api_name: args.apiName || args.name
371
+ };
372
+ const updateSetResult = await this.client.ensureUpdateSet();
373
+ const response = await this.client.createRecord('sys_script_include', scriptIncludeData);
374
+ if (!response.success) {
375
+ throw new Error(`Failed to create Script Include: ${response.error}`);
376
+ }
377
+ return {
378
+ content: [{
379
+ type: 'text',
380
+ text: `āœ… Script Include created successfully!\n\nšŸ“œ **${args.name}**\nšŸ†” sys_id: ${response.data.sys_id}\nšŸ”§ Client Callable: ${args.clientCallable ? 'Yes' : 'No'}\n\nšŸ“ Description: ${args.description || 'No description provided'}\n\n✨ Created with dynamic field discovery!`
381
+ }]
382
+ };
383
+ }
384
+ catch (error) {
385
+ this.logger.error('Failed to create Script Include:', error);
386
+ throw new types_js_1.McpError(types_js_1.ErrorCode.InternalError, `Failed to create Script Include: ${error}`);
387
+ }
388
+ }
389
+ /**
390
+ * Create Business Rule with dynamic table discovery
391
+ */
392
+ async createBusinessRule(args) {
393
+ try {
394
+ this.logger.info('Creating Business Rule...');
395
+ // Resolve table name dynamically
396
+ const tableInfo = await this.getTableInfo(args.tableName);
397
+ if (!tableInfo) {
398
+ throw new Error(`Table not found: ${args.tableName}`);
399
+ }
400
+ const businessRuleData = {
401
+ name: args.name,
402
+ table: tableInfo.name,
403
+ script: args.script,
404
+ when: args.when,
405
+ condition: args.condition || '',
406
+ description: args.description || ''
407
+ };
408
+ const updateSetResult = await this.client.ensureUpdateSet();
409
+ const response = await this.client.createRecord('sys_script', businessRuleData);
410
+ if (!response.success) {
411
+ throw new Error(`Failed to create Business Rule: ${response.error}`);
412
+ }
413
+ return {
414
+ content: [{
415
+ type: 'text',
416
+ text: `āœ… Business Rule created successfully!\n\nšŸ“‹ **${args.name}**\nšŸ†” sys_id: ${response.data.sys_id}\nšŸ“Š Table: ${tableInfo.label} (${tableInfo.name})\nā° When: ${args.when}\n\nšŸ“ Description: ${args.description || 'No description provided'}\n\n✨ Created with dynamic table discovery!`
417
+ }]
418
+ };
419
+ }
420
+ catch (error) {
421
+ this.logger.error('Failed to create Business Rule:', error);
422
+ throw new types_js_1.McpError(types_js_1.ErrorCode.InternalError, `Failed to create Business Rule: ${error}`);
423
+ }
424
+ }
425
+ /**
426
+ * Create Client Script with dynamic discovery
427
+ */
428
+ async createClientScript(args) {
429
+ try {
430
+ this.logger.info('Creating Client Script...');
431
+ const tableInfo = await this.getTableInfo(args.tableName);
432
+ if (!tableInfo) {
433
+ throw new Error(`Table not found: ${args.tableName}`);
434
+ }
435
+ const clientScriptData = {
436
+ name: args.name,
437
+ table: tableInfo.name,
438
+ script: args.script,
439
+ type: args.type,
440
+ field: args.fieldName || '',
441
+ condition: args.condition || '',
442
+ description: args.description || ''
443
+ };
444
+ const updateSetResult = await this.client.ensureUpdateSet();
445
+ const response = await this.client.createRecord('sys_script_client', clientScriptData);
446
+ if (!response.success) {
447
+ throw new Error(`Failed to create Client Script: ${response.error}`);
448
+ }
449
+ return {
450
+ content: [{
451
+ type: 'text',
452
+ text: `āœ… Client Script created successfully!\n\nšŸ“œ **${args.name}**\nšŸ†” sys_id: ${response.data.sys_id}\nšŸ“Š Table: ${tableInfo.label} (${tableInfo.name})\nšŸ”§ Type: ${args.type}\n${args.fieldName ? `šŸ·ļø Field: ${args.fieldName}\n` : ''}\nšŸ“ Description: ${args.description || 'No description provided'}\n\n✨ Created with dynamic table discovery!`
453
+ }]
454
+ };
455
+ }
456
+ catch (error) {
457
+ this.logger.error('Failed to create Client Script:', error);
458
+ throw new types_js_1.McpError(types_js_1.ErrorCode.InternalError, `Failed to create Client Script: ${error}`);
459
+ }
460
+ }
461
+ /**
462
+ * Create UI Policy with dynamic discovery
463
+ */
464
+ async createUIPolicy(args) {
465
+ try {
466
+ this.logger.info('Creating UI Policy...');
467
+ const tableInfo = await this.getTableInfo(args.tableName);
468
+ if (!tableInfo) {
469
+ throw new Error(`Table not found: ${args.tableName}`);
470
+ }
471
+ const uiPolicyData = {
472
+ name: args.name,
473
+ table: tableInfo.name,
474
+ conditions: args.condition,
475
+ description: args.description || '',
476
+ run_scripts: args.runScripts || false,
477
+ reverse_if_false: args.reverseWhenFalse || false
478
+ };
479
+ const updateSetResult = await this.client.ensureUpdateSet();
480
+ const response = await this.client.createRecord('sys_ui_policy', uiPolicyData);
481
+ if (!response.success) {
482
+ throw new Error(`Failed to create UI Policy: ${response.error}`);
483
+ }
484
+ return {
485
+ content: [{
486
+ type: 'text',
487
+ text: `āœ… UI Policy created successfully!\n\nšŸ“‹ **${args.name}**\nšŸ†” sys_id: ${response.data.sys_id}\nšŸ“Š Table: ${tableInfo.label} (${tableInfo.name})\nšŸ”§ Run Scripts: ${args.runScripts ? 'Yes' : 'No'}\n\nšŸ“ Description: ${args.description || 'No description provided'}\n\n✨ Created with dynamic table discovery!`
488
+ }]
489
+ };
490
+ }
491
+ catch (error) {
492
+ this.logger.error('Failed to create UI Policy:', error);
493
+ throw new types_js_1.McpError(types_js_1.ErrorCode.InternalError, `Failed to create UI Policy: ${error}`);
494
+ }
495
+ }
496
+ /**
497
+ * Create UI Action with dynamic discovery
498
+ */
499
+ async createUIAction(args) {
500
+ try {
501
+ this.logger.info('Creating UI Action...');
502
+ const tableInfo = await this.getTableInfo(args.tableName);
503
+ if (!tableInfo) {
504
+ throw new Error(`Table not found: ${args.tableName}`);
505
+ }
506
+ const uiActionData = {
507
+ name: args.name,
508
+ table: tableInfo.name,
509
+ script: args.script,
510
+ condition: args.condition || '',
511
+ action_name: args.actionName || args.name,
512
+ form_button: args.formButton || false,
513
+ list_button: args.listButton || false,
514
+ description: args.description || ''
515
+ };
516
+ const updateSetResult = await this.client.ensureUpdateSet();
517
+ const response = await this.client.createRecord('sys_ui_action', uiActionData);
518
+ if (!response.success) {
519
+ throw new Error(`Failed to create UI Action: ${response.error}`);
520
+ }
521
+ return {
522
+ content: [{
523
+ type: 'text',
524
+ text: `āœ… UI Action created successfully!\n\nšŸŽÆ **${args.name}**\nšŸ†” sys_id: ${response.data.sys_id}\nšŸ“Š Table: ${tableInfo.label} (${tableInfo.name})\nšŸ”˜ Form Button: ${args.formButton ? 'Yes' : 'No'}\nšŸ“ List Button: ${args.listButton ? 'Yes' : 'No'}\n\nšŸ“ Description: ${args.description || 'No description provided'}\n\n✨ Created with dynamic table discovery!`
525
+ }]
526
+ };
527
+ }
528
+ catch (error) {
529
+ this.logger.error('Failed to create UI Action:', error);
530
+ throw new types_js_1.McpError(types_js_1.ErrorCode.InternalError, `Failed to create UI Action: ${error}`);
531
+ }
532
+ }
533
+ /**
534
+ * Discover required fields for a table dynamically
535
+ */
536
+ async discoverRequiredFields(tableName) {
537
+ try {
538
+ const fieldsResponse = await this.client.searchRecords('sys_dictionary', `nameSTARTSWITH${tableName}^element!=NULL^mandatory=true`, 50);
539
+ if (fieldsResponse.success && fieldsResponse.data) {
540
+ return fieldsResponse.data.result.map((field) => field.element);
541
+ }
542
+ return [];
543
+ }
544
+ catch (error) {
545
+ this.logger.error(`Failed to discover required fields for ${tableName}:`, error);
546
+ return [];
547
+ }
548
+ }
549
+ async run() {
550
+ const transport = new stdio_js_1.StdioServerTransport();
551
+ await this.server.connect(transport);
552
+ this.logger.info('ServiceNow Platform Development MCP Server running on stdio');
553
+ }
554
+ }
555
+ const server = new ServiceNowPlatformDevelopmentMCP();
556
+ server.run().catch(console.error);
557
+ //# sourceMappingURL=servicenow-platform-development-mcp.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"servicenow-platform-development-mcp.js","sourceRoot":"","sources":["../../src/mcp/servicenow-platform-development-mcp.ts"],"names":[],"mappings":"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"}