ober37/ac-infinity-mcp

🏠 Home Automation
0 Views
0 Installs

🐍 ☁️ 🏠 🍎 🪟 🐧 - Monitor and automate AC Infinity grow controllers through natural conversation with Claude. 25 tools covering live sensor data, multi-day history, VPD/temperature/humidity automations, port control, advance scheduling, and grow stage templates.

Quick Install

One-Click IDE Configuration
claude_desktop_config.json
{
  "mcpServers": {
    "ober37-ac-infinity-mcp": {
      "command": "npx",
      "args": [
        "-y",
        "ober37-ac-infinity-mcp"
      ]
    }
  }
}
Or

Using an AI coding agent (Claude Code, Cursor, etc.)? Copy a ready-made prompt that tells it to fetch the setup instructions and install this server for you.

Documentation Overview

ac-infinity-mcp

Control and monitor your AC Infinity grow environment through Claude and any MCP-compatible AI assistant.

CI License: MIT Python 3.11+


What is this?

ac-infinity-mcp is an MCP server that connects Claude (and other AI assistants) directly to your AC Infinity controllers — so you can read live sensor data, run analytics, and adjust fan speeds or port states using natural language, without opening the AC Infinity app.

Built with FastMCP and the AC Infinity cloud API.

Example prompts

"What's the VPD trend in my tent over the last 7 days?" "Is my environment in the right range for late flower?" "Turn off port 3 on my 69 Pro controller — dry run first." "Show me which ports have been running the most this week." "Apply the veg stage template to port 1 — dry run first so I can see the settings." "My VPD is too high — what should I adjust?"

Compatible hardware

ControllerReadsWritesNotes
UIS Controller 69 ProLegacy protocol
UIS Controller 69 Pro+Legacy protocol
UIS Controller 89 AI+⚠️ v1 read-onlyNew AI+ protocol — write support planned for v2

Tools

CategoryToolWhat it does
🔍 Discoverydiscover_devicesList all your controllers and ports
🌡️ Readingsget_device_readingLive temp, humidity, VPD, and port states for one device
🌡️ Readingsget_all_device_readingsSame, for all devices at once
🌡️ Readingsget_historical_readingsTime-series data with optional bucketing (raw, 15m, 1h, 1d, …)
📊 Analyticscheck_vpd_driftVPD target compliance check for your current grow stage
📊 Analyticsget_environment_healthComposite health score (0–100, A–F) across temp, humidity, VPD
📊 Analyticsdetect_environment_trendsLinear trend + 7-day projection per metric
📊 Analyticsget_port_activity_reportPer-port on/off hours, uptime %, and peak activity hour
🔎 Port Statusget_port_statusLive port power level, load detection, active mode, and timer countdown
🔎 Port Statusget_port_settingsFull automation config: mode, VPD target, temp/humidity thresholds, schedule, cycle
🔌 Writeset_port_speedSet fan or pump speed 1–10 (dry_run=True by default)
🔌 Writeset_port_onTurn a port fully on (dry_run=True by default)
🔌 Writeset_port_offTurn a port fully off (dry_run=True by default)
⚙️ Automationset_vpd_automationEnable VPD mode with a kPa target using built-in sensors (dry_run=True by default)
⚙️ Automationset_temperature_automationEnable AUTO mode with min/max °C thresholds (dry_run=True by default)
⚙️ Automationset_humidity_automationEnable AUTO mode with min/max % RH thresholds (dry_run=True by default)
⚙️ Automationset_port_modeSwitch to any mode: OFF, ON, AUTO, VPD, CYCLE, SCHEDULE, TIMER_TO_ON, TIMER_TO_OFF (dry_run=True by default)
🌱 Intelligenceapply_grow_stage_templateOne-click VPD + temp + humidity automation for a named grow stage (dry_run=True by default)
🤖 Advance Automationlist_advance_automationsList all named Advance Automation programs on a device
🤖 Advance Automationget_advance_automationGet full detail (schedule, port groups, run state) for one automation
🤖 Advance Automationenable_advance_automationEnable a disabled automation — reads state first, no-ops if already enabled (dry_run=True by default)
🤖 Advance Automationdisable_advance_automationDisable an enabled automation — reads state first, no-ops if already disabled (dry_run=True by default)
🤖 Advance Automationcreate_advance_automationCreate a new named automation; the first rule can be off, on, cycle, auto (temp/humidity), or VPD (dry_run=True by default)
🤖 Advance Automationdelete_advance_automationDelete an automation (disables first if active) (dry_run=True by default)
🤖 Advance Automationadd_automation_ruleAdd one rule (window + behavior) to an existing program — off, on, cycle, auto (temp/humidity), or VPD (dry_run=True by default)
🤖 Advance Automationupdate_automation_ruleEdit one rule in place — change its window, speed, mode, or sensor targets (dry_run=True by default)
🤖 Advance Automationdelete_automation_ruleRemove a single rule from a program, leaving the rest intact (dry_run=True by default)
🤖 Advance Automationbreak_out_of_automationSafely break a port out of automation control and lock co-governed ports to manual speed (dry_run=True by default)

✦ All write tools (Write, Automation, and Intelligence categories) default to dry_run=True — they return the exact payload they would send without making any changes to your equipment. Pass dry_run=False only when you're ready to execute.

📖 For a complete grower's guide with conversation examples for every tool, see docs/GUIDE.md.

MCP Prompts

Three built-in prompts are registered alongside the tools. In Claude Desktop and other MCP clients, these appear as slash commands or prompt suggestions.

PromptWhat it does
vpd_troubleshootingStep-by-step guide: diagnose HIGH or LOW VPD and which tools to call to fix it
new_grower_setupOnboarding walkthrough: discover devices → apply a stage template → check your health score
environment_alert_interpretationHow to read check_vpd_drift status values and get_environment_health grades (A–F, score weighting, what to do)

Quick start

Option 1: pip (simplest)

pip install git+https://github.com/ober37/ac-infinity-mcp.git

Requires Python 3.11+.

Option 2: isolated venv (recommended)

python3 -m venv ~/.venvs/ac-infinity-mcp
source ~/.venvs/ac-infinity-mcp/bin/activate
pip install git+https://github.com/ober37/ac-infinity-mcp.git
which ac-infinity-mcp   # copy this path — you'll need it below

Option 3: uvx (no install)

uvx --from git+https://github.com/ober37/ac-infinity-mcp.git ac-infinity-mcp

MCP client configuration

Claude Desktop

Edit ~/Library/Application Support/Claude/claude_desktop_config.json (macOS) or %APPDATA%\Claude\claude_desktop_config.json (Windows):

{
  "mcpServers": {
    "ac-infinity": {
      "command": "/path/to/ac-infinity-mcp",
      "env": {
        "AC_INFINITY_EMAIL": "you@example.com",
        "AC_INFINITY_PASSWORD": "yourpassword"
      }
    }
  }
}

Replace /path/to/ac-infinity-mcp with the path printed by which ac-infinity-mcp.

Cursor / Windsurf

Add to your MCP settings:

{
  "ac-infinity": {
    "command": "/path/to/ac-infinity-mcp",
    "env": {
      "AC_INFINITY_EMAIL": "you@example.com",
      "AC_INFINITY_PASSWORD": "yourpassword"
    }
  }
}

Docker

cp .env.example .env
# fill in AC_INFINITY_EMAIL and AC_INFINITY_PASSWORD
docker compose up --build

The container runs over stdio. Connect via a stdio bridge such as mcp-proxy.

Credentials are injected at runtime via env_file — never baked into the image.

Environment variables

VariableRequiredDescription
AC_INFINITY_EMAILYesYour AC Infinity account email
AC_INFINITY_PASSWORDYesYour AC Infinity account password

⚠️ HTTP-only upstream: The AC Infinity cloud API does not support HTTPS. Credentials and sensor data traverse the network in plain text. This is an upstream limitation — see docs/API.md Quirk 8. Avoid running this server on untrusted networks.

Development

git clone https://github.com/ober37/ac-infinity-mcp.git
cd ac-infinity-mcp
python3 -m venv .venv && source .venv/bin/activate
pip install -e ".[dev]"
cp .env.example .env   # fill in credentials

# Lint + type-check
ruff check src/ tests/
mypy src/ac_infinity_mcp/

# Tests (unit + integration)
pytest tests/ -v

# Security audit
pip-audit

Security

Vulnerabilities should be reported via GitHub Private Vulnerability Reporting. See SECURITY.md for the full disclosure policy, scope, and known limitations (including the HTTP-only upstream API). Accepted dependency CVEs are tracked in docs/SECURITY-RISKS.md.

License

MIT

Related MCP Servers

apiarya/wemo-mcp-server

🐍 🏠 🍎 🪟 🐧 - Control WeMo smart home devices via AI assistants using natural language. Built on pywemo for 100% local control — no cloud dependency. Supports dimmer brightness, device rename, HomeKit codes, and multi-phase discovery.

🏠 Home Automation0 views
claymore666/debmatic-mcp

📇 🏠 🍎 🪟 🐧 - Control a HomeMatic / debmatic CCU (eq-3 home automation) over its JSON-RPC and HM-Script APIs — switch and dim actuators, read sensors, system variables and service messages, run programs, and manage rooms, functions, channel links and device assignments. 25 tools over HTTP or stdio; runs locally against your own CCU.

🏠 Home Automation0 views
handsomejustin/mijia-control

🐍 ☁️ - Control Xiaomi/Mijia smart home devices (lights, AC, heaters, robots, cameras) through MCP. Includes web dashboard, REST API, CLI, SocketIO, energy monitoring, and automation rules.

🏠 Home Automation0 views
Hybirdss/smartest-tv

🐍 🏠 🍎 🪟 🐧 - Control any smart TV with natural language. Play Netflix, YouTube, Spotify by name with deep linking, cast URLs, scene presets, multi-room audio, and multi-TV sync. Supports LG, Samsung, Android TV, Roku. 21 MCP tools, no cloud required.

🏠 Home Automation0 views

Engagement

Views
0
Installs
0
Upvotes
0

Views and upvotes are unique per visitor network (hashed IP). Installs count copy actions.

Status

Health: Not checked yet

We have not completed a health check for this listing yet.

No check timestamp yet.

Unclaimed listing (imported or pending owner verification). Claim it →
★ Spotlight Slot

Feature Your MCP Server

Get maximum visibility for your server across our directory, search results, and detail pages.

Spotlight Your Server

Own this project?

This directory is pre-filled from public sources. Claim via GitHub README, site badge, or DNS TXT to get the verified badge and attach your website.

Claim this listing

Promote this listing

Optional paid placement. Free listings stay free forever.

Share & Embed

Add our SVG badge (dark/light directory styles) or embeddable widget to your site.