LabscoMCP early access ↗
mihai-dinculescuMCP SERVER

Tapo MCP

Expose TP-Link Tapo smart plugs, bulbs, light strips, hubs, sensors and cameras on your network as tools an agent can call.

by mihai-dinculescu ↗IoT, Smart Home & Embedded HardwareCommunity

LABSCO SUMMARY

Your Tapo devices, reachable from the same place as everything else the agent uses.

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.

What it is

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.

What you get

  • 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

Requirements

A published container image, ghcr.io/mihai-dinculescu/tapo-mcp (the project's docker run uses the latest tag), 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. The container image also needs TAPO_MCP_API_KEY, a bearer token you choose: it listens on 0.0.0.0:3000 and will not start on a non-loopback address without one. Optional: 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.

Setup effort

One command plus a key — docker run --rm --network host -e TAPO_MCP_USERNAME="you@example.com" -e TAPO_MCP_PASSWORD="<YOUR_TAPO_PASSWORD>" -e TAPO_MCP_CAMERA_USERNAME="<YOUR_CAMERA_ACCOUNT_USERNAME>" -e TAPO_MCP_CAMERA_PASSWORD="<YOUR_CAMERA_ACCOUNT_PASSWORD>" -e TAPO_MCP_DISCOVERY_TARGET="192.168.1.255" -e TAPO_MCP_API_KEY="<YOUR_TAPO_MCP_API_KEY>" ghcr.io/mihai-dinculescu/tapo-mcp:latest