miradore-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| MIRADORE_SITE | Yes | Your Miradore site name: the site portion of https://your-site.manage.miradore.com | |
| MIRADORE_API_KEY | Yes | A Miradore API key created from System > Infrastructure diagram > API | |
| MIRADORE_READ_ONLY | No | Set to true to expose only read-only tools. Defaults to false. | false |
| MIRADORE_ALLOW_DESTRUCTIVE | No | Set to true to add destructive tools such as lock, reboot, Lost Mode, wipe, retire, and delete-user. Defaults to false. | false |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": true
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| list_devicesA | List managed devices in Miradore with optional filters. Returns a compact summary per device (id, name, model, serial, platform, OS version, online status, last check-in, user, tags, enrollment type). Retired devices are excluded unless include_retired or status is given. Use get_device for full details on one device. |
| get_deviceA | Get one device by its Miradore device ID, with optional detail sections: apps (installed apps), installed_profiles (profiles on an Apple device), deployed_config_profiles (profiles Miradore deployed and their status), security, storage, os_updates (pending Apple updates), hardware, management (client/enrollment info), custom_attributes. |
| device_health_summaryA | Summarise the whole fleet in one call: device counts by platform, online status and lifecycle status; OS versions in use; and lists of devices needing attention (not checked in for stale_days or more, no assigned user, passcode not set, encryption not enabled). Good for a daily check-in or 'is anything wrong?'. |
| query_miradoreA | Advanced read-only query against Miradore API v1 for anything the other tools don't cover (e.g. Category, Organization, Location, InvCertificate, ConfigProfileDeployment). 'select' lists attributes using dotted paths (e.g. 'InvDevice.Model', 'User.Email'); 'filters' uses operators eq, ne, gt, ge, lt, le, contains, notcontains, startswith, endswith, isempty, notisempty joined with and/or, quoting values with spaces. 'orderby' fields must also be selected. See the Miradore API v1 specification for attribute names. |
| list_usersA | List Miradore users (people devices can be assigned to), optionally filtered by email or name. |
| get_user_device_identifiersA | List device identifiers (serial numbers, IMEIs, etc.) pre-assigned to a user, so devices are linked to them automatically when they enroll. |
| list_tagsA | List all tags defined in Miradore. Tags group devices and can drive business policies. |
| list_config_profilesA | List configuration profiles defined in Miradore (Wi-Fi, restrictions, email, etc.) with their IDs, for use with deploy_config_profile. |
| list_enrollmentsB | List recent device enrollments, newest first. Use type 'DEP' for Apple Automated Device Enrollment. Helpful for confirming that a newly set-up device enrolled. |
| get_device_locationsB | Get reported locations for a device (only if location tracking is enabled for it). Dates are optional. |
| list_custom_attributesA | List custom attributes configured in Miradore (IDs and names), for use with set_device_custom_attribute. |
| get_applicationA | Get an application from the Miradore application catalog by its ID, including its deployment methods (needed for deploy_application). App IDs are visible in the Miradore console URL on the application's page. |
| list_suspended_devicesB | List devices that are suspended in Miradore. |
| sync_apple_dep_devicesA | Ask Miradore to pull the latest device list from Apple Business/School Manager (Automated Device Enrollment / DEP) now instead of waiting for the scheduled sync. Rate limited by Miradore to once per minute. Note: assigning an enrollment profile to the synced devices must still be done in the Miradore console. |
| assign_device_identifiers_to_userA | Pre-assign one or more device identifiers (serial numbers, IMEIs, etc.) to a user, so when those devices enroll they are linked to the user automatically. Use this before powering on a new device. |
| remove_device_identifier_from_userB | Remove a pre-assigned device identifier (e.g. serial number) from a user. |
| add_device_tagA | Add a tag to a device. Tags group devices and can trigger business policies that install apps and profiles. |
| remove_device_tagC | Remove a tag from a device. |
| deploy_config_profileB | Deploy a configuration profile (from list_config_profiles) to a device. |
| remove_config_profileA | Remove a configuration profile that Miradore deployed from a device. |
| deploy_applicationA | Deploy an application to a device using one of the app's deployment methods. Look the app up with get_application to find its deployment method ID. |
| update_deviceA | Update a device's assigned user, friendly name, ownership or category. Only the fields you give are changed. Use add_device_tag / remove_device_tag for tags. |
| set_device_custom_attributeA | Set a custom attribute value on a device. Find attribute IDs with list_custom_attributes. |
| create_userC | Create a Miradore user that devices can be assigned to. |
| update_userA | Update an existing Miradore user's name or phone number (looked up by email; email itself can't be changed). |
| add_user_tagsC | Assign one or more tags to a user. |
| remove_user_tagC | Remove a tag from a user. |
| activate_deviceB | Reactivate a device that was previously retired in Miradore. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 28 tools
Most tools target a distinct resource+action (devices, users, tags, config profiles, apps, enrollments, DEP), and descriptions explicitly cross-reference each other (e.g. list_custom_attributes -> set_device_custom_attribute). A few boundaries blur: list_suspended_devices is largely a filtered list_devices, device_health_summary overlaps with list_devices filters, get_device_locations duplicates a get_device detail area, and query_miradore is a catch-all that could tempt an agent away from the specific read tools. These are minor and the descriptions steer correctly.
The dominant pattern is consistent snake_case verb_noun (list_devices, get_device, add_device_tag, deploy_application, update_user), which is easy to predict. Deviations are minor but present: device_health_summary is noun-first with no verb, query_miradore uses a domain suffix rather than a resource noun, and tag verbs are inconsistently pluralized (add_user_tags vs remove_user_tag).
At 28 tools the surface sits above the comfortable band, though the domain is genuinely broad (devices, users, tags, config profiles, applications, enrollments, DEP sync) and no two tools are redundant. The count is defensible but heavy: several list_* reads could be consolidated as filters on a single listing tool.
Core MDM workflows are covered, but the lifecycle is asymmetric: activate_device exists to un-retire devices while no retire_device is offered, deploy_application and deploy_config_profile have removal counterparts only for profiles (no app removal), tags can be listed and attached but never created or deleted, and there is no list_applications (get_application requires an ID from the console URL). Users can be created and updated but not deleted or deleted-from-device.