Skip to main content
Glama

Meiju MCP / 美居空调 MCP

English

用自己的美居账号,让 AI Agent 按家庭、房间和设备名称查询与控制空调。正在开发的 Go 共享服务让桌面菜单栏 App 和 Agent 复用同一登录态与操作逻辑。

版本状态:v0.2.1 是已发布的 Python 预发布版。main 包含尚未发布的 Python 可选持久化及 Go + Swift 开发预览;没有发布新的 Go 安装包。项目未上架 PyPI,与美的、美居无隶属关系或官方背书。

安装说明 · Skill 安装 · 对话示例 · 兼容性 · Go 验收 · 安全说明

能做什么

  • 用户在运行 MCP 的同一台电脑上,通过本机浏览器输入手机号、短信验证码及必要的图形验证码。

  • 列举账号已绑定的设备,读取空调电源、设定温度、室温、模式、风速和候选能力;未知值保留为未知。

  • Agent 按家庭、房间、设备名称匹配目标;有歧义时先澄清。

  • 实验性控制电源、17–30°C 的半度步进温度、模式和风速。每次写入前核验归属并读取状态,写入一次后回读,不自动重试不确定写入。

  • Go 开发版支持 App/Agent 共享登录、可选加密保存、重启恢复和保留登录态的目录迁移。当前 Swift 测试 App 默认只读。

不支持注册或找回账号、设备绑定、摆风、定时、耗电统计、局域网直连和远程托管登录。查询与控制依赖美居云端;不承诺海外 MSmartHome 账号或其他美的家电兼容。

Related MCP server: agent-browser-mcp

架构

flowchart TD
    A[Swift 菜单栏 App] --> BA[Go bridge · app]
    U[AI Agent + meiju-control Skill] --> BC[Go bridge · codex]
    BA --> G[Go 共享服务 · 7 个 MCP 工具]
    BC --> G
    B[同机浏览器 · 用户手动登录] --> G
    G --> C[美居云端 API]
    C --> D[已绑定空调]
    G <--> S[加密会话文件 + 固定 Profile 身份]
    G --> H[固定身份凭据助手]
    BA -.连接凭据.-> H
    BC -.连接凭据.-> H
    H <--> K[系统凭据库]

一个 Go 服务管理一个账号/profile。bridge 是客户端启动的轻量转发进程,通过带客户端认证和证书绑定的本机 HTTPS 连接共享服务;App 和 Codex 使用独立连接身份。退出客户端不等于退出账号,显式退出共享账号会影响同一 profile 的客户端。

Go 主程序负责云端协议、登录、设备权限、状态和控制;Swift 负责界面;Skill 负责对话流程。主运行程序不需要捆绑 Python 环境。固定助手独立构建,避免每次重编译服务都改变钥匙串访问身份。

**Python 入口继续保留:**Agent → 本地 stdio Python MCP → 美居云端。现有 Python 配置不会自动切换到 Go;两种实现不自动导入对方的凭据。Go 也提供独立 stdio 模式,详见 Go 开发说明。

选择安装路线

路线

用途

当前范围

Python v0.2.1 预发布包

先通过 Agent 使用 MCP

Python 3.11+;已有跨平台离线测试及 macOS 真机证据

main 上的 Python 源码

验证尚未发布的可选持久化

系统凭据库可用时保存;也可使用 --session-only

Go + Swift 开发预览

App 与 Agent 共享账号服务

macOS 14+ 本机开发安装;需要 Go 1.25+、Swift 6/Xcode 命令行工具及 Python 3 安装辅助脚本

Go 的 Windows/Linux 程序可以交叉编译,但固定助手安装器和原生凭据库验收尚未完成,不作为可直接部署的共享模式提供。Swift App 仅支持 macOS。

Python 预发布版快速开始

先在官方美居 App 绑定设备。安装 Python 3.11+ 和 uv,在一个新目录执行:

git clone --branch v0.2.1 --depth 1 https://github.com/blackcocwhite/meiju-mcp.git
cd meiju-mcp
uv sync --frozen
uv run --frozen meiju-mcp --version

然后先安装 Skill,再把客户端 MCP 命令设为虚拟环境内的 meiju-mcp:

{
  "mcpServers": {
    "meiju": {
      "command": "/absolute/path/meiju-mcp/.venv/bin/meiju-mcp",
      "args": []
    }
  }
}

Windows 使用 C:\\projects\\meiju-mcp\\.venv\\Scripts\\meiju-mcp.exe。配置格式以客户端为准;已有 meiju 条目应核对后复用,避免重复添加。MCP 由客户端启动,版本检查成功不等于原生工具已加载。

wheel、pip、Windows、Codex 首次验收,以及 Go 助手/服务/App 的完整安装顺序见安装说明。Go 开发版请使用独立 checkout 和 profile,不覆盖正在运行的程序或登录目录。

Skill 与典型对话

MCP 提供工具,Skill 指导 Agent 选择目标和解释结果;两者需要分别安装。安装后可以直接说:

目标

对话示例

处理方式

查看设备

“查看我现在的美居设备列表”

只读查询

查看温度

“卧室的温度怎样”

区分室温与设定温度

开机

“帮我打开客厅空调”

只请求开机,不附带其他参数

调温

“卧室空调设为 26 度”

不隐含开机

组合控制

“客厅空调开机,制冷 26 度,自动风速”

对明确目标发送一次组合请求

上下文操作

“把刚才那台关掉”

目标明确才继续

如果两个家庭都有客厅,Agent 会先澄清;只有卧室设备时,不会拿它替代客厅。未登录时,Agent 提供新生成的本机登录链接,用户在页面手动完成登录后继续原请求。不要在聊天中发送手机号、验证码或 token。

这些是对话方式示例,不代表每个参数组合都已通过真机测试。完整流程见 Skill 对话指南。

工具

工具

用途

meiju_login

创建或复用本机登录入口

meiju_login_status

查询认证、恢复与保存状态

meiju_logout

退出当前账号;共享模式同时清除保存登录

meiju_list_devices

列出当前账号下的设备

meiju_get_status

读取目标空调的云端状态

meiju_get_capabilities

返回已观测字段和实验性候选控制能力

meiju_control

对明确目标执行一次受校验的控制并回读

登录与数据安全

  • 本机登录链接短时有效,浏览器须和服务在同一台电脑。手机号、验证码只在页面输入,不保存到登录态文件。

  • 发布的 v0.2.1 以进程内会话为主。main 的持久化是未发布功能,只有明确勾选“记住这台电脑”才保存。

  • 保存内容为加密后的访问令牌和客户端设备标识,使用 AES-256-GCM;加密密钥位于系统凭据库,没有明文或文件密码后备。

  • Go 使用固定 Profile 身份定位密钥,迁移不需要重新登录或更改助手身份;只迁移已停止且一致的 profile,不同时运行其副本。

  • Go 常规调用不弹授权框。确需授权时返回错误,由操作者了解原因后显式执行授权步骤,不反复尝试。

  • 本机文件与凭据库边界不抵御同用户恶意程序或管理员。开发版助手使用固定 ad-hoc 签名;正式签名、升级和跨平台原生安装仍待完成。

参见 固定助手、目录迁移、Python 持久化和 SECURITY.md。

验证范围与限制

项目

已有证据

Python 真人登录、设备和状态读取

macOS 已验证

Python 开机、关机

KFR-35G/N8HE1ⅡPro 各验证一次,用户确认物理响应

Go 真人登录、App/Agent 共享读取

已验证

Go 加密保存、重启免登录、目录迁移

已验证,并重新读取设备确认云端授权

原生 Codex/Skill 自动触发与只读调用

已验证

Go 真机控制;独立温度/模式/风速控制

尚未完成对应真机验收

Windows/Linux Go 安装与系统凭据库

尚未原生验收

云端回读不等于物理动作证明。freshness: unknown、execution_verified: false 和实验性能力标记必须保留在结果解释中。已有一个型号的证据不代表所有美的空调兼容。

Python 验证记录 · Go 验证记录 · 兼容性说明

开发与贡献

源码分布:src/meiju_mcp/ 为 Python;go-runtime/ 为 Go 服务、连接器、助手和 Swift 测试 App;skills/meiju-control/ 为 Agent Skill。

CI 检查 Python 离线测试、Go 测试/竞态/vet、Windows/Linux 交叉编译,以及 macOS Swift 构建、助手模拟协议和合成共享/迁移/重启流程。CI 不登录真实账号、不访问真实钥匙串、不控制真机;它不能代替硬件验收。

贡献前请阅读 CONTRIBUTING.md。仅提交脱敏的代码、测试和兼容性信息;不要提交个人路径、真实设备标识、原始响应、登录数据、虚拟环境或本机备份。源码推送不等于发布新版本,现有 Release 附件保持不变。

许可与来源

Apache License 2.0。Python/Go 实现延续本地 Swift 客户端的交互契约;公共应用协议常量参考 sususweet/midea_auto_cloud 的 Apache-2.0 代码。这些常量不是用户凭据,不赋予账号或设备权限。来源与修改说明见 NOTICE,第三方依赖遵循各自许可证。

Available Tools

7 tools
meiju_controlA

Change only requested fields on an account-owned AC; at least one setting is required.

Power is an explicit boolean. Mode/fan/temperature never implicitly turn power on. Temperature uses the candidate 17–30°C / 0.5°C client policy. Checks membership and fresh state before one write, then independently reads back. Never auto-retry an uncertain outcome. A matching cloud readback does not prove physical execution.

ParametersJSON Schema
NameRequiredDescriptionDefault
modeNo
powerNo
device_idYes
fan_speedNo
target_temperatureNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.7/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Adds substantial behavior beyond the annotations: membership and fresh-state pre-checks, a single write followed by independent readback, no auto-retry on uncertain outcomes, and the caveat that a matching cloud readback does not prove physical execution. This meaningfully enriches the annotated non-idempotent, open-world mutation profile.

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 core action and the at-least-one-setting constraint are front-loaded, then each subsequent sentence delivers a distinct operational rule with no filler. Dense but every clause earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a non-idempotent mutation tool with an output schema present, the description supplies all the missing context an agent needs: preconditions, write/readback protocol, retry policy, and the limits of cloud-confirmed success. Nothing essential is left ambiguous.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 0% schema description coverage, the description compensates well: it clarifies power as an explicit boolean, the 17–30°C / 0.5°C temperature policy, the cross-field rule that mode/fan/temperature do not enable power, and the require-at-least-one-setting constraint. It leaves device_id semantics and the mode/fan option meanings to the schema's enums.

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?

States a precise verb+resource+scope: 'Change only requested fields on an account-owned AC', which pins partial-update semantics and the ownership constraint. This cleanly separates it from every sibling (login/logout/list_devices/get_status/get_capabilities), none of which mutate device state.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives clear operational context: at least one setting is required, power is an explicit boolean, and mode/fan/temperature never implicitly turn power on. It does not, however, name or route away from any sibling tool (e.g. when to read state first via meiju_get_status), so the when-not guidance is implied rather than explicit.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

meiju_get_capabilitiesC
Read-only

Inspect the candidate protocol profile and observed fields, not guaranteed hardware capabilities.

The generic profile is experimental. Unknown fields must not be treated as defaults.

ParametersJSON Schema
NameRequiredDescriptionDefault
device_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the readOnlyHint/openWorldHint annotations, the description discloses meaningful behavioral caveats: the profile is 'experimental', fields are 'observed' rather than guaranteed, and unknown fields must not be treated as defaults. This is exactly the kind of data-trust context annotations cannot carry.

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?

Two short sentences with no filler, and the most important caveat is front-loaded. The phrasing is terse to the point of being cryptic, but nothing is padded.

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?

An output schema exists, so return values need not be explained, and the description usefully frames how to interpret them. However, for a read tool with a 1-param surface it still omits the actual purpose and any routing guidance, leaving the definition only minimally adequate.

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 description coverage is 0% for the single required device_id parameter, and the description says nothing about it (format, source, or constraints). With low coverage the description was expected to compensate and does not.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose2/5

Does the description clearly state what the tool does and how it differs from similar tools?

The name says 'get_capabilities' but the description never says it returns device capabilities; instead it negates them ('not guaranteed hardware capabilities') and uses jargon like 'candidate protocol profile'. An agent cannot easily tell what this returns or how it differs from the sibling meiju_get_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?

There is no indication of when to call this versus meiju_get_status, meiju_list_devices or meiju_control. The only guidance is about interpreting results ('unknown fields must not be treated as defaults'), not about tool selection.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

meiju_get_statusA
Read-only

Read selected AC's cloud status. Missing fields stay unknown; cloud data may be cached.

ParametersJSON Schema
NameRequiredDescriptionDefault
device_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the readOnlyHint/openWorldHint annotations, the description discloses two important behavioral traits: fields may be absent and remain 'unknown', and the cloud data may be cached (i.e., stale). That is genuine added context for interpreting results and avoiding wrong conclusions.

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?

Two tight sentences with no filler, and the core purpose is front-loaded before the caveats. Every clause carries information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return structure need not be described. With caching and unknown-field caveats covered, the definition is nearly complete; only the per-device acquisition route (device_id source) is left implicit.

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 0%, so the description carries the burden. 'Selected AC' hints that device_id identifies an AC unit, but it adds no format, source, or acquisition guidance beyond what the string schema already says.

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?

States a specific verb ('Read') and resource ('AC's cloud status'), which clearly separates it from meiju_control (mutation) and meiju_get_capabilities. It does not explicitly name a sibling to differentiate against, but the read/status framing is unambiguous.

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 indication of when to prefer this over meiju_get_capabilities, meiju_list_devices, or a status field returned elsewhere. The agent must infer that this is the per-device status lookup from the name alone.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

meiju_list_devicesA
Read-only

Load account devices; only the experimental AC profile supports controls. Use opaque device_id.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.8/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already establish readOnlyHint=true and openWorldHint=true, so safety is covered. The description adds real behavioral context beyond that: only the experimental AC profile supports controls (implying limited capability), and device_id is opaque, which warns against parsing it.

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?

Two short clauses with the primary action front-loaded and no filler. It is efficient, though the second clause reads as a disconnected note that could be tied more explicitly to the returned devices.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return structure need not be explained, and annotations cover the read-only safety profile. The description supplies the missing capability caveat; only a clearer link to downstream tools is absent.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool takes zero parameters, so the baseline is 4. The mention of opaque device_id refers to output identifiers rather than inputs, and adds mild value without contradicting the empty schema.

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?

Specific verb+resource: 'Load account devices' clearly names what is returned. It partially differentiates from siblings by noting the experimental AC profile is the only one supporting controls, hinting at the meiju_control relationship, though it does not contrast against get_status or get_capabilities.

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?

'Use opaque device_id' implies this call is a prerequisite for later device-targeted operations, and the AC-profile note implies scope limits on downstream control. But there is no explicit when-to-use vs. siblings such as meiju_get_status or meiju_get_capabilities.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

meiju_loginA

Start/reuse a local login page. Show login_url to the human; never request phone/OTP in chat.

Does not itself send SMS or contact Meiju. An existing login is reused.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations mark this as non-read-only yet non-destructive, and the description adds genuinely new behavioral facts: no SMS is sent, no contact with Meiju occurs, and an existing login is reused. Those disclosures matter for a tool whose name implies an authentication side effect. Remaining gaps are minor, e.g. session lifetime or what invalidates the local page.

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?

Three short sentences, front-loaded with the action and immediately followed by the human-handling constraint. Every sentence earns its place; nothing is repeated from the schema or annotations.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return values like login_url need not be documented, and the description still names that field to tell the agent what to surface. Slightly incomplete in that it doesn't indicate the follow-up path for checking or completing login via meiju_login_status.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool takes zero parameters, so the schema carries no parameter semantics to compensate for and the baseline is 4. The description correctly spends no text on argument syntax.

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?

States a specific verb+resource: it starts or reuses a local login page. The added 'does not itself send SMS or contact Meiju' cleanly separates it from an outbound authentication action. It stops short of naming its siblings (meiju_login_status, meiju_logout) to disambiguate further.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives clear operating context: show login_url to the human, never request phone/OTP in chat, and reuse an existing login rather than starting a new one. It doesn't explicitly say what to do when a login already exists (e.g., check meiju_login_status first) or name the sibling that covers that path.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

meiju_login_statusA
Read-only

Check whether the human has completed local login. Returns no phone, code or token.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover the safety profile (readOnlyHint=true, openWorldHint=false), so the bar is low. The description still adds a behavioral trait beyond them: it explicitly states that no phone, code, or token is returned, pre-empting the assumption that a login-status tool would surface credentials.

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?

Two short sentences, front-loaded with the purpose, with essentially no filler. The second sentence is mildly redundant given an output schema exists, which keeps it from a perfect score.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a zero-parameter, read-only tool with a full output schema and covering annotations, the description supplies what an agent needs to call it correctly. Only the login-flow sequencing guidance is absent, which is a minor gap.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool takes zero parameters, so the baseline is 4 per the rubric. There is no parameter surface for the description to explain, and the schema correctly declares an empty, closed object.

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?

States a specific verb ('Check') and a specific resource/state ('whether the human has completed local login'), which clearly separates it from meiju_login (initiates the flow) and meiju_get_status (device status). The distinction is conveyed by the wording itself, though no sibling is named explicitly.

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 never says when to call this tool, whether it is meant to be polled after meiju_login, or how it relates to meiju_login/meiju_logout. An agent must infer the login-flow context entirely from the name.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

meiju_logoutA

Forget this session and its saved login (if shared); invalidate pending login pages.

This does not unbind devices, revoke the official app's login, or change AC settings.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=false, openWorldHint=false and destructiveHint=false; the description goes beyond them by disclosing that a shared saved login is also forgotten and that pending login pages are invalidated, plus explicit non-effects. It still omits prerequisites such as needing an active session and whether re-login is required afterward.

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?

Two short sentences, front-loaded with the core effect and followed by the scope limits; every clause carries information. Slightly clipped phrasing with the parenthetical '(if shared)' but no wasted text.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return values need no explanation, and the critical risk information (what is and is not invalidated) is present for this simple 0-param mutation. Only the session prerequisite is unstated, which is a minor gap.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool takes zero parameters, so the schema (100% coverage) fully carries parameter semantics and the description has nothing to add. Baseline 4 applies for a no-parameter tool.

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 gives a specific verb+resource ('Forget this session and its saved login') and scopes the resource further with 'invalidate pending login pages'. It clearly distinguishes the operation from adjacent concerns (device unbinding, the official app's login, AC settings) even though it does not name sibling tools like meiju_list_devices by name.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description's exclusion sentence effectively tells the agent when NOT to reach for this tool: it will not unbind devices, revoke the official app login, or change AC settings. That is strong negative routing, but it never states the positive trigger (end/clear the current session) or names a concrete alternative tool for those other tasks.

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.

  1. 7 tool updatesv0.2.1
    • First observedmeiju_control
    • First observedmeiju_get_capabilities
    • First observedmeiju_get_status
    • First observedmeiju_list_devices
    • First observedmeiju_login
    • First observedmeiju_login_status
    • First observedmeiju_logout

TDQS

A3.7/5.0

Scored across 7 tools

Disambiguation4/5

The login trio (login/login_status/logout) and the AC tools (list_devices/get_status/get_capabilities/control) form distinct clusters, and descriptions clarify intent. The only mild overlap is between get_status (cloud state) and get_capabilities (protocol profile), but the descriptions distinguish live state from capability probing well enough.

Naming Consistency4/5

All tools share a predictable meiju_ prefix and snake_case verb_noun pattern (login_status, list_devices, get_status, get_capabilities). The lone deviation is meiju_control, a bare verb without a noun, though it remains readable and unambiguous.

Tool Count5/5

Seven tools is well-scoped for a focused smart-home AC server: full login lifecycle, device enumeration, status read, capability inspection, and a single write tool. Nothing feels redundant or padded.

Completeness4/5

The surface covers the core lifecycle—authenticate, discover devices, read status/capabilities, and control settings. Minor gaps exist around scheduling, scenes, or multi-device/batch operations, and only one experimental AC profile supports writes, but agent workflows are not blocked.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    A
    maintenance
    Enables AI assistants to access content from authenticated web pages by opening a real browser for manual login and session capture. It saves browser profiles locally so users only need to log in once per service for future automated access.
    4
    116 npm
    36
    MIT
  • A
    license
    B
    quality
    F
    maintenance
    Enables AI agents to directly control your real Chrome browser with full context including login sessions, cookies, and open tabs. It provides tools for page scanning, JavaScript execution, CDP control, screenshots, and physical mouse/keyboard input for authentic browser automation.
    20
    245
    MIT
  • A
    license
    Not graded
    quality
    B
    maintenance
    Enables AI agents to directly operate a user's local Chrome browser with full login state and cookies, supporting 23 tools such as tab management, clicking, typing, screenshots, file upload, and network inspection through natural language.
    257 npm
    MIT