Jamf Mcp — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited Jamf Mcp (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
A Claude Desktop MCP (Model Context Protocol) server that gives Claude a natural-language interface to Jamf Pro, Jamf Protect, and Jamf Security Cloud.
Ask Claude things like:
| Product | Tools | Capabilities |
|---|---|---|
| Jamf Pro | 37 | Computers, mobile devices, users, smart/static groups, policies, configuration profiles, patch policies, App Installers, scripts, extension attributes, categories, departments, buildings, printers, prestages, API roles & integrations |
| Jamf Protect | 6 | Security alerts, analytics (detection rules), enrolled computers |
| Jamf Security Cloud | 2 | Device risk levels, risk overrides |
| Setup | 2 | Configuration status, setup instructions |
Zero credentials required to start — tools for unconfigured products return setup guidance instead of errors.
git clone https://github.com/OtakuXavier/jamf-mcp.git
cd jamf-mcp
uv syncCopy .env.example to .env and fill in your credentials:
cp .env.example .env# Jamf Pro — OAuth (recommended)
JAMF_PRO_URL=https://yourorg.jamfcloud.com
JAMF_CLIENT_ID=your-client-id
JAMF_CLIENT_SECRET=your-client-secret
# Jamf Protect
JAMF_PROTECT_URL=https://yourorg.protect.jamfcloud.com
JAMF_PROTECT_CLIENT_ID=your-protect-client-id
JAMF_PROTECT_PASSWORD=your-protect-client-secret
# Jamf Security Cloud
JAMF_SECURITY_CLIENT_ID=your-security-client-id
JAMF_SECURITY_CLIENT_SECRET=your-security-client-secret
JAMF_SECURITY_REGION=usYou only need to configure the products you use — the others will be skipped gracefully.
Edit ~/Library/Application Support/Claude/claude_desktop_config.json (see claude_desktop_config.example.json for the full template):
{
"mcpServers": {
"jamf": {
"command": "uv",
"args": ["run", "--directory", "/path/to/jamf-mcp", "jamf-mcp"],
"env": {
"JAMF_PRO_URL": "https://yourorg.jamfcloud.com",
"JAMF_CLIENT_ID": "your-client-id",
"JAMF_CLIENT_SECRET": "your-client-secret"
}
}
}
}Restart Claude Desktop. You should see the Jamf tools available in the tool menu.
Or ask Claude to do it for you once you have admin credentials: "Create an API client with read-only access to computers and mobile devices"
Jamf Pro supports two auth methods:
JAMF_CLIENT_ID + JAMF_CLIENT_SECRETJAMF_USERNAME + JAMF_PASSWORDAll three API clients cache bearer tokens in memory and refresh automatically 60 seconds before expiry.
src/jamf_mcp/
├── server.py # FastMCP server, registers all tools
├── config.py # Env-var config dataclasses
├── response.py # Shared ok() / err() / not_configured() helpers
├── api/
│ ├── pro.py # Jamf Pro HTTP client (XML + JSON, token cache)
│ ├── protect.py # Jamf Protect GraphQL client
│ └── security.py # Jamf Security Cloud REST client
└── tools/
├── setup.py # jamf_get_setup_status, jamf_configure_help
├── pro/ # 37 Jamf Pro tools across 8 modules
├── protect/ # 6 Jamf Protect tools
└── security/ # 2 Jamf Security Cloud toolsAll tools return a consistent envelope:
{ "success": true, "message": "Found 42 computers", "data": { ... } }MIT
~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.