Skip to main content
Glama
scottyphillips

echonetlite-mcp

echonetlite-mcp

npm version License: MIT Node >= 18 TypeScript

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

Or use it as an MCP server directly:

git clone https://github.com/scottyphillips/echonetlite-mcp.git
cd echonetlite-mcp
npm install
npm run build

Configuration

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.js

Option B: Edit config.ts

export const DEFAULT_HOST = '192.168.1.10';  // Change to your device IP

Lite 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_devices

Discover all ECHONETLite devices on the local network

discover_nodes

Active Node Profile probing of a specific device

set_epc

Generic EPC setter for any EOJ instance

get_property_maps

Query STATMAP/SETMAP/GETMAP with MRA names

query_epc

Query EPC codes from device with decoded values

get_epc_definition

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.js

When 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.js

The 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, only discover_devices, discover_nodes, set_epc, get_property_maps, query_epc, and get_epc_definition are available.

Device Discovery

Tool

Description

Parameters

discover_devices

Discover all ECHONETLite devices on the local network via multicast

timeout (optional) - Discovery timeout in ms (default: 3000)

discover_nodes

Active Node Profile probing of a specific device — discovers manufacturer, product code, UID, and all EOJ instances with MRA enrichment

host (required), timeout (optional)

HVAC Control (Full Mode Only)

Tool

Description

Parameters

get_device_status

Get full status of the HVAC device

host (optional) - IP address

set_operation

Turn HVAC ON or OFF

host, operation ("on" / "off")

set_operating_mode

Set operating mode

host, mode ("auto" / "cool" / "heat" / "dry" / "fan_only")

set_temperature

Set target temperature

host, temperature (0-50°C)

set_fan_speed

Set air flow rate

host, speed ("auto" / "level1"-"level8")

set_airflow_vertical

Set vertical vane position

host, position ("upper" / "upper-central" / "central" / "lower-central" / "lower")

set_airflow_horizontal

Set horizontal vane position

host, position (28 positions: rc-right, left-lc, lc-center-rc, ...)

set_swing_mode

Set swing mode function

host, mode ("not-used" / "vert" / "horiz" / "vert-horiz")

set_auto_direction

Set automatic direction mode

host, mode ("auto" / "non-auto" / "auto-vert" / "auto-horiz")

set_silent_mode

Set silent operation mode

host, mode ("normal" / "high-speed" / "silent")

set_power_saving

Set power-saving mode

host, state ("saving" / "normal")

Sensor Readings (Full Mode Only)

Tool

Description

Parameters

get_temperatures

Get room + outdoor temperatures

host (optional) - IP address

get_humidity

Get room humidity

host (optional) - IP address

EPC Introspection & MRA Lookup (Available in All Modes)

Tool

Description

Parameters

get_property_maps

Query STATMAP/SETMAP/GETMAP with MRA-based property names and descriptions

host, eojgc, eojcc, eojInstance (all optional)

query_epc

Query one or more EPC codes from device, returns raw + human-readable decoded values

epcs (required), host, eojgc, eojcc, eojInstance (all optional)

get_epc_definition

Get MRA definition for EPC codes without querying the device — includes enum values, bitmaps, level ranges, $ref-resolved definitions

epcs (required), host, eojgc, eojcc, eojInstance (all optional)

set_epc

Generic EPC setter — set any writable property on any EOJ instance by hex value

host, eojgc, eojcc, eojInstance, epc, value

parse_epc_elements

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

epc (required), rawHex (required), host, eojgc, eojcc, eojInstance, propertyName, shortName (all optional)

Available Resources

Resource URI

Description

device://status

Current HVAC status (updated via async notifications from multicast listener)

device://capabilities

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" → calls set_operation with operation="on" (Full Mode)

  • "Set temperature to 23 degrees" → calls set_temperature with temperature=23

  • "Switch to cooling mode" → calls set_operating_mode with mode="cool"

  • "What are the current temperatures?" → calls get_temperatures

  • "Find all ECHONET devices on my network" → calls discover_devices

  • "Set fan speed to level 3" → calls set_fan_speed with speed="level3"

  • "What EPC codes can I query on this device?" → calls get_property_maps

  • "Get the current operation status and target temperature" → calls query_epc with epcs=["0x80", "0xB3"]

  • "What settings are available for operating mode?" → calls get_epc_definition with epcs=["0xB0"]

  • "Discover all nodes on 192.168.1.6" → calls discover_nodes with full MRA enrichment

  • "Parse the EPC 0xE2 value 0x00 0x0A 0xFF 0xFF for EOJ 0x02 0x88 0x01" → calls parse_epc_elements to split raw bytes into named elements

Project Structure

echonetlite-mcp/
├── src/
│   ├── index.ts              # MCP server entry point & tool definitions (~1200 lines)
node dist/index.js

MRA 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 toolsquery_epc, get_property_maps, get_epc_definition return 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.

Buy Me A Coffee

Available Tools

14 tools
discover_devicesA

Discover all ECHONETLite devices on the local network via multicast

ParametersJSON Schema
NameRequiredDescriptionDefault
timeoutNoDiscovery timeout in milliseconds (default: 3000)

TDQS

A3.5/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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

ParametersJSON Schema
NameRequiredDescriptionDefault
hostNoIP address of the device (default: 192.168.1.6)

TDQS

C2.9/5.0
Behavior2/5

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.

Conciseness4/5

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.

Completeness2/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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

ParametersJSON Schema
NameRequiredDescriptionDefault
hostNoIP address of the device (default: 192.168.1.6)

TDQS

B3.2/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness2/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines2/5

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

ParametersJSON Schema
NameRequiredDescriptionDefault
hostNoIP address of the device (default: 192.168.1.6)

TDQS

B3.2/5.0
Behavior2/5

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.

Conciseness4/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines2/5

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)

ParametersJSON Schema
NameRequiredDescriptionDefault
hostNoIP address of the device (default: 192.168.1.6)
positionYesHorizontal position

TDQS

B3/5.0
Behavior1/5

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.

Conciseness5/5

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.

Completeness2/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines2/5

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

ParametersJSON Schema
NameRequiredDescriptionDefault
hostNoIP address of the device (default: 192.168.1.6)
positionYesVertical position

TDQS

B3.2/5.0
Behavior2/5

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.

Conciseness4/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines2/5

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

ParametersJSON Schema
NameRequiredDescriptionDefault
hostNoIP address of the device (default: 192.168.1.6)
modeYesAuto direction mode

TDQS

C2.5/5.0
Behavior2/5

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.

Conciseness3/5

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.

Completeness2/5

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.

Parameters3/5

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.

Purpose3/5

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.

Usage Guidelines2/5

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)

ParametersJSON Schema
NameRequiredDescriptionDefault
hostNoIP address of the device (default: 192.168.1.6)
speedYesFan speed

TDQS

B3.1/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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)

ParametersJSON Schema
NameRequiredDescriptionDefault
hostNoIP address of the device (default: 192.168.1.6)
modeYesOperating mode

TDQS

B3.3/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines2/5

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

ParametersJSON Schema
NameRequiredDescriptionDefault
hostNoIP address of the device (default: 192.168.1.6)
operationYesOperation: "on" or "off"

TDQS

B3.4/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness2/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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

ParametersJSON Schema
NameRequiredDescriptionDefault
hostNoIP address of the device (default: 192.168.1.6)
stateYesPower saving state

TDQS

B3.2/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness2/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines2/5

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

ParametersJSON Schema
NameRequiredDescriptionDefault
hostNoIP address of the device (default: 192.168.1.6)
modeYesSilent mode

TDQS

C2.2/5.0
Behavior1/5

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.

Conciseness2/5

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.

Completeness2/5

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.

Parameters3/5

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.

Purpose3/5

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.

Usage Guidelines2/5

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

ParametersJSON Schema
NameRequiredDescriptionDefault
hostNoIP address of the device (default: 192.168.1.6)
modeYesSwing mode

TDQS

C2.4/5.0
Behavior1/5

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.

Conciseness3/5

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.

Completeness2/5

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.

Parameters2/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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)

ParametersJSON Schema
NameRequiredDescriptionDefault
hostNoIP address of the device (default: 192.168.1.6)
temperatureYesTarget temperature in °C (0-50)

TDQS

B3.3/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines2/5

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.

  1. 14 tool updatesv1.0.0
    • First observeddiscover_devices
    • First observedget_device_status
    • First observedget_humidity
    • First observedget_temperatures
    • First observedset_airflow_horizontal
    • First observedset_airflow_vertical
    • First observedset_auto_direction
    • First observedset_fan_speed
    • First observedset_operating_mode
    • First observedset_operation
    • First observedset_power_saving
    • First observedset_silent_mode
    • First observedset_swing_mode
    • First observedset_temperature

TDQS

B3.4/5.0
Disambiguation5/5

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.

Naming Consistency5/5

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.

Tool Count5/5

14 tools cover essential operations for an air conditioner without being excessive. The scope is well-defined for a home automation HVAC control server.

Completeness5/5

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

ActivityStale
ResponsivenessNo issues

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

Related MCP Servers

  • A
    license
    B
    quality
    D
    maintenance
    Links 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.
    3
    371
    MIT
  • A
    license
    Not graded
    quality
    B
    maintenance
    Enables LLM agents to securely monitor and control MQTT devices for building automation, industrial control, and smart home systems through a standardized MCP interface.
    20
    MIT
  • F
    license
    Not graded
    quality
    D
    maintenance
    An 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.
    -

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/scottyphillips/echonetlite-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server