项目简介
Jamf Pro MCP 服务器是一个基于 Model Context Protocol (MCP) 构建的后端服务,旨在将人工智能助手(如 ChatGPT、Claude Desktop)与 Jamf Pro 进行集成。它允许AI助手通过自然语言理解和调用 Jamf Pro 的功能,实现对 Apple 设备的智能化管理,包括设备搜索、策略部署、软件更新和合规性报告等。服务器提供标准化的资源访问、工具执行和 Prompt 模板,并支持多种传输协议。
主要功能点
- 设备管理: 查找设备、获取详细信息、强制更新设备库存、检查设备合规性。
- 策略与脚本管理: 列出、搜索、获取策略和脚本详情,执行策略、部署脚本(需确认)。
- 配置概览管理: 列出、搜索、获取配置概览详情,部署和移除配置概览(需确认)。
- 软件包管理: 列出、搜索、获取软件包详情,查看部署历史和使用软件包的策略。
- 设备分组管理: 列出、获取、搜索计算机组和移动设备组,管理静态计算机组成员(需确认)。
- 移动设备管理: 搜索、获取移动设备详情,更新库存,发送 MDM 命令(如设备锁定、清除密码,需确认)。
- 数据报告: 提供设备库存、合规性、存储使用、操作系统版本等报告数据。
- 高级技能: 支持通过自然语言进行多步骤、复杂操作,如智能设备搜索、批量库存更新、按条件部署策略和计划合规性检查。
- 多传输协议: 支持 Stdio (标准输入输出) 和 SSE (Server-Sent Events) 等多种传输协议,方便与不同 MCP 客户端集成。
- 安全与控制: 支持只读模式、危险操作二次确认、错误处理及日志审计。
安装步骤
- 克隆仓库:
git clone https://github.com/dbankscard/jamf-mcp-server.git cd jamf-mcp-server - 安装依赖:
npm install - 构建项目:
npm run build - 配置 Jamf Pro API 认证:
- 在 Jamf Pro 中,创建新的 API 角色并分配必要权限。
- 创建新的 API 客户端,获取 Client ID 和 Client Secret。
- 将 '.env.example' 复制为 '.env',并填入您的 Jamf Pro 实例 URL (JAMF_URL)、Client ID (JAMF_CLIENT_ID) 和 Client Secret (JAMF_CLIENT_SECRET)。
- 如果您希望使用 Basic Auth (经典 API),请设置 JAMF_USERNAME 和 JAMF_PASSWORD。
- 您也可以设置 'JAMF_READ_ONLY=true' 以启用只读模式。
服务器配置 (MCP 客户端所需信息)
MCP 客户端(例如 Claude Desktop)需要配置 MCP 服务器的启动命令和参数。以下是配置示例:
- 服务器名称: jamf-mcp-server
- 启动命令 (command): 'node'
- 参数 (args):
- 对于 Stdio 模式(推荐用于本地客户端,如 Claude Desktop): '["/绝对路径/到/jamf-mcp-server/dist/index.js"]'
- 对于 HTTP 模式(用于部署到云环境,如 ChatGPT Connector): '["/绝对路径/到/jamf-mcp-server/dist/index-http.js"]'
- 环境变量 (env):
- 'JAMF_URL': 您的 Jamf Pro 实例 URL (例如 'https://your-instance.jamfcloud.com')
- 'JAMF_CLIENT_ID': 您的 Jamf Pro API 客户端 ID
- 'JAMF_CLIENT_SECRET': 您的 Jamf Pro API 客户端 Secret
- 'JAMF_USERNAME': (可选) 您的 Jamf Pro 用户名 (用于 Basic Auth)
- 'JAMF_PASSWORD': (可选) 您的 Jamf Pro 密码 (用于 Basic Auth)
- 'JAMF_READ_ONLY': (可选) 'true' 或 'false',指示是否启用只读模式 (默认为 'false')
- 'JAMF_USE_ENHANCED_MODE': (可选) 'true' 或 'false',启用增强模式(包括重试、限速、熔断器)
- 'JAMF_DEBUG_MODE': (可选) 'true' 或 'false',启用调试日志
请注意:
- 'args' 中的路径必须是服务器根目录下的 'dist/index.js' (Stdio) 或 'dist/index-http.js' (HTTP) 文件的绝对路径。
- 'env' 中的 Jamf Pro 认证信息应根据您的实际设置提供。
基本使用方法
-
启动服务器(本地开发模式):
npm run dev # 或者运行编译后的版本 node dist/index.js如果您希望以 HTTP 模式运行,请使用 'node dist/index-http.js' 并确保您的 'PORT' 环境变量已设置。
-
连接 MCP 客户端:
- 对于 Claude Desktop: 在 '~/Library/Application Support/Claude/claude_desktop_config.json' (macOS) 或 '%APPDATA%\Claude\claude_desktop_config.json' (Windows) 中配置服务器信息,例如:
{ "mcpServers": { "jamf-pro": { "command": "node", "args": ["/absolute/path/to/jamf-mcp-server/dist/index.js"], "env": { "JAMF_URL": "https://your-instance.jamfcloud.com", "JAMF_CLIENT_ID": "your-api-client-id", "JAMF_CLIENT_SECRET": "your-api-client-secret", "JAMF_READ_ONLY": "false" } } } } - 对于 ChatGPT Connector: 您需要将服务器部署到可公开访问的云环境(如 Vercel, Fly.io),并使用隧道(如 Cloudflare Tunnel, ngrok)将其暴露。然后,在 ChatGPT 中配置 MCP Connector 的 URL 和认证信息。详细步骤请参考项目 'QUICK_START.md' 或 'CHATGPT_CONNECTOR_README.md'。
- 对于 Claude Desktop: 在 '~/Library/Application Support/Claude/claude_desktop_config.json' (macOS) 或 '%APPDATA%\Claude\claude_desktop_config.json' (Windows) 中配置服务器信息,例如:
-
通过 AI 助手交互:
-
示例自然语言查询:
- "查找所有七天内未签到的 MacBook。"
- "显示设备合规性统计信息。"
- "将软件更新部署到市场团队。"
- "生成所有 iOS 设备的合规性报告。"
-
示例直接工具调用(在支持的客户端中):
- 'searchDevices({"query": "John Smith's MacBook"})'
- 'getDeviceDetails({"deviceId": "123"})'
- 'executePolicy({"policyId": "456", "deviceIds": ["789", "101"], "confirm": true})'
-
信息
分类
商业系统