Skip to main content
Glama
GET-Technology-Inc

Jamf Docs MCP Server

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault

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

CapabilityDetails
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

NameDescription
jamf_docs_list_productsA

List Jamf products, publications, topics, and documentation versions.

Returns two separate catalogues:

  • Products: the IDs the product filter in jamf_docs_search accepts, and the product parameter of jamf_docs_get_toc. Jamf Pro, Jamf School, Jamf Connect, Jamf Protect, Jamf Now, Jamf Safe Internet and more.

  • Publications: every document Jamf publishes - release notes, technical papers, courses, evaluation and configuration guides - grouped the way Jamf classifies them. Pass one of these IDs as the publication parameter of jamf_docs_get_toc. These are documents, not products, and the search product filter does not take them.

Also lists available topic and docType filters for search.

Args:

  • maxTokens (number, optional): Maximum tokens in response 100-50000 (default: 10000, higher than other tools because this one answers with a whole catalogue)

  • outputMode ('full' | 'compact'): Output detail level (default: 'full'). Use 'compact' for brief list

  • responseFormat ('markdown' | 'json'): Output format (default: 'markdown')

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:

  • "What Jamf products are available?" → use this tool

  • "List all Jamf documentation" → use this tool

  • "What topics can I filter by?" → use this tool

  • "Where are the Jamf Pro release notes?" → use this tool, then get_toc with the publication ID

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:

  • query (string, required): Search keywords (2-200 characters)

  • product (string, optional): Filter by product ID (use jamf_docs_list_products to see all)

  • topic (string, optional): Filter by topic. Common: enrollment, profiles, policies, packages, scripts, patch, apps, security, filevault, sso, identity-provider, inventory, reports, api, network. See jamf_docs_list_products for the full list of 40 topic IDs.

  • docType (string, optional): Filter by document type: documentation, release-notes, training, solution-guide, glossary, getting-started

  • version (string, optional): Filter by version (e.g., "11.13.0") or "current"

  • language (string, optional): Documentation language/locale (default: en-US)

  • limit (number, optional): Maximum results per page 1-50 (default: 10)

  • page (number, optional): Page number for pagination 1-100 (default: 1)

  • maxTokens (number, optional): Maximum tokens in response 100-50000 (default: 5000)

  • outputMode ('full' | 'compact'): Output detail level (default: 'full'). Use 'compact' for brief, token-efficient output

  • responseFormat ('markdown' | 'json'): Output format (default: 'markdown')

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):

  • "Configure SSO with Okta in Jamf Connect" → query="SSO Okta", product="jamf-connect", topic="sso"

  • "Set up FileVault encryption" → query="FileVault encryption", product="jamf-pro", topic="filevault"

  • "Patch macOS apps" → query="patch policy", product="jamf-pro", topic="patch"

  • "Smart group criteria" → query="smart group criteria", product="jamf-pro", topic="reports"

  • "Automated Device Enrollment workflow" → query="ADE prestage", product="jamf-pro", topic="enrollment"

  • "Shared iPad in a classroom" → query="shared iPad classroom", product="jamf-school", topic="education"

  • "Jamf Protect custom analytic" → query="custom analytic", product="jamf-protect", topic="protect-analytics"

  • "Jamf Pro REST API authentication" → query="API role bearer token", product="jamf-pro", topic="api"

  • "Extension attribute scripts" → query="extension attribute script", product="jamf-pro", topic="extension-attributes"

  • "Paginate through results" → query="policy", page=2

Errors:

  • "No results found" if search returns empty

  • "Invalid option: expected one of ..." (an input validation error) if product, topic, docType or language is not one of the values the input schema lists

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 url, or by the mapId + contentId pair that search results and TOC entries carry. One of the two is required. Passing both, as a search result allows, is fine: on learn.jamf.com the pair decides which article is fetched, and the result's url is that article's own address (a note says so if the url you passed does not match it). A concepts.jamf.com or support.jamf.com url is fetched by url, and a note says the pair was ignored.

Args:

  • url (string, optional): Full https:// URL of the article, on learn.jamf.com, docs.jamf.com, concepts.jamf.com, support.jamf.com. Required unless mapId and contentId are given

  • mapId (string, optional): Fluid Topics map ID, from a search result or a TOC. Use with contentId, instead of url or alongside it

  • contentId (string, optional): Fluid Topics content ID, from a search result or a TOC entry. Use with mapId, instead of url or alongside it

  • language (string, optional): Documentation language/locale. Overrides the locale in url, which is used when this is omitted. No effect on a mapId + contentId pair (a map is in one language) or on concepts.jamf.com or support.jamf.com URLs

  • section (string, optional): Extract only a specific section by title or ID (e.g., "Prerequisites", "Configuration")

  • summaryOnly (boolean, optional): Return only article summary and outline instead of full content (default: false). Token-efficient way to preview an article and its sub-topics

  • includeRelated (boolean, optional): Include links to related articles (default: false)

  • maxTokens (number, optional): Maximum tokens in response 100-50000 (default: 5000)

  • outputMode ('full' | 'compact'): Output detail level (default: 'full'). Use 'compact' for brief output

  • responseFormat ('markdown' | 'json'): Output format (default: 'markdown')

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:

  • "Either url or both mapId and contentId must be provided." if neither url nor the full pair is given

  • "URL must be from learn.jamf.com, docs.jamf.com, concepts.jamf.com, support.jamf.com" (an input validation error) if url is not https:// on one of those hosts

  • "Topic not found", "Cannot resolve bundleId" or "HTTP 404" if there is no article at that address

Note: maxTokens bounds every reply: the article or one section, a summaryOnly outline, a missed section's reply, and any note about how the call was resolved, all counted in tokenInfo.tokenCount. Large articles are intelligently truncated with remaining sections listed, as many as fit; a list cut to fit says how many it left out, and truncated is true. Use the section parameter to retrieve specific sections for long articles. A section that matches no heading is not an error: the reply says 'Section "" not found' and lists the article's sections, or says it has none. Most learn.jamf.com topics have no headings; what the website shows as their sections are sub-topics, which the reply lists with their urls, a matching one first.

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 product and publication is required.

Args:

  • product (string): Product ID - one of: jamf-pro, jamf-school, jamf-connect, jamf-protect, jamf-now, jamf-safe-internet, jamf-insights, jamf-rapididentity, jamf-trust, jamf-routines, self-service-plus, jamf-app-catalog, jamf-account, jamf-security-cloud, elevate, composer, jamf-parent, jamf-teacher, jamf-setup-reset, jamf-assessment, title-editor, jamf-infrastructure-manager, jamf-adcs-connector, jamf-pki-proxy, jamf-migrate, jamf-remote-assist, jamf-cloud-distribution-service, healthcare-listener

  • publication (string): Bundle family id of any single publication, e.g. "technical-paper-laps" or "jamf-pro-release-notes". Call jamf_docs_list_products for the available ids

  • version (string, optional): Specific version (e.g., "11.13.0") or "current" (defaults to latest)

  • language (string, optional): Documentation language/locale (default: en-US)

  • page (number, optional): Page number for pagination 1-100 (default: 1)

  • maxTokens (number, optional): Maximum tokens in response 100-50000 (default: 5000)

  • outputMode ('full' | 'compact'): Output detail level (default: 'full'). Use 'compact' for flat list without nested children

  • responseFormat ('markdown' | 'json'): Output format (default: 'markdown')

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:

  • Browse Jamf Pro documentation: product="jamf-pro"

  • Get page 2 of TOC: product="jamf-pro", page=2

  • Limit response size: product="jamf-pro", maxTokens=2000

Errors:

  • "Invalid option: expected one of ..." (an input validation error) if product is not a known product ID

  • 'Version "" not found', followed by the available versions, if that version is not published

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:

  • term (string, required): Glossary term to look up (2-100 characters). Supports fuzzy matching.

  • product (string, optional): Accepted, but does not filter: Jamf publishes one platform-wide glossary with no product classification

  • language (string, optional): Documentation language/locale (default: en-US). Note: glossary is English-only.

  • maxTokens (number, optional): Maximum tokens in response 100-50000 (default: 5000)

  • outputMode ('full' | 'compact'): Output detail level (default: 'full')

  • responseFormat ('markdown' | 'json'): Output format (default: 'markdown')

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:

  • "What is MDM?" → term="MDM"

  • "What is a configuration profile?" → term="Configuration Profile"

  • "What is Automated Device Enrollment (formerly DEP)?" → term="Automated Device Enrollment"

Errors:

  • "Glossary lookup for "" failed: ..." (isError) if learn.jamf.com could not be read (a network error, a timeout, or a server error), so the lookup cannot say whether the glossary has the term. This is not a "no match". It may be temporary: try again.

  • "Invalid option: expected one of ..." (an input validation error) if product is not a known product ID

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:

  • urls (string[], required): Array of 1-10 https:// article URLs on learn.jamf.com, docs.jamf.com, concepts.jamf.com, support.jamf.com. Any other URL fails as its own per-article error

  • concurrency (number, optional): Max parallel requests 1-5 (default: 3)

  • language (string, optional): Documentation language/locale. Overrides the locale in each URL, which is used when this is omitted. No effect on concepts.jamf.com or support.jamf.com URLs

  • maxTokens (number, optional): Total token budget across all articles 100-50000 (default: 5000). Distributed evenly.

  • outputMode ('full' | 'compact'): Output detail level (default: 'full'). Use 'compact' for brief output.

  • responseFormat ('markdown' | 'json'): Output format (default: 'markdown')

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 language) counts toward its share. Partial failures are reported per-article without failing the entire batch.

Prompts

Interactive templates invoked by user choice

NameDescription
jamf_troubleshootGuide through troubleshooting a Jamf issue using official documentation
jamf_setup_guideGenerate a step-by-step setup guide for a Jamf feature using official documentation
jamf_compare_versionsCompare documentation between two versions of a Jamf product to identify changes

Resources

Contextual data attached and managed by the client

NameDescription
productsList 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.
topicsTopic categories for filtering documentation searches. Combines official TOC structure with curated categories.
jamf-docs-appInteractive viewer for Jamf documentation search results, tables of contents, and articles.

TDQS

A4.6/5.0

Scored across 6 tools

Disambiguation5/5

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.

Naming Consistency4/5

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.

Tool Count5/5

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.

Completeness5/5

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.

Maintenance

ActivityActive
ResponsivenessResponsive