ZenControl TPI MCP Server
An MCP (Model Context Protocol) server for controlling ZenControl DALI-2 lighting systems via the ZenControl Third-Party Interface (TPI) — a direct LAN protocol that communicates with ZenControl Pro-series controllers without going through the cloud.
Features
- DALI lighting commands: arc level, scenes, on/off, step up/down, custom fade
- DALI colour control: Tc (colour temperature), XY chromaticity, RGBWAF
- DMX channel commands with pattern and fade support
- Device and group discovery with labels
- Scene discovery and management
- Controller profile management
- DALI instance and virtual instance support
- Occupancy sensor timer queries
- System variable read/write
- Scope constraint to lock the server to a specific DALI group
Requirements
- Python 3.11+
- A ZenControl Pro-series controller with TPI Advanced licence
- Network access to the controller (LAN or VLAN)
Installation
uv add zencontrol-tpi-mcp
Or for development:
git clone https://github.com/oWretch/zencontrol-tpi-mcp
cd zencontrol-tpi-mcp
uv sync
Configuration
Copy .env.example to .env and set your controller address:
cp .env.example .env
Edit .env:
ZENCONTROL_TPI_HOST=192.168.1.100
ZENCONTROL_TPI_PORT=5108 # optional, default: 5108
ZENCONTROL_SCOPE_GROUP=0 # optional, lock to DALI group 0
No API key is required — the TPI protocol has no authentication mechanism; access control is provided at the network level.
Usage
stdio (for Claude Desktop, VS Code, etc.)
uv run zencontrol-tpi-mcp
Debug mode
uv run zencontrol-tpi-mcp --log-level DEBUG
VS Code
See .vscode/mcp.json for VS Code MCP configuration.
Protocol
This server uses TPI Advanced, a binary UDP/TCP protocol on port 5108. All commands use TCP for reliable, ordered delivery.
See the TPI documentation for protocol details.
Contributing
See CONTRIBUTING.md.
License
Apache-2.0
Release files for zencontrol-tpi-mcp 1.0.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| zencontrol_tpi_mcp-1.0.0.tar.gz | 34.0 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| zencontrol_tpi_mcp-1.0.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 79.2 kB
Release files / zencontrol_tpi_mcp-1.0.0.tar.gz
| Download URL | zencontrol_tpi_mcp-1.0.0.tar.gz |
|---|---|
| Size | 34.0 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
d5301b6d31b0df162177abc5f8c3f81476c9a046b80acf52f0266096e7748a19
|
|
BLAKE2b-256 checksum How to use checksums |
c514ff1903795dfd2a3d04d830e90853899e7ec166cff28e2159126119eaf5df
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.13
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 21, 2026.
Transparency logRelease files / zencontrol_tpi_mcp-1.0.0-py3-none-any.whl
| Download URL | zencontrol_tpi_mcp-1.0.0-py3-none-any.whl |
|---|---|
| Size | 45.2 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
fad2e33e958ed0a69e07ab2c9bc155d32dc1f3718195084f1578fb822744ce4a
|
|
BLAKE2b-256 checksum How to use checksums |
d52008e850564b6e27dc04681e592a42d1380a62f541e0bd82cb821debaf0e7c
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.13
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 21, 2026.
Transparency log