AC Infinity MCP

AC Infinity MCP

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.

Category
访问服务器

README

<p align="center"> <h1 align="center">ac-infinity-mcp</h1> <p align="center"> Control and monitor your AC Infinity grow environment through Claude and any MCP-compatible AI assistant. </p> <p align="center"> <a href="https://github.com/ober37/ac-infinity-mcp/actions/workflows/ci.yml"><img src="https://github.com/ober37/ac-infinity-mcp/actions/workflows/ci.yml/badge.svg" alt="CI"></a> <a href="https://github.com/ober37/ac-infinity-mcp/blob/main/LICENSE"><img src="https://img.shields.io/github/license/ober37/ac-infinity-mcp" alt="License: MIT"></a> <a href="https://www.python.org/downloads/"><img src="https://img.shields.io/badge/python-3.11%2B-blue" alt="Python 3.11+"></a> </p> </p>


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

Controller Reads Writes Notes
UIS Controller 69 Pro Legacy protocol
UIS Controller 69 Pro+ Legacy protocol
UIS Controller 89 AI+ ⚠️ v1 read-only New AI+ protocol — write support planned for v2

Tools

Category Tool What it does
🔍 Discovery discover_devices List all your controllers and ports
🌡️ Readings get_device_reading Live temp, humidity, VPD, and port states for one device
🌡️ Readings get_all_device_readings Same, for all devices at once
🌡️ Readings get_historical_readings Time-series data with optional bucketing (raw, 15m, 1h, 1d, …)
📊 Analytics check_vpd_drift VPD target compliance check for your current grow stage
📊 Analytics get_environment_health Composite health score (0–100, A–F) across temp, humidity, VPD
📊 Analytics detect_environment_trends Linear trend + 7-day projection per metric
📊 Analytics get_port_activity_report Per-port on/off hours, uptime %, and peak activity hour
🔎 Port Status get_port_status Live port power level, load detection, active mode, and timer countdown
🔎 Port Status get_port_settings Full automation config: mode, VPD target, temp/humidity thresholds, schedule, cycle
🔌 Write set_port_speed Set fan or pump speed 1–10 (dry_run=True by default)
🔌 Write set_port_on Turn a port fully on (dry_run=True by default)
🔌 Write set_port_off Turn a port fully off (dry_run=True by default)
⚙️ Automation set_vpd_automation Enable VPD mode with a kPa target using built-in sensors (dry_run=True by default)
⚙️ Automation set_temperature_automation Enable AUTO mode with min/max °C thresholds (dry_run=True by default)
⚙️ Automation set_humidity_automation Enable AUTO mode with min/max % RH thresholds (dry_run=True by default)
⚙️ Automation set_port_mode Switch to any mode: OFF, ON, AUTO, VPD, CYCLE, SCHEDULE, TIMER_TO_ON, TIMER_TO_OFF (dry_run=True by default)
🌱 Intelligence apply_grow_stage_template One-click VPD + temp + humidity automation for a named grow stage (dry_run=True by default)
🤖 Advance Automation list_advance_automations List all named Advance Automation programs on a device
🤖 Advance Automation get_advance_automation Get full detail (schedule, port groups, run state) for one automation
🤖 Advance Automation enable_advance_automation Enable a disabled automation — reads state first, no-ops if already enabled (dry_run=True by default)
🤖 Advance Automation disable_advance_automation Disable an enabled automation — reads state first, no-ops if already disabled (dry_run=True by default)
🤖 Advance Automation create_advance_automation Create a new named automation with speed, schedule, and threshold settings (dry_run=True by default)
🤖 Advance Automation delete_advance_automation Delete an automation (disables first if active) (dry_run=True by default)
🤖 Advance Automation break_out_of_automation Safely 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.

Prompt What it does
vpd_troubleshooting Step-by-step guide: diagnose HIGH or LOW VPD and which tools to call to fix it
new_grower_setup Onboarding walkthrough: discover devices → apply a stage template → check your health score
environment_alert_interpretation How 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

Variable Required Description
AC_INFINITY_EMAIL Yes Your AC Infinity account email
AC_INFINITY_PASSWORD Yes Your 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

推荐服务器

Baidu Map

Baidu Map

百度地图核心API现已全面兼容MCP协议,是国内首家兼容MCP协议的地图服务商。

官方
精选
JavaScript
Playwright MCP Server

Playwright MCP Server

一个模型上下文协议服务器,它使大型语言模型能够通过结构化的可访问性快照与网页进行交互,而无需视觉模型或屏幕截图。

官方
精选
TypeScript
Magic Component Platform (MCP)

Magic Component Platform (MCP)

一个由人工智能驱动的工具,可以从自然语言描述生成现代化的用户界面组件,并与流行的集成开发环境(IDE)集成,从而简化用户界面开发流程。

官方
精选
本地
TypeScript
Audiense Insights MCP Server

Audiense Insights MCP Server

通过模型上下文协议启用与 Audiense Insights 账户的交互,从而促进营销洞察和受众数据的提取和分析,包括人口统计信息、行为和影响者互动。

官方
精选
本地
TypeScript
VeyraX

VeyraX

一个单一的 MCP 工具,连接你所有喜爱的工具:Gmail、日历以及其他 40 多个工具。

官方
精选
本地
graphlit-mcp-server

graphlit-mcp-server

模型上下文协议 (MCP) 服务器实现了 MCP 客户端与 Graphlit 服务之间的集成。 除了网络爬取之外,还可以将任何内容(从 Slack 到 Gmail 再到播客订阅源)导入到 Graphlit 项目中,然后从 MCP 客户端检索相关内容。

官方
精选
TypeScript
Kagi MCP Server

Kagi MCP Server

一个 MCP 服务器,集成了 Kagi 搜索功能和 Claude AI,使 Claude 能够在回答需要最新信息的问题时执行实时网络搜索。

官方
精选
Python
e2b-mcp-server

e2b-mcp-server

使用 MCP 通过 e2b 运行代码。

官方
精选
Neon MCP Server

Neon MCP Server

用于与 Neon 管理 API 和数据库交互的 MCP 服务器

官方
精选
Exa MCP Server

Exa MCP Server

模型上下文协议(MCP)服务器允许像 Claude 这样的 AI 助手使用 Exa AI 搜索 API 进行网络搜索。这种设置允许 AI 模型以安全和受控的方式获取实时的网络信息。

官方
精选