@sonisoft/now-sdk-ext-mcp 2.0.0 → 2.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +22 -3
- package/dist/index.js +29 -0
- package/dist/index.js.map +1 -1
- package/dist/tools/catalog.d.ts +8 -0
- package/dist/tools/catalog.d.ts.map +1 -0
- package/dist/tools/catalog.js +352 -0
- package/dist/tools/catalog.js.map +1 -0
- package/dist/tools/flow.d.ts +24 -0
- package/dist/tools/flow.d.ts.map +1 -0
- package/dist/tools/flow.js +559 -0
- package/dist/tools/flow.js.map +1 -0
- package/dist/tools/knowledge.d.ts +11 -0
- package/dist/tools/knowledge.d.ts.map +1 -0
- package/dist/tools/knowledge.js +527 -0
- package/dist/tools/knowledge.js.map +1 -0
- package/dist/tools/xml-record.d.ts +15 -0
- package/dist/tools/xml-record.d.ts.map +1 -0
- package/dist/tools/xml-record.js +145 -0
- package/dist/tools/xml-record.js.map +1 -0
- package/package.json +2 -2
|
@@ -0,0 +1,527 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
import { KnowledgeManager } from "@sonisoft/now-sdk-ext-core";
|
|
3
|
+
import { withConnectionRetry } from "../common/connection.js";
|
|
4
|
+
/**
|
|
5
|
+
* Instance parameter description shared across knowledge tools.
|
|
6
|
+
*/
|
|
7
|
+
const INSTANCE_DESC = "The ServiceNow instance auth alias to use. " +
|
|
8
|
+
'This is the alias configured via `now-sdk auth --add` (e.g., "dev224436", "prod", "test"). ' +
|
|
9
|
+
'The user will typically refer to this by name when saying things like "on my dev224436 instance". ' +
|
|
10
|
+
"If not provided, falls back to the SN_AUTH_ALIAS environment variable.";
|
|
11
|
+
// ============================================================
|
|
12
|
+
// 1. list_knowledge_bases
|
|
13
|
+
// ============================================================
|
|
14
|
+
export function registerListKnowledgeBasesTool(server) {
|
|
15
|
+
server.registerTool("list_knowledge_bases", {
|
|
16
|
+
title: "List Knowledge Bases",
|
|
17
|
+
description: "List knowledge bases on a ServiceNow instance. Returns knowledge base records " +
|
|
18
|
+
"from the kb_knowledge_base table with optional filtering by active status and " +
|
|
19
|
+
"encoded query. Use this to discover available KBs before browsing articles or categories.",
|
|
20
|
+
inputSchema: {
|
|
21
|
+
instance: z.string().optional().describe(INSTANCE_DESC),
|
|
22
|
+
query: z
|
|
23
|
+
.string()
|
|
24
|
+
.optional()
|
|
25
|
+
.describe("Optional encoded query to filter knowledge bases " +
|
|
26
|
+
'(e.g., "titleLIKEIT" to find KBs with "IT" in the title).'),
|
|
27
|
+
active: z
|
|
28
|
+
.boolean()
|
|
29
|
+
.optional()
|
|
30
|
+
.describe("Filter by active status. Omit to return all."),
|
|
31
|
+
limit: z
|
|
32
|
+
.number()
|
|
33
|
+
.int()
|
|
34
|
+
.min(1)
|
|
35
|
+
.default(20)
|
|
36
|
+
.describe("Maximum number of records to return (default 20)."),
|
|
37
|
+
offset: z
|
|
38
|
+
.number()
|
|
39
|
+
.int()
|
|
40
|
+
.min(0)
|
|
41
|
+
.default(0)
|
|
42
|
+
.describe("Number of records to skip for pagination (default 0)."),
|
|
43
|
+
},
|
|
44
|
+
}, async ({ instance, query, active, limit, offset }) => {
|
|
45
|
+
try {
|
|
46
|
+
const results = await withConnectionRetry(instance, async (snInstance) => {
|
|
47
|
+
const mgr = new KnowledgeManager(snInstance);
|
|
48
|
+
return await mgr.listKnowledgeBases({ query, active, limit, offset });
|
|
49
|
+
});
|
|
50
|
+
if (results.length === 0) {
|
|
51
|
+
return {
|
|
52
|
+
content: [{ type: "text", text: "No knowledge bases found." }],
|
|
53
|
+
};
|
|
54
|
+
}
|
|
55
|
+
const lines = results.map((kb) => `- ${kb.title} (sys_id: ${kb.sys_id}, active: ${kb.active})`);
|
|
56
|
+
return {
|
|
57
|
+
content: [
|
|
58
|
+
{
|
|
59
|
+
type: "text",
|
|
60
|
+
text: `Found ${results.length} knowledge base(s):\n\n${lines.join("\n")}`,
|
|
61
|
+
},
|
|
62
|
+
],
|
|
63
|
+
};
|
|
64
|
+
}
|
|
65
|
+
catch (error) {
|
|
66
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
67
|
+
return {
|
|
68
|
+
content: [{ type: "text", text: `Error listing knowledge bases: ${message}` }],
|
|
69
|
+
isError: true,
|
|
70
|
+
};
|
|
71
|
+
}
|
|
72
|
+
});
|
|
73
|
+
}
|
|
74
|
+
// ============================================================
|
|
75
|
+
// 2. get_knowledge_base
|
|
76
|
+
// ============================================================
|
|
77
|
+
export function registerGetKnowledgeBaseTool(server) {
|
|
78
|
+
server.registerTool("get_knowledge_base", {
|
|
79
|
+
title: "Get Knowledge Base Details",
|
|
80
|
+
description: "Get details of a specific knowledge base by sys_id, including the total number " +
|
|
81
|
+
"of articles and categories. Use this to understand the scope of a KB before " +
|
|
82
|
+
"browsing its contents.",
|
|
83
|
+
inputSchema: {
|
|
84
|
+
instance: z.string().optional().describe(INSTANCE_DESC),
|
|
85
|
+
sys_id: z.string().describe("The sys_id of the knowledge base."),
|
|
86
|
+
},
|
|
87
|
+
}, async ({ instance, sys_id }) => {
|
|
88
|
+
try {
|
|
89
|
+
const result = await withConnectionRetry(instance, async (snInstance) => {
|
|
90
|
+
const mgr = new KnowledgeManager(snInstance);
|
|
91
|
+
return await mgr.getKnowledgeBase(sys_id);
|
|
92
|
+
});
|
|
93
|
+
const kb = result.knowledgeBase;
|
|
94
|
+
const text = `Knowledge Base: ${kb.title}\n` +
|
|
95
|
+
`sys_id: ${kb.sys_id}\n` +
|
|
96
|
+
`Active: ${kb.active}\n` +
|
|
97
|
+
`Articles: ${result.articleCount}\n` +
|
|
98
|
+
`Categories: ${result.categoryCount}`;
|
|
99
|
+
return {
|
|
100
|
+
content: [{ type: "text", text }],
|
|
101
|
+
};
|
|
102
|
+
}
|
|
103
|
+
catch (error) {
|
|
104
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
105
|
+
return {
|
|
106
|
+
content: [{ type: "text", text: `Error getting knowledge base: ${message}` }],
|
|
107
|
+
isError: true,
|
|
108
|
+
};
|
|
109
|
+
}
|
|
110
|
+
});
|
|
111
|
+
}
|
|
112
|
+
// ============================================================
|
|
113
|
+
// 3. list_kb_categories
|
|
114
|
+
// ============================================================
|
|
115
|
+
export function registerListKbCategoriesTool(server) {
|
|
116
|
+
server.registerTool("list_kb_categories", {
|
|
117
|
+
title: "List Knowledge Categories",
|
|
118
|
+
description: "List knowledge base categories from the kb_category table. Filter by knowledge " +
|
|
119
|
+
"base, parent category, active status, or encoded query. Use this to understand " +
|
|
120
|
+
"a KB's taxonomy before creating or categorizing articles.",
|
|
121
|
+
inputSchema: {
|
|
122
|
+
instance: z.string().optional().describe(INSTANCE_DESC),
|
|
123
|
+
knowledge_base_sys_id: z
|
|
124
|
+
.string()
|
|
125
|
+
.optional()
|
|
126
|
+
.describe("Filter categories by knowledge base sys_id."),
|
|
127
|
+
parent_category: z
|
|
128
|
+
.string()
|
|
129
|
+
.optional()
|
|
130
|
+
.describe("Filter by parent category sys_id to get subcategories."),
|
|
131
|
+
query: z.string().optional().describe("Optional encoded query for additional filtering."),
|
|
132
|
+
active: z.boolean().optional().describe("Filter by active status. Omit to return all."),
|
|
133
|
+
limit: z.number().int().min(1).default(20).describe("Maximum number of records to return (default 20)."),
|
|
134
|
+
offset: z.number().int().min(0).default(0).describe("Number of records to skip for pagination (default 0)."),
|
|
135
|
+
},
|
|
136
|
+
}, async ({ instance, knowledge_base_sys_id, parent_category, query, active, limit, offset }) => {
|
|
137
|
+
try {
|
|
138
|
+
const results = await withConnectionRetry(instance, async (snInstance) => {
|
|
139
|
+
const mgr = new KnowledgeManager(snInstance);
|
|
140
|
+
return await mgr.listCategories({
|
|
141
|
+
knowledgeBaseSysId: knowledge_base_sys_id,
|
|
142
|
+
parentCategory: parent_category,
|
|
143
|
+
query,
|
|
144
|
+
active,
|
|
145
|
+
limit,
|
|
146
|
+
offset,
|
|
147
|
+
});
|
|
148
|
+
});
|
|
149
|
+
if (results.length === 0) {
|
|
150
|
+
return {
|
|
151
|
+
content: [{ type: "text", text: "No categories found." }],
|
|
152
|
+
};
|
|
153
|
+
}
|
|
154
|
+
const lines = results.map((cat) => `- ${cat.label} (sys_id: ${cat.sys_id}, active: ${cat.active})`);
|
|
155
|
+
return {
|
|
156
|
+
content: [
|
|
157
|
+
{
|
|
158
|
+
type: "text",
|
|
159
|
+
text: `Found ${results.length} category(ies):\n\n${lines.join("\n")}`,
|
|
160
|
+
},
|
|
161
|
+
],
|
|
162
|
+
};
|
|
163
|
+
}
|
|
164
|
+
catch (error) {
|
|
165
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
166
|
+
return {
|
|
167
|
+
content: [{ type: "text", text: `Error listing categories: ${message}` }],
|
|
168
|
+
isError: true,
|
|
169
|
+
};
|
|
170
|
+
}
|
|
171
|
+
});
|
|
172
|
+
}
|
|
173
|
+
// ============================================================
|
|
174
|
+
// 4. create_kb_category
|
|
175
|
+
// ============================================================
|
|
176
|
+
export function registerCreateKbCategoryTool(server) {
|
|
177
|
+
server.registerTool("create_kb_category", {
|
|
178
|
+
title: "Create Knowledge Category",
|
|
179
|
+
description: "Create a new category in a knowledge base. Requires a label and the knowledge " +
|
|
180
|
+
"base sys_id. Optionally set a parent category for subcategories.\n\n" +
|
|
181
|
+
"IMPORTANT: This creates a new category on the instance.",
|
|
182
|
+
inputSchema: {
|
|
183
|
+
instance: z.string().optional().describe(INSTANCE_DESC),
|
|
184
|
+
label: z.string().describe("The display label for the new category."),
|
|
185
|
+
knowledge_base_sys_id: z
|
|
186
|
+
.string()
|
|
187
|
+
.describe("The sys_id of the knowledge base to create the category in."),
|
|
188
|
+
parent_category: z
|
|
189
|
+
.string()
|
|
190
|
+
.optional()
|
|
191
|
+
.describe("Optional parent category sys_id for creating subcategories."),
|
|
192
|
+
active: z
|
|
193
|
+
.boolean()
|
|
194
|
+
.optional()
|
|
195
|
+
.describe("Whether the category is active (default true)."),
|
|
196
|
+
},
|
|
197
|
+
}, async ({ instance, label, knowledge_base_sys_id, parent_category, active }) => {
|
|
198
|
+
try {
|
|
199
|
+
const result = await withConnectionRetry(instance, async (snInstance) => {
|
|
200
|
+
const mgr = new KnowledgeManager(snInstance);
|
|
201
|
+
return await mgr.createCategory({
|
|
202
|
+
label,
|
|
203
|
+
knowledgeBaseSysId: knowledge_base_sys_id,
|
|
204
|
+
parentCategory: parent_category,
|
|
205
|
+
active,
|
|
206
|
+
});
|
|
207
|
+
});
|
|
208
|
+
return {
|
|
209
|
+
content: [
|
|
210
|
+
{
|
|
211
|
+
type: "text",
|
|
212
|
+
text: `Category '${result.label}' created successfully (sys_id: ${result.sys_id}).`,
|
|
213
|
+
},
|
|
214
|
+
],
|
|
215
|
+
};
|
|
216
|
+
}
|
|
217
|
+
catch (error) {
|
|
218
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
219
|
+
return {
|
|
220
|
+
content: [{ type: "text", text: `Error creating category: ${message}` }],
|
|
221
|
+
isError: true,
|
|
222
|
+
};
|
|
223
|
+
}
|
|
224
|
+
});
|
|
225
|
+
}
|
|
226
|
+
// ============================================================
|
|
227
|
+
// 5. list_kb_articles
|
|
228
|
+
// ============================================================
|
|
229
|
+
export function registerListKbArticlesTool(server) {
|
|
230
|
+
server.registerTool("list_kb_articles", {
|
|
231
|
+
title: "List Knowledge Articles",
|
|
232
|
+
description: "List knowledge article summaries from the kb_knowledge table. Returns lightweight " +
|
|
233
|
+
"records without body content for efficiency. Filter by knowledge base, category, " +
|
|
234
|
+
"workflow state (draft/published/retired), text search on title, or encoded query.\n\n" +
|
|
235
|
+
"Use get_kb_article to retrieve the full article body content.",
|
|
236
|
+
inputSchema: {
|
|
237
|
+
instance: z.string().optional().describe(INSTANCE_DESC),
|
|
238
|
+
knowledge_base_sys_id: z
|
|
239
|
+
.string()
|
|
240
|
+
.optional()
|
|
241
|
+
.describe("Filter articles by knowledge base sys_id."),
|
|
242
|
+
category_sys_id: z
|
|
243
|
+
.string()
|
|
244
|
+
.optional()
|
|
245
|
+
.describe("Filter articles by category sys_id."),
|
|
246
|
+
workflow_state: z
|
|
247
|
+
.enum(["draft", "published", "retired"])
|
|
248
|
+
.optional()
|
|
249
|
+
.describe("Filter by workflow state: 'draft', 'published', or 'retired'."),
|
|
250
|
+
text_search: z
|
|
251
|
+
.string()
|
|
252
|
+
.optional()
|
|
253
|
+
.describe("Search articles by title (short_description contains this text)."),
|
|
254
|
+
query: z.string().optional().describe("Optional encoded query for additional filtering."),
|
|
255
|
+
limit: z.number().int().min(1).default(20).describe("Maximum number of records to return (default 20)."),
|
|
256
|
+
offset: z.number().int().min(0).default(0).describe("Number of records to skip for pagination (default 0)."),
|
|
257
|
+
},
|
|
258
|
+
}, async ({ instance, knowledge_base_sys_id, category_sys_id, workflow_state, text_search, query, limit, offset }) => {
|
|
259
|
+
try {
|
|
260
|
+
const results = await withConnectionRetry(instance, async (snInstance) => {
|
|
261
|
+
const mgr = new KnowledgeManager(snInstance);
|
|
262
|
+
return await mgr.listArticles({
|
|
263
|
+
knowledgeBaseSysId: knowledge_base_sys_id,
|
|
264
|
+
categorySysId: category_sys_id,
|
|
265
|
+
workflowState: workflow_state,
|
|
266
|
+
textSearch: text_search,
|
|
267
|
+
query,
|
|
268
|
+
limit,
|
|
269
|
+
offset,
|
|
270
|
+
});
|
|
271
|
+
});
|
|
272
|
+
if (results.length === 0) {
|
|
273
|
+
return {
|
|
274
|
+
content: [{ type: "text", text: "No articles found." }],
|
|
275
|
+
};
|
|
276
|
+
}
|
|
277
|
+
const lines = results.map((a) => `- ${a.number}: ${a.short_description} (state: ${a.workflow_state}, sys_id: ${a.sys_id})`);
|
|
278
|
+
return {
|
|
279
|
+
content: [
|
|
280
|
+
{
|
|
281
|
+
type: "text",
|
|
282
|
+
text: `Found ${results.length} article(s):\n\n${lines.join("\n")}`,
|
|
283
|
+
},
|
|
284
|
+
],
|
|
285
|
+
};
|
|
286
|
+
}
|
|
287
|
+
catch (error) {
|
|
288
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
289
|
+
return {
|
|
290
|
+
content: [{ type: "text", text: `Error listing articles: ${message}` }],
|
|
291
|
+
isError: true,
|
|
292
|
+
};
|
|
293
|
+
}
|
|
294
|
+
});
|
|
295
|
+
}
|
|
296
|
+
// ============================================================
|
|
297
|
+
// 6. get_kb_article
|
|
298
|
+
// ============================================================
|
|
299
|
+
export function registerGetKbArticleTool(server) {
|
|
300
|
+
server.registerTool("get_kb_article", {
|
|
301
|
+
title: "Get Knowledge Article",
|
|
302
|
+
description: "Get the full content of a knowledge article by sys_id, including the HTML body text. " +
|
|
303
|
+
"Use this when you need to read, review, or extract content from an article.",
|
|
304
|
+
inputSchema: {
|
|
305
|
+
instance: z.string().optional().describe(INSTANCE_DESC),
|
|
306
|
+
sys_id: z.string().describe("The sys_id of the knowledge article."),
|
|
307
|
+
},
|
|
308
|
+
}, async ({ instance, sys_id }) => {
|
|
309
|
+
try {
|
|
310
|
+
const article = await withConnectionRetry(instance, async (snInstance) => {
|
|
311
|
+
const mgr = new KnowledgeManager(snInstance);
|
|
312
|
+
return await mgr.getArticle(sys_id);
|
|
313
|
+
});
|
|
314
|
+
const text = `Article: ${article.short_description}\n` +
|
|
315
|
+
`Number: ${article.number}\n` +
|
|
316
|
+
`sys_id: ${article.sys_id}\n` +
|
|
317
|
+
`Workflow State: ${article.workflow_state}\n` +
|
|
318
|
+
`Active: ${article.active}\n` +
|
|
319
|
+
`Article Type: ${article.article_type || "N/A"}\n` +
|
|
320
|
+
`KB: ${article.kb_knowledge_base}\n` +
|
|
321
|
+
`Category: ${article.kb_category || "N/A"}\n\n` +
|
|
322
|
+
`--- Body ---\n${article.text || article.wiki || "(No body content)"}`;
|
|
323
|
+
return {
|
|
324
|
+
content: [{ type: "text", text }],
|
|
325
|
+
};
|
|
326
|
+
}
|
|
327
|
+
catch (error) {
|
|
328
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
329
|
+
return {
|
|
330
|
+
content: [{ type: "text", text: `Error getting article: ${message}` }],
|
|
331
|
+
isError: true,
|
|
332
|
+
};
|
|
333
|
+
}
|
|
334
|
+
});
|
|
335
|
+
}
|
|
336
|
+
// ============================================================
|
|
337
|
+
// 7. create_kb_article
|
|
338
|
+
// ============================================================
|
|
339
|
+
export function registerCreateKbArticleTool(server) {
|
|
340
|
+
server.registerTool("create_kb_article", {
|
|
341
|
+
title: "Create Knowledge Article",
|
|
342
|
+
description: "Create a new knowledge article in a specified knowledge base. The article is " +
|
|
343
|
+
"created in 'draft' workflow state by default. Use publish_kb_article to make " +
|
|
344
|
+
"it visible to end users.\n\n" +
|
|
345
|
+
"The body content can be provided as HTML (text field) or wiki markup (wiki field). " +
|
|
346
|
+
"HTML is the more common format.\n\n" +
|
|
347
|
+
"IMPORTANT: This creates a new article on the instance.",
|
|
348
|
+
inputSchema: {
|
|
349
|
+
instance: z.string().optional().describe(INSTANCE_DESC),
|
|
350
|
+
short_description: z
|
|
351
|
+
.string()
|
|
352
|
+
.describe("The article title/short description."),
|
|
353
|
+
knowledge_base_sys_id: z
|
|
354
|
+
.string()
|
|
355
|
+
.describe("The sys_id of the knowledge base to create the article in."),
|
|
356
|
+
text: z
|
|
357
|
+
.string()
|
|
358
|
+
.optional()
|
|
359
|
+
.describe("The article body content in HTML format."),
|
|
360
|
+
wiki: z
|
|
361
|
+
.string()
|
|
362
|
+
.optional()
|
|
363
|
+
.describe("The article body content in wiki markup format (alternative to HTML)."),
|
|
364
|
+
category_sys_id: z
|
|
365
|
+
.string()
|
|
366
|
+
.optional()
|
|
367
|
+
.describe("The sys_id of the category to assign the article to."),
|
|
368
|
+
article_type: z
|
|
369
|
+
.string()
|
|
370
|
+
.optional()
|
|
371
|
+
.describe("The article type (e.g., 'text', 'wiki'). Defaults to platform default."),
|
|
372
|
+
workflow_state: z
|
|
373
|
+
.enum(["draft", "published", "retired"])
|
|
374
|
+
.default("draft")
|
|
375
|
+
.describe("The initial workflow state: 'draft' (default), 'published', or 'retired'."),
|
|
376
|
+
additional_fields: z
|
|
377
|
+
.record(z.string())
|
|
378
|
+
.optional()
|
|
379
|
+
.describe("Optional additional fields to set on the article record as key-value pairs."),
|
|
380
|
+
},
|
|
381
|
+
}, async ({ instance, short_description, knowledge_base_sys_id, text, wiki, category_sys_id, article_type, workflow_state, additional_fields, }) => {
|
|
382
|
+
try {
|
|
383
|
+
const article = await withConnectionRetry(instance, async (snInstance) => {
|
|
384
|
+
const mgr = new KnowledgeManager(snInstance);
|
|
385
|
+
return await mgr.createArticle({
|
|
386
|
+
shortDescription: short_description,
|
|
387
|
+
knowledgeBaseSysId: knowledge_base_sys_id,
|
|
388
|
+
text,
|
|
389
|
+
wiki,
|
|
390
|
+
categorySysId: category_sys_id,
|
|
391
|
+
articleType: article_type,
|
|
392
|
+
workflowState: workflow_state,
|
|
393
|
+
additionalFields: additional_fields,
|
|
394
|
+
});
|
|
395
|
+
});
|
|
396
|
+
return {
|
|
397
|
+
content: [
|
|
398
|
+
{
|
|
399
|
+
type: "text",
|
|
400
|
+
text: `Article '${article.short_description}' created successfully.\n` +
|
|
401
|
+
`Number: ${article.number}\n` +
|
|
402
|
+
`sys_id: ${article.sys_id}\n` +
|
|
403
|
+
`Workflow State: ${article.workflow_state}`,
|
|
404
|
+
},
|
|
405
|
+
],
|
|
406
|
+
};
|
|
407
|
+
}
|
|
408
|
+
catch (error) {
|
|
409
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
410
|
+
return {
|
|
411
|
+
content: [{ type: "text", text: `Error creating article: ${message}` }],
|
|
412
|
+
isError: true,
|
|
413
|
+
};
|
|
414
|
+
}
|
|
415
|
+
});
|
|
416
|
+
}
|
|
417
|
+
// ============================================================
|
|
418
|
+
// 8. update_kb_article
|
|
419
|
+
// ============================================================
|
|
420
|
+
export function registerUpdateKbArticleTool(server) {
|
|
421
|
+
server.registerTool("update_kb_article", {
|
|
422
|
+
title: "Update Knowledge Article",
|
|
423
|
+
description: "Update an existing knowledge article's fields. Only the fields provided will " +
|
|
424
|
+
"be modified; all others remain unchanged.\n\n" +
|
|
425
|
+
"IMPORTANT: This modifies the article on the instance.",
|
|
426
|
+
inputSchema: {
|
|
427
|
+
instance: z.string().optional().describe(INSTANCE_DESC),
|
|
428
|
+
sys_id: z.string().describe("The sys_id of the article to update."),
|
|
429
|
+
short_description: z.string().optional().describe("Updated article title."),
|
|
430
|
+
text: z.string().optional().describe("Updated body content in HTML format."),
|
|
431
|
+
wiki: z.string().optional().describe("Updated body content in wiki markup format."),
|
|
432
|
+
knowledge_base_sys_id: z
|
|
433
|
+
.string()
|
|
434
|
+
.optional()
|
|
435
|
+
.describe("Move the article to a different knowledge base."),
|
|
436
|
+
category_sys_id: z
|
|
437
|
+
.string()
|
|
438
|
+
.optional()
|
|
439
|
+
.describe("Change the article's category."),
|
|
440
|
+
workflow_state: z
|
|
441
|
+
.string()
|
|
442
|
+
.optional()
|
|
443
|
+
.describe("Change the workflow state ('draft', 'published', 'retired')."),
|
|
444
|
+
article_type: z.string().optional().describe("Change the article type."),
|
|
445
|
+
active: z.boolean().optional().describe("Set the article's active flag."),
|
|
446
|
+
additional_fields: z
|
|
447
|
+
.record(z.string())
|
|
448
|
+
.optional()
|
|
449
|
+
.describe("Optional additional fields to update as key-value pairs."),
|
|
450
|
+
},
|
|
451
|
+
}, async ({ instance, sys_id, short_description, text, wiki, knowledge_base_sys_id, category_sys_id, workflow_state, article_type, active, additional_fields, }) => {
|
|
452
|
+
try {
|
|
453
|
+
const article = await withConnectionRetry(instance, async (snInstance) => {
|
|
454
|
+
const mgr = new KnowledgeManager(snInstance);
|
|
455
|
+
return await mgr.updateArticle(sys_id, {
|
|
456
|
+
shortDescription: short_description,
|
|
457
|
+
text,
|
|
458
|
+
wiki,
|
|
459
|
+
knowledgeBaseSysId: knowledge_base_sys_id,
|
|
460
|
+
categorySysId: category_sys_id,
|
|
461
|
+
workflowState: workflow_state,
|
|
462
|
+
articleType: article_type,
|
|
463
|
+
active,
|
|
464
|
+
additionalFields: additional_fields,
|
|
465
|
+
});
|
|
466
|
+
});
|
|
467
|
+
return {
|
|
468
|
+
content: [
|
|
469
|
+
{
|
|
470
|
+
type: "text",
|
|
471
|
+
text: `Article '${article.short_description}' updated successfully.\n` +
|
|
472
|
+
`sys_id: ${article.sys_id}\n` +
|
|
473
|
+
`Workflow State: ${article.workflow_state}`,
|
|
474
|
+
},
|
|
475
|
+
],
|
|
476
|
+
};
|
|
477
|
+
}
|
|
478
|
+
catch (error) {
|
|
479
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
480
|
+
return {
|
|
481
|
+
content: [{ type: "text", text: `Error updating article: ${message}` }],
|
|
482
|
+
isError: true,
|
|
483
|
+
};
|
|
484
|
+
}
|
|
485
|
+
});
|
|
486
|
+
}
|
|
487
|
+
// ============================================================
|
|
488
|
+
// 9. publish_kb_article
|
|
489
|
+
// ============================================================
|
|
490
|
+
export function registerPublishKbArticleTool(server) {
|
|
491
|
+
server.registerTool("publish_kb_article", {
|
|
492
|
+
title: "Publish Knowledge Article",
|
|
493
|
+
description: "Publish a draft knowledge article by setting its workflow_state to 'published'. " +
|
|
494
|
+
"This makes the article visible to end users who have access to the knowledge base.\n\n" +
|
|
495
|
+
"IMPORTANT: This makes the article publicly visible. Ensure the content has been " +
|
|
496
|
+
"reviewed before publishing.",
|
|
497
|
+
inputSchema: {
|
|
498
|
+
instance: z.string().optional().describe(INSTANCE_DESC),
|
|
499
|
+
sys_id: z.string().describe("The sys_id of the article to publish."),
|
|
500
|
+
},
|
|
501
|
+
}, async ({ instance, sys_id }) => {
|
|
502
|
+
try {
|
|
503
|
+
const article = await withConnectionRetry(instance, async (snInstance) => {
|
|
504
|
+
const mgr = new KnowledgeManager(snInstance);
|
|
505
|
+
return await mgr.publishArticle(sys_id);
|
|
506
|
+
});
|
|
507
|
+
return {
|
|
508
|
+
content: [
|
|
509
|
+
{
|
|
510
|
+
type: "text",
|
|
511
|
+
text: `Article '${article.short_description}' published successfully.\n` +
|
|
512
|
+
`Number: ${article.number}\n` +
|
|
513
|
+
`sys_id: ${article.sys_id}`,
|
|
514
|
+
},
|
|
515
|
+
],
|
|
516
|
+
};
|
|
517
|
+
}
|
|
518
|
+
catch (error) {
|
|
519
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
520
|
+
return {
|
|
521
|
+
content: [{ type: "text", text: `Error publishing article: ${message}` }],
|
|
522
|
+
isError: true,
|
|
523
|
+
};
|
|
524
|
+
}
|
|
525
|
+
});
|
|
526
|
+
}
|
|
527
|
+
//# sourceMappingURL=knowledge.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"knowledge.js","sourceRoot":"","sources":["../../src/tools/knowledge.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
|
|
2
|
+
/**
|
|
3
|
+
* Registers the export_record_xml tool on the MCP server.
|
|
4
|
+
*
|
|
5
|
+
* Exports a single record as ServiceNow unload XML format via the
|
|
6
|
+
* /<table>.do?UNL endpoint.
|
|
7
|
+
*/
|
|
8
|
+
export declare function registerExportRecordXmlTool(server: McpServer): void;
|
|
9
|
+
/**
|
|
10
|
+
* Registers the import_records_xml tool on the MCP server.
|
|
11
|
+
*
|
|
12
|
+
* Imports XML records into ServiceNow via the sys_upload.do processor.
|
|
13
|
+
*/
|
|
14
|
+
export declare function registerImportRecordsXmlTool(server: McpServer): void;
|
|
15
|
+
//# sourceMappingURL=xml-record.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"xml-record.d.ts","sourceRoot":"","sources":["../../src/tools/xml-record.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAkBpE;;;;;GAKG;AACH,wBAAgB,2BAA2B,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CA8DnE;AAMD;;;;GAIG;AACH,wBAAgB,4BAA4B,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CA0EpE"}
|