Skip to main content

MCP server for Mosyle Business MDM

Project description

Mosyle MDM MCP Server

MCP server for interacting with Mosyle Business MDM instances. Provides 35 tools across device management, user/group management, custom attributes, lost mode, and log streaming. Supports JWT authentication and a --read-only mode for safe operation.

Configuration

Authentication: Mosyle uses an API access token combined with email/password credentials to obtain a JWT bearer token. Create a dedicated API user in Mosyle Business rather than using a personal account.

Option 1: config.json

cp config.json.example config.json
# Edit config.json with your API credentials

Option 2: Environment Variables

export MOSYLE_HOST="businessapi.mosyle.com"
export MOSYLE_EMAIL="api-user@example.com"
export MOSYLE_PASSWORD="api-password"
export MOSYLE_ACCESS_TOKEN="your-access-token"
export MOSYLE_LOGS_HOST="businessapilogs.mosyle.com"
export MOSYLE_TIMEOUT="30"

Installation

Option 1: Using uv (Recommended)

uv is a fast Python package manager. Install it first:

# macOS/Linux
curl -LsSf https://astral.sh/uv/install.sh | sh

# Windows
powershell -c "irm https://astral.sh/uv/install.ps1 | iex"

No additional installation needed - uvx will handle dependencies automatically.

Option 2: Using pip

pip install bibliocommons-mcp-mosyle
# or for development
pip install -e ".[dev]"

AI Client Setup

Quick Links: Amazon Q | Claude Desktop | VS Code | GitHub Copilot | Cline | Zed | Cursor | Kiro IDE | Kiro CLI

Amazon Q Developer (VS Code)

  1. Install the Amazon Q extension in VS Code
  2. Open VS Code Settings (JSON) and add:
{
  "amazonQ.mcp.servers": {
    "mosyle": {
      "command": "uvx",
      "args": ["--from", "/absolute/path/to/mosyle", "bibliocommons-mcp-mosyle"]
    }
  }
}

Alternative: Using python directly

{
  "amazonQ.mcp.servers": {
    "mosyle": {
      "command": "python",
      "args": ["-m", "bibliocommons_mcp_mosyle"]
    }
  }
}

Claude Desktop

  1. Open Claude Desktop configuration:

    • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
    • Windows: %APPDATA%\Claude\claude_desktop_config.json
  2. Add the server configuration:

{
  "mcpServers": {
    "mosyle": {
      "command": "uvx",
      "args": ["--from", "/absolute/path/to/mosyle", "bibliocommons-mcp-mosyle"]
    }
  }
}

Alternative: Using python directly

{
  "mcpServers": {
    "mosyle": {
      "command": "python",
      "args": ["-m", "bibliocommons_mcp_mosyle"]
    }
  }
}

VS Code (with MCP Extension)

  1. Install an MCP-compatible extension in VS Code
  2. Open VS Code Settings (JSON): Cmd+Shift+P → "Preferences: Open User Settings (JSON)"
  3. Add the server configuration:
{
  "mcp.servers": {
    "mosyle": {
      "command": "uvx",
      "args": ["--from", "/absolute/path/to/mosyle", "bibliocommons-mcp-mosyle"]
    }
  }
}

Alternative: Using python directly

{
  "mcp.servers": {
    "mosyle": {
      "command": "python",
      "args": ["-m", "bibliocommons_mcp_mosyle"]
    }
  }
}

GitHub Copilot (VS Code)

  1. Install GitHub Copilot extension in VS Code
  2. Open VS Code Settings (JSON) and add:
{
  "github.copilot.chat.mcp.servers": {
    "mosyle": {
      "command": "uvx",
      "args": ["--from", "/absolute/path/to/mosyle", "bibliocommons-mcp-mosyle"]
    }
  }
}

Alternative: Using python directly

{
  "github.copilot.chat.mcp.servers": {
    "mosyle": {
      "command": "python",
      "args": ["-m", "bibliocommons_mcp_mosyle"]
    }
  }
}

Cline (VS Code Extension)

  1. Install the Cline extension in VS Code
  2. Open VS Code Settings (JSON) and add:
{
  "cline.mcpServers": {
    "mosyle": {
      "command": "uvx",
      "args": ["--from", "/absolute/path/to/mosyle", "bibliocommons-mcp-mosyle"]
    }
  }
}

Alternative: Using python directly

{
  "cline.mcpServers": {
    "mosyle": {
      "command": "python",
      "args": ["-m", "bibliocommons_mcp_mosyle"]
    }
  }
}

Zed Editor

  1. Open Zed settings: Cmd+, (macOS) or Ctrl+, (Linux/Windows)
  2. Navigate to "Language Models" → "Configure MCP Servers"
  3. Add the server configuration:
{
  "mcpServers": {
    "mosyle": {
      "command": "uvx",
      "args": ["--from", "/absolute/path/to/mosyle", "bibliocommons-mcp-mosyle"]
    }
  }
}

Alternative: Using python directly

{
  "mcpServers": {
    "mosyle": {
      "command": "python",
      "args": ["-m", "bibliocommons_mcp_mosyle"]
    }
  }
}

Cursor IDE

  1. Open Cursor Settings (JSON): Cmd+Shift+P → "Preferences: Open User Settings (JSON)"
  2. Add the MCP server configuration:
{
  "mcp.servers": {
    "mosyle": {
      "command": "uvx",
      "args": ["--from", "/absolute/path/to/mosyle", "bibliocommons-mcp-mosyle"]
    }
  }
}

Alternative: Using python directly

{
  "mcp.servers": {
    "mosyle": {
      "command": "python",
      "args": ["-m", "bibliocommons_mcp_mosyle"]
    }
  }
}

Kiro IDE

  1. Open Kiro IDE settings
  2. Navigate to MCP Servers configuration
  3. Add the server:
{
  "mcpServers": {
    "mosyle": {
      "command": "uvx",
      "args": ["--from", "/absolute/path/to/mosyle", "bibliocommons-mcp-mosyle"]
    }
  }
}

Alternative: Using python directly

{
  "mcpServers": {
    "mosyle": {
      "command": "python",
      "args": ["-m", "bibliocommons_mcp_mosyle"]
    }
  }
}

Kiro CLI

  1. Create or edit the MCP configuration file:

    • User level: ~/.kiro/settings/mcp.json
    • Project level: <project-root>/.kiro/settings/mcp.json
  2. Add the server configuration:

{
  "mcpServers": {
    "mosyle": {
      "command": "uvx",
      "args": ["--from", "/absolute/path/to/mosyle", "bibliocommons-mcp-mosyle"]
    }
  }
}

Alternative: Using python directly

{
  "mcpServers": {
    "mosyle": {
      "command": "python",
      "args": ["-m", "bibliocommons_mcp_mosyle"]
    }
  }
}

Configuration Notes

  • Replace /absolute/path/to/mosyle/ with the actual path to your server directory
  • Using uvx (default): Automatically manages dependencies in isolated environments (like npx for Node.js)
  • Using python (alternative): Requires pip install bibliocommons-mcp-mosyle first
  • Add --config /path/to/config.json to the args array to use a specific config file
  • Add --read-only to the args array to disable destructive tools
  • After adding the configuration, restart your AI client for changes to take effect

Web UI with Swagger

A REST API with interactive Swagger documentation is available:

python -m bibliocommons_mcp_mosyle.webui

Access the Swagger UI at: [http://localhost:8000/docs]

The Web UI provides:

  • Interactive API documentation
  • Try-it-out functionality for all endpoints
  • OpenAPI/Swagger specification
  • REST API access to all MCP tools

Standalone MCP Server

python -m bibliocommons_mcp_mosyle

Available Tools

Domain Tools Description
Devices 9 list_devices, update_device, shutdown_devices, restart_devices, wipe_devices, assign_device_user, unassign_device, enable_activation_lock, disable_activation_lock
Custom Attributes 6 list_custom_device_attributes, create_custom_device_attribute, assign_custom_device_attribute, update_custom_device_attribute, remove_custom_device_attribute, delete_custom_device_attribute
Variables 3 save_variable, delete_variable, lock_device
Users 3 list_users, create_user, update_user
User Groups 5 list_user_groups, create_user_group, update_user_group, add_users_to_group, remove_users_from_group
Device Groups 3 list_device_groups, get_device_group_info, update_device_group
Lost Mode 4 enable_lost_mode, disable_lost_mode, play_lost_mode_sound, request_device_location
Logs 2 list_action_logs, get_logs_stream

See docs/API-REFERENCE.md for full parameter details.

Read-Only Mode

Disable all destructive tools for safe, audit-only operation:

# CLI flag
python -m bibliocommons_mcp_mosyle --read-only

# Environment variable
export MOSYLE_READ_ONLY=true

In read-only mode, the following 26 tools are excluded:

  • Devices: update_device, shutdown_devices, restart_devices, wipe_devices, assign_device_user, unassign_device, enable_activation_lock, disable_activation_lock
  • Custom Attributes: create_custom_device_attribute, assign_custom_device_attribute, update_custom_device_attribute, remove_custom_device_attribute, delete_custom_device_attribute
  • Variables: save_variable, delete_variable, lock_device
  • Users: create_user, update_user
  • User Groups: create_user_group, update_user_group, add_users_to_group, remove_users_from_group
  • Device Groups: update_device_group
  • Lost Mode: enable_lost_mode, disable_lost_mode, play_lost_mode_sound

The remaining 9 read-only tools are: list_devices, list_custom_device_attributes, list_users, list_user_groups, list_device_groups, get_device_group_info, request_device_location, list_action_logs, get_logs_stream.

Security Notes

  • Create a dedicated API user in Mosyle Business for MCP access rather than using a personal account
  • The access token is a long-lived credential; store it securely and rotate periodically
  • Never commit config.json with real credentials (it is excluded by .gitignore)
  • Use config.json.example as a template
  • Prefer environment variables for production and CI environments
  • Use --read-only mode when write access is not needed

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

bibliocommons_mcp_mosyle-1.0.0.tar.gz (18.1 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

bibliocommons_mcp_mosyle-1.0.0-py3-none-any.whl (12.0 kB view details)

Uploaded Python 3

File details

Details for the file bibliocommons_mcp_mosyle-1.0.0.tar.gz.

File metadata

  • Download URL: bibliocommons_mcp_mosyle-1.0.0.tar.gz
  • Upload date:
  • Size: 18.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.13

File hashes

Hashes for bibliocommons_mcp_mosyle-1.0.0.tar.gz
Algorithm Hash digest
SHA256 7b2954b71fe5c76b9de8f675e8a95c5ae95363f7493bcb52523c6a82393f6e6d
MD5 f56652fd8d16056a15942e54318ac842
BLAKE2b-256 baec5ff235eaa4bc4db7f6d729bc5c424761f7b89c24d4750dc12de8a3e1aa73

See more details on using hashes here.

File details

Details for the file bibliocommons_mcp_mosyle-1.0.0-py3-none-any.whl.

File metadata

File hashes

Hashes for bibliocommons_mcp_mosyle-1.0.0-py3-none-any.whl
Algorithm Hash digest
SHA256 4954cada6543dc90f72b404df7be65868280a5572178291da168ae612901f349
MD5 bbe443ddd48911fe932f132afad00f96
BLAKE2b-256 d47f57a7502914ce60cf0bc8fdaca44e498191e8bab3851f1bb060e272bb2def

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page