Skip to main content
Glama

KOVA MCP

与你的 myGEKKO 对话。 这是一个开源 MCP 服务器,通过官方 myGEKKO Query API 将 Claude(以及任何其他 MCP 客户端)与 myGEKKO 楼宇控制器连接起来。通过 Claude 与你的 myGEKKO 楼宇控制器对话——英文快速入门见下文。

“客厅里暖不暖和?” · “还有哪些灯亮着?” · “把南边的百叶窗拉下来。” —— 用你自己的话,直接对你的房子说。

KOVA MCP 是为 DIY 爱好者和高级用户准备的工具。 如果你想每天用、在手机上用、并且让全家人都能用——又不想碰终端——那就用 KOVA App(kova.casa)。


2 分钟即可尝试——无需自己的控制器

公开的 myGEKKO 演示控制器(“Mustermann”)就是为这类测试准备的:

claude mcp add mygekko \
  --env GEKKO_USERNAME=mustermann@my-gekko.com \
  --env GEKKO_KEY=HjR9j4BrruA8wZiBeiWXnD \
  --env GEKKO_GEKKOID=K999-7UOZ-8ZYZ-6TH3 \
  -- uvx --from git+https://github.com/joeexafionbot-dev/kova-mcp mygekko-mcp

然后在 Claude Code 里说:“我的建筑里有哪些系统?给我看看客厅里的灯。”

Related MCP server: myUplink MCP Server

使用你自己的 myGEKKO

前提:控制器已在 my-gekko.com 注册,并且已开启 “myGEKKO Query API” 这个 Plus 服务(已包含在 Home Bundle 中;在 设置 → Globus → Plus Erweitert → Plus Query API → 管理 → 重新生成 下生成密钥)。

claude mcp add mygekko \
  --env GEKKO_USERNAME=deine@mail.de \
  --env GEKKO_KEY=DEIN-QUERY-API-KEY \
  --env GEKKO_GEKKOID=XXXX-XXXX-XXXX-XXXX \
  -- uvx --from git+https://github.com/joeexafionbot-dev/kova-mcp mygekko-mcp

Claude Desktop(claude-desktop_config.json):

{
  "mcpServers": {
    "mygekko": {
      "command": "uvx",
      "args": ["--from", "git+https://github.com/joeexafionbot-dev/kova-mcp", "mygekko-mcp"],
      "env": {
        "GEKKO_USERNAME": "deine@mail.de",
        "GEKKO_KEY": "DEIN-QUERY-API-KEY",
        "GEKKO_GEKKOID": "XXXX-XXXX-XXXX-XXXX"
      }
    }
  }
}

也支持本地(局域网而非云端)运行:GEKKO_MODE=local + GEKKO_LOCAL_HOST —— 所有变量都可在 .env.example 中查看。

这个服务器能做什么

资源

gekko://inventory(所有系统/设备,通过数据驱动自动发现)、gekko://system/{system}、gekko://item/...、gekko://capabilities

读取工具

list_devices、get_state、describe_capabilities

控制工具

control_device、control_light、……—— 默认关闭

传输方式

stdio(Claude Code/Desktop)和 streamable-http(托管、令牌保护)

安全性(刻意保守)

  • 默认只读。 控制设备需要显式设置 GEKKO_ALLOW_WRITE=true。

  • 拒绝列表始终生效: 报警系统、门禁/出入、摄像都,即使有写入权限也一律锁定;关键操作要求二次确认。

  • 凭据只通过环境变量传递,绝不写入文件或日志(密钥会在日志中被打码)。

  • **对控制器友好:**遇到 429/470 时进行限流和退避——否则错误请求会进入控制器的报警记录中。

详情见 SECURITY.md。

英文快速入门

用于 myGEKKO 楼宇控制器的 MCP 服务器(官方 Query API,云端或局域网)。默认只读;写入为可选(GEKKO_ALLOW_WRITE=true),并受到策略限制(报警/门禁/摄像头一律禁止)。用上方第一段代码中的凭据,马上就可以用公共演示控制器试用;也可以为你的控制器设置 GEKKO_自 / GEKKO_KEY / GEKKO_GEKKOID。运行方式:uvx --from git+https://github.com/joeexafionbot-dev/kova-mcp mygekko-mcp。

开发

uv sync && uv run pytest          # Tests
uv run mygekko-mcp --transport stdio
uv run dump-inventory             # read-only Inventar-Dump als JSON

本仓库是 KOVA-Monorepo 的发布镜像(CI 在那边运行);这里仍然欢迎 issue 和 PR,并会把它们同步回去。

许可证与 MIT

MIT。my 是 myGEKKO | Ekon GmbH 的商标——KOVA MCP 是一个独立的社区项目,并非由 myGEKKO 发布。上面的演示凭据属于 myGEKKO 的公共演示控制器。

Available Tools

3 tools
describe_capabilitiesA

Discover what this specific controller exposes and how to control it.

Because every installation is configured differently, call this to learn which systems exist, which are controllable, and the exact command grammar of each writable device. Systems with a 'typed_tool' are best driven by that tool (e.g. control_light); the rest are driven by 'control_device' using an advertised command token or label.

Args: system: optional system key to describe just one (e.g. 'lights').

NameRequiredDescriptionDefault
systemNo

TDQS

A4.5/5.0
Behavior4/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 discovery action ('Discover what this controller exposes') and discloses that results vary per installation and that some systems are writable vs not. It does not explicitly state side effects, but the tool is clearly a query. It also mentions the 'command grammar' which is 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.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-structured with a clear opening sentence, explanatory paragraphs, and an Args section. It is somewhat verbose but every sentence adds value (purpose, usage context, routing guidance, parameter explanation). Front-loaded with the main purpose and formatted for readability. Not excessively long.

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 discovery tool with an optional single parameter and no output schema, the description covers what the agent needs: what it will learn (systems, controllability, command grammar), how to use that information (routing to typed_tool vs control_device), and the parameter syntax. It does not describe the exact return format, but that is not required given the purpose. It is sufficiently complete for correct invocation.

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 schema describes a single optional parameter 'system' with no description. The tool's description compensates with an 'Args:' section: 'system: optional system key to describe just one (e.g. lights).' This adds meaning beyond the schema, clarifying it is optional, takes a system key, and provides an example. Given the schema coverage is 0%, the description adequately covers the parameter semantics.

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 tool's purpose: 'Discover what this specific controller exposes and how to control it.' It specifies a verb (discover), a resource (this specific controller), and details what is learned: which systems exist, which are controllable, and the command grammar for writable devices. This distinguishes it from siblings like list_devices and get_state.

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

Usage Guidelines5/5

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

The description explicitly states when to call the tool: 'Because every installation is configured differently, call this to learn which systems exist, which are controllable...' It also provides routing guidance: 'Systems with a typed_tool are best driven by that tool (e.g. control_light); the rest are driven by control_device using an advertised command token or label.' This is an explicit rule for how to act on the results, fulfilling the usage dimension well.

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

get_stateA

Read the current state of a device by its path (e.g. 'lights/item0').

NameRequiredDescriptionDefault
pathYes

TDQS

A4/5.0
Behavior3/5

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

With no annotations, the description carries the burden and does communicate that this is a read-only operation rather than a mutation, and gives a path example. However, it does not disclose what the returned state looks like, whether the path must be exact, or any error behavior, so transparency is only partial.

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, front-loaded sentence with no filler. Every word contributes meaning, and the path example is efficiently integrated.

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 one-parameter read tool with no output schema, the description provides the essential action, target, and example path. It is slightly thin on what 'state' contains and on explicit distinctions from siblings, but overall an agent has enough to invoke it correctly.

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?

Schema description coverage is 0%, so the description must compensate; it does so by explaining the meaning of path through the example 'lights/item0'. It could be more explicit about path format or conventions, but for a single parameter this is sufficient to guide invocation.

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 specific action (Read) and resource (current state of a device), with a concrete path example. This clearly distinguishes it from sibling tools list_devices and describe_capabilities, which are about enumeration and capabilities rather than current state.

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?

The description implies this tool is for retrieving a device's current state, but it does not explicitly state when to prefer it over list_devices or describe_capabilities. No when-to-use or when-not-to-use conditions or alternative names are provided, leaving the agent to infer from sibling tool names.

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

list_devicesA

List available myGEKKO devices, optionally filtered to one system.

Args: system: optional system key (e.g. 'lights', 'blinds', 'roomtemps').

NameRequiredDescriptionDefault
systemNo

TDQS

A4/5.0
Behavior3/5

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

No annotations are provided, so the description bears the full burden of disclosing behavior. The verb 'List' implies a read-only operation, but the description does not explicitly state whether the operation is safe, requires authentication, has rate limits, or returns all devices vs. a paginated subset. It does disclose the optional filtering behavior, but for a simple listing tool the absence of any remark on side effects or response structure is acceptable, though not exhaustive. No contradiction exists.

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 extremely concise: one sentence stating the primary purpose and one line describing the optional parameter, followed by examples. It is front-loaded with the main verb and resource, and every sentence earns its place. No filler or redundancy.

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?

This is a simple tool with a single optional parameter and no output schema. The description gives enough to call it correctly: what it does, how to filter, and example values. It does not describe the return format, but for a listing tool an agent can reasonably assume a list of device objects. Siblings like get_state likely handle the per-device details, so the description is adequately complete for its simplicity.

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 input schema provides only the type and default for 'system' with no description (0% schema coverage), so the description must compensate. It does so by explaining that 'system' is an optional key and giving concrete examples ('lights', 'blinds', 'roomtemps'), which adds meaningful context beyond the bare schema. The explanation is clear enough for an agent to infer valid inputs, though it doesn't enumerate all possible system keys.

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 'List' and the resource 'available myGEKKO devices', and notes optional filtering by system. This is easily distinguishable from sibling tools like get_state (which retrieves a state) and describe_capabilities (which describes capabilities). The purpose is unambiguous and specific.

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?

The description tells the agent it can optionally filter by a system key, and provides examples of valid keys ('lights', 'blinds', 'roomtemps'), which gives some context on how to use the parameter. However, it does not explicitly mention when to use this tool instead of siblings like get_state or describe_capabilities, nor does it state any exclusions or prerequisites. The guidance is partial but not misleading.

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. 3 tool updatesv0.0.1
    • First observeddescribe_capabilities
    • First observedget_state
    • First observedlist_devices

TDQS

A3.9/5.0

Scored across 3 tools

Disambiguation4/5

The three tools have clearly distinct responsibilities: listing devices, reading state, and describing controller capabilities. However, the describe_capabilities description references 'control_light' and 'control_device' tools that are not present in the set, which could confuse an agent about which tool to use for control operations.

Naming Consistency5/5

All tool names consistently follow the verb_noun snake_case pattern: list_devices, get_state, describe_capabilities. The naming is perfectly uniform and predictable, with no mixed conventions or unexplained abbreviations.

Tool Count3/5

Three tools is at the low end of what would be appropriate for a smart home server, but since the tools reference dynamic, configuration-driven capabilities, the count is borderline acceptable for a discovery/query-focused surface. However, the absence of any control tools (referenced but not included) makes the surface feel thin for what appears to be a home automation domain.

Completeness2/5

The surface covers discovery and reading well but is significantly incomplete for control tasks. An agent can list devices, read state, and learn how to control systems, but then hits a dead end because control_light and control_device do not actually exist as tools. The capability descriptions promise actions the server cannot perform, creating a clear gap.

Related MCP Connectors

  • Connect Amazon Seller Central to Claude or ChatGPT via MCP. Orders, inventory, pricing, fees, FBA.

    https://sellermcp.co.uk/mcp
  • Let Claude or ChatGPT search, read and send your WhatsApp messages over MCP. OAuth sign-in.

    https://corapilot.com/mcp
  • Remote streamable-HTTP MCP server running on a single Cloudflare Worker. Your assistant gets live Airbnb, Amazon, Booking.com, Google Flights, Maps and Reddit data, social search on X, Instagram and TikTok, the Meta Ad Library, and image/video generation without any keys. Connect your own accounts to let it send WhatsApp or Telegram messages, work an IMAP inbox, manage Meta Ads campaigns and publish to X and LinkedIn. OAuth 2.1 with PKCE; stored credentials are AES-256-GCM encrypted.

  • tri-train is a training platform for triathletes that syncs activities from Strava and Garmin and exposes them to Claude through a remote MCP server. Ask Claude how your last block went, why your run pace dropped, or whether you are fresh enough for Sunday's race, and it answers from your real data: activities with laps and grade-adjusted pace, weekly load and the performance management chart (CTL/ATL/TSB), sleep, HRV and resting heart rate, and your race calendar with predictions. Claude can also act: create and adjust planned workouts with structured intervals, push them to your Garmin watch, add races and write notes. Every change is journaled and can be undone. Read and write access are separate OAuth scopes, and the server enforces them on every call. Built and hosted in Switzerland by a triathlete; data stays on our own servers (Swiss revDSG / GDPR).

    https://tri-train.com/api/mcp

Related MCP Servers

  • A
    license
    Not graded
    quality
    C
    maintenance
    Connects MCP clients (e.g., Claude) to your NIBE myUplink heat-pump account for reading sensors and controlling settings via OAuth2 authentication.
    2
    MIT
  • A
    license
    A
    quality
    B
    maintenance
    Provides Claude and any MCP client with live access to property management data, enabling operations on properties, units, leases, tenants, work orders, vendors, accounting, and file attachments through natural language.
    25
    MIT