@aartiq/servicenow-mcp 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/.env.example +84 -0
- package/LICENSE +21 -0
- package/README.md +910 -0
- package/dist/cli/auth.d.ts +14 -0
- package/dist/cli/auth.d.ts.map +1 -0
- package/dist/cli/auth.js +179 -0
- package/dist/cli/auth.js.map +1 -0
- package/dist/cli/config-store.d.ts +28 -0
- package/dist/cli/config-store.d.ts.map +1 -0
- package/dist/cli/config-store.js +64 -0
- package/dist/cli/config-store.js.map +1 -0
- package/dist/cli/detect-clients.d.ts +16 -0
- package/dist/cli/detect-clients.d.ts.map +1 -0
- package/dist/cli/detect-clients.js +151 -0
- package/dist/cli/detect-clients.js.map +1 -0
- package/dist/cli/index.d.ts +3 -0
- package/dist/cli/index.d.ts.map +1 -0
- package/dist/cli/index.js +129 -0
- package/dist/cli/index.js.map +1 -0
- package/dist/cli/setup.d.ts +4 -0
- package/dist/cli/setup.d.ts.map +1 -0
- package/dist/cli/setup.js +574 -0
- package/dist/cli/setup.js.map +1 -0
- package/dist/cli/writers/index.d.ts +9 -0
- package/dist/cli/writers/index.d.ts.map +1 -0
- package/dist/cli/writers/index.js +140 -0
- package/dist/cli/writers/index.js.map +1 -0
- package/dist/prompts/index.d.ts +25 -0
- package/dist/prompts/index.d.ts.map +1 -0
- package/dist/prompts/index.js +38 -0
- package/dist/prompts/index.js.map +1 -0
- package/dist/prompts/itsm.d.ts +20 -0
- package/dist/prompts/itsm.d.ts.map +1 -0
- package/dist/prompts/itsm.js +110 -0
- package/dist/prompts/itsm.js.map +1 -0
- package/dist/prompts/user-prompts.d.ts +3 -0
- package/dist/prompts/user-prompts.d.ts.map +1 -0
- package/dist/prompts/user-prompts.js +35 -0
- package/dist/prompts/user-prompts.js.map +1 -0
- package/dist/resources/index.d.ts +26 -0
- package/dist/resources/index.d.ts.map +1 -0
- package/dist/resources/index.js +99 -0
- package/dist/resources/index.js.map +1 -0
- package/dist/server.d.ts +3 -0
- package/dist/server.d.ts.map +1 -0
- package/dist/server.js +129 -0
- package/dist/server.js.map +1 -0
- package/dist/servicenow/client.d.ts +135 -0
- package/dist/servicenow/client.d.ts.map +1 -0
- package/dist/servicenow/client.js +803 -0
- package/dist/servicenow/client.js.map +1 -0
- package/dist/servicenow/instances.d.ts +28 -0
- package/dist/servicenow/instances.d.ts.map +1 -0
- package/dist/servicenow/instances.js +204 -0
- package/dist/servicenow/instances.js.map +1 -0
- package/dist/servicenow/types.d.ts +574 -0
- package/dist/servicenow/types.d.ts.map +1 -0
- package/dist/servicenow/types.js +3 -0
- package/dist/servicenow/types.js.map +1 -0
- package/dist/tools/agile.d.ts +225 -0
- package/dist/tools/agile.d.ts.map +1 -0
- package/dist/tools/agile.js +205 -0
- package/dist/tools/agile.js.map +1 -0
- package/dist/tools/app-studio.d.ts +139 -0
- package/dist/tools/app-studio.d.ts.map +1 -0
- package/dist/tools/app-studio.js +139 -0
- package/dist/tools/app-studio.js.map +1 -0
- package/dist/tools/atf.d.ts +144 -0
- package/dist/tools/atf.d.ts.map +1 -0
- package/dist/tools/atf.js +186 -0
- package/dist/tools/atf.js.map +1 -0
- package/dist/tools/catalog.d.ts +628 -0
- package/dist/tools/catalog.d.ts.map +1 -0
- package/dist/tools/catalog.js +397 -0
- package/dist/tools/catalog.js.map +1 -0
- package/dist/tools/change.d.ts +347 -0
- package/dist/tools/change.d.ts.map +1 -0
- package/dist/tools/change.js +213 -0
- package/dist/tools/change.js.map +1 -0
- package/dist/tools/core.d.ts +540 -0
- package/dist/tools/core.d.ts.map +1 -0
- package/dist/tools/core.js +373 -0
- package/dist/tools/core.js.map +1 -0
- package/dist/tools/csm.d.ts +401 -0
- package/dist/tools/csm.d.ts.map +1 -0
- package/dist/tools/csm.js +255 -0
- package/dist/tools/csm.js.map +1 -0
- package/dist/tools/deployment.d.ts +366 -0
- package/dist/tools/deployment.d.ts.map +1 -0
- package/dist/tools/deployment.js +181 -0
- package/dist/tools/deployment.js.map +1 -0
- package/dist/tools/devops.d.ts +236 -0
- package/dist/tools/devops.d.ts.map +1 -0
- package/dist/tools/devops.js +207 -0
- package/dist/tools/devops.js.map +1 -0
- package/dist/tools/flow.d.ts +496 -0
- package/dist/tools/flow.d.ts.map +1 -0
- package/dist/tools/flow.js +348 -0
- package/dist/tools/flow.js.map +1 -0
- package/dist/tools/hrsd.d.ts +789 -0
- package/dist/tools/hrsd.d.ts.map +1 -0
- package/dist/tools/hrsd.js +377 -0
- package/dist/tools/hrsd.js.map +1 -0
- package/dist/tools/incident.d.ts +256 -0
- package/dist/tools/incident.d.ts.map +1 -0
- package/dist/tools/incident.js +163 -0
- package/dist/tools/incident.js.map +1 -0
- package/dist/tools/index.d.ts +11514 -0
- package/dist/tools/index.d.ts.map +1 -0
- package/dist/tools/index.js +276 -0
- package/dist/tools/index.js.map +1 -0
- package/dist/tools/integration.d.ts +603 -0
- package/dist/tools/integration.d.ts.map +1 -0
- package/dist/tools/integration.js +510 -0
- package/dist/tools/integration.js.map +1 -0
- package/dist/tools/itam.d.ts +462 -0
- package/dist/tools/itam.d.ts.map +1 -0
- package/dist/tools/itam.js +306 -0
- package/dist/tools/itam.js.map +1 -0
- package/dist/tools/knowledge.d.ts +187 -0
- package/dist/tools/knowledge.d.ts.map +1 -0
- package/dist/tools/knowledge.js +161 -0
- package/dist/tools/knowledge.js.map +1 -0
- package/dist/tools/ml.d.ts +263 -0
- package/dist/tools/ml.d.ts.map +1 -0
- package/dist/tools/ml.js +251 -0
- package/dist/tools/ml.js.map +1 -0
- package/dist/tools/mobile.d.ts +352 -0
- package/dist/tools/mobile.d.ts.map +1 -0
- package/dist/tools/mobile.js +122 -0
- package/dist/tools/mobile.js.map +1 -0
- package/dist/tools/notification.d.ts +590 -0
- package/dist/tools/notification.d.ts.map +1 -0
- package/dist/tools/notification.js +382 -0
- package/dist/tools/notification.js.map +1 -0
- package/dist/tools/now-assist.d.ts +300 -0
- package/dist/tools/now-assist.d.ts.map +1 -0
- package/dist/tools/now-assist.js +227 -0
- package/dist/tools/now-assist.js.map +1 -0
- package/dist/tools/performance.d.ts +447 -0
- package/dist/tools/performance.d.ts.map +1 -0
- package/dist/tools/performance.js +473 -0
- package/dist/tools/performance.js.map +1 -0
- package/dist/tools/portal.d.ts +530 -0
- package/dist/tools/portal.d.ts.map +1 -0
- package/dist/tools/portal.js +425 -0
- package/dist/tools/portal.js.map +1 -0
- package/dist/tools/problem.d.ts +110 -0
- package/dist/tools/problem.d.ts.map +1 -0
- package/dist/tools/problem.js +100 -0
- package/dist/tools/problem.js.map +1 -0
- package/dist/tools/reporting.d.ts +825 -0
- package/dist/tools/reporting.d.ts.map +1 -0
- package/dist/tools/reporting.js +460 -0
- package/dist/tools/reporting.js.map +1 -0
- package/dist/tools/script.d.ts +714 -0
- package/dist/tools/script.d.ts.map +1 -0
- package/dist/tools/script.js +629 -0
- package/dist/tools/script.js.map +1 -0
- package/dist/tools/security.d.ts +794 -0
- package/dist/tools/security.d.ts.map +1 -0
- package/dist/tools/security.js +425 -0
- package/dist/tools/security.js.map +1 -0
- package/dist/tools/sys-properties.d.ts +315 -0
- package/dist/tools/sys-properties.d.ts.map +1 -0
- package/dist/tools/sys-properties.js +372 -0
- package/dist/tools/sys-properties.js.map +1 -0
- package/dist/tools/task.d.ts +82 -0
- package/dist/tools/task.d.ts.map +1 -0
- package/dist/tools/task.js +96 -0
- package/dist/tools/task.js.map +1 -0
- package/dist/tools/updateset.d.ts +159 -0
- package/dist/tools/updateset.d.ts.map +1 -0
- package/dist/tools/updateset.js +212 -0
- package/dist/tools/updateset.js.map +1 -0
- package/dist/tools/user.d.ts +206 -0
- package/dist/tools/user.d.ts.map +1 -0
- package/dist/tools/user.js +163 -0
- package/dist/tools/user.js.map +1 -0
- package/dist/tools/va.d.ts +217 -0
- package/dist/tools/va.d.ts.map +1 -0
- package/dist/tools/va.js +178 -0
- package/dist/tools/va.js.map +1 -0
- package/dist/tools/workspace.d.ts +565 -0
- package/dist/tools/workspace.d.ts.map +1 -0
- package/dist/tools/workspace.js +201 -0
- package/dist/tools/workspace.js.map +1 -0
- package/dist/utils/errors.d.ts +6 -0
- package/dist/utils/errors.d.ts.map +1 -0
- package/dist/utils/errors.js +11 -0
- package/dist/utils/errors.js.map +1 -0
- package/dist/utils/logging.d.ts +7 -0
- package/dist/utils/logging.d.ts.map +1 -0
- package/dist/utils/logging.js +15 -0
- package/dist/utils/logging.js.map +1 -0
- package/dist/utils/permissions.d.ts +21 -0
- package/dist/utils/permissions.d.ts.map +1 -0
- package/dist/utils/permissions.js +54 -0
- package/dist/utils/permissions.js.map +1 -0
- package/instances.example.json +71 -0
- package/package.json +107 -0
|
@@ -0,0 +1,201 @@
|
|
|
1
|
+
import { ServiceNowError } from '../utils/errors.js';
|
|
2
|
+
import { requireWrite, requireScripting } from '../utils/permissions.js';
|
|
3
|
+
export function getWorkspaceToolDefinitions() {
|
|
4
|
+
return [
|
|
5
|
+
// ─── UIB Pages ─────────────────────────────────────────────────
|
|
6
|
+
{
|
|
7
|
+
name: 'list_uib_pages',
|
|
8
|
+
description: 'List UI Builder pages and their route configurations',
|
|
9
|
+
inputSchema: { type: 'object', properties: { limit: { type: 'number', description: 'Max records (default 25)' }, app: { type: 'string', description: 'Filter by UX app sys_id' } }, required: [] },
|
|
10
|
+
},
|
|
11
|
+
{
|
|
12
|
+
name: 'get_uib_page',
|
|
13
|
+
description: 'Get details of a specific UI Builder page including layout and child elements',
|
|
14
|
+
inputSchema: { type: 'object', properties: { sys_id: { type: 'string', description: 'UIB page sys_id' } }, required: ['sys_id'] },
|
|
15
|
+
},
|
|
16
|
+
{
|
|
17
|
+
name: 'create_uib_page',
|
|
18
|
+
description: 'Create a new UI Builder page with route registration. **[Write]**',
|
|
19
|
+
inputSchema: { type: 'object', properties: { title: { type: 'string', description: 'Page title' }, path: { type: 'string', description: 'URL path segment' }, app: { type: 'string', description: 'Parent UX app sys_id' }, layout: { type: 'string', description: 'Layout type: single, sidebar, tabbed (default single)' } }, required: ['title', 'path'] },
|
|
20
|
+
},
|
|
21
|
+
{
|
|
22
|
+
name: 'update_uib_page',
|
|
23
|
+
description: 'Update an existing UI Builder page. **[Write]**',
|
|
24
|
+
inputSchema: { type: 'object', properties: { sys_id: { type: 'string', description: 'UIB page sys_id' }, title: { type: 'string' }, path: { type: 'string' }, layout: { type: 'string' } }, required: ['sys_id'] },
|
|
25
|
+
},
|
|
26
|
+
{
|
|
27
|
+
name: 'delete_uib_page',
|
|
28
|
+
description: 'Delete a UI Builder page. **[Write]**',
|
|
29
|
+
inputSchema: { type: 'object', properties: { sys_id: { type: 'string', description: 'UIB page sys_id' } }, required: ['sys_id'] },
|
|
30
|
+
},
|
|
31
|
+
// ─── UIB Components ────────────────────────────────────────────
|
|
32
|
+
{
|
|
33
|
+
name: 'list_uib_components',
|
|
34
|
+
description: 'List available UI Builder components (macroponents) in the instance',
|
|
35
|
+
inputSchema: { type: 'object', properties: { limit: { type: 'number', description: 'Max records (default 50)' }, scope: { type: 'string', description: 'Filter by scope/app' } }, required: [] },
|
|
36
|
+
},
|
|
37
|
+
{
|
|
38
|
+
name: 'create_uib_component',
|
|
39
|
+
description: 'Create a custom UI Builder component (macroponent). **[Scripting]**',
|
|
40
|
+
inputSchema: { type: 'object', properties: { name: { type: 'string', description: 'Component name' }, label: { type: 'string', description: 'Display label' }, description: { type: 'string' }, category: { type: 'string', description: 'Component category' } }, required: ['name', 'label'] },
|
|
41
|
+
},
|
|
42
|
+
{
|
|
43
|
+
name: 'update_uib_component',
|
|
44
|
+
description: 'Update a UI Builder component. **[Scripting]**',
|
|
45
|
+
inputSchema: { type: 'object', properties: { sys_id: { type: 'string', description: 'Component sys_id' }, label: { type: 'string' }, description: { type: 'string' } }, required: ['sys_id'] },
|
|
46
|
+
},
|
|
47
|
+
// ─── UIB Data Brokers ──────────────────────────────────────────
|
|
48
|
+
{
|
|
49
|
+
name: 'list_uib_data_brokers',
|
|
50
|
+
description: 'List UI Builder data brokers (data sources for pages)',
|
|
51
|
+
inputSchema: { type: 'object', properties: { page_sys_id: { type: 'string', description: 'Filter by page' }, limit: { type: 'number' } }, required: [] },
|
|
52
|
+
},
|
|
53
|
+
{
|
|
54
|
+
name: 'create_uib_data_broker',
|
|
55
|
+
description: 'Create a UI Builder data broker to feed data to a page. **[Scripting]**',
|
|
56
|
+
inputSchema: { type: 'object', properties: { name: { type: 'string', description: 'Broker name' }, table: { type: 'string', description: 'Source table' }, query: { type: 'string', description: 'Encoded query filter' }, page: { type: 'string', description: 'Target page sys_id' } }, required: ['name', 'table'] },
|
|
57
|
+
},
|
|
58
|
+
// ─── Configurable Workspaces ───────────────────────────────────
|
|
59
|
+
{
|
|
60
|
+
name: 'list_workspaces',
|
|
61
|
+
description: 'List all configurable agent workspaces',
|
|
62
|
+
inputSchema: { type: 'object', properties: { active: { type: 'boolean', description: 'Filter active (default true)' }, limit: { type: 'number' } }, required: [] },
|
|
63
|
+
},
|
|
64
|
+
{
|
|
65
|
+
name: 'get_workspace',
|
|
66
|
+
description: 'Get details of a configurable agent workspace including tabs and lists',
|
|
67
|
+
inputSchema: { type: 'object', properties: { sys_id: { type: 'string', description: 'Workspace sys_id' } }, required: ['sys_id'] },
|
|
68
|
+
},
|
|
69
|
+
{
|
|
70
|
+
name: 'create_workspace',
|
|
71
|
+
description: 'Create a new configurable agent workspace. **[Write]**',
|
|
72
|
+
inputSchema: { type: 'object', properties: { name: { type: 'string', description: 'Workspace name' }, description: { type: 'string' }, table: { type: 'string', description: 'Primary table (e.g. incident)' }, icon: { type: 'string', description: 'Workspace icon name' } }, required: ['name', 'table'] },
|
|
73
|
+
},
|
|
74
|
+
{
|
|
75
|
+
name: 'configure_workspace_list',
|
|
76
|
+
description: 'Add or update a list view in an agent workspace. **[Write]**',
|
|
77
|
+
inputSchema: { type: 'object', properties: { workspace_sys_id: { type: 'string', description: 'Workspace sys_id' }, table: { type: 'string', description: 'List table' }, title: { type: 'string', description: 'List title' }, query: { type: 'string', description: 'Encoded query filter' }, columns: { type: 'string', description: 'Comma-separated field names' } }, required: ['workspace_sys_id', 'table', 'title'] },
|
|
78
|
+
},
|
|
79
|
+
// ─── UX App Configuration ──────────────────────────────────────
|
|
80
|
+
{
|
|
81
|
+
name: 'create_ux_app_route',
|
|
82
|
+
description: 'Register a new route (URL path) in a UX app. **[Write]**',
|
|
83
|
+
inputSchema: { type: 'object', properties: { app_sys_id: { type: 'string', description: 'UX app sys_id' }, path: { type: 'string', description: 'Route path' }, page_sys_id: { type: 'string', description: 'Target UIB page sys_id' }, title: { type: 'string', description: 'Route title' } }, required: ['app_sys_id', 'path', 'page_sys_id'] },
|
|
84
|
+
},
|
|
85
|
+
{
|
|
86
|
+
name: 'create_ux_experience',
|
|
87
|
+
description: 'Create a new UX Experience (app shell) configuration. **[Write]**',
|
|
88
|
+
inputSchema: { type: 'object', properties: { name: { type: 'string', description: 'Experience name' }, app_sys_id: { type: 'string', description: 'UX app sys_id' }, landing_page: { type: 'string', description: 'Landing page sys_id' } }, required: ['name', 'app_sys_id'] },
|
|
89
|
+
},
|
|
90
|
+
];
|
|
91
|
+
}
|
|
92
|
+
export async function executeWorkspaceToolCall(client, name, args) {
|
|
93
|
+
switch (name) {
|
|
94
|
+
case 'list_uib_pages': {
|
|
95
|
+
let query = '';
|
|
96
|
+
if (args.app)
|
|
97
|
+
query = `application=${args.app}`;
|
|
98
|
+
const resp = await client.queryRecords({ table: 'sys_ux_page', query: query || undefined, limit: args.limit || 25, fields: 'sys_id,title,path,application,sys_updated_on' });
|
|
99
|
+
return { count: resp.count, pages: resp.records };
|
|
100
|
+
}
|
|
101
|
+
case 'get_uib_page': {
|
|
102
|
+
if (!args.sys_id)
|
|
103
|
+
throw new ServiceNowError('sys_id is required', 'INVALID_REQUEST');
|
|
104
|
+
return await client.getRecord('sys_ux_page', args.sys_id);
|
|
105
|
+
}
|
|
106
|
+
case 'create_uib_page': {
|
|
107
|
+
requireWrite();
|
|
108
|
+
if (!args.title || !args.path)
|
|
109
|
+
throw new ServiceNowError('title and path are required', 'INVALID_REQUEST');
|
|
110
|
+
const result = await client.createRecord('sys_ux_page', { title: args.title, path: args.path, ...(args.app ? { application: args.app } : {}) });
|
|
111
|
+
return { action: 'created', ...result };
|
|
112
|
+
}
|
|
113
|
+
case 'update_uib_page': {
|
|
114
|
+
requireWrite();
|
|
115
|
+
if (!args.sys_id)
|
|
116
|
+
throw new ServiceNowError('sys_id is required', 'INVALID_REQUEST');
|
|
117
|
+
const { sys_id, ...fields } = args;
|
|
118
|
+
const result = await client.updateRecord('sys_ux_page', sys_id, fields);
|
|
119
|
+
return { action: 'updated', ...result };
|
|
120
|
+
}
|
|
121
|
+
case 'delete_uib_page': {
|
|
122
|
+
requireWrite();
|
|
123
|
+
if (!args.sys_id)
|
|
124
|
+
throw new ServiceNowError('sys_id is required', 'INVALID_REQUEST');
|
|
125
|
+
await client.deleteRecord('sys_ux_page', args.sys_id);
|
|
126
|
+
return { action: 'deleted', sys_id: args.sys_id };
|
|
127
|
+
}
|
|
128
|
+
case 'list_uib_components': {
|
|
129
|
+
const resp = await client.queryRecords({ table: 'sys_ux_macroponent', query: args.scope ? `sys_scope=${args.scope}` : undefined, limit: args.limit || 50, fields: 'sys_id,name,label,category,sys_scope,sys_updated_on' });
|
|
130
|
+
return { count: resp.count, components: resp.records };
|
|
131
|
+
}
|
|
132
|
+
case 'create_uib_component': {
|
|
133
|
+
requireScripting();
|
|
134
|
+
if (!args.name || !args.label)
|
|
135
|
+
throw new ServiceNowError('name and label are required', 'INVALID_REQUEST');
|
|
136
|
+
const result = await client.createRecord('sys_ux_macroponent', { name: args.name, label: args.label, ...(args.description ? { description: args.description } : {}), ...(args.category ? { category: args.category } : {}) });
|
|
137
|
+
return { action: 'created', ...result };
|
|
138
|
+
}
|
|
139
|
+
case 'update_uib_component': {
|
|
140
|
+
requireScripting();
|
|
141
|
+
if (!args.sys_id)
|
|
142
|
+
throw new ServiceNowError('sys_id is required', 'INVALID_REQUEST');
|
|
143
|
+
const { sys_id, ...fields } = args;
|
|
144
|
+
const result = await client.updateRecord('sys_ux_macroponent', sys_id, fields);
|
|
145
|
+
return { action: 'updated', ...result };
|
|
146
|
+
}
|
|
147
|
+
case 'list_uib_data_brokers': {
|
|
148
|
+
const resp = await client.queryRecords({ table: 'sys_ux_data_broker_transform', query: args.page_sys_id ? `page=${args.page_sys_id}` : undefined, limit: args.limit || 25, fields: 'sys_id,name,table,page,sys_updated_on' });
|
|
149
|
+
return { count: resp.count, data_brokers: resp.records };
|
|
150
|
+
}
|
|
151
|
+
case 'create_uib_data_broker': {
|
|
152
|
+
requireScripting();
|
|
153
|
+
if (!args.name || !args.table)
|
|
154
|
+
throw new ServiceNowError('name and table are required', 'INVALID_REQUEST');
|
|
155
|
+
const result = await client.createRecord('sys_ux_data_broker_transform', { name: args.name, table: args.table, ...(args.query ? { query: args.query } : {}), ...(args.page ? { page: args.page } : {}) });
|
|
156
|
+
return { action: 'created', ...result };
|
|
157
|
+
}
|
|
158
|
+
case 'list_workspaces': {
|
|
159
|
+
const resp = await client.queryRecords({ table: 'sys_aw_workspace', query: args.active !== false ? 'active=true' : undefined, limit: args.limit || 25, fields: 'sys_id,name,description,table,active,icon,sys_updated_on' });
|
|
160
|
+
return { count: resp.count, workspaces: resp.records };
|
|
161
|
+
}
|
|
162
|
+
case 'get_workspace': {
|
|
163
|
+
if (!args.sys_id)
|
|
164
|
+
throw new ServiceNowError('sys_id is required', 'INVALID_REQUEST');
|
|
165
|
+
const ws = await client.getRecord('sys_aw_workspace', args.sys_id);
|
|
166
|
+
const lists = await client.queryRecords({ table: 'sys_aw_list', query: `workspace=${args.sys_id}`, limit: 50, fields: 'sys_id,title,table,query,columns' });
|
|
167
|
+
return { ...ws, lists: lists.records };
|
|
168
|
+
}
|
|
169
|
+
case 'create_workspace': {
|
|
170
|
+
requireWrite();
|
|
171
|
+
if (!args.name || !args.table)
|
|
172
|
+
throw new ServiceNowError('name and table are required', 'INVALID_REQUEST');
|
|
173
|
+
const result = await client.createRecord('sys_aw_workspace', { name: args.name, table: args.table, active: 'true', ...(args.description ? { description: args.description } : {}), ...(args.icon ? { icon: args.icon } : {}) });
|
|
174
|
+
return { action: 'created', ...result };
|
|
175
|
+
}
|
|
176
|
+
case 'configure_workspace_list': {
|
|
177
|
+
requireWrite();
|
|
178
|
+
if (!args.workspace_sys_id || !args.table || !args.title)
|
|
179
|
+
throw new ServiceNowError('workspace_sys_id, table, and title are required', 'INVALID_REQUEST');
|
|
180
|
+
const result = await client.createRecord('sys_aw_list', { workspace: args.workspace_sys_id, table: args.table, title: args.title, ...(args.query ? { query: args.query } : {}), ...(args.columns ? { columns: args.columns } : {}) });
|
|
181
|
+
return { action: 'created', ...result };
|
|
182
|
+
}
|
|
183
|
+
case 'create_ux_app_route': {
|
|
184
|
+
requireWrite();
|
|
185
|
+
if (!args.app_sys_id || !args.path || !args.page_sys_id)
|
|
186
|
+
throw new ServiceNowError('app_sys_id, path, and page_sys_id required', 'INVALID_REQUEST');
|
|
187
|
+
const result = await client.createRecord('sys_ux_app_route', { application: args.app_sys_id, path: args.path, page: args.page_sys_id, ...(args.title ? { title: args.title } : {}) });
|
|
188
|
+
return { action: 'created', ...result };
|
|
189
|
+
}
|
|
190
|
+
case 'create_ux_experience': {
|
|
191
|
+
requireWrite();
|
|
192
|
+
if (!args.name || !args.app_sys_id)
|
|
193
|
+
throw new ServiceNowError('name and app_sys_id are required', 'INVALID_REQUEST');
|
|
194
|
+
const result = await client.createRecord('sys_ux_app_config', { name: args.name, application: args.app_sys_id, ...(args.landing_page ? { landing_page: args.landing_page } : {}) });
|
|
195
|
+
return { action: 'created', ...result };
|
|
196
|
+
}
|
|
197
|
+
default:
|
|
198
|
+
return null;
|
|
199
|
+
}
|
|
200
|
+
}
|
|
201
|
+
//# sourceMappingURL=workspace.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"workspace.js","sourceRoot":"","sources":["../../src/tools/workspace.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../src/utils/errors.ts"],"names":[],"mappings":"AAAA,qBAAa,eAAgB,SAAQ,KAAK;IAG/B,IAAI,EAAE,MAAM;IACZ,OAAO,CAAC,EAAE,OAAO;gBAFxB,OAAO,EAAE,MAAM,EACR,IAAI,EAAE,MAAM,EACZ,OAAO,CAAC,EAAE,OAAO,YAAA;CAK3B"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/utils/errors.ts"],"names":[],"mappings":"AAAA,MAAM,OAAO,eAAgB,SAAQ,KAAK;IAG/B;IACA;IAHT,YACE,OAAe,EACR,IAAY,EACZ,OAAiB;QAExB,KAAK,CAAC,OAAO,CAAC,CAAC;QAHR,SAAI,GAAJ,IAAI,CAAQ;QACZ,YAAO,GAAP,OAAO,CAAU;QAGxB,IAAI,CAAC,IAAI,GAAG,iBAAiB,CAAC;IAChC,CAAC;CACF"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"logging.d.ts","sourceRoot":"","sources":["../../src/utils/logging.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,MAAM;mBACF,MAAM,SAAS,OAAO,GAAG,IAAI;kBAG9B,MAAM,SAAS,OAAO,GAAG,IAAI;kBAG7B,MAAM,SAAS,OAAO,GAAG,IAAI;mBAG5B,MAAM,UAAU,OAAO,GAAG,IAAI;CAG9C,CAAC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
export const logger = {
|
|
2
|
+
debug(message, data) {
|
|
3
|
+
console.error(`[DEBUG] ${message}`, data || '');
|
|
4
|
+
},
|
|
5
|
+
info(message, data) {
|
|
6
|
+
console.error(`[INFO] ${message}`, data || '');
|
|
7
|
+
},
|
|
8
|
+
warn(message, data) {
|
|
9
|
+
console.error(`[WARN] ${message}`, data || '');
|
|
10
|
+
},
|
|
11
|
+
error(message, error) {
|
|
12
|
+
console.error(`[ERROR] ${message}`, error || '');
|
|
13
|
+
},
|
|
14
|
+
};
|
|
15
|
+
//# sourceMappingURL=logging.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"logging.js","sourceRoot":"","sources":["../../src/utils/logging.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,MAAM,GAAG;IACpB,KAAK,CAAC,OAAe,EAAE,IAAc;QACnC,OAAO,CAAC,KAAK,CAAC,WAAW,OAAO,EAAE,EAAE,IAAI,IAAI,EAAE,CAAC,CAAC;IAClD,CAAC;IACD,IAAI,CAAC,OAAe,EAAE,IAAc;QAClC,OAAO,CAAC,KAAK,CAAC,UAAU,OAAO,EAAE,EAAE,IAAI,IAAI,EAAE,CAAC,CAAC;IACjD,CAAC;IACD,IAAI,CAAC,OAAe,EAAE,IAAc;QAClC,OAAO,CAAC,KAAK,CAAC,UAAU,OAAO,EAAE,EAAE,IAAI,IAAI,EAAE,CAAC,CAAC;IACjD,CAAC;IACD,KAAK,CAAC,OAAe,EAAE,KAAe;QACpC,OAAO,CAAC,KAAK,CAAC,WAAW,OAAO,EAAE,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC;IACnD,CAAC;CACF,CAAC"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Permission tier utilities for servicenow-mcp tools.
|
|
3
|
+
*
|
|
4
|
+
* Tier 0 – Always available (all read tools)
|
|
5
|
+
* Tier 1 – WRITE_ENABLED=true (standard ITSM writes)
|
|
6
|
+
* Tier 2 – WRITE_ENABLED=true + CMDB_WRITE_ENABLED=true (CI create/update)
|
|
7
|
+
* Tier 3 – WRITE_ENABLED=true + SCRIPTING_ENABLED=true (scripts/changesets)
|
|
8
|
+
* Tier AI – NOW_ASSIST_ENABLED=true (generative AI tools)
|
|
9
|
+
* Tier ATF – ATF_ENABLED=true (test execution)
|
|
10
|
+
*/
|
|
11
|
+
export declare function requireWrite(): void;
|
|
12
|
+
export declare function requireCmdbWrite(): void;
|
|
13
|
+
export declare function requireScripting(): void;
|
|
14
|
+
export declare function requireNowAssist(): void;
|
|
15
|
+
export declare function requireAtf(): void;
|
|
16
|
+
export declare function isWriteEnabled(): boolean;
|
|
17
|
+
export declare function isCmdbWriteEnabled(): boolean;
|
|
18
|
+
export declare function isScriptingEnabled(): boolean;
|
|
19
|
+
export declare function isNowAssistEnabled(): boolean;
|
|
20
|
+
export declare function isAtfEnabled(): boolean;
|
|
21
|
+
//# sourceMappingURL=permissions.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"permissions.d.ts","sourceRoot":"","sources":["../../src/utils/permissions.ts"],"names":[],"mappings":"AAEA;;;;;;;;;GASG;AAEH,wBAAgB,YAAY,IAAI,IAAI,CAOnC;AAED,wBAAgB,gBAAgB,IAAI,IAAI,CAQvC;AAED,wBAAgB,gBAAgB,IAAI,IAAI,CAQvC;AAED,wBAAgB,gBAAgB,IAAI,IAAI,CAOvC;AAED,wBAAgB,UAAU,IAAI,IAAI,CAOjC;AAED,wBAAgB,cAAc,IAAI,OAAO,CAExC;AAED,wBAAgB,kBAAkB,IAAI,OAAO,CAE5C;AAED,wBAAgB,kBAAkB,IAAI,OAAO,CAE5C;AAED,wBAAgB,kBAAkB,IAAI,OAAO,CAE5C;AAED,wBAAgB,YAAY,IAAI,OAAO,CAEtC"}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
import { ServiceNowError } from './errors.js';
|
|
2
|
+
/**
|
|
3
|
+
* Permission tier utilities for servicenow-mcp tools.
|
|
4
|
+
*
|
|
5
|
+
* Tier 0 – Always available (all read tools)
|
|
6
|
+
* Tier 1 – WRITE_ENABLED=true (standard ITSM writes)
|
|
7
|
+
* Tier 2 – WRITE_ENABLED=true + CMDB_WRITE_ENABLED=true (CI create/update)
|
|
8
|
+
* Tier 3 – WRITE_ENABLED=true + SCRIPTING_ENABLED=true (scripts/changesets)
|
|
9
|
+
* Tier AI – NOW_ASSIST_ENABLED=true (generative AI tools)
|
|
10
|
+
* Tier ATF – ATF_ENABLED=true (test execution)
|
|
11
|
+
*/
|
|
12
|
+
export function requireWrite() {
|
|
13
|
+
if (process.env.WRITE_ENABLED !== 'true') {
|
|
14
|
+
throw new ServiceNowError('Write operations are disabled. Set WRITE_ENABLED=true to enable.', 'WRITE_NOT_ENABLED');
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
export function requireCmdbWrite() {
|
|
18
|
+
requireWrite();
|
|
19
|
+
if (process.env.CMDB_WRITE_ENABLED !== 'true') {
|
|
20
|
+
throw new ServiceNowError('CMDB write operations are disabled. Set WRITE_ENABLED=true and CMDB_WRITE_ENABLED=true to enable.', 'CMDB_WRITE_NOT_ENABLED');
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
export function requireScripting() {
|
|
24
|
+
requireWrite();
|
|
25
|
+
if (process.env.SCRIPTING_ENABLED !== 'true') {
|
|
26
|
+
throw new ServiceNowError('Scripting operations are disabled. Set WRITE_ENABLED=true and SCRIPTING_ENABLED=true to enable.', 'SCRIPTING_NOT_ENABLED');
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
export function requireNowAssist() {
|
|
30
|
+
if (process.env.NOW_ASSIST_ENABLED !== 'true') {
|
|
31
|
+
throw new ServiceNowError('Now Assist / AI features are disabled. Set NOW_ASSIST_ENABLED=true to enable.', 'NOW_ASSIST_NOT_ENABLED');
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
export function requireAtf() {
|
|
35
|
+
if (process.env.ATF_ENABLED !== 'true') {
|
|
36
|
+
throw new ServiceNowError('ATF test execution is disabled. Set ATF_ENABLED=true to enable.', 'ATF_NOT_ENABLED');
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
export function isWriteEnabled() {
|
|
40
|
+
return process.env.WRITE_ENABLED === 'true';
|
|
41
|
+
}
|
|
42
|
+
export function isCmdbWriteEnabled() {
|
|
43
|
+
return process.env.WRITE_ENABLED === 'true' && process.env.CMDB_WRITE_ENABLED === 'true';
|
|
44
|
+
}
|
|
45
|
+
export function isScriptingEnabled() {
|
|
46
|
+
return process.env.WRITE_ENABLED === 'true' && process.env.SCRIPTING_ENABLED === 'true';
|
|
47
|
+
}
|
|
48
|
+
export function isNowAssistEnabled() {
|
|
49
|
+
return process.env.NOW_ASSIST_ENABLED === 'true';
|
|
50
|
+
}
|
|
51
|
+
export function isAtfEnabled() {
|
|
52
|
+
return process.env.ATF_ENABLED === 'true';
|
|
53
|
+
}
|
|
54
|
+
//# sourceMappingURL=permissions.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"permissions.js","sourceRoot":"","sources":["../../src/utils/permissions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAE9C;;;;;;;;;GASG;AAEH,MAAM,UAAU,YAAY;IAC1B,IAAI,OAAO,CAAC,GAAG,CAAC,aAAa,KAAK,MAAM,EAAE,CAAC;QACzC,MAAM,IAAI,eAAe,CACvB,kEAAkE,EAClE,mBAAmB,CACpB,CAAC;IACJ,CAAC;AACH,CAAC;AAED,MAAM,UAAU,gBAAgB;IAC9B,YAAY,EAAE,CAAC;IACf,IAAI,OAAO,CAAC,GAAG,CAAC,kBAAkB,KAAK,MAAM,EAAE,CAAC;QAC9C,MAAM,IAAI,eAAe,CACvB,mGAAmG,EACnG,wBAAwB,CACzB,CAAC;IACJ,CAAC;AACH,CAAC;AAED,MAAM,UAAU,gBAAgB;IAC9B,YAAY,EAAE,CAAC;IACf,IAAI,OAAO,CAAC,GAAG,CAAC,iBAAiB,KAAK,MAAM,EAAE,CAAC;QAC7C,MAAM,IAAI,eAAe,CACvB,iGAAiG,EACjG,uBAAuB,CACxB,CAAC;IACJ,CAAC;AACH,CAAC;AAED,MAAM,UAAU,gBAAgB;IAC9B,IAAI,OAAO,CAAC,GAAG,CAAC,kBAAkB,KAAK,MAAM,EAAE,CAAC;QAC9C,MAAM,IAAI,eAAe,CACvB,+EAA+E,EAC/E,wBAAwB,CACzB,CAAC;IACJ,CAAC;AACH,CAAC;AAED,MAAM,UAAU,UAAU;IACxB,IAAI,OAAO,CAAC,GAAG,CAAC,WAAW,KAAK,MAAM,EAAE,CAAC;QACvC,MAAM,IAAI,eAAe,CACvB,iEAAiE,EACjE,iBAAiB,CAClB,CAAC;IACJ,CAAC;AACH,CAAC;AAED,MAAM,UAAU,cAAc;IAC5B,OAAO,OAAO,CAAC,GAAG,CAAC,aAAa,KAAK,MAAM,CAAC;AAC9C,CAAC;AAED,MAAM,UAAU,kBAAkB;IAChC,OAAO,OAAO,CAAC,GAAG,CAAC,aAAa,KAAK,MAAM,IAAI,OAAO,CAAC,GAAG,CAAC,kBAAkB,KAAK,MAAM,CAAC;AAC3F,CAAC;AAED,MAAM,UAAU,kBAAkB;IAChC,OAAO,OAAO,CAAC,GAAG,CAAC,aAAa,KAAK,MAAM,IAAI,OAAO,CAAC,GAAG,CAAC,iBAAiB,KAAK,MAAM,CAAC;AAC1F,CAAC;AAED,MAAM,UAAU,kBAAkB;IAChC,OAAO,OAAO,CAAC,GAAG,CAAC,kBAAkB,KAAK,MAAM,CAAC;AACnD,CAAC;AAED,MAAM,UAAU,YAAY;IAC1B,OAAO,OAAO,CAAC,GAAG,CAAC,WAAW,KAAK,MAAM,CAAC;AAC5C,CAAC"}
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
{
|
|
2
|
+
"_comment": [
|
|
3
|
+
"Copy this file to instances.json and fill in your credentials.",
|
|
4
|
+
"Set SN_INSTANCES_CONFIG=./instances.json in your environment or .env file.",
|
|
5
|
+
"IMPORTANT: Add instances.json to .gitignore — it contains secrets.",
|
|
6
|
+
"",
|
|
7
|
+
"Supports three use cases:",
|
|
8
|
+
" 1. Single organisation: dev / staging / prod environments",
|
|
9
|
+
" 2. Multi-customer / MSP: one entry per customer tenant",
|
|
10
|
+
" 3. Mixed: both your own environments and customer instances",
|
|
11
|
+
"",
|
|
12
|
+
"Query a specific instance by passing instance=<name> to any tool,",
|
|
13
|
+
"or use switch_instance to change the active instance for the session.",
|
|
14
|
+
"Example (AI prompt): 'Get all P1 incidents from prod instance'",
|
|
15
|
+
"Example (AI prompt): 'Switch to customer_acme and list open changes'"
|
|
16
|
+
],
|
|
17
|
+
|
|
18
|
+
"default_instance": "dev",
|
|
19
|
+
|
|
20
|
+
"instances": {
|
|
21
|
+
|
|
22
|
+
"dev": {
|
|
23
|
+
"instance_url": "https://your-company-dev.service-now.com",
|
|
24
|
+
"auth_method": "basic",
|
|
25
|
+
"username": "admin",
|
|
26
|
+
"password": "YOUR_DEV_PASSWORD",
|
|
27
|
+
"_comment": "Personal Developer Instance (PDI) or sandbox — safe to enable writes"
|
|
28
|
+
},
|
|
29
|
+
|
|
30
|
+
"staging": {
|
|
31
|
+
"instance_url": "https://your-company-stg.service-now.com",
|
|
32
|
+
"auth_method": "oauth",
|
|
33
|
+
"client_id": "YOUR_STAGING_CLIENT_ID",
|
|
34
|
+
"client_secret": "YOUR_STAGING_CLIENT_SECRET",
|
|
35
|
+
"username": "svc_mcp_staging",
|
|
36
|
+
"password": "YOUR_STAGING_SVC_PASSWORD",
|
|
37
|
+
"_comment": "Pre-prod validation — OAuth recommended"
|
|
38
|
+
},
|
|
39
|
+
|
|
40
|
+
"prod": {
|
|
41
|
+
"instance_url": "https://your-company.service-now.com",
|
|
42
|
+
"auth_method": "oauth",
|
|
43
|
+
"client_id": "YOUR_PROD_CLIENT_ID",
|
|
44
|
+
"client_secret": "YOUR_PROD_CLIENT_SECRET",
|
|
45
|
+
"username": "svc_mcp_prod",
|
|
46
|
+
"password": "YOUR_PROD_SVC_PASSWORD",
|
|
47
|
+
"_comment": "Production — use a dedicated read-only service account; only enable WRITE_ENABLED for deliberate changes"
|
|
48
|
+
},
|
|
49
|
+
|
|
50
|
+
"customer_acme": {
|
|
51
|
+
"instance_url": "https://acmecorp.service-now.com",
|
|
52
|
+
"auth_method": "oauth",
|
|
53
|
+
"client_id": "ACME_CLIENT_ID",
|
|
54
|
+
"client_secret": "ACME_CLIENT_SECRET",
|
|
55
|
+
"username": "svc_consultant",
|
|
56
|
+
"password": "ACME_SVC_PASSWORD",
|
|
57
|
+
"_comment": "MSP/Consultant use case — customer Acme Corp tenant"
|
|
58
|
+
},
|
|
59
|
+
|
|
60
|
+
"customer_globex": {
|
|
61
|
+
"instance_url": "https://globex.service-now.com",
|
|
62
|
+
"auth_method": "oauth",
|
|
63
|
+
"client_id": "GLOBEX_CLIENT_ID",
|
|
64
|
+
"client_secret": "GLOBEX_CLIENT_SECRET",
|
|
65
|
+
"username": "svc_consultant",
|
|
66
|
+
"password": "GLOBEX_SVC_PASSWORD",
|
|
67
|
+
"_comment": "MSP/Consultant use case — customer Globex tenant"
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
}
|
|
71
|
+
}
|
package/package.json
ADDED
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@aartiq/servicenow-mcp",
|
|
3
|
+
"version": "1.0.0",
|
|
4
|
+
"description": "The most comprehensive ServiceNow MCP server — 400+ tools across all modules. Integrates with Claude, ChatGPT, Gemini, Cursor, GitHub Copilot and any LLM.",
|
|
5
|
+
"main": "dist/server.js",
|
|
6
|
+
"bin": {
|
|
7
|
+
"servicenow-mcp": "dist/cli/index.js"
|
|
8
|
+
},
|
|
9
|
+
"type": "module",
|
|
10
|
+
"files": [
|
|
11
|
+
"dist/",
|
|
12
|
+
"instances.example.json",
|
|
13
|
+
".env.example"
|
|
14
|
+
],
|
|
15
|
+
"engines": {
|
|
16
|
+
"node": ">=20.0.0"
|
|
17
|
+
},
|
|
18
|
+
"scripts": {
|
|
19
|
+
"build": "tsc",
|
|
20
|
+
"dev": "tsx watch src/server.ts",
|
|
21
|
+
"start": "node dist/server.js",
|
|
22
|
+
"setup": "node dist/cli/index.js setup",
|
|
23
|
+
"test": "vitest run",
|
|
24
|
+
"test:watch": "vitest",
|
|
25
|
+
"lint": "eslint src tests",
|
|
26
|
+
"lint:fix": "eslint src tests --fix",
|
|
27
|
+
"type-check": "tsc --noEmit"
|
|
28
|
+
},
|
|
29
|
+
"keywords": [
|
|
30
|
+
"servicenow",
|
|
31
|
+
"servicenow-mcp",
|
|
32
|
+
"servicenow-mcp-server",
|
|
33
|
+
"servicenow-ai",
|
|
34
|
+
"servicenow-agent",
|
|
35
|
+
"servicenow-automation",
|
|
36
|
+
"servicenow-developer-tools",
|
|
37
|
+
"servicenow-tools",
|
|
38
|
+
"servicenow-claude",
|
|
39
|
+
"servicenow-chatgpt",
|
|
40
|
+
"servicenow-integration",
|
|
41
|
+
"servicenow-api",
|
|
42
|
+
"mcp",
|
|
43
|
+
"mcp-server",
|
|
44
|
+
"model-context-protocol",
|
|
45
|
+
"itsm",
|
|
46
|
+
"itom",
|
|
47
|
+
"hrsd",
|
|
48
|
+
"csm",
|
|
49
|
+
"secops",
|
|
50
|
+
"grc",
|
|
51
|
+
"cmdb",
|
|
52
|
+
"now-assist",
|
|
53
|
+
"atf",
|
|
54
|
+
"flow-designer",
|
|
55
|
+
"service-portal",
|
|
56
|
+
"performance-analytics",
|
|
57
|
+
"service-catalog",
|
|
58
|
+
"app-studio",
|
|
59
|
+
"scoped-app",
|
|
60
|
+
"ai",
|
|
61
|
+
"ai-agent",
|
|
62
|
+
"llm",
|
|
63
|
+
"autonomous-agent",
|
|
64
|
+
"multi-agent",
|
|
65
|
+
"claude",
|
|
66
|
+
"anthropic",
|
|
67
|
+
"openai",
|
|
68
|
+
"gemini",
|
|
69
|
+
"cursor",
|
|
70
|
+
"copilot",
|
|
71
|
+
"typescript",
|
|
72
|
+
"automation",
|
|
73
|
+
"agentic"
|
|
74
|
+
],
|
|
75
|
+
"author": "aartiq",
|
|
76
|
+
"homepage": "https://github.com/aartiq/servicenow-mcp#readme",
|
|
77
|
+
"repository": {
|
|
78
|
+
"type": "git",
|
|
79
|
+
"url": "https://github.com/aartiq/servicenow-mcp.git"
|
|
80
|
+
},
|
|
81
|
+
"bugs": {
|
|
82
|
+
"url": "https://github.com/aartiq/servicenow-mcp/issues"
|
|
83
|
+
},
|
|
84
|
+
"license": "MIT",
|
|
85
|
+
"overrides": {
|
|
86
|
+
"minimatch": "^10.2.2"
|
|
87
|
+
},
|
|
88
|
+
"dependencies": {
|
|
89
|
+
"@inquirer/prompts": "^8.2.1",
|
|
90
|
+
"@modelcontextprotocol/sdk": "^1.26.0",
|
|
91
|
+
"chalk": "^5.6.2",
|
|
92
|
+
"commander": "^14.0.3",
|
|
93
|
+
"dotenv": "^16.4.5",
|
|
94
|
+
"ora": "^9.3.0",
|
|
95
|
+
"zod": "^3.22.4"
|
|
96
|
+
},
|
|
97
|
+
"devDependencies": {
|
|
98
|
+
"@types/node": "^20.19.33",
|
|
99
|
+
"@typescript-eslint/eslint-plugin": "^8.56.0",
|
|
100
|
+
"@typescript-eslint/parser": "^8.56.0",
|
|
101
|
+
"eslint": "^9.39.3",
|
|
102
|
+
"globals": "^17.3.0",
|
|
103
|
+
"tsx": "^4.7.0",
|
|
104
|
+
"typescript": "^5.3.3",
|
|
105
|
+
"vitest": "^4.0.18"
|
|
106
|
+
}
|
|
107
|
+
}
|