MCP server for AC Infinity grow controllers. Monitor, automate, and control your grow environment through natural conversation with Claude.
This file documents two categories of accepted risk:
pip-audit is invoked with --ignore-vuln <ID> for each CVE entry below. If a
new CVE appears in a pip-audit run, do not blanket-add it here — file
an issue, evaluate the exposure, and only ignore after a documented finding.
Base URL: https://www.acinfinityserver.com/api
The AC Infinity cloud API supports HTTPS. TLS handshake verified 2026-05-29: TLSv1.3, DigiCert Encryption Everywhere DV TLS CA certificate, valid until 2026-11-18. Credentials and session tokens are encrypted in transit. This supersedes the previous HTTP-only accepted risk documented before 2026-05-29.
All endpoints below are confirmed over HTTPS. This list was updated via network capture (Phase 17, 2026-05-22) to include all confirmed v2.0 endpoints.
| Endpoint | Purpose |
|---|---|
POST /user/appUserLogin |
Authentication — credentials encrypted via TLS |
POST /user/devInfoListAll |
Device list — response includes user email (appEmail) |
POST /log/dataPage |
Historical sensor and port data |
POST /dev/getdevModeSettingList |
Read current port mode settings |
POST /dev/addDevMode |
Write port mode settings |
POST /api/dev/getDevSetting |
Richer port settings (sensor calibration, load type, Matter/UUID fields) |
POST /api/upgrade/getUpgrade |
Firmware upgrade check |
POST /api/upgrade/downgrade |
Firmware downgrade info (returns download URL and release notes) |
| Endpoint | Purpose |
|---|---|
POST /api/version=2.0/dev/getGroups |
List all automation groups for a device |
POST /api/version=2.0/dev/addGroups |
Create automation group |
POST /api/version=2.0/dev/updateGroupsIsOn |
Toggle automation on/off state |
POST /api/version=2.0/dev/delByid |
Delete automation |
| Endpoint | Purpose |
|---|---|
POST /api/version=2.0/dev/getAlarms |
List all alarm configurations for a device |
POST /api/version=2.0/dev/addAlarms |
Create alarm |
POST /api/version=2.0/dev/updateAlarmsById |
Enable, disable, or edit alarm |
POST /api/version=2.0/dev/delAlarmsByid |
Delete alarm |
| Endpoint | Purpose |
|---|---|
POST /api/log/logdataByAll |
Historical readings (alternative to /log/dataPage; confirmed working) |
DELETE /api/log/log?devId=...&time=... |
Delete all history logs for a device |
GET /api/version=2.0/dev/recipe?advVersion=1 |
Grow stage templates (Seedling, Vegetative, Flowering, Plant Kit, Drying) |
mcp packagemcp (Model Context Protocol Python SDK; a direct dependency)mcp SDK’s transport handling for code paths this server does not use.
Our server runs stdio transport only (see server.py:main()); the
affected paths require HTTP/SSE transport.mcp releases. When a patched release
is available, bump the version pin in pyproject.toml and remove the
ignore from .github/workflows/ci.yml and CLAUDE.md.pip-audit without
the --ignore-vuln flag in a clean venv with current pins. If
PYSEC-2025-183 does not appear, the patched version is already pulled
in and the ignore can be removed. P3-C2-F006 raised this concern after
observing that a fresh install showed no findings under current pins;
remove the ignore as soon as the next CI run confirms the CVE is gone.starlettestarlette (transitive via mcp SDK)starlette is pulled in transitively by
the mcp SDK’s HTTP/SSE transport path. This server runs stdio transport only
(see server.py:main()) — the affected starlette request-handling code paths are
never reached at runtime.mcp releases. When a release pins starlette ≥ 1.0.1,
bump the mcp version in pyproject.toml and remove the ignore from
.github/workflows/ci.yml.The following 14 CVEs were identified in a pip-audit run on 2026-05-22 as part of
the Phase 17 Gate 2 review. None are exploitable via this server’s code paths.
They are documented here for tracking but are NOT added to the --ignore-vuln
list — each requires an explicit decision before ignoring. Re-evaluate when a fix
becomes available in the dependency tree.
cryptography (transitive via mcp SDK)mcp when upstream updates to cryptography ≥ 46.0.7.idna (transitive via requests)www.acinfinityserver.com (a simple ASCII hostname); the IDNA
vulnerability (malformed label handling) is not reachable.requests or idna directly once 3.15 is
available in the dependency tree.pip (dev tool — not a runtime dependency)pip is not imported or used by the server at runtime.
Upgrade pip in the build/dev environment: python3 -m pip install --upgrade pip.pygments (dev tool — pulled in by rich/IPython for terminal output)pygments is not imported or used at runtime.python-multipart (transitive via mcp → starlette)mcp SDK’s HTTP/SSE transport. This server runs
stdio transport only — the multipart parsing code paths are never invoked.mcp bumps its starlette/
python-multipart pins.setuptools (build/install tool — not a runtime dependency)setuptools is used during package installation;
it is not imported at runtime.pip install --upgrade setuptools.pip-audit and capture the CVE ID + package.--ignore-vuln <ID> to the pip-audit invocation in
.github/workflows/ci.yml with an inline comment pointing here.