tolpo — Claude Code MCP server: what it does, how to install
tolpo lets an AI agent inspect and control TP-Link Tapo devices on the local network. It fits workflows that need lights, sensors, cameras, or plugs exposed through MCP.
claude mcp add tolpo -e TAPO_EMAIL=<TAPO_EMAIL> -e TAPO_PASSWORD=<TAPO_PASSWORD> -- npx -y tolpoWhat tolpo does
tolpo presents TP-Link Tapo devices on the local network through one MCP interface. An agent can inspect and operate lights, plugs, hubs, sensors, cameras, doorbells, and robot vacuums. The project also exposes an HTTP API with OpenAPI documentation at /docs, which suits scripts and dashboards.
Communication goes directly to the devices through python-kasa, so requests do not pass through the vendor cloud. Discovery uses a broadcast plus direct address checks, while short-lived caching keeps an agent from waiting on a slow hub. Actions use permission levels: reading and reversible controls start enabled, while settings, pairing, factory reset, and other harder-to-reverse operations require a higher level; the last two categories also require a confirmation phrase.
You need a Tapo account and Python 3.11+. The server cannot access devices without TAPO_EMAIL and TAPO_PASSWORD. Device coverage follows python-kasa; C225, C610, and C465 connected during testing, with a small compat.py fix required for C465.
What it helps with
- control Tapo lights and plugs from an agent
- read sensor, camera, and doorbell state
- check whether doors or windows are open
- expose Tapo actions through an HTTP API
- gate pairing and reset operations behind permission levels
Example prompts for the agent
- Turn off the office lights through tolpo.
- Check whether any door is open and report the sensor battery state.
- Take a picture from camera C225 and list the Tapo devices currently reachable.
How to install tolpo
Platform CLI
claude mcp add tolpo -e TAPO_EMAIL=<TAPO_EMAIL> -e TAPO_PASSWORD=<TAPO_PASSWORD> -- npx -y tolpoReplace <…> with your own values
Platform CLI
codex mcp add tolpo --env TAPO_EMAIL=<TAPO_EMAIL> --env TAPO_PASSWORD=<TAPO_PASSWORD> -- npx -y tolpoReplace <…> with your own values
Config file
{
"mcpServers": {
"tolpo": {
"command": "npx",
"args": [
"-y",
"tolpo"
],
"env": {
"TAPO_EMAIL": "<TAPO_EMAIL>",
"TAPO_PASSWORD": "<TAPO_PASSWORD>"
}
}
}
}Replace <…> with your own values
Config file
{
"servers": {
"tolpo": {
"type": "stdio",
"command": "npx",
"args": [
"-y",
"tolpo"
],
"env": {
"TAPO_EMAIL": "<TAPO_EMAIL>",
"TAPO_PASSWORD": "<TAPO_PASSWORD>"
}
}
}
}Replace <…> with your own values
Platform CLI
gemini mcp add -e TAPO_EMAIL=<TAPO_EMAIL> -e TAPO_PASSWORD=<TAPO_PASSWORD> tolpo npx -y tolpoReplace <…> with your own values
Step by step, with commands for each platform: How to add an MCP server to Claude Code, Codex, Cursor, VS Code, Gemini CLI and more
Questions about tolpo
How do I install tolpo in Claude Code?
Run claude mcp add tolpo -e TAPO_EMAIL=<TAPO_EMAIL> -e TAPO_PASSWORD=<TAPO_PASSWORD> -- npx -y tolpo. This registers the MCP server with the Tapo account credentials.
What does tolpo do?
tolpo gives an AI agent an MCP interface for TP-Link Tapo devices on the local network. It can read device state and perform allowed controls.
Which devices work with tolpo?
tolpo follows the device support provided by python-kasa, including lights, plugs, hubs, sensors, cameras, and doorbells. Available operations vary by model and permission level.