Token导航 LogoToken导航TokenDH.com
TP-Link Router MCP Server logo
浏览器工具stdio官方级别未说明来源级核验

TP-Link Router MCP Server

MCP Server

一个使用Playwright浏览器自动化技术自动化TP-Link BE3600及类似路由器的Python库,支持登录认证、端口转发管理、DHCP设置、网络状态查看等功能。

工具数

0

提示词数

0

GitHub Stars

1

资源数

0
浏览器自动化PythonClaude网络管理Claude DesktopClaude

安装说明

本站只整理中文说明和来源信息,不托管安装包,也不代用户安装。

作者 / 组织

consigcody94

提供方

consigcody94

最后核验

2026/5/17 20:22

运行时

Python

快速接入

先看主来源和安装命令,再打开仓库或文档;下面只保留这个条目的关键接入事实。

命令预览

python -m venv venv

详细介绍

TP-Link BE3600路由器自动化

一个Python库,用于使用Playwright浏览器自动化来自动化TP-Link BE3600(和类似)路由器。该工具通过直接控制web界面绕过路由器的复杂加密方案。

为什么存在

TP-Link BE3600路由器为其API使用复杂的加密方案:

  • RSA加密用于密钥交换
  • AES-GCM用于请求/响应加密
  • 使用序列号生成复杂签名

该库使用 Playwright浏览器自动化 直接与路由器的web UI交互。浏览器本机处理所有加密。

特性

  • 登录/身份验证 -基于浏览器的自动登录
  • 端口转发管理 -列出、添加和管理端口转发规则
  • DHCP设置 -查看DHCP配置
  • 网络状态 -获取路由器状态和连接的设备
  • 电脑屏幕截图工具 -通过捕获UI屏幕截图进行调试
  • MCP服务器 -用于AI集成的模型上下文协议服务器

支持的路由器

  • TP-Link BE3600(双频Wi-Fi 7)- 主要目标
  • 可以使用类似的web界面与其他TP-Link路由器配合使用

安装

先决条件

  • Python 3.10+
  • Chromium浏览器(由Playwright自动安装)

从源代码安装

# Clone the repository
git clone https://github.com/consigcody94/mcp-tplink-router.git
cd mcp-tplink-router

# Create virtual environment
python -m venv venv
source venv/bin/activate  # On Windows: venv\Scripts\activate

# Install dependencies
pip install -e .

# Install Playwright browsers
playwright install chromium

# On Linux, you may need additional dependencies
sudo apt-get install -y libnss3 libnspr4 libatk1.0-0 libatk-bridge2.0-0 \
    libcups2 libdrm2 libxkbcommon0 libxcomposite1 libxdamage1 libxfixes3 \
    libxrandr2 libgbm1 libasound2

快速开始

1.配置环境

创建 .env 文件:

TPLINK_HOST=192.168.0.1
TPLINK_PASSWORD=your_router_password
TPLINK_USERNAME=admin

2.基本用法

from mcp_tplink_router.be3600_playwright import BE3600PlaywrightClient

# Initialize the client
client = BE3600PlaywrightClient(
    host="192.168.0.1",       # Your router's IP
    password="your_password"   # Router admin password
)

# Login
if client.login():
    print(f"Logged in! STOK: {client.stok}")

    # Get port forwarding rules
    rules = client.get_port_forwarding()
    for rule in rules:
        print(f"{rule['name']}: {rule['external_port']} -> {rule['internal_ip']}:{rule['internal_port']}")

    # Always logout when done
    client.logout()
else:
    print("Login failed")

3.添加端口转发规则

from mcp_tplink_router.be3600_playwright import BE3600PlaywrightClient

client = BE3600PlaywrightClient("192.168.0.1", "your_password")

if client.login():
    # Add a single port forward
    client.add_port_forward(
        name="Web Server",
        external_port="80",
        internal_ip="192.168.0.100",
        internal_port="80",
        protocol="TCP"  # "TCP", "UDP", or "All"
    )

    # Add a port range (e.g., for VoIP/RTP)
    client.add_port_forward(
        name="VoIP RTP",
        external_port="10000-10100",
        internal_ip="192.168.0.50",
        internal_port="10000-10100",
        protocol="UDP",
        is_port_range=True
    )

    client.logout()

API 参考

BE3600剧作家客户端

构造函数

BE3600PlaywrightClient(host: str, password: str, username: str = "admin")
参数类型说明
hoststr路由器IP地址(例如“192.168.0.1”)
passwordstr管理员密码
usernamestr管理员用户名(默认:“Admin”)

方法

方法返回描述
login()bool使用路由器进行身份验证
logout()None关闭浏览器并清理
get_port_forwarding()List[Dict]获取所有端口转发规则
add_port_forward(...)bool添加新的端口转发规则
get_status()dict获取路由器状态
get_devices()List[Dict]获取已连接的设备
get_dhcp_settings()dict获取DHCP配置
take_screenshot(path)str截图调试

端口转发规则格式

{
    "name": "Web Server",
    "internal_ip": "192.168.0.100",
    "external_port": "80",
    "internal_port": "80",
    "protocol": "TCP",
    "status": ""
}

完整示例:FreePBX/VoIP设置

#!/usr/bin/env python3
"""Configure port forwarding for FreePBX/VoIP."""

import os
from dotenv import load_dotenv
from mcp_tplink_router.be3600_playwright import BE3600PlaywrightClient

load_dotenv()

ROUTER_HOST = os.getenv("TPLINK_HOST", "192.168.0.1")
ROUTER_PASSWORD = os.getenv("TPLINK_PASSWORD")
FREEPBX_IP = "192.168.0.169"

def main():
    client = BE3600PlaywrightClient(ROUTER_HOST, ROUTER_PASSWORD)

    if not client.login():
        print("Failed to login to router")
        return

    try:
        # Add SIP signaling port (UDP 5060)
        print("Adding SIP port forwarding...")
        client.add_port_forward(
            name="FreePBX SIP",
            external_port="5060",
            internal_ip=FREEPBX_IP,
            internal_port="5060",
            protocol="UDP"
        )

        # Add RTP media ports (UDP 10000-20000)
        print("Adding RTP port range...")
        client.add_port_forward(
            name="FreePBX RTP",
            external_port="10000-20000",
            internal_ip=FREEPBX_IP,
            internal_port="10000-20000",
            protocol="UDP",
            is_port_range=True
        )

        # Verify rules were added
        print("\nCurrent port forwarding rules:")
        rules = client.get_port_forwarding()
        for rule in rules:
            print(f"  {rule['name']}: {rule['external_port']} -> "
                  f"{rule['internal_ip']}:{rule['internal_port']} ({rule['protocol']})")

    finally:
        client.logout()

if __name__ == "__main__":
    main()

MCP服务器使用情况(AI集成)

此软件包包括一个MCP(模型上下文协议)服务器,用于与Claude Desktop和其他AI助手一起使用。

配置Claude桌面

添加 ~/.config/claude/claude_desktop_config.json:

{
  "mcpServers": {
    "tplink-router": {
      "command": "/path/to/mcp-tplink-router/venv/bin/python",
      "args": ["-m", "mcp_tplink_router"],
      "env": {
        "TPLINK_HOST": "192.168.0.1",
        "TPLINK_USERNAME": "admin",
        "TPLINK_PASSWORD": "your_password"
      }
    }
  }
}

可用的MCP工具

工具说明
router_status获取路由器状态,包括广域网信息
list_connected_devices列出所有连接的设备
list_port_forwarding列出所有端口转发规则
add_port_forwarding添加新的端口转发规则
router_diagnostics获取诊断信息

运作原理

┌─────────────────────────────────────────────────────────────┐
│                     Your Python Script                       │
└─────────────────────────────────────────────────────────────┘
                              │
                              ▼
┌─────────────────────────────────────────────────────────────┐
│                  BE3600PlaywrightClient                      │
│  ┌─────────────────────────────────────────────────────┐   │
│  │  1. Launch headless Chromium via Playwright          │   │
│  │  2. Navigate to router web interface                 │   │
│  │  3. Fill login form, click submit                    │   │
│  │  4. Capture STOK from network requests               │   │
│  │  5. Store sysauth cookie                             │   │
│  │  6. Use JS injection for Vue.js UI interaction       │   │
│  │  7. Parse page content for data extraction           │   │
│  └─────────────────────────────────────────────────────┘   │
└─────────────────────────────────────────────────────────────┘
                              │
                              ▼
┌─────────────────────────────────────────────────────────────┐
│                 TP-Link BE3600 Router                        │
│  ┌─────────────────────────────────────────────────────┐   │
│  │  Vue.js Web Interface                                │   │
│  │  - RSA/AES-GCM encrypted API                        │   │
│  │  - Handled natively by browser JavaScript           │   │
│  └─────────────────────────────────────────────────────┘   │
└─────────────────────────────────────────────────────────────┘

关键洞察:我们没有对复杂的加密进行逆向工程,而是让浏览器的JavaScript处理它。Playwright自动化了浏览器,我们从渲染的DOM中提取数据。

故障排除

“找不到密码字段”

  • 路由器的web界面可能尚未完全加载
  • 增加客户端的等待时间
  • 验证路由器是否可以在指定的IP上访问

“登录失败”

  • 验证您的密码是否正确
  • 确保没有其他管理员会话处于活动状态
  • 请先尝试手动访问路由器web界面

Chromium在Linux上崩溃

安装所需的依赖项:

sudo apt-get install -y libnss3 libnspr4 libatk1.0-0 libatk-bridge2.0-0 \
    libcups2 libdrm2 libxkbcommon0 libxcomposite1 libxdamage1 libxfixes3 \
    libxrandr2 libgbm1 libasound2

使用屏幕截图进行调试

client = BE3600PlaywrightClient(host, password)
if client.login():
    client.get_port_forwarding()
    client.take_screenshot("/tmp/debug.png")
    print("Screenshot saved!")
    client.logout()

项目结构

mcp-tplink-router/
├── src/
│   └── mcp_tplink_router/
│       ├── __init__.py
│       ├── be3600_playwright.py  # Main Playwright-based client
│       ├── be3600_crypto.py      # Direct API client (experimental)
│       ├── server.py             # MCP server implementation
│       └── tplink_client.py      # Generic TP-Link client
├── examples/
│   ├── list_rules.py
│   ├── add_port_forward.py
│   └── freepbx_setup.py
├── pyproject.toml
├── README.md
├── LICENSE
└── .env.example

贡献

欢迎投稿!请随时提交问题和拉取请求。

# Development setup
git clone https://github.com/consigcody94/mcp-tplink-router.git
cd mcp-tplink-router
python -m venv venv
source venv/bin/activate
pip install -e ".[dev]"
playwright install chromium

许可证

MIT许可证-请参阅 许可证 了解详情。

免责声明

此工具仅供个人使用。按照路由器的服务条款负责任地使用。作者不对该工具造成的任何误用或损坏负责。

致谢

目录标签

目录标签

浏览器自动化PythonClaude网络管理路由器自动化本地部署PlaywrightPython库AI集成

支持客户端

Claude DesktopClaude

接入字段

传输方式(transport,传输协议)

stdio

鉴权方式(authType,认证方式)

session

运行时(runtime,运行环境)

Python

部署方式(deploymentType,部署类型)

local-only

工具数量(toolCount,工具数)

0

资源数量(resourceCount,资源数)

0

提示词数量(promptCount,提示词数)

0

权限和风险

stdiosessionlocal-only

接入前请确认传输方式、认证方式和部署位置,并根据实际工具能力限制访问范围。

安装前确认

不要直接授予不必要的文件、网络或账号权限;先核对安装命令和配置内容。

来源信息

继续浏览同类 MCP