Tapo
MCP server for discovering and controlling TP-Link Tapo smart home devices via AI Agents
What is Tapo?
Tapo is a Model Context Protocol (MCP) server that allows AI assistants like Claude, Cursor, and VS Code to mcp server for discovering and controlling tp-link tapo smart home devices via ai agents
MCP server for discovering and controlling TP-Link Tapo smart home devices via AI Agents
This server falls under the Cloud Services category on MCPgee, the world's largest MCP server directory with 33,000+ servers.
Features
- MCP server for discovering and controlling TP-Link Tapo smar
Use Cases
Maintainer
Works with
Installation
Manual Installation
npx tapoConfiguration
Configuration Details
claude_desktop_config.json
Performance
Response Metrics
Resource Usage
How to Set Up and Use Tapo
The Tapo MCP Server exposes TP-Link Tapo smart home devices — bulbs, plugs, power strips, sensors, cameras, and more — as AI-callable tools and resources via the Model Context Protocol. It runs as a local HTTP server using Streamable HTTP transport, discovers devices on your LAN via UDP broadcast, and lets AI agents list, query, and control your entire Tapo ecosystem through natural language. Home automation enthusiasts and developers use it to build voice-like or agent-driven smart home workflows where Claude can turn lights on or off, adjust brightness and color, read sensor data, and capture camera snapshots on demand.
Prerequisites
- TP-Link Tapo account (email and password used in the Tapo mobile app)
- Tapo smart home devices connected to your local network
- Docker (recommended) or the Rust toolchain to build from source
- The network broadcast address for your LAN (e.g. 192.168.1.255)
- An MCP client that supports HTTP/SSE transport, such as Claude Desktop with streamable HTTP support
Identify your network broadcast address
The server needs a broadcast address to discover Tapo devices via UDP. On most home networks this is the subnet broadcast such as 192.168.1.255. Run `ifconfig` (macOS/Linux) or `ipconfig` (Windows) to confirm your subnet.
ifconfig | grep broadcastRun the MCP server via Docker
The easiest deployment is Docker with --network host so the container can reach Tapo devices via UDP broadcast. Supply your Tapo account credentials and broadcast address as environment variables.
docker run --rm \
--network host \
-e TAPO_MCP_USERNAME="[email protected]" \
-e TAPO_MCP_PASSWORD="your_tapo_password" \
-e TAPO_MCP_DISCOVERY_TARGET="192.168.1.255" \
ghcr.io/mihai-dinculescu/tapo-mcp:latestOptional: enable camera snapshots
Camera snapshots require a separate per-camera account configured in the Tapo app under Camera Settings > Advanced Settings > Camera Account. Set the additional env vars when you need snapshot support.
docker run --rm \
--network host \
-e TAPO_MCP_USERNAME="[email protected]" \
-e TAPO_MCP_PASSWORD="your_tapo_password" \
-e TAPO_MCP_CAMERA_USERNAME="camera_user" \
-e TAPO_MCP_CAMERA_PASSWORD="camera_pass" \
-e TAPO_MCP_DISCOVERY_TARGET="192.168.1.255" \
ghcr.io/mihai-dinculescu/tapo-mcp:latestOptional: secure the server with an API key
Set TAPO_MCP_API_KEY to require a Bearer token on all HTTP requests. Without it the server is unauthenticated and accessible to anyone on the network.
docker run --rm --network host \
-e TAPO_MCP_USERNAME="[email protected]" \
-e TAPO_MCP_PASSWORD="your_tapo_password" \
-e TAPO_MCP_DISCOVERY_TARGET="192.168.1.255" \
-e TAPO_MCP_API_KEY="mysecrettoken" \
ghcr.io/mihai-dinculescu/tapo-mcp:latestConfigure your MCP client to connect
Point your MCP client to the running server. The default listening address is 127.0.0.1:3000. This entry uses the HTTP URL transport; adjust the URL if you changed TAPO_MCP_HTTP_ADDR.
{
"mcpServers": {
"tapo": {
"url": "http://127.0.0.1:3000/mcp"
}
}
}Tapo Examples
Client configuration
MCP client config entry pointing to the locally running Tapo MCP HTTP server. If TAPO_MCP_API_KEY is set, add an Authorization header in the client settings.
{
"mcpServers": {
"tapo": {
"url": "http://127.0.0.1:3000/mcp"
}
}
}Prompts to try
Natural language commands that map to the list_devices, get_device_state, control_device, and take_snapshot tools.
- "List all my Tapo devices"
- "Turn off the office light"
- "Set the bedroom light to 50% brightness"
- "Change the living room light color to Coral"
- "What's the current temperature in the kitchen?"
- "Take a snapshot from the baby monitor camera"
- "Show me the last 24 hours of humidity readings from the living room sensor"Troubleshooting Tapo
list_devices returns an empty list
Verify TAPO_MCP_DISCOVERY_TARGET matches your LAN broadcast address. On Docker Desktop for macOS/Windows, --network host is not supported; use -p 3000:3000 but note that UDP broadcast discovery will not work — you may need to specify device IPs manually.
Authentication errors when controlling devices
Double-check TAPO_MCP_USERNAME and TAPO_MCP_PASSWORD match the credentials used in the Tapo mobile app, not your Wi-Fi or router password. Some regions use a different email; try the email shown in the Tapo app's account settings.
take_snapshot returns a permission error
Camera snapshots require TAPO_MCP_CAMERA_USERNAME and TAPO_MCP_CAMERA_PASSWORD, which are set per-camera in the Tapo app under Camera Settings > Advanced Settings > Camera Account. These are different from your TP-Link cloud account credentials.
Frequently Asked Questions about Tapo
What is Tapo?
Tapo is a Model Context Protocol (MCP) server that mcp server for discovering and controlling tp-link tapo smart home devices via ai agents It connects AI assistants to external tools and data sources through a standardized interface.
How do I install Tapo?
Follow the installation instructions on the Tapo GitHub repository. Clone the repo, install dependencies, and add the server config to your AI client.
Which AI clients work with Tapo?
Tapo works with all major MCP-compatible AI clients including Claude Desktop, Claude Code, Cursor, VS Code (GitHub Copilot), Windsurf, and Cline.
Is Tapo free to use?
Yes, Tapo is open source and available under the MIT license. You can use it freely in both personal and commercial projects.
Tapo Alternatives — Similar Cloud Services Servers
Looking for alternatives to Tapo? Here are other popular cloud services servers you can use with Claude, Cursor, and VS Code.
Open WebUI
★ 138.2kUser-friendly AI Interface (Supports Ollama, OpenAI API, ...)
Anything LLM
★ 60.4kThe all-in-one AI productivity accelerator. On device and privacy first with no annoying setup or configuration.
LocalAI
★ 46.4kLocalAI is the open-source AI engine. Run any model - LLMs, vision, voice, image, video - on any hardware. No GPU required.
Nacos
★ 33.0kan easy-to-use dynamic service discovery, configuration and service management platform for building AI cloud native applications.
Xiaozhi ESP32
★ 26.7k本项目为xiaozhi-esp32提供后端服务,帮助您快速搭建ESP32设备控制服务器。Backend service for xiaozhi-esp32, helps you quickly build an ESP32 device control server.
Gateway
★ 11.8kA blazing fast AI Gateway with integrated guardrails. Route to 1,600+ LLMs, 50+ AI Guardrails with 1 fast & friendly API.
Browse More Cloud Services MCP Servers
Explore all cloud services servers available in the MCPgee directory. Each server includes setup guides for Claude, Cursor, and VS Code.
Set Up Tapo in Your Editor
Choose your AI client for step-by-step setup instructions.
Quick Config Preview
Add this to your claude_desktop_config.json or .cursor/mcp.json
Ready to use Tapo?
Browse our complete directory of 33,000+ MCP servers, read setup guides for your editor, and start building with the Model Context Protocol.