@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.
- package/README.md +61 -139
- package/dist/completions.d.ts +13 -0
- package/dist/completions.d.ts.map +1 -0
- package/dist/completions.js +31 -0
- package/dist/completions.js.map +1 -0
- package/dist/constants.d.ts +123 -1
- package/dist/constants.d.ts.map +1 -1
- package/dist/constants.js +187 -17
- package/dist/constants.js.map +1 -1
- package/dist/index.js +46 -6
- package/dist/index.js.map +1 -1
- package/dist/prompts/compare-versions.d.ts +7 -0
- package/dist/prompts/compare-versions.d.ts.map +1 -0
- package/dist/prompts/compare-versions.js +56 -0
- package/dist/prompts/compare-versions.js.map +1 -0
- package/dist/prompts/index.d.ts +6 -0
- package/dist/prompts/index.d.ts.map +1 -0
- package/dist/prompts/index.js +12 -0
- package/dist/prompts/index.js.map +1 -0
- package/dist/prompts/setup-guide.d.ts +7 -0
- package/dist/prompts/setup-guide.d.ts.map +1 -0
- package/dist/prompts/setup-guide.js +53 -0
- package/dist/prompts/setup-guide.js.map +1 -0
- package/dist/prompts/troubleshoot.d.ts +7 -0
- package/dist/prompts/troubleshoot.d.ts.map +1 -0
- package/dist/prompts/troubleshoot.js +52 -0
- package/dist/prompts/troubleshoot.js.map +1 -0
- package/dist/resources/index.d.ts +13 -0
- package/dist/resources/index.d.ts.map +1 -0
- package/dist/resources/index.js +121 -0
- package/dist/resources/index.js.map +1 -0
- package/dist/schemas/index.d.ts +29 -63
- package/dist/schemas/index.d.ts.map +1 -1
- package/dist/schemas/index.js +35 -16
- package/dist/schemas/index.js.map +1 -1
- package/dist/schemas/output.d.ts +63 -0
- package/dist/schemas/output.d.ts.map +1 -0
- package/dist/schemas/output.js +63 -0
- package/dist/schemas/output.js.map +1 -0
- package/dist/services/cache.d.ts +37 -12
- package/dist/services/cache.d.ts.map +1 -1
- package/dist/services/cache.js +141 -41
- package/dist/services/cache.js.map +1 -1
- package/dist/services/metadata.d.ts +78 -0
- package/dist/services/metadata.d.ts.map +1 -0
- package/dist/services/metadata.js +362 -0
- package/dist/services/metadata.js.map +1 -0
- package/dist/services/scraper.d.ts +3 -2
- package/dist/services/scraper.d.ts.map +1 -1
- package/dist/services/scraper.js +170 -145
- package/dist/services/scraper.js.map +1 -1
- package/dist/services/search-suggestions.d.ts +27 -0
- package/dist/services/search-suggestions.d.ts.map +1 -0
- package/dist/services/search-suggestions.js +193 -0
- package/dist/services/search-suggestions.js.map +1 -0
- package/dist/services/tokenizer.d.ts +17 -1
- package/dist/services/tokenizer.d.ts.map +1 -1
- package/dist/services/tokenizer.js +122 -66
- package/dist/services/tokenizer.js.map +1 -1
- package/dist/tools/get-article.d.ts +1 -1
- package/dist/tools/get-article.d.ts.map +1 -1
- package/dist/tools/get-article.js +145 -70
- package/dist/tools/get-article.js.map +1 -1
- package/dist/tools/get-toc.d.ts +1 -1
- package/dist/tools/get-toc.d.ts.map +1 -1
- package/dist/tools/get-toc.js +107 -47
- package/dist/tools/get-toc.js.map +1 -1
- package/dist/tools/list-products.d.ts +1 -1
- package/dist/tools/list-products.d.ts.map +1 -1
- package/dist/tools/list-products.js +42 -13
- package/dist/tools/list-products.js.map +1 -1
- package/dist/tools/search.d.ts +1 -1
- package/dist/tools/search.d.ts.map +1 -1
- package/dist/tools/search.js +142 -69
- package/dist/tools/search.js.map +1 -1
- package/dist/transport/http.d.ts +12 -0
- package/dist/transport/http.d.ts.map +1 -0
- package/dist/transport/http.js +297 -0
- package/dist/transport/http.js.map +1 -0
- package/dist/transport/index.d.ts +13 -0
- package/dist/transport/index.d.ts.map +1 -0
- package/dist/transport/index.js +40 -0
- package/dist/transport/index.js.map +1 -0
- package/dist/types.d.ts +12 -18
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js.map +1 -1
- package/dist/utils/doc-type.d.ts +9 -0
- package/dist/utils/doc-type.d.ts.map +1 -0
- package/dist/utils/doc-type.js +16 -0
- package/dist/utils/doc-type.js.map +1 -0
- package/dist/utils/progress.d.ts +13 -0
- package/dist/utils/progress.d.ts.map +1 -0
- package/dist/utils/progress.js +18 -0
- package/dist/utils/progress.js.map +1 -0
- package/dist/utils/sanitize.d.ts +30 -0
- package/dist/utils/sanitize.d.ts.map +1 -0
- package/dist/utils/sanitize.js +57 -0
- package/dist/utils/sanitize.js.map +1 -0
- package/dist/utils/url.d.ts +11 -0
- package/dist/utils/url.d.ts.map +1 -0
- package/dist/utils/url.js +23 -0
- package/dist/utils/url.js.map +1 -0
- package/package.json +8 -5
|
@@ -3,17 +3,20 @@
|
|
|
3
3
|
* Lists all available Jamf products and their documentation versions.
|
|
4
4
|
*/
|
|
5
5
|
import { ListProductsInputSchema } from '../schemas/index.js';
|
|
6
|
-
import {
|
|
6
|
+
import { ProductListOutputSchema } from '../schemas/output.js';
|
|
7
|
+
import { JAMF_PRODUCTS, JAMF_TOPICS, DOC_TYPES, ResponseFormat, OutputMode, TOKEN_CONFIG } from '../constants.js';
|
|
7
8
|
import { estimateTokens, createTokenInfo } from '../services/tokenizer.js';
|
|
9
|
+
import { getSafeErrorMessage } from '../utils/sanitize.js';
|
|
8
10
|
const TOOL_NAME = 'jamf_docs_list_products';
|
|
9
11
|
const TOOL_DESCRIPTION = `List all available Jamf products, topics, and their documentation versions.
|
|
10
12
|
|
|
11
13
|
This tool returns information about all Jamf products with available documentation,
|
|
12
|
-
including Jamf Pro, Jamf School, Jamf Connect,
|
|
13
|
-
topic filters for search.
|
|
14
|
+
including Jamf Pro, Jamf School, Jamf Connect, Jamf Protect, Jamf Now, Jamf Safe Internet,
|
|
15
|
+
and more. Also lists available topic and docType filters for search.
|
|
14
16
|
|
|
15
17
|
Args:
|
|
16
18
|
- maxTokens (number, optional): Maximum tokens in response 100-20000 (default: 5000)
|
|
19
|
+
- outputMode ('full' | 'compact'): Output detail level (default: 'full'). Use 'compact' for brief list
|
|
17
20
|
- responseFormat ('markdown' | 'json'): Output format (default: 'markdown')
|
|
18
21
|
|
|
19
22
|
Returns:
|
|
@@ -42,13 +45,14 @@ export function registerListProductsTool(server) {
|
|
|
42
45
|
title: 'List Jamf Products',
|
|
43
46
|
description: TOOL_DESCRIPTION,
|
|
44
47
|
inputSchema: ListProductsInputSchema,
|
|
48
|
+
outputSchema: ProductListOutputSchema,
|
|
45
49
|
annotations: {
|
|
46
50
|
readOnlyHint: true,
|
|
47
51
|
destructiveHint: false,
|
|
48
52
|
idempotentHint: true,
|
|
49
53
|
openWorldHint: false
|
|
50
54
|
}
|
|
51
|
-
},
|
|
55
|
+
}, (args) => {
|
|
52
56
|
// Parse and validate input
|
|
53
57
|
const parseResult = ListProductsInputSchema.safeParse(args);
|
|
54
58
|
if (!parseResult.success) {
|
|
@@ -74,21 +78,40 @@ export function registerListProductsTool(server) {
|
|
|
74
78
|
name: topic.name,
|
|
75
79
|
keywords: topic.keywords
|
|
76
80
|
}));
|
|
77
|
-
|
|
81
|
+
const structuredContent = { products, topics };
|
|
78
82
|
if (params.responseFormat === ResponseFormat.JSON) {
|
|
83
|
+
const jsonData = JSON.stringify(structuredContent);
|
|
79
84
|
const jsonOutput = JSON.stringify({
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
tokenInfo: createTokenInfo(JSON.stringify({ products, topics }), maxTokens)
|
|
85
|
+
...structuredContent,
|
|
86
|
+
tokenInfo: createTokenInfo(jsonData, maxTokens)
|
|
83
87
|
}, null, 2);
|
|
84
88
|
return {
|
|
85
89
|
content: [{
|
|
86
90
|
type: 'text',
|
|
87
91
|
text: jsonOutput
|
|
88
|
-
}]
|
|
92
|
+
}],
|
|
93
|
+
structuredContent
|
|
89
94
|
};
|
|
90
95
|
}
|
|
91
|
-
//
|
|
96
|
+
// Compact mode: minimal output
|
|
97
|
+
if (params.outputMode === OutputMode.COMPACT) {
|
|
98
|
+
let markdown = '## Products\n';
|
|
99
|
+
for (const product of products) {
|
|
100
|
+
markdown += `- \`${product.id}\`: ${product.name}\n`;
|
|
101
|
+
}
|
|
102
|
+
markdown += '\n## Topics\n';
|
|
103
|
+
for (const topic of topics) {
|
|
104
|
+
markdown += `- \`${topic.id}\`: ${topic.name}\n`;
|
|
105
|
+
}
|
|
106
|
+
return {
|
|
107
|
+
content: [{
|
|
108
|
+
type: 'text',
|
|
109
|
+
text: markdown
|
|
110
|
+
}],
|
|
111
|
+
structuredContent
|
|
112
|
+
};
|
|
113
|
+
}
|
|
114
|
+
// Full markdown format
|
|
92
115
|
let markdown = '# Jamf Documentation Products\n\n';
|
|
93
116
|
for (const product of products) {
|
|
94
117
|
markdown += `## ${product.name}\n\n`;
|
|
@@ -105,6 +128,12 @@ export function registerListProductsTool(server) {
|
|
|
105
128
|
markdown += ` *Keywords: ${topic.keywords.slice(0, 4).join(', ')}${topic.keywords.length > 4 ? '...' : ''}*\n`;
|
|
106
129
|
}
|
|
107
130
|
markdown += '\n---\n\n';
|
|
131
|
+
markdown += '# Document Types for Filtering\n\n';
|
|
132
|
+
markdown += 'Use `docType` parameter in `jamf_docs_search` to filter by document type:\n\n';
|
|
133
|
+
for (const [id, dt] of Object.entries(DOC_TYPES)) {
|
|
134
|
+
markdown += `- **\`${id}\`**: ${dt.description}\n`;
|
|
135
|
+
}
|
|
136
|
+
markdown += '\n---\n\n';
|
|
108
137
|
// Token info
|
|
109
138
|
const tokenCount = estimateTokens(markdown);
|
|
110
139
|
markdown += `*${tokenCount.toLocaleString()} tokens*\n\n`;
|
|
@@ -114,16 +143,16 @@ export function registerListProductsTool(server) {
|
|
|
114
143
|
content: [{
|
|
115
144
|
type: 'text',
|
|
116
145
|
text: markdown
|
|
117
|
-
}]
|
|
146
|
+
}],
|
|
147
|
+
structuredContent
|
|
118
148
|
};
|
|
119
149
|
}
|
|
120
150
|
catch (error) {
|
|
121
|
-
const errorMessage = error instanceof Error ? error.message : 'Unknown error occurred';
|
|
122
151
|
return {
|
|
123
152
|
isError: true,
|
|
124
153
|
content: [{
|
|
125
154
|
type: 'text',
|
|
126
|
-
text: `Error listing products: ${
|
|
155
|
+
text: `Error listing products: ${getSafeErrorMessage(error)}`
|
|
127
156
|
}]
|
|
128
157
|
};
|
|
129
158
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"list-products.js","sourceRoot":"","sources":["../../src/tools/list-products.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EAAE,uBAAuB,EAAE,MAAM,qBAAqB,CAAC;AAC9D,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"list-products.js","sourceRoot":"","sources":["../../src/tools/list-products.ts"],"names":[],"mappings":"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"}
|
package/dist/tools/search.d.ts
CHANGED
|
@@ -2,6 +2,6 @@
|
|
|
2
2
|
* jamf_docs_search tool
|
|
3
3
|
* Search Jamf documentation for articles matching a query.
|
|
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 registerSearchTool(server: McpServer): void;
|
|
7
7
|
//# sourceMappingURL=search.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"search.d.ts","sourceRoot":"","sources":["../../src/tools/search.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;
|
|
1
|
+
{"version":3,"file":"search.d.ts","sourceRoot":"","sources":["../../src/tools/search.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAiLzE,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAyK1D"}
|
package/dist/tools/search.js
CHANGED
|
@@ -3,23 +3,110 @@
|
|
|
3
3
|
* Search Jamf documentation for articles matching a query.
|
|
4
4
|
*/
|
|
5
5
|
import { SearchInputSchema } from '../schemas/index.js';
|
|
6
|
-
import {
|
|
6
|
+
import { SearchOutputSchema } from '../schemas/output.js';
|
|
7
|
+
import { ResponseFormat, OutputMode, JAMF_PRODUCTS, JAMF_TOPICS, TOKEN_CONFIG } from '../constants.js';
|
|
7
8
|
import { searchDocumentation } from '../services/scraper.js';
|
|
9
|
+
import { generateSearchSuggestions, formatSearchSuggestions } from '../services/search-suggestions.js';
|
|
10
|
+
import { sanitizeMarkdownText, sanitizeMarkdownUrl, getSafeErrorMessage } from '../utils/sanitize.js';
|
|
11
|
+
function formatFiltersLine(filters) {
|
|
12
|
+
const parts = [];
|
|
13
|
+
if (filters.product !== undefined) {
|
|
14
|
+
parts.push(`product: ${filters.product}`);
|
|
15
|
+
}
|
|
16
|
+
if (filters.topic !== undefined) {
|
|
17
|
+
parts.push(`topic: ${filters.topic}`);
|
|
18
|
+
}
|
|
19
|
+
if (filters.version !== undefined) {
|
|
20
|
+
parts.push(`version: ${filters.version}`);
|
|
21
|
+
}
|
|
22
|
+
return parts.length > 0 ? `\n*Filtered by: ${parts.join(', ')}*` : '';
|
|
23
|
+
}
|
|
24
|
+
function formatSearchResult(result) {
|
|
25
|
+
let output = `### [${sanitizeMarkdownText(result.title)}](${sanitizeMarkdownUrl(result.url)})\n\n`;
|
|
26
|
+
output += `> ${sanitizeMarkdownText(result.snippet)}\n\n`;
|
|
27
|
+
if ((result.product !== null && result.product !== '') || result.version !== undefined) {
|
|
28
|
+
const meta = [];
|
|
29
|
+
if (result.product !== null && result.product !== '') {
|
|
30
|
+
meta.push(`**Product**: ${result.product}`);
|
|
31
|
+
}
|
|
32
|
+
if (result.version !== undefined) {
|
|
33
|
+
meta.push(`**Version**: ${result.version}`);
|
|
34
|
+
}
|
|
35
|
+
output += `${meta.join(' | ')}\n\n`;
|
|
36
|
+
}
|
|
37
|
+
output += '---\n\n';
|
|
38
|
+
return output;
|
|
39
|
+
}
|
|
40
|
+
function formatPaginationFooter(pagination, tokenInfo, compact = false) {
|
|
41
|
+
if (compact) {
|
|
42
|
+
let footer = `\n---\n*Page ${pagination.page}/${pagination.totalPages}`;
|
|
43
|
+
if (pagination.hasNext) {
|
|
44
|
+
footer += ` | page=${pagination.page + 1} for more`;
|
|
45
|
+
}
|
|
46
|
+
footer += '*\n';
|
|
47
|
+
return footer;
|
|
48
|
+
}
|
|
49
|
+
let footer = `**Page ${pagination.page} of ${pagination.totalPages}** (${tokenInfo.tokenCount.toLocaleString()} tokens)`;
|
|
50
|
+
if (pagination.hasNext) {
|
|
51
|
+
footer += ` | Use \`page=${pagination.page + 1}\` for more results`;
|
|
52
|
+
}
|
|
53
|
+
if (tokenInfo.truncated) {
|
|
54
|
+
footer += '\n*Results truncated due to token limit. Use a smaller `limit` or increase `maxTokens`.*';
|
|
55
|
+
}
|
|
56
|
+
footer += '\n\n*Use `jamf_docs_get_article` with any URL above to read the full article.*\n';
|
|
57
|
+
return footer;
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* Format search result in compact mode (single line)
|
|
61
|
+
*/
|
|
62
|
+
function formatSearchResultCompact(result, index) {
|
|
63
|
+
// Truncate snippet for compact display
|
|
64
|
+
const snippetPreview = result.snippet.length > 80
|
|
65
|
+
? `${result.snippet.slice(0, 77)}...`
|
|
66
|
+
: result.snippet;
|
|
67
|
+
return `${index}. [${sanitizeMarkdownText(result.title)}](${sanitizeMarkdownUrl(result.url)}) - ${sanitizeMarkdownText(snippetPreview)}\n`;
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* Format search results as compact markdown
|
|
71
|
+
*/
|
|
72
|
+
function formatSearchResultsAsCompact(query, results, filters, pagination, tokenInfo) {
|
|
73
|
+
let markdown = `## "${query}" (${pagination.totalItems} results)\n`;
|
|
74
|
+
markdown += formatFiltersLine(filters);
|
|
75
|
+
markdown += '\n\n';
|
|
76
|
+
results.forEach((result, idx) => {
|
|
77
|
+
markdown += formatSearchResultCompact(result, (pagination.page - 1) * pagination.pageSize + idx + 1);
|
|
78
|
+
});
|
|
79
|
+
markdown += formatPaginationFooter(pagination, tokenInfo, true);
|
|
80
|
+
return markdown;
|
|
81
|
+
}
|
|
82
|
+
function formatSearchResultsAsMarkdown(query, results, filters, pagination, tokenInfo) {
|
|
83
|
+
let markdown = `# Search Results for "${query}"\n\n`;
|
|
84
|
+
markdown += `Found ${pagination.totalItems} result(s) | **Page ${pagination.page} of ${pagination.totalPages}** | ${tokenInfo.tokenCount.toLocaleString()} tokens`;
|
|
85
|
+
markdown += formatFiltersLine(filters);
|
|
86
|
+
markdown += '\n\n---\n\n';
|
|
87
|
+
for (const result of results) {
|
|
88
|
+
markdown += formatSearchResult(result);
|
|
89
|
+
}
|
|
90
|
+
markdown += formatPaginationFooter(pagination, tokenInfo);
|
|
91
|
+
return markdown;
|
|
92
|
+
}
|
|
8
93
|
const TOOL_NAME = 'jamf_docs_search';
|
|
9
94
|
const TOOL_DESCRIPTION = `Search Jamf documentation for articles matching your query.
|
|
10
95
|
|
|
11
96
|
This tool searches across all Jamf product documentation including Jamf Pro,
|
|
12
|
-
Jamf School, Jamf Connect,
|
|
13
|
-
snippets, and direct links.
|
|
97
|
+
Jamf School, Jamf Connect, Jamf Protect, Jamf Now, Jamf Safe Internet, and more.
|
|
98
|
+
Results include article titles, snippets, and direct links.
|
|
14
99
|
|
|
15
100
|
Args:
|
|
16
101
|
- query (string, required): Search keywords (2-200 characters)
|
|
17
|
-
- product (string, optional): Filter by product ID (
|
|
102
|
+
- product (string, optional): Filter by product ID (use jamf_docs_list_products to see all)
|
|
18
103
|
- topic (string, optional): Filter by topic (enrollment, profiles, security, inventory, policies, smart-groups, apps, identity, api, network)
|
|
104
|
+
- docType (string, optional): Filter by document type: documentation, release-notes, install-guide, technical-paper, configuration-guide, training
|
|
19
105
|
- version (string, optional): Filter by version (e.g., "11.5.0", "10.x")
|
|
20
106
|
- limit (number, optional): Maximum results per page 1-50 (default: 10)
|
|
21
107
|
- page (number, optional): Page number for pagination 1-100 (default: 1)
|
|
22
108
|
- maxTokens (number, optional): Maximum tokens in response 100-20000 (default: 5000)
|
|
109
|
+
- outputMode ('full' | 'compact'): Output detail level (default: 'full'). Use 'compact' for brief, token-efficient output
|
|
23
110
|
- responseFormat ('markdown' | 'json'): Output format (default: 'markdown')
|
|
24
111
|
|
|
25
112
|
Returns:
|
|
@@ -62,6 +149,7 @@ export function registerSearchTool(server) {
|
|
|
62
149
|
title: 'Search Jamf Documentation',
|
|
63
150
|
description: TOOL_DESCRIPTION,
|
|
64
151
|
inputSchema: SearchInputSchema,
|
|
152
|
+
outputSchema: SearchOutputSchema,
|
|
65
153
|
annotations: {
|
|
66
154
|
readOnlyHint: true,
|
|
67
155
|
destructiveHint: false,
|
|
@@ -79,8 +167,7 @@ export function registerSearchTool(server) {
|
|
|
79
167
|
}
|
|
80
168
|
const params = parseResult.data;
|
|
81
169
|
try {
|
|
82
|
-
|
|
83
|
-
if (params.product && !(params.product in JAMF_PRODUCTS)) {
|
|
170
|
+
if (params.product !== undefined && !(params.product in JAMF_PRODUCTS)) {
|
|
84
171
|
return {
|
|
85
172
|
isError: true,
|
|
86
173
|
content: [{
|
|
@@ -89,8 +176,7 @@ export function registerSearchTool(server) {
|
|
|
89
176
|
}]
|
|
90
177
|
};
|
|
91
178
|
}
|
|
92
|
-
|
|
93
|
-
if (params.topic && !(params.topic in JAMF_TOPICS)) {
|
|
179
|
+
if (params.topic !== undefined && !(params.topic in JAMF_TOPICS)) {
|
|
94
180
|
return {
|
|
95
181
|
isError: true,
|
|
96
182
|
content: [{
|
|
@@ -99,11 +185,12 @@ export function registerSearchTool(server) {
|
|
|
99
185
|
}]
|
|
100
186
|
};
|
|
101
187
|
}
|
|
102
|
-
// Perform search
|
|
188
|
+
// Perform search
|
|
103
189
|
const searchResult = await searchDocumentation({
|
|
104
190
|
query: params.query,
|
|
105
191
|
product: params.product,
|
|
106
192
|
topic: params.topic,
|
|
193
|
+
docType: params.docType,
|
|
107
194
|
version: params.version,
|
|
108
195
|
limit: params.limit,
|
|
109
196
|
page: params.page,
|
|
@@ -116,94 +203,80 @@ export function registerSearchTool(server) {
|
|
|
116
203
|
query: params.query,
|
|
117
204
|
results,
|
|
118
205
|
filters: {
|
|
119
|
-
...(params.product
|
|
120
|
-
...(params.version
|
|
121
|
-
...(params.topic
|
|
206
|
+
...(params.product !== undefined ? { product: params.product } : {}),
|
|
207
|
+
...(params.version !== undefined ? { version: params.version } : {}),
|
|
208
|
+
...(params.topic !== undefined ? { topic: params.topic } : {})
|
|
122
209
|
},
|
|
123
210
|
tokenInfo,
|
|
124
211
|
pagination
|
|
125
212
|
};
|
|
126
|
-
// Handle no results
|
|
213
|
+
// Handle no results with suggestions
|
|
127
214
|
if (results.length === 0 && pagination.totalItems === 0) {
|
|
128
|
-
const
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
215
|
+
const suggestions = generateSearchSuggestions(params.query, params.product !== undefined, params.topic !== undefined);
|
|
216
|
+
const suggestionTexts = [
|
|
217
|
+
...(suggestions.simplifiedQuery !== null ? [`Try: ${suggestions.simplifiedQuery}`] : []),
|
|
218
|
+
...suggestions.alternativeKeywords,
|
|
219
|
+
...suggestions.tips
|
|
220
|
+
];
|
|
221
|
+
const structuredContent = {
|
|
222
|
+
query: params.query,
|
|
223
|
+
totalResults: 0,
|
|
224
|
+
page: 1,
|
|
225
|
+
totalPages: 0,
|
|
226
|
+
hasMore: false,
|
|
227
|
+
results: [],
|
|
228
|
+
suggestions: suggestionTexts
|
|
229
|
+
};
|
|
136
230
|
return {
|
|
137
231
|
content: [{
|
|
138
232
|
type: 'text',
|
|
139
|
-
text:
|
|
140
|
-
}]
|
|
233
|
+
text: formatSearchSuggestions(params.query, suggestions)
|
|
234
|
+
}],
|
|
235
|
+
structuredContent
|
|
141
236
|
};
|
|
142
237
|
}
|
|
143
|
-
|
|
238
|
+
const structuredContent = {
|
|
239
|
+
query: params.query,
|
|
240
|
+
totalResults: pagination.totalItems,
|
|
241
|
+
page: pagination.page,
|
|
242
|
+
totalPages: pagination.totalPages,
|
|
243
|
+
hasMore: pagination.hasNext,
|
|
244
|
+
results: results.map(r => ({
|
|
245
|
+
title: r.title,
|
|
246
|
+
url: r.url,
|
|
247
|
+
snippet: r.snippet,
|
|
248
|
+
product: r.product ?? '',
|
|
249
|
+
...(r.version !== undefined ? { version: r.version } : {}),
|
|
250
|
+
...(r.docType !== undefined ? { docType: r.docType } : {})
|
|
251
|
+
}))
|
|
252
|
+
};
|
|
144
253
|
if (params.responseFormat === ResponseFormat.JSON) {
|
|
145
254
|
return {
|
|
146
255
|
content: [{
|
|
147
256
|
type: 'text',
|
|
148
257
|
text: JSON.stringify(response, null, 2)
|
|
149
|
-
}]
|
|
258
|
+
}],
|
|
259
|
+
structuredContent
|
|
150
260
|
};
|
|
151
261
|
}
|
|
152
|
-
// Markdown format
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
const filters = [];
|
|
157
|
-
if (response.filters.product) {
|
|
158
|
-
filters.push(`product: ${response.filters.product}`);
|
|
159
|
-
}
|
|
160
|
-
if (response.filters.topic) {
|
|
161
|
-
filters.push(`topic: ${response.filters.topic}`);
|
|
162
|
-
}
|
|
163
|
-
if (response.filters.version) {
|
|
164
|
-
filters.push(`version: ${response.filters.version}`);
|
|
165
|
-
}
|
|
166
|
-
markdown += `\n*Filtered by: ${filters.join(', ')}*`;
|
|
167
|
-
}
|
|
168
|
-
markdown += '\n\n---\n\n';
|
|
169
|
-
for (const result of results) {
|
|
170
|
-
markdown += `### [${result.title}](${result.url})\n\n`;
|
|
171
|
-
markdown += `> ${result.snippet}\n\n`;
|
|
172
|
-
if (result.product || result.version) {
|
|
173
|
-
const meta = [];
|
|
174
|
-
if (result.product) {
|
|
175
|
-
meta.push(`**Product**: ${result.product}`);
|
|
176
|
-
}
|
|
177
|
-
if (result.version) {
|
|
178
|
-
meta.push(`**Version**: ${result.version}`);
|
|
179
|
-
}
|
|
180
|
-
markdown += `${meta.join(' | ')}\n\n`;
|
|
181
|
-
}
|
|
182
|
-
markdown += '---\n\n';
|
|
183
|
-
}
|
|
184
|
-
// Pagination footer
|
|
185
|
-
markdown += `**Page ${pagination.page} of ${pagination.totalPages}** (${tokenInfo.tokenCount.toLocaleString()} tokens)`;
|
|
186
|
-
if (pagination.hasNext) {
|
|
187
|
-
markdown += ` | Use \`page=${pagination.page + 1}\` for more results`;
|
|
188
|
-
}
|
|
189
|
-
if (tokenInfo.truncated) {
|
|
190
|
-
markdown += '\n*Results truncated due to token limit. Use a smaller `limit` or increase `maxTokens`.*';
|
|
191
|
-
}
|
|
192
|
-
markdown += '\n\n*Use `jamf_docs_get_article` with any URL above to read the full article.*\n';
|
|
262
|
+
// Markdown format (full or compact)
|
|
263
|
+
const markdown = params.outputMode === OutputMode.COMPACT
|
|
264
|
+
? formatSearchResultsAsCompact(params.query, results, response.filters ?? {}, pagination, tokenInfo)
|
|
265
|
+
: formatSearchResultsAsMarkdown(params.query, results, response.filters ?? {}, pagination, tokenInfo);
|
|
193
266
|
return {
|
|
194
267
|
content: [{
|
|
195
268
|
type: 'text',
|
|
196
269
|
text: markdown
|
|
197
|
-
}]
|
|
270
|
+
}],
|
|
271
|
+
structuredContent
|
|
198
272
|
};
|
|
199
273
|
}
|
|
200
274
|
catch (error) {
|
|
201
|
-
const errorMessage = error instanceof Error ? error.message : 'Unknown error occurred';
|
|
202
275
|
return {
|
|
203
276
|
isError: true,
|
|
204
277
|
content: [{
|
|
205
278
|
type: 'text',
|
|
206
|
-
text: `Search error: ${
|
|
279
|
+
text: `Search error: ${getSafeErrorMessage(error)}\n\nPlease try again or use different search terms.`
|
|
207
280
|
}]
|
|
208
281
|
};
|
|
209
282
|
}
|
package/dist/tools/search.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"search.js","sourceRoot":"","sources":["../../src/tools/search.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"search.js","sourceRoot":"","sources":["../../src/tools/search.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* HTTP transport using Web Standard APIs
|
|
3
|
+
*
|
|
4
|
+
* Uses WebStandardStreamableHTTPServerTransport from the SDK,
|
|
5
|
+
* compatible with Node.js, Cloudflare Workers, Deno, and Bun.
|
|
6
|
+
*/
|
|
7
|
+
import type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
|
|
8
|
+
/**
|
|
9
|
+
* Create and start an HTTP server for the MCP server
|
|
10
|
+
*/
|
|
11
|
+
export declare function startHttpServer(mcpServer: McpServer, port: number, host: string): Promise<void>;
|
|
12
|
+
//# sourceMappingURL=http.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"http.d.ts","sourceRoot":"","sources":["../../src/transport/http.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AA8KzE;;GAEG;AACH,wBAAsB,eAAe,CACnC,SAAS,EAAE,SAAS,EACpB,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,GACX,OAAO,CAAC,IAAI,CAAC,CAsDf"}
|