Jamf Docs MCP Server
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
No arguments | |||
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": true
} |
| prompts | {
"listChanged": true
} |
| resources | {
"listChanged": true
} |
| extensions | {
"io.modelcontextprotocol/ui": {
"mimeTypes": [
"text/html;profile=mcp-app"
]
}
} |
| completions | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| jamf_docs_list_productsA | List Jamf products, publications, topics, and documentation versions. Returns two separate catalogues:
Also lists available topic and docType filters for search. Args:
Returns: For JSON format: { "products": [...], "publications": [...], "topics": [...], "incomplete"?: { "unavailable": string[], "message": string }, "tokenInfo": { "tokenCount": number, "truncated": boolean, "maxTokens": number } } For Markdown format: A formatted list of products and topics with their details. Examples:
Note: This is a read-only operation that does not modify any state. If a source could not be read, the reply lists what it could and says so. "incomplete" then names each unavailable source, its "message" says what that cost, and the Markdown reply says the same at the top. "maps-registry" is learn.jamf.com, where the publication list and the product versions both come from: either can then be missing or a compiled-in default. "jamf-support" is support.jamf.com, whose jamf-support-* publications are then missing. This may be temporary: try again in a minute. No "incomplete" means every source answered. |
| jamf_docs_searchA | Search Jamf documentation for articles matching your query. This tool searches across all Jamf product documentation including Jamf Pro, Jamf School, Jamf Connect, Jamf Protect, Jamf Now, Jamf Safe Internet, and more. Results include article titles, snippets, and direct links. Args:
Returns: For JSON format: { "total": number, "query": string, "results": [...], "tokenInfo": { "tokenCount": number, "truncated": boolean, "maxTokens": number }, "pagination": { "page": number, "pageSize": number, "totalPages": number, "totalItems": number, "hasNext": boolean, "hasPrev": boolean }, // Pages outside the product documentation, matched on title and ranked // separately from "results", which carry no score to rank them against. // Omitted when none matched. "otherSources"?: [{ "title": string, "url": string, "source": string }] } For Markdown format: A formatted list of search results with pagination and token info. Examples (common query → recommended filters):
Errors:
Note: Results are ranked by relevance. Use filters and pagination to navigate large result sets. Most results carry a mapId + contentId pair; pass both to jamf_docs_get_article to fetch that article directly instead of resolving its URL. The pair is omitted when a result comes from a source that does not resolve one — fall back to the URL in that case. |
| jamf_docs_get_articleA | Retrieve the full content of a specific Jamf documentation article. This tool fetches and parses a Jamf documentation article, converting it to a clean, readable format. Works with any article from learn.jamf.com, docs.jamf.com, concepts.jamf.com, support.jamf.com. Address the article either by Args:
Returns: For JSON format: { "title": string, "content": string, "url": string, "product": string, "version": string, "breadcrumb": string[], "relatedArticles": [...], "tokenInfo": { "tokenCount": number, "truncated": boolean, "maxTokens": number }, "sections": [ { "id": string, "title": string, "level": number, "tokenCount": number } ] } For Markdown format: The article content with token info and available sections. Examples:
Errors:
Note: |
| jamf_docs_get_tocA | Get the table of contents for Jamf documentation. Browse the navigation structure of either a Jamf product or any single Jamf
publication - release notes, technical papers, courses, evaluation guides and
configuration guides all live on the publication axis rather than the product
one. Exactly one of Args:
Returns: For JSON format: { "product": string, "version": string, "mapId": string, // omitted when the map could not be resolved "toc": [...], // each entry carries title, url and contentId "tokenInfo": { "tokenCount": number, "truncated": boolean, "maxTokens": number }, "pagination": { "page": number, "pageSize": number, "totalPages": number, "totalItems": number, "hasNext": boolean, "hasPrev": boolean }, "truncatedEntry"?: { // only on a page cut to fit; see the Note "title": string, "shownEntries": number, "totalEntries": number, "estimatedTokens": number } } For Markdown format: A hierarchical list of documentation topics with pagination and token info. Examples:
Errors:
Note: Use this to discover what topics are available before searching or retrieving specific articles. Large TOCs are paginated by top-level entry: a page holds up to 10 of them, each with everything under it, as many as fit maxTokens, and the next page starts at the first that did not fit. Every top-level entry is on exactly one page, but which page depends on maxTokens, so keep maxTokens the same while paging; the markdown footer names it beside the next page when it is not the default. A top-level entry larger than maxTokens on its own is alone on its page, cut to the entries under it that fit; only that page has tokenInfo.truncated, and truncatedEntry.estimatedTokens is what the whole entry costs. If maxTokens makes more pages than page accepts (100), page 100 offers no next page and paginationNote names a maxTokens that reaches the rest. The response-level mapId and an entry's contentId together form the pair jamf_docs_get_article accepts for a direct fetch. Markdown output shows the mapId only; use responseFormat="json" (or read structuredContent) for the per-entry contentIds. structuredContent also carries what to send back for the next page: productId (or publicationId), version, language (when one was asked for) and maxTokens. The JSON text has no id or language, and has the budget as tokenInfo.maxTokens. structuredContent.entries is the TOC flattened in document order and always carries every descendant; each entry's depth (0 for top level) is what restores the nesting. The markdown is not the same view: outputMode="full" shows that nesting as indentation, while outputMode="compact" lists only the top-level entries and shows no nesting at all. |
| jamf_docs_glossary_lookupA | Look up a term in the Jamf official glossary and get its definition. This tool searches the Jamf Platform Technical Glossary, one glossary shared by every Jamf product, and returns matching term definitions using fuzzy matching. A term of 4 characters or fewer is treated as an abbreviation and must be a whole word of the entry's name, so "DEP" does not match "zero-touch deployment". A 4-character term may be a plural, or miss a letter or swap two ("MDMs", "LDPA"). Note: Glossary content is currently only available in English (en-US). Non-English language parameters are accepted but results will be in English. Args:
Returns: For JSON format: { "term": string, "totalMatches": number, "entries": [{ "term": string, "definition": string, "url": string }], "tokenInfo": { "tokenCount": number, "truncated": boolean, "maxTokens": number }, "truncatedContent"?: { "omittedCount": number, "omittedItems": [{ "title": string, "estimatedTokens": number }] }, "incomplete"?: { "unfetched": [{ "term": string, "url": string }], "message": string } } For Markdown format: A formatted list of glossary definitions with source links. Examples:
Errors:
Note: "No glossary entries found" is not an error. It means the glossary was read and no entry matches; in JSON that is "totalMatches": 0. If entries match but not even the first fits in maxTokens, the reply says how many matched and the maxTokens the first one needs: "truncatedContent" lists each entry left out and the tokens it costs. If some matching entries could not be fetched, the reply answers from the rest and says so: "incomplete" names the entries it may be missing. If the entry that would lead the answer is one of them, that is the error above instead. |
| jamf_docs_batch_get_articlesA | Retrieve multiple Jamf documentation articles in a single request. Fetches up to 10 articles in parallel with concurrency control. Useful for comparing articles, gathering information from multiple pages, or bulk research. Args:
Returns: An array of article results. Each article independently succeeds or fails. For JSON format, returns a BatchResponse object with results, summary, and tokenInfo. Examples:
Note: Token budget is split evenly across articles. Use higher maxTokens for more articles.
A note on an article (such as one about |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
| jamf_troubleshoot | Guide through troubleshooting a Jamf issue using official documentation |
| jamf_setup_guide | Generate a step-by-step setup guide for a Jamf feature using official documentation |
| jamf_compare_versions | Compare documentation between two versions of a Jamf product to identify changes |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
| products | List of all available Jamf products (Jamf Pro, Jamf School, Jamf Connect, Jamf Protect) with their IDs and latest versions. Data is fetched dynamically from the API. |
| topics | Topic categories for filtering documentation searches. Combines official TOC structure with curated categories. |
| jamf-docs-app | Interactive viewer for Jamf documentation search results, tables of contents, and articles. |
TDQS
Scored across 6 tools
Each tool has a distinct purpose: list_products for catalogs, search for discovery, get_toc for navigation, glossary_lookup for terms, get_article for single retrieval, and batch_get_articles for bulk retrieval. No overlapping functionality, and descriptions clarify boundaries.
All tools share the jamf_docs_ prefix and snake_case, but the verb patterns vary slightly: most are verb_noun (list_products, get_toc, get_article), while search is a bare verb and glossary_lookup is noun_verb. Minor deviation, still readable.
Six tools are well-scoped for a documentation server, covering discovery, search, navigation, retrieval, bulk retrieval, and glossary. Each tool earns its place, and the count is within the ideal 3–15 range.
The set covers the full documentation lifecycle: listing products/publications/topics/versions, searching with filters, browsing TOCs, looking up glossary terms, and retrieving single or multiple articles. No obvious gaps for the stated purpose.