Tapo MCP

السجل الرسمي الذكاء الاصطناعي والوكلاء

MCP server for discovering and controlling TP-Link Tapo smart home devices via AI Agents

التثبيت

أضف هذا إلى إعدادات MCP في عميلك (Claude Desktop: claude_desktop_config.json، وCursor: ‏.cursor/mcp.json، ويستخدم VS Code وغيره الصيغة نفسها «mcpServers»).

OCI package ghcr.io/mihai-dinculescu/tapo-mcp:0.6.0
Claude Code
claude mcp add tapo-mcp -e 'TAPO_MCP_USERNAME=<your tapo_mcp_username>' -e 'TAPO_MCP_PASSWORD=<your tapo_mcp_password>' -e 'TAPO_MCP_CAMERA_USERNAME=<your tapo_mcp_camera_username>' -e 'TAPO_MCP_CAMERA_PASSWORD=<your tapo_mcp_camera_password>' -e 'TAPO_MCP_DISCOVERY_TARGET=<TAPO_MCP_DISCOVERY_TARGET>' -e 'TAPO_MCP_API_KEY=<your tapo_mcp_api_key>' -e 'TAPO_MCP_ALLOWED_HOSTS=<TAPO_MCP_ALLOWED_HOSTS>' -e 'TAPO_MCP_PUBLIC_URL=<TAPO_MCP_PUBLIC_URL>' -e 'TAPO_MCP_DISCOVERY_TIMEOUT=5' -e 'TAPO_MCP_DISCOVERY_INTERVAL=600' -e 'OTEL_EXPORTER_OTLP_ENDPOINT=<OTEL_EXPORTER_OTLP_ENDPOINT>' -- docker run -i --rm ghcr.io/mihai-dinculescu/tapo-mcp:0.6.0
إعداد JSON (Claude Desktop وCursor وVS Code)
{
    "mcpServers": {
        "tapo-mcp": {
            "command": "docker",
            "args": [
                "run",
                "-i",
                "--rm",
                "ghcr.io/mihai-dinculescu/tapo-mcp:0.6.0"
            ],
            "env": {
                "TAPO_MCP_USERNAME": "<your tapo_mcp_username>",
                "TAPO_MCP_PASSWORD": "<your tapo_mcp_password>",
                "TAPO_MCP_CAMERA_USERNAME": "<your tapo_mcp_camera_username>",
                "TAPO_MCP_CAMERA_PASSWORD": "<your tapo_mcp_camera_password>",
                "TAPO_MCP_DISCOVERY_TARGET": "<TAPO_MCP_DISCOVERY_TARGET>",
                "TAPO_MCP_API_KEY": "<your tapo_mcp_api_key>",
                "TAPO_MCP_ALLOWED_HOSTS": "<TAPO_MCP_ALLOWED_HOSTS>",
                "TAPO_MCP_PUBLIC_URL": "<TAPO_MCP_PUBLIC_URL>",
                "TAPO_MCP_DISCOVERY_TIMEOUT": "5",
                "TAPO_MCP_DISCOVERY_INTERVAL": "600",
                "OTEL_EXPORTER_OTLP_ENDPOINT": "<OTEL_EXPORTER_OTLP_ENDPOINT>"
            }
        }
    }
}

متغيرات البيئة

  • TAPO_MCP_USERNAME إلزامي سري TP-Link Tapo account email
  • TAPO_MCP_PASSWORD إلزامي سري TP-Link Tapo account password
  • TAPO_MCP_CAMERA_USERNAME سري Optional camera account username; required for taking camera snapshots
  • TAPO_MCP_CAMERA_PASSWORD سري Optional camera account password; required for taking camera snapshots
  • TAPO_MCP_DISCOVERY_TARGET إلزامي Network target for device discovery (e.g. 192.168.1.255)
  • TAPO_MCP_API_KEY سري Optional Bearer token for API authentication
  • TAPO_MCP_ALLOWED_HOSTS Optional comma-separated Host header allowlist; replaces the loopback-only default
  • TAPO_MCP_PUBLIC_URL Optional base URL clients reach the server at; enables short-lived snapshot links
  • TAPO_MCP_DISCOVERY_TIMEOUT Device discovery timeout in seconds; must be between 1 and 60
  • TAPO_MCP_DISCOVERY_INTERVAL Seconds between background device discoveries that refresh the device list; must be at least TAPO_MCP_DISCOVERY_TIMEOUT and at most 86400 (one day); tool calls wait while a discovery runs, so a short interval delays them more often
  • OTEL_EXPORTER_OTLP_ENDPOINT Optional OpenTelemetry collector endpoint for tracing

التوثيق

مأخوذ من ملف README للمشروع على GitHub ويُحدَّث أسبوعيًا. تفتح الروابط على GitHub.

المحتويات
  1. Tapo
  2. Supported Devices
  3. Rust Library
  4. Python Library
  5. MCP Server
  6. Community Projects
  7. Troubleshooting
  8. Contributing
  9. Sponsors
  10. Credits

Tapo

[![License][license_badge]][license] [![Crates][crates_badge]][crates] [![Documentation][crates_documentation_badge]][crates_documentation] [![Crates.io][crates_downloads_badge]][crates] [![PyPI][pypi_badge]][pypi] [![Python][pypi_versions_badge]][pypi] [![PyPI][pypi_downloads_badge]][pypi]\ Unofficial Tapo API Client. Works with TP-Link Tapo smart devices. Tested with light bulbs (L510, L520, L530, L535, L610, L630), light strips (L900, L920, L930), plugs (P100, P105, P110, P110M, P115, P125, P125M, TP10), power strips (P300, P304M, P306, P316M), hubs (H100, H110, H200, H500), switches (S200B, S200D, S210), sensors (KE100, T100, T110, T300, T310, T315) and cameras (C120, C210, C220, C225, C325WB, C520WS, TC40, TC70).

[license_badge]: https://img.shields.io/crates/l/tapo.svg [license]: https://github.com/mihai-dinculescu/tapo/blob/main/LICENSE [crates_badge]: https://img.shields.io/crates/v/tapo.svg?logo=rust&color=F75101 [crates]: https://crates.io/crates/tapo [crates_documentation_badge]: https://img.shields.io/docsrs/tapo.svg?logo=rust&color=F75101 [crates_documentation]: https://docs.rs/tapo [crates_downloads_badge]: https://img.shields.io/crates/d/tapo?logo=rust&label=downloads&color=F75101

[pypi_badge]: https://img.shields.io/pypi/v/tapo.svg?logo=pypi&color=00ADD4 [pypi]: https://pypi.org/project/tapo [pypi_versions_badge]: https://img.shields.io/pypi/pyversions/tapo.svg?logo=python&color=00ADD4 [pypi_downloads_badge]: https://img.shields.io/pypi/dm/tapo?logo=python&color=00ADD4

Supported Devices

See [/SUPPORTED_DEVICES.md][supported_devices] for the supported devices and feature matrix.

Rust Library

Usage

Cargo.toml

[dependencies]
tapo = "0.11"

main.rs

let device = ApiClient::new("<tapo-username>", "tapo-password")
    .p110("<device ip address>")
    .await?;

device.on().await?;
Examples
export TAPO_USERNAME=
export TAPO_PASSWORD=
export IP_ADDRESS=

cargo run --example tapo_l530

See all examples in [/tapo/examples][examples].

Python Library

Usage
pip install tapo
client = ApiClient("<tapo-username>", "tapo-password")
device = await client.p110("<device ip address>")

await device.on()
Examples
cd tapo-py
uv venv # On the initial run only
uv sync --group dev --locked
uv run maturin develop # On the initial run and whenever the Rust code is modified

export TAPO_USERNAME=
export TAPO_PASSWORD=
export IP_ADDRESS=
uv run python examples/tapo_p110.py

See all examples in [/tapo-py/examples][examples-py].

MCP Server

An MCP server that exposes Tapo devices as AI-callable tools and resources via the Model Context Protocol. See [/tapo-mcp/README.md][tapo_mcp] for setup and usage.

Community Projects

  • [tapo-rest][tapo_rest] — a REST wrapper of this library that can be deployed as a service or serve as an advanced example.
  • [tapoviz][tapoviz] — audio-reactive and screen-reactive lighting for L920/L930 LED strips, with a local web UI.

Troubleshooting

See [/TROUBLESHOOTING.md][troubleshooting] for solutions to common issues.

Contributing

Contributions are welcome and encouraged! See [/CONTRIBUTING.md][contributing].

Sponsors

A big thank you to the sponsors of this project!

  • [abler98][sponsor_abler98]
  • [nathanja][sponsor_nathanja]
  • [santiago-salas-v][sponsor_santiago_salas_v]

Credits

Created and maintained by [Mihai Dinculescu][author].

Inspired by [petretiandrea/plugp100][inspired_by_plugp100] and [python-kasa/python-kasa][inspired_by_kasa].

[supported_devices]: https://github.com/mihai-dinculescu/tapo/blob/main/SUPPORTED_DEVICES.md [examples]: https://github.com/mihai-dinculescu/tapo/tree/main/tapo/examples [examples-py]: https://github.com/mihai-dinculescu/tapo/tree/main/tapo-py/examples [tapo_mcp]: https://github.com/mihai-dinculescu/tapo/tree/main/tapo-mcp [tapo_rest]: https://github.com/ClementNerma/tapo-rest [tapoviz]: https://github.com/The-DarkMatter/tapoviz [troubleshooting]: https://github.com/mihai-dinculescu/tapo/blob/main/TROUBLESHOOTING.md [contributing]: https://github.com/mihai-dinculescu/tapo/blob/main/CONTRIBUTING.md [sponsor_abler98]: https://github.com/abler98 [sponsor_nathanja]: https://github.com/nathanja [sponsor_santiago_salas_v]: https://github.com/santiago-salas-v [author]: https://mihai.dinculescu.dev [inspired_by_plugp100]: https://github.com/petretiandrea/plugp100 [inspired_by_kasa]: https://github.com/python-kasa/python-kasa

الأسئلة الشائعة

ما هو Tapo MCP؟

MCP server for discovering and controlling TP-Link Tapo smart home devices via AI Agents

كيف أثبّت Tapo MCP؟

يعمل على جهازك. في Claude Code: claude mcp add tapo-mcp -e 'TAPO_MCP_USERNAME=<your tapo_mcp_username>' -e 'TAPO_MCP_PASSWORD=<your tapo_mcp_password>' -e 'TAPO_MCP_CAMERA_USERNAME=<your tapo_mcp_camera_username>' -e 'TAPO_MCP_CAMERA_PASSWORD=<your tapo_mcp_camera_password>' -e 'TAPO_MCP_DISCOVERY_TARGET=<TAPO_MCP_DISCOVERY_TARGET>' -e 'TAPO_MCP_API_KEY=<your tapo_mcp_api_key>' -e 'TAPO_MCP_ALLOWED_HOSTS=<TAPO_MCP_ALLOWED_HOSTS>' -e 'TAPO_MCP_PUBLIC_URL=<TAPO_MCP_PUBLIC_URL>' -e 'TAPO_MCP_DISCOVERY_TIMEOUT=5' -e 'TAPO_MCP_DISCOVERY_INTERVAL=600' -e 'OTEL_EXPORTER_OTLP_ENDPOINT=<OTEL_EXPORTER_OTLP_ENDPOINT>' -- docker run -i --rm ghcr.io/mihai-dinculescu/tapo-mcp:0.6.0. وفي العملاء الآخرين، الصق إعداد JSON من هذه الصفحة في إعدادات MCP الخاصة بهم.

هل يحتاج Tapo MCP إلى مفتاح API؟

نعم. يتطلب TAPO_MCP_USERNAME, TAPO_MCP_PASSWORD, TAPO_MCP_CAMERA_USERNAME, TAPO_MCP_CAMERA_PASSWORD, TAPO_MCP_DISCOVERY_TARGET, TAPO_MCP_API_KEY، وتضبطها في إعداداته.

هل Tapo MCP مفتوح المصدر؟

نعم. شيفرته متاحة على GitHub بترخيص MIT.

من يصون Tapo MCP؟

ينشره mihai-dinculescu. يدرجه AI.tn لكنه لا يصونه ولا يوصي به.

من سجل MCP الرسمي. الإدراج ليس توصية: راجع شيفرة الخادم وصلاحياته قبل منحه الوصول إلى بياناتك.