CrestronMCP client
MCP for Crestron クライアント
Crestron 4-Series AV システムを自然言語で Claude から制御します。これは MCP for Crestron のクライアント側です。MCP for Crestron モジュールを実行しているプロセッサに Claude(Desktop または Code)を接続する MCP サーバーであり、システムを stdio 上の MCP ツールとして公開します。TCP 上で MCP for Crestron テキストプロトコル(PROTOCOL.md を参照)を、セキュアキー + TLS 認証で通信します。

Crestron システムに平易な英語で話しかけましょう。フルデモを見る (1:19) »
クライアントは無料です。プロセッサを制御するには、そのプロセッサがライセンス(または無料トライアル)を取得している必要があります。ライセンス を参照してください。プロセッサ 1 台のライセンスは AUD $249(税込)です。各プロセッサには無料の 1 週間トライアルが 3 回付属します。ライセンスは https://solutionav.com.au/crestron-mcp/ で取得できます。
インストール
Claude Desktop(推奨)
mcp-for-crestron.mcpb を https://solutionav.com.au/crestron-mcp/ からダウンロードして開きます(または 設定 → 拡張機能 → インストール)。プロセッサのアドレスとセキュアキー(MCP Server Config モジュールの Key 出力に表示されます)を入力します。ポートはデフォルトで 50794 です。
Claude Code / その他の MCP ホスト
ダウンロードは不要です。npm から直接実行します:
claude mcp add crestron \
--env CRESTRON_HOST=10.0.1.38 \
--env CRESTRON_KEY=<the processor's secure key> \
-- npx -y mcp-for-crestronRelated MCP server: FleetShell
設定
低いものから高いものの順に解決されます:エントリの隣の config.json、環境変数、次に CLI 引数(<host> [port])。
Env | 意味 |
| プロセッサの IP / ホスト名(必須) |
| TCP ポート(デフォルト |
| セキュアキー(モード 2);TLS + 認証を有効化 |
| パスワード(モード 1 のみ) |
| キーなしで TLS を強制 |
ツール
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。
アシスタントがこれらをどのように使用すべきか(タイミング、シーン、ランプ、nudge-not-nag ライセンスエチケット)については、AGENT_GUIDE.md を参照してください。
ライセンス
プロセッサは、制御コマンドやクエリコマンドを受け付ける前にライセンスを取得している必要があります。ライセンスがない場合、すべてのツールはプロセッサの**アクティベーションコード(MAC)**を含むガイダンスを返します。先に進む方法は 2 つあり、どちらもチャット内で行います:
無料トライアル:
start_crestron_trial(支払い不要。プロセッサごとに最大 3 回の 1 週間トライアル)。購入: その MAC のキーを https://solutionav.com.au/crestron-mcp/ で取得し、チャットに貼り付けると、アシスタントが
activate_crestron_licenseを呼び出します。
ライセンスはプロセッサ上に保存されるため(MAC にバインド)、再起動後も持続し、すべてのクライアントを対象とします。購入したキーはその 1 台のプロセッサでのみ機能するため、チャットで受け取っても安全です。
開発
npm install
npm run build # tsc -> dist/
npm start # node dist/index.js
npm run mcpb # build the Claude Desktop .mcpb (needs bun)ライセンス
MIT。LICENSE を参照してください。(クライアントはオープンです。製品はボックス上のプロセッサごとのライセンスです。)
商標
Crestron は Crestron Electronics, Inc. の登録商標です。MCP for Crestron は Solution AV Automation の製品であり、Crestron とは提携しておらず、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.
| Name | Required | Description | Default |
|---|---|---|---|
| license_key | Yes | The license key the user obtained for this processor. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Discloses one-time activation, key stored on processor, persists across reboots, and that the key is not secret. Since annotations are absent, description carries full burden and does it thoroughly.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four sentences efficiently convey purpose, usage, behavior, and security. Front-loaded with activation purpose, no redundant words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (one param, no output schema), the description covers all necessary context: when, why, how, and behavioral traits. No gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema has one param with basic description. The description adds context on how to obtain the key and its non-secret nature, going beyond the schema. Schema coverage is 100%, so baseline is 3, but description adds significant value.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states verb 'Activate' and resource 'Crestron processor' with 'license key'. Differentiates from sibling tools like 'start_crestron_trial' and 'get_crestron_license_status' by specifying activation with a user-provided key.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly says to use when a command fails due to licensing and explains how to get the key from the user based on the processor's activation code. No alternative usage needed, provides complete guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| device_id | Yes | Unique device identifier (e.g. "lounge_a3"). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It fully discloses the tool's effects: stopping ramps, releasing pulses, clearing delayed actions, but not altering a static value. It also notes applicability: 'Works on any device type.' This is complete behavioral transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is informative but slightly verbose. It front-loads the core action and uses examples effectively. While every sentence adds value, it could be trimmed slightly without losing meaning.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given only one parameter, no output schema, and a rich sibling tool list, the description is complete. It explains what the tool does, when to use it, what it avoids, and its broad applicability, leaving no important gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% coverage with a description for device_id. The tool description adds no additional parameter-level detail beyond the schema's example. Baseline of 3 is appropriate since schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Stop/cancel activity' and specifies the resource 'device'. It enumerates specific actions: stop ramp, release pulse, clear delayed action, and provides concrete examples like 'stop the fade'. This distinguishes it from sibling tools like ramp_crestron_device, pulse_crestron_device, and set_crestron_devices.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly states use cases: 'Use for "stop the fade", "stop ringing the bell", "cancel that timer".' It also clarifies what it does not do: 'Does not otherwise change the device's value - a device that is simply on/high from a normal set stays on.' This provides clear when-to-use and when-not-to-use guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
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".
| Name | Required | Description | Default |
|---|---|---|---|
| device_id | Yes | Unique device identifier (e.g. "conf_rm_a_lights_on"). | |
| value | Yes | New value - digital "0"/"1", analog "0"-"65535", or serial text. | |
| delay_ms | No | Optional delay in milliseconds before the set runs on the processor (0 / omit = immediate). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description must fully disclose behavior. It states the action and optional delay, but lacks details on idempotency, side effects, permissions, or error handling. The example adds context but is insufficient.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise: two sentences. First states purpose, second adds optional delay with an example. No unnecessary words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 3-parameter tool with no output schema and many siblings, the description is brief. It does not explain return values, how to verify success, or error cases. Adequate but not complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Input schema has 100% coverage with descriptive parameter descriptions. The description adds no new meaning beyond the schema, except for a usage example and explanation of delay_ms. Baseline is 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Set a device's value') and the resource (device), with an example. However, it does not explicitly differentiate from siblings like 'set_crestron_devices' (bulk) or 'pulse_crestron_device'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
While the description mentions optional delay and gives an example, it does not provide guidance on when to use this tool versus alternatives (e.g., pulse, ramp). No exclusions or context are given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
discover_crestron_systemA
Discover the devices and capabilities available in the Crestron system. Returns rooms, categories, and device counts.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description mentions the return format (rooms, categories, device counts) which adds context. However, with no annotations, it does not disclose whether the tool is read-only or has side effects. The verb 'Discover' implies a safe operation, but this is not explicit.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, front-loaded with the verb and resource, and contains no unnecessary words. Every sentence adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with no parameters and no output schema, the description adequately conveys the purpose and return content. It is complete enough given the simplicity of the tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, so the input schema is trivially complete. According to calibration rules, baseline score is 4 when there are no parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: to discover devices and capabilities in the Crestron system, returning rooms, categories, and device counts. It distinguishes from sibling tools like list_crestron_devices and list_crestron_rooms by focusing on high-level discovery.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for initial system exploration, but does not explicitly state when to use it versus more specific siblings like list_crestron_devices. No guidance on when not to use or alternatives is provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
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.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. It explains what the tool returns but does not mention side effects, permissions, or idempotency. The behavioral guidance on presenting results adds some context beyond raw output.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Description is concise and front-loaded with purpose. Includes extra guidance but remains efficient. Slightly verbose with the 'Nudge, don't nag' line, but overall well-structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given zero parameters and no output schema, the description adequately explains the tool's return fields and use cases. Could mention error scenarios, but is sufficiently complete for a simple status check.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
No parameters defined; schema coverage is 100%. Baseline score of 4 applies per rules for zero-parameter tools. Description adds no parameter info because none exist.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool checks the processor's license/trial state and lists specific details it returns. It distinguishes this status-checking tool from sibling tools like activate_crestron_license and start_crestron_trial.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides explicit context to call it at session start and whenever license status is relevant, plus guidance on how to present results (mention trial time, offer renewal). Lacks explicit when-not-to-use or alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
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).
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It accurately describes the tool as a read-only getter that returns epoch_ms and iso, without mentioning side effects or permissions. For a simple retrieval tool, this is sufficient and does not contradict any annotations (none provided).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences long with no filler. It front-loads the purpose and output, then immediately provides usage guidance. Every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given zero parameters and no output schema, the description fully covers the tool's behavior. It specifies the output fields and provides a clear usage scenario, making it complete for agent invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has no parameters, so schema coverage is 100%. The description adds value by explaining the output fields (epoch_ms and iso) and their use, going beyond what the schema provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'get', the resource 'processor's current time', and the output format 'epoch milliseconds and ISO 8601'. It distinguishes the tool from siblings like query_crestron_device by highlighting its use for absolute timestamps, making its purpose unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly advises using this tool to correlate timestamps from query_crestron_device or when system real time is needed, and notably suggests avoiding the need to decode a wired clock. While it doesn't explicitly state when not to use it, the guidance is clear and context-specific.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_room_statusC
Get the status of every device in a room.
| Name | Required | Description | Default |
|---|---|---|---|
| room_name | Yes | Room name or id (e.g. "Conference Room A" or "conf_rm_a"). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, and the description lacks behavioral details such as whether the operation is read-only, what side effects occur, or the format of the returned data. The description is minimal and does not disclose behaviors beyond the basic action.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence with no unnecessary words. It is front-loaded with the core purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Without an output schema, the description should clarify the return format (e.g., list of devices with status). It does not, leaving the agent uncertain about what data to expect. For a simple tool, more detail is needed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% coverage for the single parameter, and the schema description provides clear examples. The tool description does not add extra meaning beyond what the schema already provides, so a baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool retrieves the status of all devices in a room. It uses a specific verb and resource, and the name distinguishes it from sibling tools which are focused on Crestron-specific operations like licenses and device control.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives. Sibling tools like 'list_crestron_rooms' or 'query_crestron_device' could be related, but no exclusions or context are given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_crestron_devicesA
List controllable devices, optionally filtered by room and/or category (Lighting, AV, HVAC, Shades).
| Name | Required | Description | Default |
|---|---|---|---|
| room | No | Optional room name or id to filter by. | |
| category | No | Optional category to filter by (Lighting, AV, HVAC, Shades). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must fully disclose behavioral traits. While 'list' implies a read-only operation, the description does not explicitly state that it is non-destructive, idempotent, or free of side effects. It lacks depth beyond the basic operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, concise sentence that efficiently communicates the tool's action and optional filters. No redundancy or unnecessary words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (0 required params, no output schema, 2 optional params), the description adequately explains the filter options. However, it does not specify default behavior (e.g., all devices if no filters) or pagination, which would be helpful for an agent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, baseline is 3. The description adds value by listing the specific categories (Lighting, AV, HVAC, Shades) which are not enumerated in the schema. This helps the agent understand valid input values beyond the schema descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: listing controllable devices with optional filters. It uses a specific verb 'list' and resource 'controllable devices,' and distinguishes from sibling tools like control_crestron_device which perform actions rather than listing.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for listing devices with optional filters but does not provide explicit when-to-use or when-not-to-use guidance. No alternatives are mentioned, though the context of sibling tools makes the use case clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_crestron_roomsA
List all rooms in the building with their device counts.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must convey behavioral traits. It states the action but omits details like read-only nature, permissions, or output format. Given the simplicity, it is adequate but has clear gaps.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single, efficient sentence with no superfluous words. Every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter tool with no output schema, the description is sufficiently complete. It explains what it does (list rooms with device counts). Could be slightly improved by indicating list vs single result.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There are no parameters, and schema coverage is 100%. The description does not add param-specific meaning, but it is also not required. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb 'List' and resource 'all rooms' with additional detail 'with their device counts'. It clearly distinguishes from siblings like 'list_crestron_devices', which lists devices instead.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for getting an overview of rooms with device counts but does not explicitly state when to use this versus alternatives like 'get_room_status' or 'list_crestron_devices'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
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).
| Name | Required | Description | Default |
|---|---|---|---|
| device_id | Yes | Unique digital device identifier (e.g. "lounge_d3"). | |
| pulse_ms | Yes | How long to hold it on, in milliseconds (e.g. 500). | |
| delay_ms | No | Optional delay in milliseconds before the pulse starts (0 / omit = immediate). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. It discloses the pulsing behavior, rejection of non-digital devices, and optional delay. Does not detail error handling or return values, but overall is transparent about core behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Description is concise and front-loaded with the main action. Covers key points in one paragraph without verbosity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema and three parameters, the description adequately covers purpose, usage, parameter meanings, constraints, and siblings. Sufficient for an agent to select and invoke correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3. Description adds examples and clarifies that delay_ms is optional, but does not significantly extend beyond schema descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Momentarily pulse a DIGITAL device: drive it on for pulse_ms, then back off - a simulated button press.' It specifies the action (pulse), resource (digital device), and distinguishes from siblings like control_crestron_device and ramp_crestron_device.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit usage guidance: 'Use for momentary triggers like "press the doorbell", "tap the projector power button", "trigger the gate".' Also states when not to use: 'Digital devices only; analog and serial devices are rejected (use control_crestron_device / ramp_crestron_device).'
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| device_id | Yes | Unique device identifier (e.g. "conf_rm_a_lights_on"). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must disclose behavior fully. It explains the return structure and time fields (epoch milliseconds, remaining_ms/in_ms). However, it omits details like side effects (none, as a read), authentication needs, or error conditions. Still, it provides substantial behavioral context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise, front-loading the main purpose and providing details in a single paragraph. While it could be slightly more structured (e.g., bullet points), it is not verbose and every sentence adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema, the description adequately explains return values and introduces helpful fields like remaining_ms/in_ms. It covers the main states and time concepts, but lacks details on error cases or format confirmations (e.g., if device not found).
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema covers 100% of parameters with a description for device_id. The description adds no additional parameter-specific semantics beyond the schema, so the baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb ('Get') and resource ('live state of a device'), then enumerates specific state components (current value, idle/ramping/pulsing with time fields, pending scheduled action). This distinctively separates it from sibling tools like ramp_crestron_device or pulse_crestron_device.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for querying device state and explains how to interpret time fields, but does not explicitly state when to use vs. alternatives or provide exclusions. The note 'One read tells you idle vs in-flight vs scheduled' gives context, but lacks direct comparisons.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
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).
| Name | Required | Description | Default |
|---|---|---|---|
| device_id | Yes | Unique device identifier (e.g. "lounge_a1"). | |
| value | Yes | Target analog value "0"-"65535". | |
| duration_ms | Yes | Ramp duration in milliseconds (e.g. 3000 for 3 seconds). | |
| delay_ms | No | Optional delay in ms before the fade starts (0 / omit = immediate). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries burden. It discloses analog-only nature, duration, and optional delay. Could be more explicit about failure modes if device type mismatches.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with core operation, then usage guidance. No wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 4-parameter tool with 100% schema coverage and no output schema, the description is mostly complete. Minor gap: no mention of error handling if device_id invalid.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline 3. Description adds context (analog value range) but largely mirrors schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it ramps (fades) an analog device to a value over a duration, and distinguishes from sibling tools like control_crestron_device.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly says when to use (analog fade requests) and when not to (digital/serial devices, instant set), and references an alternative tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| assignments | Yes | The devices to set, each {device_id, value, duration_ms?, delay_ms?}. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It discloses that fading (duration_ms) is analog-only, that delay_ms can be applied, and that plain values may contain colons but not commas. It does not mention idempotency, authorization requirements, or side effects, but the core behavior is well-covered.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Every sentence adds value. The description is concise yet informative, front-loading the purpose and providing examples. No redundant phrasing or unnecessary details.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no annotations, no output schema, and one parameter, the description is remarkably complete. It covers purpose, usage context, parameter constraints, behavior nuances, and examples. The sibling list further aids context. There are no obvious gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3. The description adds meaning beyond schema: it explains analog-only restriction for duration_ms, the comma/colon constraint for values, and the relationship to control_crestron_device rules. These details help the agent use parameters correctly.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool applies a scene/macro by setting many devices in one call. It provides specific examples ('movie night', staged sequences) and the verb 'set' combined with 'many devices' distinguishes it from siblings like control_crestron_device (single device) and pulse_crestron_device.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly says when to use this tool (e.g., 'movie night' or staged sequences) and implies when not to use (if only setting one device, use control_crestron_device). It also references 'Values follow control_crestron_device rules' to guide value formatting. However, it does not explicitly list alternatives or state when to avoid this tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
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.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description fully discloses behavior: it starts a trial, reports trials_remaining and expiry, returns a buy link when exhausted, and clarifies that underlying AV keeps working. This is comprehensive.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise and front-loaded, with the main action stated first. Each sentence adds essential information without redundancy, making it efficient and easy to parse.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has no parameters and no output schema, the description provides complete context: what the tool does, when to use it, limits, return values, and side effects. It leaves no gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Since there are zero parameters and schema coverage is 100%, the baseline is 4. The description adds semantic value by explaining the output (trials_remaining, expiry, buy link) and operational context, exceeding the baseline.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool starts a free 7-day trial on a processor, with specifics like no payment needed. It distinguishes itself from siblings like 'activate_crestron_license' by focusing on trials and mentioning when to use it (unlicensed or lapsed trials).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly advises using the tool when the processor is unlicensed or a trial has lapsed, and it mentions the trial limit of 3 per processor. It indirectly differentiates from license activation but lacks an explicit 'do not use when' statement.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.
14 tool updates
v1.7.0- First observed
activate_crestron_license - First observed
cancel_crestron_device - First observed
control_crestron_device - First observed
discover_crestron_system - First observed
get_crestron_license_status - First observed
get_crestron_time - First observed
get_room_status - First observed
list_crestron_devices - First observed
list_crestron_rooms - First observed
pulse_crestron_device - First observed
query_crestron_device - First observed
ramp_crestron_device - First observed
set_crestron_devices - First observed
start_crestron_trial
TDQS
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
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
Use AI models for chat, image, and video generation from Claude Code and other MCP hosts.
Connect Claude AI to UluP Spaces via MCP — create projects, nodes, and tasks with OAuth 2.0.
MCP server unifying ERPs, CRMs, APIs and knowledge base for Claude, ChatGPT and Gemini.
- QuallaaOAuthcom.quallaa
Talk to your public-facing AI from any MCP client — Claude, ChatGPT, Cursor, Cline, Windsurf.
Related MCP Servers
- FlicenseNot gradedqualityDmaintenanceEnables natural language command and control of remote systems across multiple platforms through Claude AI using the Model Context Protocol.8-
- 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 gradedqualityBmaintenanceMiddleware 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.-
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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/mcp-for-crestron-client'
If you have feedback or need assistance with the MCP directory API, please join our Discord server