Skip to main content
This page documents all tools exposed by the m87 MCP server. Tools are organized by category.
Tools marked with [Batch] support batch operations - pass devices array instead of device to operate on multiple devices at once.

Device Management

devices_list

List all accessible devices. Parameters: None Returns:

devices_approve

Approve a pending device registration. Parameters:
device
string
required
Device ID to approve
Returns:

devices_reject

Reject a pending device registration. Parameters:
device
string
required
Device ID to reject
Returns:

device_status [Batch]

Get device status and health. Supports batch operations. Parameters:
device
string
Single device name or ID (mutually exclusive with devices)
devices
string[]
Multiple device names/IDs for batch execution (mutually exclusive with device)
Returns (single):
Returns (batch):

device_audit_logs [Batch]

Get audit logs for a device. Supports batch operations. Parameters:
device
string
Single device name or ID (mutually exclusive with devices)
devices
string[]
Multiple device names/IDs (mutually exclusive with device)
since
string
Start time in ISO 8601 format (e.g., “2026-03-01T00:00:00Z”)
until
string
End time in ISO 8601 format
max
number
default:"100"
Maximum number of logs to return
Returns (single):
Returns (batch):

Device Access Control

device_access_list

List users with access to a device. Parameters:
device
string
required
Device name or ID
Returns:

device_access_add

Grant access to a device. Parameters:
device
string
required
Device name or ID
email_or_org_id
string
required
Email address or organization ID
role
string
required
Role: admin, editor, or viewer
Returns:

device_access_remove

Revoke access to a device. Parameters:
device
string
required
Device name or ID
email_or_org_id
string
required
Email address or organization ID
Returns:

File Operations

device_ls

List files in a device directory. Parameters:
path
string
required
Remote path in format <device>:<path>
Returns:

device_cp

Copy files between local and remote device. Parameters:
source
string
required
Source path. Use <device>:<path> for remote, <path> for local.
dest
string
required
Destination path. Use <device>:<path> for remote, <path> for local.
Returns:

device_sync

Sync files between local and remote device. Parameters:
source
string
required
Source path
dest
string
required
Destination path
delete
boolean
default:"false"
Delete files not in source
dry_run
boolean
default:"false"
Show what would be done without making changes
exclude
string[]
File patterns to exclude
Returns:

Remote Execution

device_exec [Batch]

Execute a command on a device and return output. Non-zero exit codes are returned as data, not errors. Supports batch operations. Parameters:
device
string
Single device name or ID (mutually exclusive with devices)
devices
string[]
Multiple device names/IDs (mutually exclusive with device)
command
string[]
required
Command and arguments to execute
timeout_secs
number
default:"30"
Command timeout in seconds
Returns (single):
Returns (batch):

docker_exec

Run a docker command on a device and capture output. The docker socket is forwarded via QUIC automatically. For long-running containers use the -d flag. Parameters:
device
string
required
Device name or ID
args
string[]
required
Docker CLI arguments (e.g., ["ps", "-a"] or ["run", "-d", "nginx"])
timeout_secs
number
default:"60"
Timeout in seconds (use higher values for builds/pulls)
Returns:

Port Forwarding

forward_start

Start port/socket forwarding to a device. Returns a session ID for lifecycle management. Forwarding runs in the background until stopped. Parameters:
device
string
required
Device name or ID
specs
string[]
required
Forward specifications (e.g., ["8080:80", "/tmp/sock:/var/run/docker.sock"])
Returns:

forward_stop

Stop a running forward session by session ID. Parameters:
session_id
string
required
Session ID returned by forward_start
Returns:

forward_list

List all active forward sessions. Parameters: None Returns:

Deployment Operations

device_deploy

Add a deployment spec to a device. Parameters:
device
string
required
Device name or ID
file
string
required
Path to deployment file (docker-compose.yml or run spec YAML)
spec_type
string
default:"auto"
Spec type: auto, compose, runspec, or deployment
name
string
Optional display name for the run spec
deployment_id
string
Target deployment ID (uses active if omitted)
Returns:

device_undeploy

Remove a deployment spec from a device. Parameters:
device
string
required
Device name or ID
job_id
string
required
Job ID to remove
deployment_id
string
Target deployment ID (uses active if omitted)
Returns:

device_deployment_list [Batch]

List all deployments for a device. Supports batch operations. Parameters:
device
string
Single device name or ID (mutually exclusive with devices)
devices
string[]
Multiple device names/IDs (mutually exclusive with device)
Returns (single):
Returns (batch):

device_deployment_new

Create a new deployment for a device. Parameters:
device
string
required
Device name or ID
active
boolean
default:"false"
Make this deployment active immediately
Returns:

device_deployment_show

Show deployment details. Parameters:
device
string
required
Device name or ID
deployment_id
string
Deployment ID (uses active if omitted)
Returns:

device_deployment_rm

Remove a deployment. Parameters:
device
string
required
Device name or ID
deployment_id
string
required
Deployment ID to remove
Returns:

device_deployment_active

Get the currently active deployment. Parameters:
device
string
required
Device name or ID
Returns:

device_deployment_activate

Set the active deployment. Parameters:
device
string
required
Device name or ID
deployment_id
string
required
Deployment ID to activate
Returns:

device_deployment_status [Batch]

Get deployment status. Supports batch operations. Parameters:
device
string
Single device name or ID (mutually exclusive with devices)
devices
string[]
Multiple device names/IDs (mutually exclusive with device)
deployment_id
string
Deployment ID (uses active if omitted)
Returns (single):
Returns (batch):

device_deployment_clone

Clone a deployment. Parameters:
device
string
required
Device name or ID
deployment_id
string
required
Source deployment ID to clone
active
boolean
default:"false"
Make cloned deployment active immediately
Returns:

Organization Management

org_list

List organizations. Parameters: None Returns:

org_create

Create an organization. Parameters:
id
string
required
Organization ID
email
string
required
Owner email address
Returns:

org_delete

Delete an organization. Parameters:
id
string
required
Organization ID
Returns:

org_update

Update organization. Parameters:
id
string
required
Current organization ID
new_id
string
required
New organization ID
Returns:

org_members_list

List organization members. Parameters:
org_id
string
required
Organization ID
Returns:

org_members_add

Add organization member. Parameters:
org_id
string
required
Organization ID
email
string
required
Member email address
role
string
required
Role: admin, editor, or viewer
Returns:

org_members_remove

Remove organization member. Parameters:
org_id
string
required
Organization ID
email
string
required
Member email address
Returns:

org_devices_list

List organization devices. Parameters:
org_id
string
required
Organization ID
Returns:

org_devices_add

Add device to organization. Parameters:
org_id
string
required
Organization ID
device
string
required
Device name or ID
Returns:

org_devices_remove

Remove device from organization. Parameters:
org_id
string
required
Organization ID
device
string
required
Device name or ID
Returns: