Skip to main content
Glama
b2dmx

uc-remote-mcp

by b2dmx

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault

No arguments

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

CapabilityDetails
tools
{
  "listChanged": true
}
logging
{}
prompts
{
  "listChanged": false
}
resources
{
  "subscribe": false,
  "listChanged": false
}
extensions
{
  "io.modelcontextprotocol/ui": {}
}
experimental
{}

Tools

Functions exposed to the LLM to take actions

NameDescription
setup_remoteB

First-run setup. Authenticate with admin PIN, create a long-lived API key, and save config. Only needed once per remote.

discover_remotesA

Scan the LAN via mDNS for UC remotes. Returns a list of {name, host, port, model, fw, id}.

get_remote_infoA

Return model, firmware, battery level/status, and currently active activities. Uses the first configured remote if host is not specified.

list_devicesA

List all configured devices (entities). Each physical device may appear as several entities (e.g. a TV has both a media_player and a remote entity). Optionally filter by entity_type (media_player, remote, light, switch, sensor). Returns {id, name, type, integration, device_class, state} per entity.

get_deviceB

Full config for one device (entity): features, available commands, current attributes, and options.

list_device_commandsA

Commands a device exposes, for picking when mapping buttons. Returns {features, simple_commands}.

list_activitiesC

List all activities with id, name, state, description, and included entities.

get_activityC

Full activity config: included entities, on/off power sequences, button overrides, and the list of UI pages.

get_button_mappingA

Physical-button -> command bindings. scope is 'activity' (needs scope_id=activity_id), 'remote' (needs scope_id=remote entity_id), or 'device' (needs scope_id=target entity_id; returns every binding across all activities and remotes that targets that device).

list_ui_pagesA

List UI pages for a scope: 'activity' or 'remote'. scope_id is that entity's id. Returns page ids, names, grids, and item counts.

get_ui_pageA

Items on one UI page: grid size and each item's position, type, and command. Identify the page by its parent scope ('activity'/'remote'), the scope's entity_id, and the page_id (from list_ui_pages).

backup_configA

Dump the entire remote configuration (system, entities, activities, remote-entities, UI pages — full detail) to one JSON file. Defaults to %APPDATA%/uc-remote-mcp/backups/.json, keeping the last 50.

send_commandA

Fire a one-off command at a device (entity). Transient (does not change saved config) but affects the device, so defaults to dry_run=True. Set dry_run=false to actually send. Body: PUT /entities/{id}/command {cmd_id, params?}.

set_button_mappingA

Set one physical-button -> command binding on an 'activity' or 'remote'. entity_id is REQUIRED for activities (the command target) and ignored for remotes. Defaults to dry_run=True (shows before/after); auto-backs-up before any real write. Set dry_run=false to apply.

bulk_set_button_mappingA

Set the same button binding across many activities at once (e.g. route VOLUME_UP on every activity to the AVR). Filter with activity_ids and/or name_contains; no filter = all activities. Invalid activities are skipped with a reason. One backup before the batch. Defaults to dry_run=True (returns the full per-activity plan); set dry_run=false to apply.

update_ui_pageA

Update a UI page's name, grid, and/or items on an 'activity' or 'remote'. Omitted fields stay unchanged; an EMPTY items list clears the page. Item commands are validated against the scope before writing. Defaults to dry_run=True; auto-backup before any real write.

delete_ui_pageA

Delete a UI page from an 'activity' or 'remote'. IRREVOCABLE on the device — the auto-backup taken before the write is the only way back. Dry-run (default) shows the full page content that would be lost.

set_default_ui_pageA

Make a page the first/default page of an 'activity' or 'remote' UI (the page shown when it opens). Implemented as a page reorder — the API has no explicit default-page property. Defaults to dry_run=True.

update_activity_sequenceA

Replace an activity's on and/or off power sequence. Steps are {"type":"command","command":{"entity_id","cmd_id","params"?}} or {"type":"delay","delay":}. Omitted sequence = unchanged; empty list clears it. Command steps are validated against the activity's included entities. Defaults to dry_run=True; auto-backup before any real write.

diff_configA

Show what changed between the current live config and a backup file (read-only). Reports the operations a restore would perform plus differences that cannot be restored.

restore_configA

Restore activities/remotes customization (names, button mappings, UI pages, sequences) from a backup file. First call returns a confirmation_token + full plan without writing; call again with the token and dry_run=false to apply. Auto-backup of the current state is taken before applying.

list_integrationsA

Installed integration drivers and their configured instances.

device_state is not a health signal: an instance reports CONNECTED while its entities are stale. Check the entities too.

get_integrationB

One integration instance in full, including the entities it has configured.

list_integration_entitiesB

Entities an integration offers. only_new re-polls the integration and lists what is not exposed yet, which is required after pairing a new device.

configure_integration_entitiesA

Expose entities from an integration so activities and pages can use them. Additive; removes nothing. Setup finishing does not do this for you.

set_integration_enabledC

Enable or disable an integration instance.

restart_integrationA

Disable and re-enable an integration. The usual fix when devices stop responding but the integration still claims to be connected.

install_integrationA

Install a custom driver from a .tar.gz archive on this machine. There is no in-place update: delete the old driver first. Restart the system afterwards or its setup flow will not start.

delete_integrationA

Remove a driver, its instance and all its entities. Also strips every button mapping and page item that used them. Read the preview before applying.

start_integration_setupA

Begin an integration's setup and return its first screen.

Some drivers require a value up front (usually an API key) and answer "400 Setup data not provided for field: X" without it — pass setup_data={"X": "..."}. A 503 means the driver process is not running yet, which is normal right after installing: restart the system first.

get_integration_setupB

The current screen of a setup flow. 404 means no flow is in progress.

answer_integration_setupB

Answer the current setup screen and return the next. Send every field the screen asks for; a rejected step ends the flow and it must be restarted.

cancel_integration_setupA

Abandon an in-progress setup flow, changing nothing.

restart_remoteA

Restart the remote's "ui", "core", or "system". Sends no device commands and changes no configuration. "ui" is how configuration changes are made to repaint; "system" is required after installing a driver.

list_scope_entitiesC

Entities an activity or macro is currently allowed to use. scope is "activity" or "macro" — both keep their own list, and a command naming an entity outside it is rejected.

add_scope_entitiesA

Allow an activity or macro to use more entities. Exposing an entity from an integration is not enough on its own — it must also be added here before a button or page item can use it. Existing entries are preserved.

remove_scope_entitiesB

Stop an activity or macro using entities. Every button mapping and page item referencing them is removed too, so read the preview before applying.

confirm_integration_setupA

Answer a confirmation screen ("press the button on the device, then continue") and return the next one. Use answer_integration_setup for screens with fields; this is for the ones without.

delete_integration_instanceA

Remove one configured instance and its entities, keeping the driver. The teardown for firmware-shipped drivers. Also strips every button mapping and page item that used those entities — read the preview.

create_ui_pageA

Add a new page to an activity or remote-entity. scope is "activity" or "remote". grid is {"width": N, "height": M}; items use the same shape as get_ui_page returns. The page is appended last; reorder with set_default_ui_page. Every item command is validated first.

create_activityA

Create an activity — a "device" on the remote's home screen.

Pass entity_ids to build from scratch, or clone_from to copy an existing activity/macro/remote-entity; not both. icon takes "uc:name" or "custom:file.png". The empty page the remote creates alongside it is removed, and the result says if it joined the default activity group, which can make its tile power devices on and off.

Prompts

Interactive templates invoked by user choice

NameDescription

No prompts

Resources

Contextual data attached and managed by the client

NameDescription

No resources

TDQS

B3.2/5.0

Scored across 41 tools

Disambiguation4/5

Most tools target a distinct resource+action, and descriptions explicitly disambiguate close pairs like delete_integration vs delete_integration_instance and answer vs confirm_integration_setup. A few entity-listing tools (list_devices, list_integration_entities, list_scope_entities) require careful reading, but their scope qualifiers make selection possible.

Naming Consistency5/5

All tools use snake_case verb_noun names with consistent verbs (list/get/create/update/delete/set/restart). Pluralization is predictable (list_* plural, get_* singular), and modifiers like bulk_ and diff_ are used consistently.

Tool Count2/5

At 41 tools, the surface is far beyond the typical 3-15 tool sweet spot and falls in the 'too many' range even for a broad remote-control domain. While most tools are individually justified, the count makes selection harder and suggests consolidation opportunities.

Completeness3/5

The surface covers integration lifecycle, setup flows, devices, activities, UI pages, mappings, and backup/restore, which is broad. However, activities have create/get/partial update but no delete/rename, and backup_config has no companion list_backups tool, leaving some dead ends.

Maintenance

ActivityMaintained
ResponsivenessNo issues