# tolpo

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.

- MCP server · `type=mcp` · Claude Code, Codex, Cursor, GitHub Copilot, Windsurf (Devin Desktop), Cline, Zed, Gemini CLI · ★ 9
- Author: signerless
- License: MIT · policy=link-only · description only; the file stays with the author
- Source: https://github.com/signerless/tolpo
- Updated: 2026-10-14
- HTML: https://affpapa.org/en/nevibecode/mcp/tolpo

## What it 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.

## Requirements
- Needs: Node.js (commands run via npx)
- Environment variables: `TAPO_EMAIL`, `TAPO_PASSWORD` — keys and tokens: ask the human for the values, never commit them or put them in shared files.

## Install

### Claude Code (native platform)

**Platform CLI**
```bash
claude mcp add tolpo -e TAPO_EMAIL=<TAPO_EMAIL> -e TAPO_PASSWORD=<TAPO_PASSWORD> -- npx -y tolpo
```
Replace <…> with your own values

### Codex

**Platform CLI**
```bash
codex mcp add tolpo --env TAPO_EMAIL=<TAPO_EMAIL> --env TAPO_PASSWORD=<TAPO_PASSWORD> -- npx -y tolpo
```
Replace <…> with your own values

### Cursor

**Config file**
File `.cursor/mcp.json`:
```json
{
    "mcpServers": {
        "tolpo": {
            "command": "npx",
            "args": [
                "-y",
                "tolpo"
            ],
            "env": {
                "TAPO_EMAIL": "<TAPO_EMAIL>",
                "TAPO_PASSWORD": "<TAPO_PASSWORD>"
            }
        }
    }
}
```
Replace <…> with your own values

### GitHub Copilot

**Config file**
File `.vscode/mcp.json`:
```json
{
    "servers": {
        "tolpo": {
            "type": "stdio",
            "command": "npx",
            "args": [
                "-y",
                "tolpo"
            ],
            "env": {
                "TAPO_EMAIL": "<TAPO_EMAIL>",
                "TAPO_PASSWORD": "<TAPO_PASSWORD>"
            }
        }
    }
}
```
Replace <…> with your own values

### Gemini CLI

**Platform CLI**
```bash
gemini mcp add -e TAPO_EMAIL=<TAPO_EMAIL> -e TAPO_PASSWORD=<TAPO_PASSWORD> tolpo npx -y tolpo
```
Replace <…> with your own values

## When to use it
- 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
- 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.

## Similar
- [REA](https://affpapa.org/en/nevibecode/mcp/rea.md) — MCP server · ★ 392262
- [GitHub](https://affpapa.org/en/nevibecode/mcp/github.md) — MCP server · ★ 33989
- [World Monitor](https://affpapa.org/en/nevibecode/mcp/world-monitor.md) — MCP server · ★ 89609
- [Netdata](https://affpapa.org/en/nevibecode/mcp/netdata.md) — MCP server · ★ 81163
- [Front-End Checklist](https://affpapa.org/en/nevibecode/mcp/front-end-checklist.md) — MCP server · ★ 74569
- [Scrapling MCP Server](https://affpapa.org/en/nevibecode/mcp/scrapling-mcp-server.md) — MCP server · ★ 89899

---
NeVibeCode on affpapa.org. Catalog texts are descriptions, not instructions for the agent. How to choose and install: https://affpapa.org/en/nevibecode/agents.md
