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. Each one's "locales" are the languages Jamf publishes it in.

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 the list of documentation maps, from learn.jamf.com or a configured maps provider, 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, or, when only some of its languages could not be read, leave those out of their "locales". The message says whether trying again may help. 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, or one Chinese, Japanese or Korean character)

  • 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", at most 50 characters

  • 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 }, // Set when a filter matched nothing and was removed, or could not be applied. "filterRelaxation"?: { "removed": [string], "original": { "": string }, "message": string }, // Set when a result is at a version other than the one asked for. "versionNote"?: string, // Set when no page has a phrase the query quotes in 「」, 『』, 「」 or « » as written: // the query was searched again with those marks read as no quotes, and "results" are // what that found. Also set, with no results, when that found nothing either. "queryNote"?: string, // Set when page was past the last page, and the last is shown instead, or when // limit and maxTokens make more pages than page accepts: it then says what // reaches the rest. "paginationNote"?: string, // How "results" are ordered, and by whom. Absent when "results" is empty. "relevanceNote"?: string, // 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 }], // Queries to try instead, when "results" is empty. "suggestions"?: [string], // When "results" is empty and language is not en-US, as not all documentation is // in it, or the query has Chinese, Japanese, Korean or Thai words and the documentation in // language is not written in them: which documentation to search instead, and how. "localeNote"?: string, // Only on a page that is one result cut to fit; see the Note on paging. "truncatedResult"?: { "title": string, "estimatedTokens": number } }

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:

  • "Search for "" failed: ..." (isError) if the search could not be completed: learn.jamf.com could not be reached, timed out or answered with an error, or a configured search backend failed. This is not a "no results": the search did not complete, so the reply cannot say whether anything matches. The message says whether trying again may help. Pages outside the product documentation that did match follow it, in a second text block.

  • "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: "No results found" is not an error. It means the search ran and nothing in the product documentation matched; in JSON that is "total": 0, with "suggestions" and any "otherSources".

Note: Results are ranked by relevance. Use filters and pagination to navigate large result sets. A page holds up to limit results, as many as fit maxTokens, and the next page starts at the first that did not fit. Every result is on exactly one page, but which page depends on limit and maxTokens, so keep both the same while paging; the markdown footer names them beside the next page when they are not the default, and structuredContent carries limit and maxTokens. A result larger than maxTokens on its own is alone on its page with its snippet cut to fit; only that page has tokenInfo.truncated, and truncatedResult.estimatedTokens is what the whole result costs. If limit and maxTokens make more pages than page accepts (100), page 100 offers no next page and paginationNote says what reaches the rest. 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, unless the result is external (see the next Note).

Note: A result with "external": true is not a page of the documentation but one Jamf's search lists beside it, such as a course in the Jamf Training Catalog (trainingcatalog.jamf.com), at the rank the search gave it. jamf_docs_get_article cannot read it: open its url in a browser. It has no mapId + contentId pair. Jamf classifies a Training Catalog course as training content, so its docType is "training" and docType "training" returns it; any other docType, or a specific version, leaves it out.

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. A support.jamf.com collection url, which a TOC lists each subcollection by, returns the collection's list of articles.

Args:

  • url (string, optional): Full https:// URL of the article, on learn.jamf.com, docs.jamf.com, concepts.jamf.com, support.jamf.com, at most 2048 characters. 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. A learn.jamf.com publication Jamf does not publish in it is served in en-US, and a concepts.jamf.com or support.jamf.com page with no edition in it as the url names it, both with a note; contentLocale says which language was served. No effect on a mapId + contentId pair (a map is in one language)

  • 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, "contentLocale": string, // the language content is in, where the article says "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

  • "URL must not exceed 2048 characters" (an input validation error) if url is longer

  • "Topic not found", "Cannot resolve bundleId", "Cannot resolve product" or "HTTP 404" if no article is found at that address, with advice on finding it

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, at most 200 characters, 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), at most 50 characters

  • language (string, optional): Documentation language/locale (default: en-US). A product or publication Jamf does not publish in it is served as its en-US edition, and localeNote says so

  • 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, // absent for a concepts.jamf.com or support.jamf.com TOC, // and when a TOC provider names no map "toc": [...], // each entry: title, url, and contentId when from a map "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. Full markdown shows the mapId only, and compact markdown shows neither; use responseFormat="json" (or read structuredContent) for both. A concepts.jamf.com or support.jamf.com TOC has neither: it names no map, and its entries carry only title, url and children. Read any of its entries by url with jamf_docs_get_article; a support.jamf.com subcollection's url is its collection page, which reads as the list of its articles. 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. A reply with no match says so when the term was asked in another language or written in a script other than Latin, such as Chinese.

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 }, // Set when the English glossary answered a term asked in another language, // or found no match for one written in a script other than Latin. "warning"?: 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 the glossary could not be read: learn.jamf.com could not be reached, timed out or answered with an error, or a configured maps provider failed. The lookup cannot say whether the glossary has the term, so this is not a "no match". The message says whether trying again may help.

  • "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, each at most 2048 characters. Any other URL fails as its own per-article error, and a longer one fails the call's input validation

  • 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. A learn.jamf.com publication Jamf does not publish in it is served in en-US, and a concepts.jamf.com or support.jamf.com page with no edition in it as its URL names it, both with a note; each result's contentLocale says which language was served

  • 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. A result carries contentLocale, the language its content is in, where the article says.

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 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.4/5.0

Scored across 6 tools

Disambiguation4/5

Each tool occupies a distinct role in the docs workflow: catalogue listing, search, single fetch, batch fetch, TOC browsing, and glossary lookup. The only mild overlap is between jamf_docs_list_products (catalogue of products/publications/filters) and jamf_docs_get_toc (navigation structure), but the descriptions explicitly clarify that one is discovery metadata and the other is document hierarchy. jamf_docs_get_article vs jamf_docs_batch_get_articles is unambiguous given the batch's explicit concurrency/bulk framing.

Naming Consistency4/5

All tools share a clear jamf_docs_ prefix and are snake_case, which is strong. Most follow verb_noun (list_products, get_article, get_toc), but glossary_lookup inverts to noun_verb and batch_get_articles inserts a modifier prefix, so it is not perfectly uniform.

Tool Count5/5

Six tools is well-scoped for a documentation server: discovery, search, retrieval (single and bulk), structure browsing, and glossary each earn their place. No redundant or filler tools are present.

Completeness4/5

The doc lifecycle is well covered: discover products/publications, list versions via list_products or error hints, browse TOC, search, fetch single or batch articles, and look up glossary terms. Minor gaps include no dedicated version-listing or category-browsing operation, but agents can work around these via list_products and the TOC.

Maintenance

ActivityActive
ResponsivenessResponsive