echonetlite-mcp
This MCP server enables monitoring and control of ECHONETLite-compatible home automation devices (primarily HVAC/air conditioners) over a local network.
Device Discovery
discover_devices— Scan the local network via multicast to find all ECHONETLite devices, probing Node Profiles for manufacturer, product code, UID, and EOJ instances.
HVAC Status & Monitoring
get_device_status— Retrieve the full status of an air conditionerget_temperatures— Read room and outdoor temperature sensor valuesget_humidity— Read current room relative humidityReal-time asynchronous updates via multicast listeners and
device://statusresource
HVAC Control
set_operation— Turn the device ON or OFFset_operating_mode— Switch between auto, cool, heat, dry, or fan_onlyset_temperature— Set target temperature (0–50°C)set_fan_speed— Adjust fan speed: auto or levels 1–8set_airflow_vertical— Control vertical vane positionset_airflow_horizontal— Control horizontal vane position (28 options)set_swing_mode— Configure swing (not-used, vertical, horizontal, or both)set_auto_direction— Set automatic airflow directionset_silent_mode— Choose normal, high-speed, or silent operationset_power_saving— Toggle power-saving mode
Generic ECHONETLite Property Introspection
query_epc/set_epc— Query or set any EPC property on any EOJ instanceget_property_maps— Retrieve STATMAP/SETMAP/GETMAP with MRA-based namesget_epc_definition— Look up MRA definitions (enums, bitmaps, level ranges) without querying the device
Notes
All tools accept an optional
hostparameter to target a specific device IPA Lite Mode is available that restricts tools to generic EPC introspection only
Allows control of Mitsubishi air conditioners via ECHONETLite, including setting operation mode, temperature, fan speed, airflow direction, and reading temperature/humidity sensor data.
Provides tools for controlling Panasonic air conditioners via ECHONETLite, including setting operation mode, temperature, fan speed, airflow direction, and reading temperature/humidity sensor data.
Enables control of Toshiba air conditioners via ECHONETLite, including setting operation mode, temperature, fan speed, airflow direction, and reading temperature/humidity sensor data.
Click on "Install 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., "@echonetlite-mcpturn on the air conditioner and set to 24 degrees"
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.
echonetlite-mcp
An MCP (Model Context Protocol) server for ECHONETLite home automation — control air conditioners, discover devices, and read sensors via the Model Context Protocol.
ECHONETLite is a Japanese IoT protocol widely used in smart home devices, particularly HVAC systems by major manufacturers like Daikin, Panasonic, Mitsubishi Electric, and Toshiba.
Features
🌡️ Real-time HVAC monitoring — temperature, humidity, operating status
❄️ Full climate control — mode, fan speed, airflow direction, swing
🔍 Network device discovery — find ECHONETLite devices via multicast UDP
🔬 Node Profile probing — discover manufacturer, product code, UID, and all EOJ instances on any device
⚡ Real-time notifications — async updates from device multicast listeners
📖 MRA enrichment — Machine Readable Index integration for property names, descriptions, and value decoding
🔬 EPC introspection — query property maps (STATMAP/SETMAP/GETMAP) with MRA-based names
🏷️ Human-readable values — raw EPC values decoded to human-friendly format using MRA definitions
🧩 EPC element parsing — parse complex object/array-type EPC values into named elements with MRA definitions
🎯 Multi-EPC queries — query multiple EPC codes in a single request
🔧 Generic EOJ support — set/query any ECHONETLite object by group/class/instance codes
📦 TypeScript-first — full type definitions included
🔌 MCP compatible — works with any MCP client (Claude Desktop, LM Studio, VS Code extensions, etc.)
Related MCP server: MQTT MCP Server
Prerequisites
Node.js 18+
An ECHONETLite-compatible device on the same local network
Installation
npm install echonetlite-mcpOr use it as an MCP server directly:
git clone https://github.com/scottyphillips/echonetlite-mcp.git
cd echonetlite-mcp
npm install
npm run buildConfiguration
The server defaults to communicating with a device at 192.168.1.6 on UDP port 3610, using multicast address 224.0.23.0:3610 for discovery and notifications.
Setting the Default Device IP
Option A: Environment variable (recommended)
# Windows CMD
set ECHONET_DEFAULT_HOST=192.168.1.10 && node dist/index.js
# PowerShell
$env:ECHONET_DEFAULT_HOST="192.168.1.10"; node dist/index.js
# Linux/macOS
ECHONET_DEFAULT_HOST=192.168.1.10 node dist/index.jsOption B: Edit config.ts
export const DEFAULT_HOST = '192.168.1.10'; // Change to your device IPLite Mode (Restricted Tool Set)
Enable Lite Mode to restrict exposed tools to a minimal subset. In lite mode, only these 6 tools are available:
Tool | Description |
| Discover all ECHONETLite devices on the local network |
| Active Node Profile probing of a specific device |
| Generic EPC setter for any EOJ instance |
| Query STATMAP/SETMAP/GETMAP with MRA names |
| Query EPC codes from device with decoded values |
| Get MRA definition for EPC codes without querying |
All HVAC-specific tools (get_device_status, set_operation, set_temperature, etc.) are hidden in lite mode.
Enable Lite Mode:
# Windows CMD
set ECHONET_LITE_MODE=true && node dist/index.js
# PowerShell
$env:ECHONET_LITE_MODE="true"; node dist/index.js
# Linux/macOS
ECHONET_LITE_MODE=true node dist/index.jsWhen lite mode is enabled, the server logs (Mode: LITE) on startup. When disabled (default), it logs (Mode: FULL) with all tools available.
Per-Tool Override
Every tool accepts an optional host parameter to override the default for that specific call:
{ "name": "get_device_status", "arguments": { "host": "192.168.1.20" } }Running the Server
# Build first
npm run build
# Run (stdio transport)
node dist/index.jsThe server communicates via stdio, making it compatible with any MCP client.
Integration with AI Clients
Claude Desktop
Add to your Claude Desktop MCP configuration (claude_desktop_config.json):
{
"mcpServers": {
"echonetlite": {
"command": "node",
"args": ["/path/to/echonetlite-mcp/dist/index.js"],
"env": {
"ECHONET_DEFAULT_HOST": "192.168.1.6"
}
}
}
}LM Studio
LM Studio supports MCP servers via stdio transport. Create or edit the MCP config file:
Windows: %APPDATA%\lm-studio\mcp_config.json
macOS/Linux: ~/.config/lm-studio/mcp_config.json
{
"mcpServers": {
"echonetlite-mcp": {
"command": "node",
"args": ["C:\\path\\to\\echonetlite-mcp\\dist/index.js"],
"env": {
"ECHONET_DEFAULT_HOST": "192.168.1.6"
}
}
}
}VS Code MCP Extension
Configure in your VS Code MCP extension settings:
{
"mcp.servers": [
{
"name": "echonetlite",
"command": "node",
"args": ["/path/to/echonetlite-mcp/dist/index.js"],
"env": {
"ECHONET_DEFAULT_HOST": "192.168.1.6"
}
}
]
}Available Tools
Note: When
ECHONET_LITE_MODE=true, onlydiscover_devices,discover_nodes,set_epc,get_property_maps,query_epc, andget_epc_definitionare available.
Device Discovery
Tool | Description | Parameters |
| Discover all ECHONETLite devices on the local network via multicast |
|
| Active Node Profile probing of a specific device — discovers manufacturer, product code, UID, and all EOJ instances with MRA enrichment |
|
HVAC Control (Full Mode Only)
Tool | Description | Parameters |
| Get full status of the HVAC device |
|
| Turn HVAC ON or OFF |
|
| Set operating mode |
|
| Set target temperature |
|
| Set air flow rate |
|
| Set vertical vane position |
|
| Set horizontal vane position |
|
| Set swing mode function |
|
| Set automatic direction mode |
|
| Set silent operation mode |
|
| Set power-saving mode |
|
Sensor Readings (Full Mode Only)
Tool | Description | Parameters |
| Get room + outdoor temperatures |
|
| Get room humidity |
|
EPC Introspection & MRA Lookup (Available in All Modes)
Tool | Description | Parameters |
| Query STATMAP/SETMAP/GETMAP with MRA-based property names and descriptions |
|
| Query one or more EPC codes from device, returns raw + human-readable decoded values |
|
| Get MRA definition for EPC codes without querying the device — includes enum values, bitmaps, level ranges, $ref-resolved definitions |
|
| Generic EPC setter — set any writable property on any EOJ instance by hex value |
|
| Parse object/array-type EPC values into named elements with raw hex bytes per element — use after querying EPC data (e.g., 0xE2) to get structured breakdown |
|
Available Resources
Resource URI | Description |
| Current HVAC status (updated via async notifications from multicast listener) |
| Device property map (GETMAP, SETMAP, NTFMAP) |
EPC Reference Table
EPC | Property | Access | Values |
0x80 | Operation status | Set/Get | 0x30=ON, 0x31=OFF |
0x8F | Power-saving operation | Set/Get | Saving/Normal |
0xA0 | Air flow rate (fan speed) | Set/Get | Auto=0x41, Levels=0x31-0x38 |
0xA1 | Automatic airflow direction | Set/Get | Auto/Non-auto/Auto-vert/Auto-horiz |
0xA3 | Air swing mode | Set/Get | Not-used/Vert/Horiz/Vert-horiz |
0xA4 | Airflow direction (vertical) | Set/Get | Upper/Upper-central/Central/Lower-central/Lower |
0xA5 | Airflow direction (horizontal) | Set/Get | 28 positions (rc-right, left-lc, center, etc.) |
0xB0 | Operation mode | Set/Get | Auto=0x41, Cool=0x42, Heat=0x43, Dry=0x44, Fan-only=0x45 |
0xB1 | Automatic temperature control | Set/Get | — |
0xB2 | Normal/High-speed/Silent operation | Set/Get | — |
0xB3 | Set temperature | Set/Get | 0-50°C (signed int) |
0xB4 | Set humidity in dehumidifying mode | Set/Get | — |
0xBA | Room relative humidity | Get | Percentage |
0xBB | Room temperature | Get | -127 to 125°C (signed int) |
0xBE | Outdoor air temperature | Get | Signed int |
0xC0 | Ventilation function | Set/Get | — |
0xC1 | Humidifier function | Set/Get | — |
0xCC | Special function setting | Set/Get | Clothes dryer, Mite/mold control, etc. |
0xCF | Air purification mode | Set/Get | — |
0x9D | STATMAP (access capability) | Get | Property access map |
0x9E | SETMAP (settable properties) | Get | Settable property map |
0x9F | GETMAP (readable properties) | Get | Readable property map |
Example Prompts
Try these natural language prompts with your MCP client:
"Turn on my air conditioner"→ callsset_operationwithoperation="on"(Full Mode)"Set temperature to 23 degrees"→ callsset_temperaturewithtemperature=23"Switch to cooling mode"→ callsset_operating_modewithmode="cool""What are the current temperatures?"→ callsget_temperatures"Find all ECHONET devices on my network"→ callsdiscover_devices"Set fan speed to level 3"→ callsset_fan_speedwithspeed="level3""What EPC codes can I query on this device?"→ callsget_property_maps"Get the current operation status and target temperature"→ callsquery_epcwithepcs=["0x80", "0xB3"]"What settings are available for operating mode?"→ callsget_epc_definitionwithepcs=["0xB0"]"Discover all nodes on 192.168.1.6"→ callsdiscover_nodeswith full MRA enrichment"Parse the EPC 0xE2 value 0x00 0x0A 0xFF 0xFF for EOJ 0x02 0x88 0x01"→ callsparse_epc_elementsto split raw bytes into named elements
Project Structure
echonetlite-mcp/
├── src/
│ ├── index.ts # MCP server entry point & tool definitions (~1200 lines)
node dist/index.jsMRA Integration
This server includes full MRA (Machine Readable Index) data integration:
Property names & descriptions — human-readable labels for each EPC code from MRA definitions
Value decoding — raw hex values decoded to meaningful strings/numbers using MRA type schemas
Enum/bitmap support — full enumeration of possible values with $ref resolution
Level ranges & number formats — signed/unsigned integers, fixed-point decimals
$ref resolution — external definition references from definitions.json resolved automatically
MRA enrichment in all tools —
query_epc,get_property_maps,get_epc_definitionreturn enriched responses
The MRA data enables intelligent discovery of what settings are available for any EPC code without needing to query the device first.
References
License
MIT License — see LICENSE for details.
Support
For issues, questions, or contributions, please open an issue on GitHub.

Available Tools
14 toolsdiscover_devicesA
Discover all ECHONETLite devices on the local network via multicast
| Name | Required | Description | Default |
|---|---|---|---|
| timeout | No | Discovery timeout in milliseconds (default: 3000) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, and the description lacks crucial behavioral details such as network impact, idempotency, permissions required, or whether results are cached. It only mentions multicast and timeout.
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, well-structured sentence conveys the tool's purpose without unnecessary words. Every part 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?
Adequate for a simple tool with one optional parameter, but lacks description of the output format or any side effects, given the absence of an output schema.
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%, and the description does not add meaning beyond the schema for the 'timeout' parameter. 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 clearly states the verb 'Discover' and the resource 'all ECHONETLite devices on the local network via multicast', distinguishing it from sibling tools that operate on specific device statuses or settings.
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 explicit guidance on when to use this tool versus alternatives. It is implied as initial discovery before interacting with individual devices, but fails to state prerequisites or scenarios.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_device_statusC
Get full status of the home air conditioner device
| Name | Required | Description | Default |
|---|---|---|---|
| host | No | IP address of the device (default: 192.168.1.6) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full responsibility for behavioral disclosure. It only conveys a read-like operation ('Get') but does not confirm safety (e.g., no side effects), authentication needs, or other behavioral traits. The minimal description is insufficient for an agent to assess risks or side effects.
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, focused sentence that front-loads the core purpose without extraneous information. It is appropriately concise for a simple tool, though it could benefit from slightly more contextual detail without sacrificing brevity.
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 lack of an output schema, the description should elaborate on what 'full status' includes, especially since siblings offer granular reads. It does not specify return values, pagination, or the default host behavior. With many sibling tools, more contextual guidance is needed for effective selection.
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 already fully documents the only parameter ('host') with a description and default value. The tool description adds no additional parameter-level meaning beyond the schema. With 100% schema coverage, the baseline of 3 is appropriate, as the description does not enhance parameter understanding.
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 'Get full status of the home air conditioner device', specifying a distinct resource ('full status') that differentiates it from siblings like get_humidity and get_temperatures which target specific metrics. However, it doesn't explicitly contrast with those tools, leaving some ambiguity about what 'full status' entails.
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 such as get_humidity or get_temperatures. The description does not include any explicit when-to-use or when-not-to-use instructions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_humidityB
Get the current room relative humidity reading
| Name | Required | Description | Default |
|---|---|---|---|
| host | No | IP address of the device (default: 192.168.1.6) |
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 implies a read-only operation but does not explicitly state behavioral traits such as being non-destructive or requiring network connectivity.
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 sentence that is front-loaded and concise, with no extraneous information.
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?
The description is minimal and lacks behavioral context, return value format, and usage guidance. For a simple read tool with no output schema, more detail on what the reading represents (e.g., percentage) would be helpful.
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%, with the 'host' parameter fully described in the schema. The description adds no additional semantics beyond what the schema provides, meeting 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 verb 'get' and resource 'current room relative humidity reading', which is specific and distinguishes from sibling tools like 'get_temperatures' and 'get_device_status'.
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 provides no guidance on when to use this tool compared to alternatives like 'discover_devices' or 'get_device_status', nor does it mention prerequisites or context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_temperaturesB
Get both room temperature and outdoor temperature readings
| Name | Required | Description | Default |
|---|---|---|---|
| host | No | IP address of the device (default: 192.168.1.6) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. It does not disclose behavioral traits like read-only nature, error handling, or what happens if the device is unreachable.
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 with no wasted words. It is appropriately sized for a simple tool.
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?
With one optional parameter and no output schema, the description is minimal. It lacks details on return values or behavior, but is adequate for a basic read operation.
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% with one parameter described. The description adds no extra meaning beyond the schema, resulting in a baseline score of 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 verb 'Get' and specifies the resources: room temperature and outdoor temperature. It distinguishes from sibling tools like get_humidity and get_device_status.
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 on when to use this tool versus alternatives like get_humidity or get_device_status. No context about prerequisites or common use cases.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_airflow_horizontalB
Set the horizontal vane/airflow position (28 positions available)
| Name | Required | Description | Default |
|---|---|---|---|
| host | No | IP address of the device (default: 192.168.1.6) | |
| position | Yes | Horizontal position |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Description lacks behavioral disclosure such as whether the operation is reversible, requires special permissions, or has side effects. With no annotations to rely on, the tool definition is insufficient in 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 a single, clear sentence that immediately states the tool's function. It is concise with 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?
The description fails to provide complete context for the operation. It does not explain the meaning of the position values (e.g., 'left-lc-right' represents vane orientation), nor does it describe the expected outcome or any prerequisites. Given no output schema and no annotations, more is needed for completeness.
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% and the description does not add additional parameter semantics beyond the enum values and default IP. Baseline score of 3 is appropriate as the schema already documents parameters adequately.
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 specifies the verb 'Set' and the resource 'horizontal vane/airflow position', and distinguishes from sibling 'set_airflow_vertical' by mentioning horizontal.
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 on when to use this tool versus alternatives like set_airflow_vertical or set_swing_mode. The description only states the function without context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_airflow_verticalB
Set the vertical vane/airflow position
| Name | Required | Description | Default |
|---|---|---|---|
| host | No | IP address of the device (default: 192.168.1.6) | |
| position | Yes | Vertical position |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, and the description does not disclose behavioral traits such as side effects, required permissions, or failure modes. The tool name implies mutation but lacks explicit 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?
Description is a single concise sentence that efficiently communicates the tool's purpose, though it could potentially include more detail without being verbose.
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 (2 params, no output schema), the description is minimally adequate but lacks behavioral context and usage guidance, making it incomplete for an optimal agent experience.
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 parameters are well-documented. The description adds no additional meaning beyond the schema; baseline score applies.
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?
Description explicitly states the action 'Set' and the resource 'vertical vane/airflow position', clearly distinguishing it from sibling tools like 'set_airflow_horizontal'.
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 on when to use this tool, prerequisites, or alternatives. The description is purely functional without context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_auto_directionC
Set the automatic airflow direction mode
| Name | Required | Description | Default |
|---|---|---|---|
| host | No | IP address of the device (default: 192.168.1.6) | |
| mode | Yes | Auto direction mode |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description should disclose effects or side effects (e.g., overriding manual settings), but it only repeats the tool name. No behavioral details are given.
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 waste, but it is under-specified. It could be expanded slightly without losing conciseness.
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 lack of annotations and output schema, the description does not adequately explain the tool's effect or return behavior. It is insufficient for an agent to fully understand the tool's purpose.
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 the description adds no extra value beyond the schema. The enum values are self-explanatory from the schema, and the description does not clarify their meaning or consequences.
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 states the tool sets a mode for automatic airflow direction, but it doesn't specify what 'automatic airflow direction mode' entails or how it differs from sibling tools like set_airflow_horizontal or set_swing_mode.
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 such as set_airflow_horizontal or set_swing_mode. The description lacks context about prerequisites or use cases.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_fan_speedB
Set the air flow rate (fan speed)
| Name | Required | Description | Default |
|---|---|---|---|
| host | No | IP address of the device (default: 192.168.1.6) | |
| speed | Yes | Fan speed |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden of behavioral disclosure. It only states the action, but does not mention side effects, required device state, or whether the change is reversible. For a mutation tool, this 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 a single concise sentence that front-loads the action and resource with no unnecessary words. It is appropriately sized for a simple tool.
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 simple set tool with good schema coverage, the description is adequate but lacks output behavior or any mention of default values or side effects. It could mention that the host parameter defaults to 192.168.1.6.
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% as both parameters have descriptions. The description adds no new semantic information beyond the schema, but the enum values for speed are clear. 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 clearly states that the tool sets the fan speed, which is a specific action on a device. It is distinct from sibling tools like set_airflow_horizontal or set_swing_mode, but could be more explicit about the resource (e.g., 'of the HVAC 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?
No guidance is provided on when to use this tool versus alternatives like set_airflow_horizontal or set_auto_direction. The description does not mention any prerequisites or context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_operating_modeB
Set the HVAC operating mode (auto, cool, heat, dry, fan_only)
| Name | Required | Description | Default |
|---|---|---|---|
| host | No | IP address of the device (default: 192.168.1.6) | |
| mode | Yes | Operating mode |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden for behavioral disclosure. It only states that the tool sets the operating mode, but does not mention side effects (e.g., whether it overrides other settings), authentication needs, or response behavior. For a mutation tool, this 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 a single, efficient sentence that is front-loaded with the action and resource. Every word serves a purpose with no redundancy or fluff.
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 simple tool with a single required enum parameter, the description covers the essential purpose. However, it lacks information about return values, error conditions, or idempotency, which would be helpful since no output schema is provided.
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% and both parameters have descriptions and enum values. The description adds the context 'HVAC operating mode' but does not provide additional meaning beyond what the schema already offers. 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 clearly specifies the verb 'Set', the resource 'HVAC operating mode', and lists the five possible values. This makes the tool's purpose immediately understandable and distinguishes it from sibling tools like set_temperature or set_fan_speed.
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 provides no guidance on when to use this tool versus alternatives such as set_operation or set_swing_mode. It lacks explicit when-to-use or when-not-to-use context, which is a gap given the number of sibling tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_operationB
Turn the home air conditioner ON or OFF
| Name | Required | Description | Default |
|---|---|---|---|
| host | No | IP address of the device (default: 192.168.1.6) | |
| operation | Yes | Operation: "on" or "off" |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations; description only states the action, missing effects like whether turning off stops all operations or prerequisites such as device discovery.
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?
Single clear sentence with no waste.
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?
No output schema; lacks details on return values, side effects, or interactions with sibling tools like set_operating_mode.
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 already covers both parameters with descriptions; description adds minimal value by restating operation values.
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?
Description clearly states verb (turn ON/OFF) and resource (home air conditioner), distinct from sibling tools that adjust other settings.
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?
Implied usage for turning AC on/off, but no explicit when/when-not or alternatives provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_power_savingB
Set the power-saving operation mode
| Name | Required | Description | Default |
|---|---|---|---|
| host | No | IP address of the device (default: 192.168.1.6) | |
| state | Yes | Power saving state |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, and the description does not disclose behavioral traits such as side effects, reversibility, or required permissions for this mutation 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 with no wasted words, effectively communicating the tool's 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?
Given the tool's simplicity and lack of output schema, the description does not explain the effects of each state ('saving' vs 'normal') or what happens after setting, leaving gaps in understanding.
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% with descriptions for both parameters. The description adds no new meaning beyond the schema, so 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 clearly states the verb 'Set' and the resource 'power-saving operation mode', which distinguishes it from sibling tools like set_operating_mode or set_silent_mode.
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 on when to use this tool versus alternatives, nor any prerequisites or context about power-saving scenarios.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_silent_modeC
Set the silent operation mode
| Name | Required | Description | Default |
|---|---|---|---|
| host | No | IP address of the device (default: 192.168.1.6) | |
| mode | Yes | Silent mode |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, and description does not disclose effects, side effects, prerequisites, or any behavioral traits of setting this mode. For a mutation tool, this is a critical gap.
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?
Single short sentence, but it is under-specified and does not earn its place as it provides minimal valuable information.
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?
No annotations or output schema, and description fails to explain what 'silent operation mode' entails or how it differs from other modes. Incomplete for a tool with 2 parameters and many siblings.
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 no extra meaning beyond what the schema already provides for 'host' and 'mode'.
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?
Description states a verb and resource ('Set silent operation mode'), but the name 'set_silent_mode' implies only silent mode, while the mode parameter includes 'normal' and 'high-speed'. Also, no differentiation from sibling 'set_operating_mode' is given.
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 on when to use this tool versus alternatives like 'set_operating_mode' or other mode setters. Context for choosing 'silent', 'normal', or 'high-speed' is absent.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_swing_modeC
Set the air swing/swing mode function
| Name | Required | Description | Default |
|---|---|---|---|
| host | No | IP address of the device (default: 192.168.1.6) | |
| mode | Yes | Swing mode |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, and the description fails to disclose any behavioral traits such as whether it overrides other settings, requires device power, or has side effects. The single sentence provides no 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 a single short sentence, appropriately sized but lacks structure or front-loading. It is concise but not well-organized for quick scanning.
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?
With two parameters and no output schema or annotations, the description does not cover return values, side effects, or when the setting takes effect. Incomplete for a settings 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?
Schema coverage is 100%, so the schema already describes host and mode. The description adds no extra meaning or usage hints beyond what the enum values imply.
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 sets the swing mode function. It distinguishes from siblings like set_airflow_horizontal and set_airflow_vertical by using 'swing mode', but doesn't explicitly differentiate or clarify the unique role.
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 on when to use this tool versus alternatives like set_auto_direction or set_airflow_vertical. No prerequisites, context, or exclusion criteria provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_temperatureB
Set the target temperature (0-50°C)
| Name | Required | Description | Default |
|---|---|---|---|
| host | No | IP address of the device (default: 192.168.1.6) | |
| temperature | Yes | Target temperature in °C (0-50) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so the description carries full burden. It only states the action and range, but omits behavioral traits like whether the setting persists after power loss, whether it triggers immediate change or requires a subsequent command, or error handling. For a write action, this 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?
Single sentence, no redundancy, front-loaded with verb and resource. Every word earns its place. Despite brevity, it conveys the core purpose efficiently.
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 simple setter tool with well-defined parameters (schema covers all), the description is minimal but functional. However, without an output schema, the agent receives no hint about return values or success/failure indicators, which would be helpful for invocation logic.
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%, so baseline is 3. The description adds no additional meaning beyond the schema: it repeats the range but does not elaborate on the 'host' parameter's role or default behavior. No deeper semantics are provided.
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 'Set' and the resource 'target temperature', along with the valid range 0-50°C. This immediately distinguishes it from sibling tools like set_fan_speed or set_operating_mode, which operate on different aspects.
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 on when to use this tool versus alternatives (e.g., set_operation for turning on/off). The description does not specify prerequisites, such as needing the device to be powered on, or any conditions under which setting temperature is inappropriate. No when-not or exclusionary context.
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.0.0- First observed
discover_devices - First observed
get_device_status - First observed
get_humidity - First observed
get_temperatures - First observed
set_airflow_horizontal - First observed
set_airflow_vertical - First observed
set_auto_direction - First observed
set_fan_speed - First observed
set_operating_mode - First observed
set_operation - First observed
set_power_saving - First observed
set_silent_mode - First observed
set_swing_mode - First observed
set_temperature
TDQS
Each tool targets a distinct aspect of the air conditioner: discovery, status retrieval, humidity, temperatures, and various control parameters. There is no overlap or ambiguity.
All tool names follow a consistent pattern: verb_noun using snake_case (e.g., discover_devices, get_status, set_temperature). The verbs (discover, get, set) are uniform and clear.
14 tools cover essential operations for an air conditioner without being excessive. The scope is well-defined for a home automation HVAC control server.
The set covers all core CRUD-like operations: discovery, status reading, temperature/humidity sensing, and full control (on/off, mode, fan, airflow, power saving, silent). No obvious missing functionality.
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
Protocol-native energy infrastructure orchestration for AI data centers. Provides 46 MCP tools across 8 grid protocols (IEC-61850, DNP3, Modbus, OCPP, OpenADR, IEEE 2030.5, IEC 60870-5-104, ICCP) with 5 core API primitives: connect, dispatch, settle, comply, and intel. Enables AI agents to programmatically interact with substations, grid interfaces, and energy assets for real-time workload-grid coordination.
Let AI agents query data and act across all your business apps via MCP.
Automate 1,000+ services from any MCP-compatible AI agent: build Applets, run actions and queries.
Self-hosted MCP gateway: turn any API, database or MCP server into AI connectors — no code.
Related MCP Servers
- AlicenseBqualityDmaintenanceLinks IoT devices to AI large models using the MCP and MQTT protocols, enabling natural language control, real-time AI responses, and complex instruction execution for interconnected IoT devices.3371MIT
- AlicenseNot gradedqualityBmaintenanceEnables LLM agents to securely monitor and control MQTT devices for building automation, industrial control, and smart home systems through a standardized MCP interface.20MIT
- AlicenseBqualityAmaintenanceEnables control of Matter smart-home devices via REST and MCP APIs, supporting lights, sensors, and AC units with federation capabilities.23MIT
- FlicenseNot gradedqualityDmaintenanceAn MCP server that enables LLMs to control Mitsubishi Electric AC units through MELCloud, supporting device listing, power on/off, temperature changes, and smart auto comfort mode.-
Appeared in Searches
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/scottyphillips/echonetlite-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server