项目简介

Jamf Pro MCP 服务器是一个基于 Model Context Protocol (MCP) 构建的后端服务,旨在将人工智能助手(如 ChatGPT、Claude Desktop)与 Jamf Pro 进行集成。它允许AI助手通过自然语言理解和调用 Jamf Pro 的功能,实现对 Apple 设备的智能化管理,包括设备搜索、策略部署、软件更新和合规性报告等。服务器提供标准化的资源访问、工具执行和 Prompt 模板,并支持多种传输协议。

主要功能点

  • 设备管理: 查找设备、获取详细信息、强制更新设备库存、检查设备合规性。
  • 策略与脚本管理: 列出、搜索、获取策略和脚本详情,执行策略、部署脚本(需确认)。
  • 配置概览管理: 列出、搜索、获取配置概览详情,部署和移除配置概览(需确认)。
  • 软件包管理: 列出、搜索、获取软件包详情,查看部署历史和使用软件包的策略。
  • 设备分组管理: 列出、获取、搜索计算机组和移动设备组,管理静态计算机组成员(需确认)。
  • 移动设备管理: 搜索、获取移动设备详情,更新库存,发送 MDM 命令(如设备锁定、清除密码,需确认)。
  • 数据报告: 提供设备库存、合规性、存储使用、操作系统版本等报告数据。
  • 高级技能: 支持通过自然语言进行多步骤、复杂操作,如智能设备搜索、批量库存更新、按条件部署策略和计划合规性检查。
  • 多传输协议: 支持 Stdio (标准输入输出) 和 SSE (Server-Sent Events) 等多种传输协议,方便与不同 MCP 客户端集成。
  • 安全与控制: 支持只读模式、危险操作二次确认、错误处理及日志审计。

安装步骤

  1. 克隆仓库:
    git clone https://github.com/dbankscard/jamf-mcp-server.git
    cd jamf-mcp-server
  2. 安装依赖:
    npm install
  3. 构建项目:
    npm run build
  4. 配置 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 认证信息应根据您的实际设置提供。

基本使用方法

  1. 启动服务器(本地开发模式):

    npm run dev
    # 或者运行编译后的版本
    node dist/index.js

    如果您希望以 HTTP 模式运行,请使用 'node dist/index-http.js' 并确保您的 'PORT' 环境变量已设置。

  2. 连接 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'。
  3. 通过 AI 助手交互:

    • 示例自然语言查询:

      • "查找所有七天内未签到的 MacBook。"
      • "显示设备合规性统计信息。"
      • "将软件更新部署到市场团队。"
      • "生成所有 iOS 设备的合规性报告。"
    • 示例直接工具调用(在支持的客户端中):

      • 'searchDevices({"query": "John Smith's MacBook"})'
      • 'getDeviceDetails({"deviceId": "123"})'
      • 'executePolicy({"policyId": "456", "deviceIds": ["789", "101"], "confirm": true})'

信息

分类

商业系统