getFleetOverviewLABSCO SUMMARY
The compound tools answer fleet questions in one call; code mode answers the ones that need a join.
getFleetOverview and getSecurityPosture exist because the underlying API makes you fetch a list and then detail every item — they do that behind the scenes. Code mode goes further: the agent writes JavaScript against the API client, so cross-resource questions like OS version by department become one call instead of a sequence the model has to hold together. Destructive commands sit behind explicit confirmation in both modes.
What it is
A Jamf Pro server covering both the modern and Classic APIs. It ships in two shapes: a classic mode with one tool per operation, and a code mode that exposes a search tool and a sandboxed JavaScript runtime over the same API client.
What you get
- getFleetOverview — inventory counts, compliance rates and mobile device status in a single call
- getDeviceFullProfile — a device resolved by name, serial or id, with details, policy logs and history fetched in parallel
- getSecurityPosture — FileVault encryption rates, compliance status and OS version currency across the fleet
- getPolicyAnalysis — a policy's configuration, scope, compliance and performance, resolved by id or name
- searchDevices, getDeviceDetails, getDevicesBatch, checkDeviceCompliance, updateInventory — find devices and force an inventory update
- getComputerHistory, getComputerPolicyLogs, getComputerMDMCommandHistory — what ran on a machine and whether it worked
- sendComputerMDMCommand and flushMDMCommands — lock, wipe, restart or shut down a Mac, or clear stuck commands; both require confirmation
- listPolicies, searchPolicies, getPolicyDetails, executePolicy, createPolicy, updatePolicy — policy management, with writes behind a confirmation
- jamf_search and jamf_execute — the code mode pair: discover API methods, then run JavaScript against the typed client in a sandboxed vm
- Code mode safety rails: a plan mode that previews writes, declared capabilities such as read:computers or command:mdm, call-count budgets, and an approval token for wipe, lock and delete
Requirements
A Jamf Pro instance and an API client: JAMF_URL, JAMF_CLIENT_ID and JAMF_CLIENT_SECRET. Node.js 18.0.0 or newer — clone, npm install and npm run build, then point the client at dist/index-main.js for classic mode or dist/index-code.js for code mode. JAMF_MAX_CONCURRENCY tunes the concurrency limiter that keeps you under Jamf's rate limits.
Setup effort
Build from source — git clone https://github.com/dbankscard/jamf-mcp-server.git
USE CASES
Answering "how is the fleet doing?"
Pull inventory counts, compliance rates and mobile status in one call rather than assembling them.
Preparing for a security review
Read FileVault encryption rates, compliance status and OS currency across the fleet.
Chasing one machine
Resolve it by name or serial and read its details, policy logs and history together.
Finding devices that stopped checking in
List devices that have not reported in the last N days, then force an inventory update on them.
Working out why a policy is not landing
Analyse the policy's scope and compliance, then read the per-device execution logs.
Answering a question no single tool covers
Search the API surface for the methods you need, then run one script that joins across them.
Responding to a lost laptop
Send the lock or wipe command, with the confirmation step the server insists on.
112 tools
Listed in project docs. Your client may show a different list.
getDeviceFullProfilegetSecurityPosturegetPolicyAnalysissearchDevicesgetDeviceDetailscheckDeviceCompliancegetDevicesBatchupdateInventorygetComputerHistorygetComputerPolicyLogsgetComputerMDMCommandHistorysendComputerMDMCommandflushMDMCommandslistPoliciesgetPolicyDetailssearchPoliciesexecutePolicycreatePolicyupdatePolicyclonePolicysetPolicyEnabledupdatePolicyScopedeletePolicylistScriptssearchScriptsgetScriptDetailsdeployScriptcreateScriptupdateScriptdeleteScriptlistConfigurationProfilesgetConfigurationProfileDetailssearchConfigurationProfilesdeployConfigurationProfileremoveConfigurationProfiledeleteConfigurationProfilelistPackagessearchPackagesgetPackageDetailsgetPackageDeploymentHistorygetPoliciesUsingPackagegetPackageDeploymentStatslistComputerGroupsgetComputerGroupDetailssearchComputerGroupsgetComputerGroupMemberscreateStaticComputerGroupupdateStaticComputerGroupdeleteComputerGrouplistAdvancedComputerSearchesgetAdvancedComputerSearchDetailscreateAdvancedComputerSearchdeleteAdvancedComputerSearchsearchMobileDevicesgetMobileDeviceDetailslistMobileDeviceslistMobileDeviceApplicationsgetMobileDeviceApplicationDetailsupdateMobileDeviceInventorysendMDMCommandlistMobileDeviceGroupsgetMobileDeviceGroupDetailsgetInventorySummarygetDeviceComplianceSummarygetPolicyComplianceReportgetSoftwareVersionReportlistBuildingsgetBuildingDetailslistDepartmentsgetDepartmentDetailslistCategoriesgetCategoryDetailsgetLocalAdminPasswordgetLocalAdminPasswordAuditgetLocalAdminPasswordAccountslistPatchSoftwareTitlesgetPatchSoftwareTitleDetailslistPatchPoliciesgetPatchPolicyDashboardlistComputerExtensionAttributesgetComputerExtensionAttributeDetailscreateComputerExtensionAttributeupdateComputerExtensionAttributedeleteComputerExtensionAttributelistSoftwareUpdatePlanscreateSoftwareUpdatePlangetSoftwareUpdatePlanDetailslistComputerPrestagesgetComputerPrestageDetailsgetComputerPrestageScopelistMobilePrestagesgetMobilePrestageDetailslistNetworkSegmentsgetNetworkSegmentDetailslistAccountsgetAccountDetailsgetAccountGroupDetailslistUsersgetUserDetailssearchUserslistAppInstallersgetAppInstallerDetailslistRestrictedSoftwaregetRestrictedSoftwareDetailscreateRestrictedSoftwareupdateRestrictedSoftwaredeleteRestrictedSoftwarelistWebhooksgetWebhookDetailsjamf_searchjamf_executeBEFORE YOU INSTALL
What to know first
Tools you get
112 tools named in the project's documentation.
Requires
- JAMF_CLIENT_ID in your environment
- JAMF_CLIENT_SECRET in your environment
INSTALLATION
Connect your client
You clone and build this one yourself.
Server setup
git clone https://github.com/dbankscard/jamf-mcp-server.git
cd jamf-mcp-server
npm install
npm run buildMCP Clients
Claude Desktop — classic mode
{
"mcpServers": {
"jamf-pro": {
"command": "node",
"args": [
"<YOUR_PATH_TO_JAMF_MCP_SERVER>/dist/index-main.js"
],
"env": {
"JAMF_URL": "https://<YOUR_INSTANCE>.jamfcloud.com",
"JAMF_CLIENT_ID": "<YOUR_JAMF_CLIENT_ID>",
"JAMF_CLIENT_SECRET": "<YOUR_JAMF_CLIENT_SECRET>"
}
}
}
}Claude Desktop — code mode
{
"mcpServers": {
"jamf-code": {
"command": "node",
"args": [
"<YOUR_PATH_TO_JAMF_MCP_SERVER>/dist/index-code.js"
],
"env": {
"JAMF_URL": "https://<YOUR_INSTANCE>.jamfcloud.com",
"JAMF_CLIENT_ID": "<YOUR_JAMF_CLIENT_ID>",
"JAMF_CLIENT_SECRET": "<YOUR_JAMF_CLIENT_SECRET>"
}
}
}
}ChatGPT — connector
git clone https://github.com/dbankscard/jamf-mcp-server.git
cd jamf-mcp-server
./chatgpt/start-chatgpt-poc.sh