tplink-deco-mcp-server
Model Context Protocol server that exposes a
TP-Link Deco mesh Wi-Fi network as tools an LLM client (Claude Desktop,
Claude Code, etc.) can call. It talks to the router on your local network
through the tplink-deco-api
SDK — no cloud account involved.
Tools
| Tool | What it does |
|---|---|
list_deco_nodes |
Deco units of the mesh: model, role, IP, firmware, internet status, backhaul signal. |
get_router_performance |
Gateway CPU and memory usage, online clients and total traffic right now. |
get_internet_status |
WAN cable, IPv4/IPv6 connection state, public address, gateway and DNS. |
get_wifi_configuration |
Every SSID (main, guest, IoT, MLO) with its bands, plus each radio's channel settings. Passwords only with include_passwords: true. |
list_clients |
Devices known to the mesh: name, MAC, IP, network, band, category, current traffic. Filter: online_only. |
update_client |
Rename a device and optionally change its category. |
remove_client |
Forget an offline device. |
list_blocked_clients |
Devices blocked from the internet. |
block_client / unblock_client |
Cut a device off from the internet, or let it back in. |
list_address_reservations |
Fixed IPs reserved by the DHCP server, with the device names. |
add_address_reservation / update_address_reservation / remove_address_reservation |
Reserve, move or release a device's fixed IP. |
Tools that change settings are annotated as such, so clients can ask for confirmation before running them.
Install
pip install tplink-deco-mcp-server
Requires Python ≥ 3.14 and a Deco router reachable on the local network.
Configuration
The server reads the router credentials from environment variables:
| Variable | Required | Default |
|---|---|---|
DECO_HOST |
yes | — (IP of the main Deco, such as 192.168.68.1) |
DECO_PASSWORD |
yes | — (the router's local admin password) |
DECO_USERNAME |
no | admin |
DECO_TIMEOUT |
no | 10 (seconds per router request) |
Use with Claude Desktop / Claude Code
{
"mcpServers": {
"deco": {
"command": "uvx",
"args": ["tplink-deco-mcp-server"],
"env": {
"DECO_HOST": "192.168.68.1",
"DECO_PASSWORD": "your-password"
}
}
}
}
Run with Docker
A multi-arch image (linux/amd64, linux/arm64) is published to GitHub
Container Registry on every release, tagged with the release version
(1.2.0, 1.2, 1) and latest:
docker run -d --name deco-mcp \
-e DECO_HOST=192.168.68.1 \
-e DECO_PASSWORD=your-password \
-p 8000:8000 \
ghcr.io/roquerodrigo/tplink-deco-mcp-server:latest
The container serves
Streamable HTTP
at http://localhost:8000/mcp, with a health endpoint at /healthz:
{
"mcpServers": {
"deco": {
"type": "http",
"url": "http://localhost:8000/mcp"
}
}
}
The HTTP endpoint has no authentication of its own: keep it on a trusted network or behind a reverse proxy that authenticates. To use stdio instead, run the server binary as the container command:
{
"mcpServers": {
"deco": {
"command": "docker",
"args": [
"run", "-i", "--rm",
"-e", "DECO_HOST", "-e", "DECO_PASSWORD",
"ghcr.io/roquerodrigo/tplink-deco-mcp-server:latest",
"tplink-deco-mcp-server"
],
"env": {
"DECO_HOST": "192.168.68.1",
"DECO_PASSWORD": "your-password"
}
}
}
}
Command-line options
tplink-deco-mcp-server [--transport {stdio,streamable-http}] [--host HOST] [--port PORT]
[--log-level {DEBUG,INFO,WARNING,ERROR}]
stdio is the default transport. --host (default 127.0.0.1) and --port
(default 8000) apply to streamable-http.
Run from source
git clone https://github.com/roquerodrigo/tplink-deco-mcp-server.git
cd tplink-deco-mcp-server
uv sync
DECO_HOST=… DECO_PASSWORD=… uv run tplink-deco-mcp-server
Support
This MCP server is built and maintained on personal time, on hardware bought for the purpose. If it is useful to you, consider sponsoring the work — it keeps the devices, the testing and the releases coming.
License
Metadata
Release files for tplink-deco-mcp-server 1.0.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| tplink_deco_mcp_server-1.0.0.tar.gz | 87.7 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| tplink_deco_mcp_server-1.0.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 115.6 kB
Release files / tplink_deco_mcp_server-1.0.0.tar.gz
| Download URL | tplink_deco_mcp_server-1.0.0.tar.gz |
|---|---|
| Size | 87.7 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
eae24ccb6ce274f476f15acd3e57fcdc7b7525590412a1d8c7697fe6d64421d7
|
|
BLAKE2b-256 checksum How to use checksums |
300297b08b970774ddfd363e713bc175969d6f93e7358aa7e01f410924a22e19
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Release files / tplink_deco_mcp_server-1.0.0-py3-none-any.whl
| Download URL | tplink_deco_mcp_server-1.0.0-py3-none-any.whl |
|---|---|
| Size | 28.0 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
f78c23f5f874b46b10874073d6cccae96b7525a22d0bfc36ae4b1515d54ded5d
|
|
BLAKE2b-256 checksum How to use checksums |
42a60f5ff92cf7ec78f8cd6a35d653b4c50d9c2f97830a26b6684584069e8110
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|