Skip to main content
Glama
README.md
# 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](https://solutionav.com.au/crestron-mcp/): 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`](PROTOCOL.md)) over TCP, with secure-key + TLS authentication.

[![MCP for Crestron: controlling a boardroom from Claude in plain English](demo-poster.jpg)](https://solutionav.com.au/mcp-for-crestron/media/mcp-for-crestron-demo-full.mp4)

*Talk to your Crestron system in plain English. [Watch the full demo (1:19) »](https://solutionav.com.au/mcp-for-crestron/media/mcp-for-crestron-demo-full.mp4)*

The client is **free**. Controlling a processor requires that processor to be licensed
(or on a free trial). See [Licensing](#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:

```bash
claude mcp add crestron \
  --env CRESTRON_HOST=10.0.1.38 \
  --env CRESTRON_KEY=<the processor's secure key> \
  -- npx -y mcp-for-crestron
```

## Configuration

Resolved low-to-high: `config.json` next to the entry, environment variables, then CLI
args (`<host> [port]`).

| Env | Meaning |
| --- | --- |
| `CRESTRON_HOST` | processor IP / hostname (required) |
| `CRESTRON_PORT` | TCP port (default `50794`) |
| `CRESTRON_KEY`  | secure key (mode 2); enables TLS + authentication |
| `CRESTRON_AUTH` | password (mode 1 only) |
| `CRESTRON_TLS`  | force TLS without a key |

## Tools

`discover_crestron_system`, `list_crestron_rooms`, `list_crestron_devices`,
`query_crestron_device`, `get_crestron_time`, `control_crestron_device`,
`set_crestron_devices`, `pulse_crestron_device`, `ramp_crestron_device`,
`cancel_crestron_device`, `get_room_status`, `activate_crestron_license`,
`get_crestron_license_status`, `start_crestron_trial`.

See [`AGENT_GUIDE.md`](AGENT_GUIDE.md) for how an assistant should use them (timing,
scenes, ramps, nudge-not-nag licensing etiquette).

## 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

```bash
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`](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.

TDQS

A3.9/5.0

Scored across 14 tools

Disambiguation5/5

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.

Naming Consistency4/5

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.

Tool Count5/5

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.

Completeness4/5

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

ActivitySlowing
ResponsivenessNo issues