Discovery is the part worth setting up carefully: give it the right broadcast address for your network and the devices show up on their own, rather than being enumerated by hand every time one gets a new address.
The MCP server that ships alongside an unofficial Tapo API client. It discovers devices on your network and presents them as AI-callable tools and resources over Streamable HTTP.
- Control of the device families the underlying client covers: light bulbs L510, L520, L530, L535, L610 and L630; light strips L900, L920 and L930; plugs P100, P105, P110, P110M and P115; power strips P300, P304M, P306 and P316M; the H100 hub; switches S200B, S200D and S210; sensors KE100, T100, T110, T300, T310 and T315; and cameras C210, C220, C225, C325WB, C520WS, TC40 and TC70
- Network discovery driven by a broadcast target you set, rather than requiring every device address to be listed by hand
- Optional bearer-token authentication on the server itself
- Optional OpenTelemetry tracing to a collector you nominate
A published container image, `ghcr.io/mihai-dinculescu/tapo-mcp:0.5.0`, speaking Streamable HTTP at `http://localhost:3000/`. Three settings are required: `TAPO_MCP_USERNAME` and `TAPO_MCP_PASSWORD` for the TP-Link Tapo account, and `TAPO_MCP_DISCOVERY_TARGET` for the network broadcast address to discover on, such as `192.168.1.255`. Optional: `TAPO_MCP_API_KEY` for a bearer token on the API, `TAPO_MCP_DISCOVERY_TIMEOUT` in seconds with a default of 5, and `OTEL_EXPORTER_OTLP_ENDPOINT` for tracing. The device support matrix in the repository lists which features each model actually has. This is an unofficial client, not a TP-Link product.
One command plus a key — pip install tapo, then supply credentials
