@get-technology-inc/jamf-docs-mcp-server 1.0.0 → 1.2.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 (103) hide show
  1. package/README.md +61 -139
  2. package/dist/completions.d.ts +13 -0
  3. package/dist/completions.d.ts.map +1 -0
  4. package/dist/completions.js +31 -0
  5. package/dist/completions.js.map +1 -0
  6. package/dist/constants.d.ts +123 -1
  7. package/dist/constants.d.ts.map +1 -1
  8. package/dist/constants.js +187 -17
  9. package/dist/constants.js.map +1 -1
  10. package/dist/index.js +46 -6
  11. package/dist/index.js.map +1 -1
  12. package/dist/prompts/compare-versions.d.ts +7 -0
  13. package/dist/prompts/compare-versions.d.ts.map +1 -0
  14. package/dist/prompts/compare-versions.js +56 -0
  15. package/dist/prompts/compare-versions.js.map +1 -0
  16. package/dist/prompts/index.d.ts +6 -0
  17. package/dist/prompts/index.d.ts.map +1 -0
  18. package/dist/prompts/index.js +12 -0
  19. package/dist/prompts/index.js.map +1 -0
  20. package/dist/prompts/setup-guide.d.ts +7 -0
  21. package/dist/prompts/setup-guide.d.ts.map +1 -0
  22. package/dist/prompts/setup-guide.js +53 -0
  23. package/dist/prompts/setup-guide.js.map +1 -0
  24. package/dist/prompts/troubleshoot.d.ts +7 -0
  25. package/dist/prompts/troubleshoot.d.ts.map +1 -0
  26. package/dist/prompts/troubleshoot.js +52 -0
  27. package/dist/prompts/troubleshoot.js.map +1 -0
  28. package/dist/resources/index.d.ts +13 -0
  29. package/dist/resources/index.d.ts.map +1 -0
  30. package/dist/resources/index.js +121 -0
  31. package/dist/resources/index.js.map +1 -0
  32. package/dist/schemas/index.d.ts +29 -63
  33. package/dist/schemas/index.d.ts.map +1 -1
  34. package/dist/schemas/index.js +35 -16
  35. package/dist/schemas/index.js.map +1 -1
  36. package/dist/schemas/output.d.ts +63 -0
  37. package/dist/schemas/output.d.ts.map +1 -0
  38. package/dist/schemas/output.js +63 -0
  39. package/dist/schemas/output.js.map +1 -0
  40. package/dist/services/cache.d.ts +37 -12
  41. package/dist/services/cache.d.ts.map +1 -1
  42. package/dist/services/cache.js +141 -41
  43. package/dist/services/cache.js.map +1 -1
  44. package/dist/services/metadata.d.ts +78 -0
  45. package/dist/services/metadata.d.ts.map +1 -0
  46. package/dist/services/metadata.js +362 -0
  47. package/dist/services/metadata.js.map +1 -0
  48. package/dist/services/scraper.d.ts +3 -2
  49. package/dist/services/scraper.d.ts.map +1 -1
  50. package/dist/services/scraper.js +170 -145
  51. package/dist/services/scraper.js.map +1 -1
  52. package/dist/services/search-suggestions.d.ts +27 -0
  53. package/dist/services/search-suggestions.d.ts.map +1 -0
  54. package/dist/services/search-suggestions.js +193 -0
  55. package/dist/services/search-suggestions.js.map +1 -0
  56. package/dist/services/tokenizer.d.ts +17 -1
  57. package/dist/services/tokenizer.d.ts.map +1 -1
  58. package/dist/services/tokenizer.js +122 -66
  59. package/dist/services/tokenizer.js.map +1 -1
  60. package/dist/tools/get-article.d.ts +1 -1
  61. package/dist/tools/get-article.d.ts.map +1 -1
  62. package/dist/tools/get-article.js +145 -70
  63. package/dist/tools/get-article.js.map +1 -1
  64. package/dist/tools/get-toc.d.ts +1 -1
  65. package/dist/tools/get-toc.d.ts.map +1 -1
  66. package/dist/tools/get-toc.js +107 -47
  67. package/dist/tools/get-toc.js.map +1 -1
  68. package/dist/tools/list-products.d.ts +1 -1
  69. package/dist/tools/list-products.d.ts.map +1 -1
  70. package/dist/tools/list-products.js +42 -13
  71. package/dist/tools/list-products.js.map +1 -1
  72. package/dist/tools/search.d.ts +1 -1
  73. package/dist/tools/search.d.ts.map +1 -1
  74. package/dist/tools/search.js +142 -69
  75. package/dist/tools/search.js.map +1 -1
  76. package/dist/transport/http.d.ts +12 -0
  77. package/dist/transport/http.d.ts.map +1 -0
  78. package/dist/transport/http.js +297 -0
  79. package/dist/transport/http.js.map +1 -0
  80. package/dist/transport/index.d.ts +13 -0
  81. package/dist/transport/index.d.ts.map +1 -0
  82. package/dist/transport/index.js +40 -0
  83. package/dist/transport/index.js.map +1 -0
  84. package/dist/types.d.ts +12 -18
  85. package/dist/types.d.ts.map +1 -1
  86. package/dist/types.js.map +1 -1
  87. package/dist/utils/doc-type.d.ts +9 -0
  88. package/dist/utils/doc-type.d.ts.map +1 -0
  89. package/dist/utils/doc-type.js +16 -0
  90. package/dist/utils/doc-type.js.map +1 -0
  91. package/dist/utils/progress.d.ts +13 -0
  92. package/dist/utils/progress.d.ts.map +1 -0
  93. package/dist/utils/progress.js +18 -0
  94. package/dist/utils/progress.js.map +1 -0
  95. package/dist/utils/sanitize.d.ts +30 -0
  96. package/dist/utils/sanitize.d.ts.map +1 -0
  97. package/dist/utils/sanitize.js +57 -0
  98. package/dist/utils/sanitize.js.map +1 -0
  99. package/dist/utils/url.d.ts +11 -0
  100. package/dist/utils/url.d.ts.map +1 -0
  101. package/dist/utils/url.js +23 -0
  102. package/dist/utils/url.js.map +1 -0
  103. package/package.json +8 -5
@@ -3,8 +3,114 @@
3
3
  * Retrieve the full content of a specific Jamf documentation article.
4
4
  */
5
5
  import { GetArticleInputSchema } from '../schemas/index.js';
6
- import { ResponseFormat, TOKEN_CONFIG } from '../constants.js';
6
+ import { reportProgress } from '../utils/progress.js';
7
+ import { ArticleOutputSchema } from '../schemas/output.js';
8
+ import { ResponseFormat, OutputMode, TOKEN_CONFIG } from '../constants.js';
7
9
  import { fetchArticle } from '../services/scraper.js';
10
+ import { sanitizeMarkdownText, sanitizeMarkdownUrl, getSafeErrorMessage } from '../utils/sanitize.js';
11
+ function formatBreadcrumb(breadcrumb) {
12
+ if (breadcrumb === undefined || breadcrumb.length === 0) {
13
+ return '';
14
+ }
15
+ return `*${breadcrumb.join(' > ')}*\n\n`;
16
+ }
17
+ function formatMetadata(product, version, lastUpdated, tokenInfo) {
18
+ const meta = [];
19
+ if (product !== undefined && product !== '') {
20
+ meta.push(`**Product**: ${product}`);
21
+ }
22
+ if (version !== undefined && version !== '') {
23
+ meta.push(`**Version**: ${version}`);
24
+ }
25
+ if (lastUpdated !== undefined && lastUpdated !== '') {
26
+ meta.push(`**Last Updated**: ${lastUpdated}`);
27
+ }
28
+ meta.push(`**Tokens**: ${tokenInfo.tokenCount.toLocaleString()}/${tokenInfo.maxTokens.toLocaleString()}`);
29
+ if (tokenInfo.truncated) {
30
+ meta.push('*(truncated)*');
31
+ }
32
+ return meta.length > 0 ? `${meta.join(' | ')}\n\n` : '';
33
+ }
34
+ function formatSectionsList(sections, tokenInfo) {
35
+ if (sections.length === 0 || !tokenInfo.truncated) {
36
+ return '';
37
+ }
38
+ let result = '\n\n---\n\n## Available Sections\n\n';
39
+ for (const section of sections.slice(0, 15)) {
40
+ const indent = ' '.repeat(Math.max(0, section.level - 1));
41
+ result += `${indent}- **${section.title}** (~${String(section.tokenCount)} tokens)\n`;
42
+ }
43
+ if (sections.length > 15) {
44
+ result += `\n*...and ${String(sections.length - 15)} more sections*\n`;
45
+ }
46
+ result += '\n*Use `section` parameter to retrieve a specific section.*\n';
47
+ return result;
48
+ }
49
+ function formatRelatedArticles(articles) {
50
+ if (articles === undefined || articles.length === 0) {
51
+ return '';
52
+ }
53
+ let result = '\n\n---\n\n## Related Articles\n\n';
54
+ for (const related of articles) {
55
+ result += `- [${sanitizeMarkdownText(related.title)}](${sanitizeMarkdownUrl(related.url)})\n`;
56
+ }
57
+ return result;
58
+ }
59
+ function formatFooter(url, tokenInfo, compact = false) {
60
+ const safeUrl = sanitizeMarkdownUrl(url);
61
+ if (compact) {
62
+ return `\n---\n*[Source](${safeUrl}) | ${tokenInfo.tokenCount} tokens${tokenInfo.truncated ? ' (truncated)' : ''}*\n`;
63
+ }
64
+ let result = '\n\n---\n\n';
65
+ result += `*Source: [${sanitizeMarkdownText(url)}](${safeUrl})*\n`;
66
+ result += `*${tokenInfo.tokenCount.toLocaleString()} tokens`;
67
+ if (tokenInfo.truncated) {
68
+ result += ` (truncated from original, max: ${tokenInfo.maxTokens.toLocaleString()})`;
69
+ }
70
+ result += '*\n';
71
+ return result;
72
+ }
73
+ /**
74
+ * Format article in compact mode
75
+ */
76
+ function formatArticleAsCompact(article, tokenInfo) {
77
+ let markdown = `# ${article.title}\n\n`;
78
+ // Compact metadata
79
+ const meta = [];
80
+ if (article.product !== undefined && article.product !== '') {
81
+ meta.push(article.product);
82
+ }
83
+ if (article.version !== undefined && article.version !== '') {
84
+ meta.push(`v${article.version}`);
85
+ }
86
+ if (meta.length > 0) {
87
+ markdown += `*${meta.join(' | ')}*\n\n`;
88
+ }
89
+ // Content
90
+ markdown += article.content;
91
+ // Compact footer
92
+ markdown += formatFooter(article.url, tokenInfo, true);
93
+ return markdown;
94
+ }
95
+ function formatArticleAsMarkdown(article, tokenInfo, sections, options) {
96
+ let markdown = '';
97
+ markdown += formatBreadcrumb(article.breadcrumb);
98
+ markdown += `# ${article.title}\n\n`;
99
+ markdown += formatMetadata(article.product, article.version, article.lastUpdated, tokenInfo);
100
+ if (options.section !== undefined && options.section !== '') {
101
+ markdown += `*Showing section: "${options.section}"*\n\n`;
102
+ }
103
+ markdown += '---\n\n';
104
+ markdown += article.content;
105
+ if (options.section === undefined || options.section === '') {
106
+ markdown += formatSectionsList(sections, tokenInfo);
107
+ }
108
+ if (options.includeRelated === true) {
109
+ markdown += formatRelatedArticles(article.relatedArticles);
110
+ }
111
+ markdown += formatFooter(article.url, tokenInfo);
112
+ return markdown;
113
+ }
8
114
  const TOOL_NAME = 'jamf_docs_get_article';
9
115
  const TOOL_DESCRIPTION = `Retrieve the full content of a specific Jamf documentation article.
10
116
 
@@ -14,8 +120,10 @@ a clean, readable format. Works with any article from docs.jamf.com or learn.jam
14
120
  Args:
15
121
  - url (string, required): Full URL of the article (must be from docs.jamf.com or learn.jamf.com)
16
122
  - section (string, optional): Extract only a specific section by title or ID (e.g., "Prerequisites", "Configuration")
123
+ - summaryOnly (boolean, optional): Return only article summary and outline instead of full content (default: false). Token-efficient way to preview an article
17
124
  - includeRelated (boolean, optional): Include links to related articles (default: false)
18
125
  - maxTokens (number, optional): Maximum tokens in response 100-20000 (default: 5000)
126
+ - outputMode ('full' | 'compact'): Output detail level (default: 'full'). Use 'compact' for brief output
19
127
  - responseFormat ('markdown' | 'json'): Output format (default: 'markdown')
20
128
 
21
129
  Returns:
@@ -63,13 +171,14 @@ export function registerGetArticleTool(server) {
63
171
  title: 'Get Jamf Documentation Article',
64
172
  description: TOOL_DESCRIPTION,
65
173
  inputSchema: GetArticleInputSchema,
174
+ outputSchema: ArticleOutputSchema,
66
175
  annotations: {
67
176
  readOnlyHint: true,
68
177
  destructiveHint: false,
69
178
  idempotentHint: true,
70
179
  openWorldHint: true
71
180
  }
72
- }, async (args) => {
181
+ }, async (args, extra) => {
73
182
  // Parse and validate input
74
183
  const parseResult = GetArticleInputSchema.safeParse(args);
75
184
  if (!parseResult.success) {
@@ -80,12 +189,14 @@ export function registerGetArticleTool(server) {
80
189
  }
81
190
  const params = parseResult.data;
82
191
  try {
83
- // Fetch and parse the article with new options
192
+ await reportProgress(extra, 0, 100);
84
193
  const article = await fetchArticle(params.url, {
85
194
  includeRelated: params.includeRelated,
86
- ...(params.section && { section: params.section }),
195
+ summaryOnly: params.summaryOnly,
196
+ ...(params.section !== undefined && { section: params.section }),
87
197
  maxTokens: params.maxTokens ?? TOKEN_CONFIG.DEFAULT_MAX_TOKENS
88
198
  });
199
+ await reportProgress(extra, 70, 100);
89
200
  const { tokenInfo, sections } = article;
90
201
  // Build response
91
202
  const response = {
@@ -94,86 +205,50 @@ export function registerGetArticleTool(server) {
94
205
  tokenInfo,
95
206
  sections
96
207
  };
97
- // Format output
208
+ const structuredContent = {
209
+ title: article.title,
210
+ url: article.url,
211
+ content: article.content,
212
+ ...(article.product !== undefined ? { product: article.product } : {}),
213
+ ...(article.version !== undefined ? { version: article.version } : {}),
214
+ ...(article.lastUpdated !== undefined ? { lastUpdated: article.lastUpdated } : {}),
215
+ ...(article.breadcrumb !== undefined ? { breadcrumb: article.breadcrumb } : {}),
216
+ sections: sections.map(s => ({
217
+ id: s.id,
218
+ title: s.title,
219
+ level: s.level,
220
+ tokenCount: s.tokenCount
221
+ })),
222
+ truncated: tokenInfo.truncated
223
+ };
98
224
  if (params.responseFormat === ResponseFormat.JSON) {
225
+ await reportProgress(extra, 100, 100);
99
226
  return {
100
227
  content: [{
101
228
  type: 'text',
102
229
  text: JSON.stringify(response, null, 2)
103
- }]
230
+ }],
231
+ structuredContent
104
232
  };
105
233
  }
106
- // Markdown format with Context7 style
107
- let markdown = '';
108
- // Breadcrumb
109
- if (article.breadcrumb && article.breadcrumb.length > 0) {
110
- markdown += `*${article.breadcrumb.join(' > ')}*\n\n`;
111
- }
112
- // Title with token info
113
- markdown += `# ${article.title}\n\n`;
114
- // Metadata including token info
115
- const meta = [];
116
- if (article.product) {
117
- meta.push(`**Product**: ${article.product}`);
118
- }
119
- if (article.version) {
120
- meta.push(`**Version**: ${article.version}`);
121
- }
122
- if (article.lastUpdated) {
123
- meta.push(`**Last Updated**: ${article.lastUpdated}`);
124
- }
125
- meta.push(`**Tokens**: ${tokenInfo.tokenCount.toLocaleString()}/${tokenInfo.maxTokens.toLocaleString()}`);
126
- if (tokenInfo.truncated) {
127
- meta.push('*(truncated)*');
128
- }
129
- if (meta.length > 0) {
130
- markdown += `${meta.join(' | ')}\n\n`;
131
- }
132
- // Section filter note
133
- if (params.section) {
134
- markdown += `*Showing section: "${params.section}"*\n\n`;
135
- }
136
- markdown += '---\n\n';
137
- // Content
138
- markdown += article.content;
139
- // Sections list (if not filtered to a specific section and there are sections)
140
- if (!params.section && sections.length > 0 && tokenInfo.truncated) {
141
- markdown += '\n\n---\n\n';
142
- markdown += '## Available Sections\n\n';
143
- for (const section of sections.slice(0, 15)) {
144
- const indent = ' '.repeat(Math.max(0, section.level - 1));
145
- markdown += `${indent}- **${section.title}** (~${section.tokenCount} tokens)\n`;
146
- }
147
- if (sections.length > 15) {
148
- markdown += `\n*...and ${sections.length - 15} more sections*\n`;
149
- }
150
- markdown += '\n*Use `section` parameter to retrieve a specific section.*\n';
151
- }
152
- // Related articles
153
- if (params.includeRelated && article.relatedArticles && article.relatedArticles.length > 0) {
154
- markdown += '\n\n---\n\n';
155
- markdown += '## Related Articles\n\n';
156
- for (const related of article.relatedArticles) {
157
- markdown += `- [${related.title}](${related.url})\n`;
158
- }
159
- }
160
- // Source link and token summary
161
- markdown += '\n\n---\n\n';
162
- markdown += `*Source: [${article.url}](${article.url})*\n`;
163
- markdown += `*${tokenInfo.tokenCount.toLocaleString()} tokens`;
164
- if (tokenInfo.truncated) {
165
- markdown += ` (truncated from original, max: ${tokenInfo.maxTokens.toLocaleString()})`;
166
- }
167
- markdown += '*\n';
234
+ // Markdown format (full or compact)
235
+ const markdown = params.outputMode === OutputMode.COMPACT
236
+ ? formatArticleAsCompact(article, tokenInfo)
237
+ : formatArticleAsMarkdown(article, tokenInfo, sections, {
238
+ section: params.section,
239
+ includeRelated: params.includeRelated
240
+ });
241
+ await reportProgress(extra, 100, 100);
168
242
  return {
169
243
  content: [{
170
244
  type: 'text',
171
245
  text: markdown
172
- }]
246
+ }],
247
+ structuredContent
173
248
  };
174
249
  }
175
250
  catch (error) {
176
- const errorMessage = error instanceof Error ? error.message : 'Unknown error occurred';
251
+ const errorMessage = getSafeErrorMessage(error);
177
252
  // Provide helpful error messages
178
253
  let helpText = '';
179
254
  if (errorMessage.includes('404')) {
@@ -1 +1 @@
1
- {"version":3,"file":"get-article.js","sourceRoot":"","sources":["../../src/tools/get-article.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAC5D,OAAO,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAE/D,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAEtD,MAAM,SAAS,GAAG,uBAAuB,CAAC;AAE1C,MAAM,gBAAgB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;+EAmDsD,CAAC;AAEhF,MAAM,UAAU,sBAAsB,CAAC,MAAiB;IACtD,MAAM,CAAC,YAAY,CACjB,SAAS,EACT;QACE,KAAK,EAAE,gCAAgC;QACvC,WAAW,EAAE,gBAAgB;QAC7B,WAAW,EAAE,qBAAqB;QAClC,WAAW,EAAE;YACX,YAAY,EAAE,IAAI;YAClB,eAAe,EAAE,KAAK;YACtB,cAAc,EAAE,IAAI;YACpB,aAAa,EAAE,IAAI;SACpB;KACF,EACD,KAAK,EAAE,IAAI,EAAuB,EAAE;QAClC,2BAA2B;QAC3B,MAAM,WAAW,GAAG,qBAAqB,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;QAC1D,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,CAAC;YACzB,OAAO;gBACL,OAAO,EAAE,IAAI;gBACb,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,kBAAkB,WAAW,CAAC,KAAK,CAAC,OAAO,EAAE,EAAE,CAAC;aACjF,CAAC;QACJ,CAAC;QACD,MAAM,MAAM,GAAG,WAAW,CAAC,IAAI,CAAC;QAEhC,IAAI,CAAC;YACH,+CAA+C;YAC/C,MAAM,OAAO,GAAG,MAAM,YAAY,CAAC,MAAM,CAAC,GAAG,EAAE;gBAC7C,cAAc,EAAE,MAAM,CAAC,cAAc;gBACrC,GAAG,CAAC,MAAM,CAAC,OAAO,IAAI,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO,EAAE,CAAC;gBAClD,SAAS,EAAE,MAAM,CAAC,SAAS,IAAI,YAAY,CAAC,kBAAkB;aAC/D,CAAC,CAAC;YAEH,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,GAAG,OAAO,CAAC;YAExC,iBAAiB;YACjB,MAAM,QAAQ,GAAoB;gBAChC,GAAG,OAAO;gBACV,MAAM,EAAE,MAAM,CAAC,cAAc;gBAC7B,SAAS;gBACT,QAAQ;aACT,CAAC;YAEF,gBAAgB;YAChB,IAAI,MAAM,CAAC,cAAc,KAAK,cAAc,CAAC,IAAI,EAAE,CAAC;gBAClD,OAAO;oBACL,OAAO,EAAE,CAAC;4BACR,IAAI,EAAE,MAAM;4BACZ,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;yBACxC,CAAC;iBACH,CAAC;YACJ,CAAC;YAED,sCAAsC;YACtC,IAAI,QAAQ,GAAG,EAAE,CAAC;YAElB,aAAa;YACb,IAAI,OAAO,CAAC,UAAU,IAAI,OAAO,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACxD,QAAQ,IAAI,IAAI,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC;YACxD,CAAC;YAED,wBAAwB;YACxB,QAAQ,IAAI,KAAK,OAAO,CAAC,KAAK,MAAM,CAAC;YAErC,gCAAgC;YAChC,MAAM,IAAI,GAAa,EAAE,CAAC;YAC1B,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;gBAAA,IAAI,CAAC,IAAI,CAAC,gBAAgB,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC;YAAA,CAAC;YACpE,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;gBAAA,IAAI,CAAC,IAAI,CAAC,gBAAgB,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC;YAAA,CAAC;YACpE,IAAI,OAAO,CAAC,WAAW,EAAE,CAAC;gBAAA,IAAI,CAAC,IAAI,CAAC,qBAAqB,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC;YAAA,CAAC;YACjF,IAAI,CAAC,IAAI,CAAC,eAAe,SAAS,CAAC,UAAU,CAAC,cAAc,EAAE,IAAI,SAAS,CAAC,SAAS,CAAC,cAAc,EAAE,EAAE,CAAC,CAAC;YAC1G,IAAI,SAAS,CAAC,SAAS,EAAE,CAAC;gBAAA,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;YAAA,CAAC;YAEtD,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACpB,QAAQ,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC;YACxC,CAAC;YAED,sBAAsB;YACtB,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;gBACnB,QAAQ,IAAI,sBAAsB,MAAM,CAAC,OAAO,QAAQ,CAAC;YAC3D,CAAC;YAED,QAAQ,IAAI,SAAS,CAAC;YAEtB,UAAU;YACV,QAAQ,IAAI,OAAO,CAAC,OAAO,CAAC;YAE5B,+EAA+E;YAC/E,IAAI,CAAC,MAAM,CAAC,OAAO,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,IAAI,SAAS,CAAC,SAAS,EAAE,CAAC;gBAClE,QAAQ,IAAI,aAAa,CAAC;gBAC1B,QAAQ,IAAI,2BAA2B,CAAC;gBACxC,KAAK,MAAM,OAAO,IAAI,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC;oBAC5C,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,OAAO,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC;oBAC3D,QAAQ,IAAI,GAAG,MAAM,OAAO,OAAO,CAAC,KAAK,QAAQ,OAAO,CAAC,UAAU,YAAY,CAAC;gBAClF,CAAC;gBACD,IAAI,QAAQ,CAAC,MAAM,GAAG,EAAE,EAAE,CAAC;oBACzB,QAAQ,IAAI,aAAa,QAAQ,CAAC,MAAM,GAAG,EAAE,mBAAmB,CAAC;gBACnE,CAAC;gBACD,QAAQ,IAAI,+DAA+D,CAAC;YAC9E,CAAC;YAED,mBAAmB;YACnB,IAAI,MAAM,CAAC,cAAc,IAAI,OAAO,CAAC,eAAe,IAAI,OAAO,CAAC,eAAe,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC3F,QAAQ,IAAI,aAAa,CAAC;gBAC1B,QAAQ,IAAI,yBAAyB,CAAC;gBACtC,KAAK,MAAM,OAAO,IAAI,OAAO,CAAC,eAAe,EAAE,CAAC;oBAC9C,QAAQ,IAAI,MAAM,OAAO,CAAC,KAAK,KAAK,OAAO,CAAC,GAAG,KAAK,CAAC;gBACvD,CAAC;YACH,CAAC;YAED,gCAAgC;YAChC,QAAQ,IAAI,aAAa,CAAC;YAC1B,QAAQ,IAAI,aAAa,OAAO,CAAC,GAAG,KAAK,OAAO,CAAC,GAAG,MAAM,CAAC;YAC3D,QAAQ,IAAI,IAAI,SAAS,CAAC,UAAU,CAAC,cAAc,EAAE,SAAS,CAAC;YAC/D,IAAI,SAAS,CAAC,SAAS,EAAE,CAAC;gBACxB,QAAQ,IAAI,mCAAmC,SAAS,CAAC,SAAS,CAAC,cAAc,EAAE,GAAG,CAAC;YACzF,CAAC;YACD,QAAQ,IAAI,KAAK,CAAC;YAElB,OAAO;gBACL,OAAO,EAAE,CAAC;wBACR,IAAI,EAAE,MAAM;wBACZ,IAAI,EAAE,QAAQ;qBACf,CAAC;aACH,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,YAAY,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,wBAAwB,CAAC;YAEvF,iCAAiC;YACjC,IAAI,QAAQ,GAAG,EAAE,CAAC;YAClB,IAAI,YAAY,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;gBACjC,QAAQ,GAAG,gHAAgH,CAAC;YAC9H,CAAC;iBAAM,IAAI,YAAY,CAAC,QAAQ,CAAC,YAAY,CAAC,EAAE,CAAC;gBAC/C,QAAQ,GAAG,yCAAyC,CAAC;YACvD,CAAC;YAED,OAAO;gBACL,OAAO,EAAE,IAAI;gBACb,OAAO,EAAE,CAAC;wBACR,IAAI,EAAE,MAAM;wBACZ,IAAI,EAAE,2BAA2B,YAAY,GAAG,QAAQ,EAAE;qBAC3D,CAAC;aACH,CAAC;QACJ,CAAC;IACH,CAAC,CACF,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"get-article.js","sourceRoot":"","sources":["../../src/tools/get-article.ts"],"names":[],"mappings":"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"}
@@ -2,6 +2,6 @@
2
2
  * jamf_docs_get_toc tool
3
3
  * Get the table of contents for a Jamf product's documentation.
4
4
  */
5
- import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
5
+ import type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
6
6
  export declare function registerGetTocTool(server: McpServer): void;
7
7
  //# sourceMappingURL=get-toc.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"get-toc.d.ts","sourceRoot":"","sources":["../../src/tools/get-toc.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAyDpE,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAqI1D"}
1
+ {"version":3,"file":"get-toc.d.ts","sourceRoot":"","sources":["../../src/tools/get-toc.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAmJzE,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CA2H1D"}
@@ -3,8 +3,75 @@
3
3
  * Get the table of contents for a Jamf product's documentation.
4
4
  */
5
5
  import { GetTocInputSchema } from '../schemas/index.js';
6
- import { ResponseFormat, JAMF_PRODUCTS, TOKEN_CONFIG } from '../constants.js';
6
+ import { reportProgress } from '../utils/progress.js';
7
+ import { TocOutputSchema } from '../schemas/output.js';
8
+ import { ResponseFormat, OutputMode, JAMF_PRODUCTS, TOKEN_CONFIG } from '../constants.js';
7
9
  import { fetchTableOfContents } from '../services/scraper.js';
10
+ import { getAvailableVersions } from '../services/metadata.js';
11
+ import { sanitizeMarkdownText, sanitizeMarkdownUrl, getSafeErrorMessage } from '../utils/sanitize.js';
12
+ /**
13
+ * Render a single TOC entry as markdown
14
+ */
15
+ function renderTocEntry(entry, depth = 0, compact = false) {
16
+ const indent = ' '.repeat(depth);
17
+ let result = `${indent}- [${sanitizeMarkdownText(entry.title)}](${sanitizeMarkdownUrl(entry.url)})\n`;
18
+ if (!compact && entry.children !== undefined && entry.children.length > 0) {
19
+ for (const child of entry.children) {
20
+ result += renderTocEntry(child, depth + 1, compact);
21
+ }
22
+ }
23
+ return result;
24
+ }
25
+ /**
26
+ * Format TOC as compact markdown
27
+ */
28
+ function formatTocCompact(productName, toc, pagination) {
29
+ let markdown = `## ${productName} TOC (${pagination.totalItems} entries)\n\n`;
30
+ for (const entry of toc) {
31
+ markdown += renderTocEntry(entry, 0, true);
32
+ }
33
+ markdown += `\n---\n*Page ${pagination.page}/${pagination.totalPages}`;
34
+ if (pagination.hasNext) {
35
+ markdown += ` | page=${pagination.page + 1} for more`;
36
+ }
37
+ markdown += '*\n';
38
+ return markdown;
39
+ }
40
+ /**
41
+ * Format TOC as full markdown
42
+ */
43
+ function formatTocFull(productName, version, toc, pagination, tokenInfo) {
44
+ let markdown = `# ${productName} Documentation\n\n`;
45
+ markdown += `**Version**: ${version} | **Page ${pagination.page} of ${pagination.totalPages}** | ${tokenInfo.tokenCount.toLocaleString()} tokens\n\n`;
46
+ markdown += '---\n\n';
47
+ markdown += '## Table of Contents\n\n';
48
+ for (const entry of toc) {
49
+ markdown += renderTocEntry(entry);
50
+ }
51
+ markdown += '\n---\n\n';
52
+ markdown += `**Page ${pagination.page} of ${pagination.totalPages}** (${tokenInfo.tokenCount.toLocaleString()} tokens, ${pagination.totalItems} total entries)`;
53
+ if (pagination.hasNext) {
54
+ markdown += ` | Use \`page=${pagination.page + 1}\` for more`;
55
+ }
56
+ if (tokenInfo.truncated) {
57
+ markdown += '\n*TOC truncated due to token limit. Use `page` parameter or increase `maxTokens`.*';
58
+ }
59
+ markdown += '\n\n*Use `jamf_docs_get_article` with any URL above to read the full content.*\n';
60
+ return markdown;
61
+ }
62
+ /**
63
+ * Flatten nested TOC entries into a flat list
64
+ */
65
+ function flattenTocEntries(entries) {
66
+ const flat = [];
67
+ for (const entry of entries) {
68
+ flat.push({ title: entry.title, url: entry.url });
69
+ if (entry.children !== undefined && entry.children.length > 0) {
70
+ flat.push(...flattenTocEntries(entry.children));
71
+ }
72
+ }
73
+ return flat;
74
+ }
8
75
  const TOOL_NAME = 'jamf_docs_get_toc';
9
76
  const TOOL_DESCRIPTION = `Get the table of contents for a Jamf product's documentation.
10
77
 
@@ -16,6 +83,7 @@ Args:
16
83
  - version (string, optional): Specific version (defaults to latest)
17
84
  - page (number, optional): Page number for pagination 1-100 (default: 1)
18
85
  - maxTokens (number, optional): Maximum tokens in response 100-20000 (default: 5000)
86
+ - outputMode ('full' | 'compact'): Output detail level (default: 'full'). Use 'compact' for flat list without nested children
19
87
  - responseFormat ('markdown' | 'json'): Output format (default: 'markdown')
20
88
 
21
89
  Returns:
@@ -58,13 +126,14 @@ export function registerGetTocTool(server) {
58
126
  title: 'Get Documentation Table of Contents',
59
127
  description: TOOL_DESCRIPTION,
60
128
  inputSchema: GetTocInputSchema,
129
+ outputSchema: TocOutputSchema,
61
130
  annotations: {
62
131
  readOnlyHint: true,
63
132
  destructiveHint: false,
64
133
  idempotentHint: true,
65
134
  openWorldHint: true
66
135
  }
67
- }, async (args) => {
136
+ }, async (args, extra) => {
68
137
  // Parse and validate input
69
138
  const parseResult = GetTocInputSchema.safeParse(args);
70
139
  if (!parseResult.success) {
@@ -87,22 +156,27 @@ export function registerGetTocTool(server) {
87
156
  }
88
157
  const productId = params.product;
89
158
  const productInfo = JAMF_PRODUCTS[productId];
90
- const version = params.version ?? productInfo.latestVersion;
91
- // Validate version
92
- if (params.version && !productInfo.versions.includes(params.version)) {
93
- return {
94
- isError: true,
95
- content: [{
96
- type: 'text',
97
- text: `Version "${params.version}" not found for ${productInfo.name}.\n\nAvailable versions: ${productInfo.versions.join(', ')}`
98
- }]
99
- };
159
+ // Get available versions dynamically
160
+ const availableVersions = await getAvailableVersions(productId);
161
+ const version = params.version ?? 'current';
162
+ // Validate version if specified
163
+ if (params.version !== undefined && params.version !== '' && params.version !== 'current') {
164
+ if (availableVersions.length > 0 && !availableVersions.includes(params.version)) {
165
+ return {
166
+ isError: true,
167
+ content: [{
168
+ type: 'text',
169
+ text: `Version "${params.version}" not found for ${productInfo.name}.\n\nAvailable versions: ${availableVersions.length > 0 ? availableVersions.join(', ') : 'current'}`
170
+ }]
171
+ };
172
+ }
100
173
  }
101
- // Fetch TOC with pagination and token options
174
+ await reportProgress(extra, 0, 100);
102
175
  const tocResult = await fetchTableOfContents(productId, version, {
103
176
  ...(params.page !== undefined && { page: params.page }),
104
177
  maxTokens: params.maxTokens ?? TOKEN_CONFIG.DEFAULT_MAX_TOKENS
105
178
  });
179
+ await reportProgress(extra, 50, 100);
106
180
  const { toc, pagination, tokenInfo } = tocResult;
107
181
  // Build response
108
182
  const response = {
@@ -112,58 +186,44 @@ export function registerGetTocTool(server) {
112
186
  tokenInfo,
113
187
  pagination
114
188
  };
115
- // Format output
189
+ const structuredContent = {
190
+ product: productInfo.name,
191
+ version,
192
+ totalEntries: pagination.totalItems,
193
+ page: pagination.page,
194
+ totalPages: pagination.totalPages,
195
+ hasMore: pagination.hasNext,
196
+ entries: flattenTocEntries(toc)
197
+ };
116
198
  if (params.responseFormat === ResponseFormat.JSON) {
199
+ await reportProgress(extra, 100, 100);
117
200
  return {
118
201
  content: [{
119
202
  type: 'text',
120
203
  text: JSON.stringify(response, null, 2)
121
- }]
204
+ }],
205
+ structuredContent
122
206
  };
123
207
  }
124
- // Markdown format with Context7 style
125
- let markdown = `# ${productInfo.name} Documentation\n\n`;
126
- markdown += `**Version**: ${version} | **Page ${pagination.page} of ${pagination.totalPages}** | ${tokenInfo.tokenCount.toLocaleString()} tokens\n\n`;
127
- markdown += '---\n\n';
128
- markdown += '## Table of Contents\n\n';
129
- // Recursive function to render TOC
130
- function renderTocEntry(entry, depth = 0) {
131
- const indent = ' '.repeat(depth);
132
- let result = `${indent}- [${entry.title}](${entry.url})\n`;
133
- if (entry.children && entry.children.length > 0) {
134
- for (const child of entry.children) {
135
- result += renderTocEntry(child, depth + 1);
136
- }
137
- }
138
- return result;
139
- }
140
- for (const entry of toc) {
141
- markdown += renderTocEntry(entry);
142
- }
143
- // Pagination footer
144
- markdown += '\n---\n\n';
145
- markdown += `**Page ${pagination.page} of ${pagination.totalPages}** (${tokenInfo.tokenCount.toLocaleString()} tokens, ${pagination.totalItems} total entries)`;
146
- if (pagination.hasNext) {
147
- markdown += ` | Use \`page=${pagination.page + 1}\` for more`;
148
- }
149
- if (tokenInfo.truncated) {
150
- markdown += '\n*TOC truncated due to token limit. Use `page` parameter or increase `maxTokens`.*';
151
- }
152
- markdown += '\n\n*Use `jamf_docs_get_article` with any URL above to read the full content.*\n';
208
+ // Format as markdown (compact or full)
209
+ const markdown = params.outputMode === OutputMode.COMPACT
210
+ ? formatTocCompact(productInfo.name, toc, pagination)
211
+ : formatTocFull(productInfo.name, version, toc, pagination, tokenInfo);
212
+ await reportProgress(extra, 100, 100);
153
213
  return {
154
214
  content: [{
155
215
  type: 'text',
156
216
  text: markdown
157
- }]
217
+ }],
218
+ structuredContent
158
219
  };
159
220
  }
160
221
  catch (error) {
161
- const errorMessage = error instanceof Error ? error.message : 'Unknown error occurred';
162
222
  return {
163
223
  isError: true,
164
224
  content: [{
165
225
  type: 'text',
166
- text: `Error fetching table of contents: ${errorMessage}`
226
+ text: `Error fetching table of contents: ${getSafeErrorMessage(error)}`
167
227
  }]
168
228
  };
169
229
  }
@@ -1 +1 @@
1
- {"version":3,"file":"get-toc.js","sourceRoot":"","sources":["../../src/tools/get-toc.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"get-toc.js","sourceRoot":"","sources":["../../src/tools/get-toc.ts"],"names":[],"mappings":"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"}
@@ -2,6 +2,6 @@
2
2
  * jamf_docs_list_products tool
3
3
  * Lists all available Jamf products and their documentation versions.
4
4
  */
5
- import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
5
+ import type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
6
6
  export declare function registerListProductsTool(server: McpServer): void;
7
7
  //# sourceMappingURL=list-products.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"list-products.d.ts","sourceRoot":"","sources":["../../src/tools/list-products.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAwCpE,wBAAgB,wBAAwB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CA0GhE"}
1
+ {"version":3,"file":"list-products.d.ts","sourceRoot":"","sources":["../../src/tools/list-products.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AA2CzE,wBAAgB,wBAAwB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAuIhE"}