CrestronMCP client
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| CRESTRON_KEY | No | Secure key for mode 2 authentication (enables TLS + authentication) | |
| CRESTRON_TLS | No | Force TLS without a key | |
| CRESTRON_AUTH | No | Password for mode 1 authentication only | |
| CRESTRON_HOST | Yes | Processor IP/hostname (required) | |
| CRESTRON_PORT | No | TCP port (default 50794) | 50794 |
Capabilities
Features and capabilities supported by this server
| Capability | Details |
|---|---|
| tools | {
"listChanged": true
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| discover_crestron_systemA | Discover the devices and capabilities available in the Crestron system. Returns rooms, categories, and device counts. |
| list_crestron_roomsA | List all rooms in the building with their device counts. |
| list_crestron_devicesA | List controllable devices, optionally filtered by room and/or category (Lighting, AV, HVAC, Shades). |
| query_crestron_deviceA | Get the live state of a device: its current value plus whether it is idle, ramping (with target and completes_at), or pulsing (releases_at), and any pending scheduled action (with fires_at). Time fields are epoch milliseconds (matching get_crestron_time); remaining_ms / in_ms tell you directly how long until it finishes/fires, so you can decide how long to wait without polling a clock. One read tells you idle vs in-flight vs scheduled. |
| get_crestron_timeA | Get the processor's current time as epoch milliseconds (epoch_ms) and ISO 8601 (iso). Use it to correlate the absolute *_at timestamps from query_crestron_device, or whenever you need the system's real time (no need to decode a wired clock). |
| control_crestron_deviceA | Set a device's value. Optionally schedule it to run after a delay (delay_ms), e.g. "turn the porch light on in 30 seconds". |
| set_crestron_devicesA | Apply a scene/macro: set many devices in one call. Each entry can optionally fade (duration_ms, analog only - the device ramps to value instead of snapping) and/or start after a wait (delay_ms). Use for "movie night" (fade lights down over 2s + lower screen + projector on) or staged sequences. Values follow control_crestron_device rules (digital/analog/serial). A plain (no-timing) value may contain colons but not commas. |
| pulse_crestron_deviceA | Momentarily pulse a DIGITAL device: drive it on for pulse_ms, then back off - a simulated button press. Use for momentary triggers like "press the doorbell", "tap the projector power button", "trigger the gate". Optionally wait delay_ms before the pulse. Digital devices only; analog and serial devices are rejected (use control_crestron_device / ramp_crestron_device). |
| cancel_crestron_deviceA | Stop/cancel activity on a device: stop a ramp (fade) in progress and leave the level where it is, release a pulse in progress to off, and clear any pending delayed action (a scheduled set or pulse). Does not otherwise change the device's value - a device that is simply on/high from a normal set stays on. Use for "stop the fade", "stop ringing the bell", "cancel that timer". Works on any device type. |
| ramp_crestron_deviceA | Smoothly ramp (fade) an ANALOG device to a value over a duration. Use for requests like "fade the lounge lights to 50% over 3 seconds". Optionally start the fade after delay_ms ("fade down in 30 seconds, over 2 seconds"). Analog devices only; digital and serial devices don't ramp - use control_crestron_device for those (and for an instant analog set). |
| get_room_statusC | Get the status of every device in a room. |
| activate_crestron_licenseA | Activate (license) the Crestron processor with a license key the user provides. Use this when a command fails because the processor isn't licensed: the error explains how, and shows the processor's activation code (MAC). Ask the user for the license key issued for that code, then call this with it. Activation is one-time - the key is stored on the processor, so it stays licensed for every client and across reboots. The key is not a secret (it only works on this one processor), so it's fine to receive it in chat. |
| get_crestron_license_statusA | Check the processor's license/trial state: whether it's licensed right now, whether that's a time-limited free trial (time_limited), how much trial time remains (remaining_human / remaining_ms), the processor MAC, and a buy_url. Call it to orient at the start of a session and whenever license status is relevant. If it's a trial, mention the remaining time naturally; as it gets low (under ~2 days) gently offer to start another free trial or buy a license. Nudge, don't nag. |
| start_crestron_trialA | Start a free 7-day trial on this processor - no payment, no card, nothing for the user to paste. Use it when the processor is unlicensed, or when a trial has lapsed and the user wants to keep going. Each processor gets up to 3 one-week trials; this reports trials_remaining and the expiry after starting one. When the trials are used up it returns a buy link instead. The underlying AV keeps working regardless; licensing only gates this natural-language layer. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
Latest Blog Posts
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/SolutionAVAutomation/crestron-mcp-client'
If you have feedback or need assistance with the MCP directory API, please join our Discord server