CrestronMCP client
This MCP server lets you discover, query, and control a Crestron AV system through natural-language MCP tools.
Discover rooms, categories, device counts, and controllable devices.
Filter devices by room and/or category (Lighting, AV, HVAC, Shades).
Query a device's live value and in-flight state (idle, ramping, pulsing, scheduled).
Get the processor's current epoch/ISO time.
Set a device value, optionally after a delay.
Apply multi-device scenes/macros with per-device values, delays, and analog fades.
Pulse digital devices for simulated button presses.
Ramp/fade analog devices smoothly over a duration.
Cancel ramps, pulses, or pending delayed actions on a device.
Get the status of every device in a room.
Check license/trial status, activate a license with a user-supplied key, and start a free trial.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@CrestronMCP client turn on the projector in room A"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
MCP for Crestron client
Control a Crestron 4-Series AV system from Claude, in natural language. This is the
client half of MCP for Crestron: an MCP server
that connects Claude (Desktop or Code) to a processor running the MCP for Crestron modules,
exposing the system as MCP tools over stdio. It speaks the MCP for Crestron text protocol
(see PROTOCOL.md) over TCP, with secure-key + TLS authentication.

Talk to your Crestron system in plain English. Watch the full demo (1:19) »
The client is free. Controlling a processor requires that processor to be licensed (or on a free trial). See Licensing. One processor licence is AUD $249 (inc GST); each processor also gets three free 1-week trials. Get a licence at https://solutionav.com.au/crestron-mcp/.
Install
Claude Desktop (recommended)
Download mcp-for-crestron.mcpb from https://solutionav.com.au/crestron-mcp/ and open it
(or Settings → Extensions → Install). Enter the processor's address and its secure key
(shown on the MCP Server Config module's Key output); the port defaults to 50794.
Claude Code / other MCP hosts
No download needed. Run it straight from npm:
claude mcp add crestron \
--env CRESTRON_HOST=10.0.1.38 \
--env CRESTRON_KEY=<the processor's secure key> \
-- npx -y mcp-for-crestron@latestUsing LibreChat or another MCP app, or choosing a model: see
OTHER_CLIENTS.md.
Related MCP server: FleetShell
Configuration
Resolved low-to-high: config.json next to the entry, environment variables, then CLI
args (<host> [port]).
Env | Meaning |
| processor IP / hostname (required) |
| TCP port (default |
| secure key (mode 2); enables TLS + authentication |
| password (mode 1 only) |
| force TLS without a key |
| optional room to start in; requests that name no room apply to it |
Tools
discover_crestron_system, list_crestron_rooms, list_crestron_devices,
query_crestron_device, get_crestron_time, get_crestron_processor_info,
control_crestron_device,
set_crestron_devices, pulse_crestron_device, ramp_crestron_device,
cancel_crestron_device, get_room_status, set_crestron_room, schedule_crestron_event,
list_crestron_schedules, remove_crestron_schedule, enable_crestron_schedule,
save_crestron_preset, list_crestron_presets, recall_crestron_preset,
remove_crestron_preset, activate_crestron_license,
get_crestron_license_status, start_crestron_trial.
See AGENT_GUIDE.md for how an assistant should use them (timing,
scenes, ramps, nudge-not-nag licensing etiquette).
Labels
The assistant only knows your system through the room, category and label set on each
channel of the modules. LABEL_GUIDE.md covers what to put in a label:
fade times, travel times, scale hints, toggles, and operating rules.
Licensing
The processor must be licensed before it accepts control or query commands. If it isn't, every tool returns guidance that includes the processor's activation code (its MAC). Two ways forward, both in chat:
Free trial:
start_crestron_trial(no payment; up to 3 × 1 week per processor).Buy: get a key for that MAC at https://solutionav.com.au/crestron-mcp/, paste it in chat, and the assistant calls
activate_crestron_license.
The licence is stored on the processor (bound to its MAC), so it persists across reboots and covers every client. A purchased key only works on that one processor, so it's safe to receive in chat.
Develop
npm install
npm run build # tsc -> dist/
npm start # node dist/index.js
npm run mcpb # build the Claude Desktop .mcpb (needs bun)License
MIT. See LICENSE. (The client is open; the product is the per-processor
licence on the box.)
Trademark
Crestron is a registered trademark of Crestron Electronics, Inc.; MCP for Crestron is a product of Solution AV Automation, not affiliated with or endorsed by Crestron.
Available Tools
14 toolsactivate_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.
Inputs: license_key (required).
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.
Inputs: device_id (required).
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".
Inputs: device_id (required), value (required), delay_ms.
discover_crestron_systemA
Discover the devices and capabilities available in the Crestron system. Returns rooms, categories, and device counts.
Inputs: no named parameters.
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.
Inputs: no named parameters.
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).
Inputs: no named parameters.
get_room_statusC
Get the status of every device in a room.
Inputs: room_name (required).
list_crestron_devicesA
List controllable devices, optionally filtered by room and/or category (Lighting, AV, HVAC, Shades).
Inputs: room, category.
list_crestron_roomsA
List all rooms in the building with their device counts.
Inputs: no named parameters.
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).
Inputs: device_id (required), pulse_ms (required), delay_ms.
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.
Inputs: device_id (required).
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).
Inputs: device_id (required), value (required), duration_ms (required), delay_ms.
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.
Inputs: assignments (required).
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.
Inputs: no named parameters.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 14 tools
Each tool targets a distinct operation: licensing (activate/check/start trial), device control (control/pulse/ramp/cancel), batch control (set), querying (query, get_room_status, list, discover), and system info (get time). No two tools have overlapping purposes; agents can easily distinguish when to use which.
Most tools follow a verb_crestron_device or verb_crestron_system pattern, with consistent snake_case. The only minor deviation is 'get_room_status' instead of 'get_crestron_room_status', but it's a single outlier and still clear.
14 tools are well-scoped for a Crestron control system: licensing (3 tools), device control (5: control, pulse, ramp, cancel, set), information (5: discover, list rooms, list devices, get room status, query device), and utility (1: get time). This covers all core operations without bloat.
The set covers the full lifecycle: discover, list, query, control (single & batch), ramp, pulse, cancel, and licensing management. Minor gaps like a 'stop all devices' or 'reset device' are absent but not essential for typical agent workflows. Overall highly complete.
Maintenance
Related MCP Connectors
Connect ChatGPT and Claude to your Mac, Windows or Linux with secure MCP remote access.
Use AI models for chat, image, and video generation from Claude Code and other MCP hosts.
MCP server unifying ERPs, CRMs, APIs and knowledge base for Claude, ChatGPT and Gemini.
Talk to your public-facing AI from any MCP client — Claude, ChatGPT, Cursor, Cline, Windsurf.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceEnables natural language command and control of remote systems across multiple platforms through Claude AI using the Model Context Protocol.8MIT
- FlicenseNot gradedqualityDmaintenanceEnables Claude AI to execute commands across multiple remote servers via SSH, with TOTP 2FA authentication and 29 built-in MCP tools for server management.-
- AlicenseNot gradedqualityDmaintenanceEnables natural language control of ESP8266 and Raspberry Pi IoT devices via Claude Desktop using the MCP protocol.MIT
- FlicenseNot gradedqualityCmaintenanceMiddleware that uses Model Context Protocol and generative AI to automatically generate native Crestron Construct interfaces (.cuig/.cuib), enabling natural language creation of AV control UI components.-