Skip to main content
Glama

Nokia / Airtel GPON Home Router API & Web Dashboard

License: MIT

Nokia G-2425G-A GPON Home GatewayAirtel Xstream Fiber などのISPで一般的に採用)を、WebダッシュボードMCP(Model Context Protocol)REST APICLI で制御・自動化・管理できます。永続的な**デバイスニックネーム(SQLite)**に対応し、ブラウザ自動化は一切不要です!


💡 このプロジェクトが生まれた理由

問題点

ほとんどのホームファイバールーター(AirtelのNokia GPON ONTなど)には、スマートホームエコシステム向けの公式APIや連携機能がありません。次のようなことをしたい場合、

  • 現在Wi-Fiに接続されているデバイスを確認する、

  • わかりやすいニックネームを割り当てる(例:"Akanksha Phone""Guestroom TV")、

  • 特定のデバイスのインターネットアクセスをブロックする(例:子どものスクリーンタイム管理)、

  • または時間帯やスマートホームの状態に基づいてネットワークルールを自動化する...

...といった場合、手動でブラウザを開き、動作の遅いWebポータルを操作し、認証情報を入力し、複数の階層化された設定メニューをクリックして進むしかありません。

さらに悪いことに、ルーターのWebポータルは複雑なクライアントサイドハイブリッド暗号化方式(カスタムSJCL JavaScriptによるRSA-1024 + AES-128-CBC)を採用しているため、単純なcurlスクリプトや標準的なHTTPリクエストは失敗します。多くの開発者は、SeleniumやPuppeteerのような重くて壊れやすいブラウザ自動化に頼らざるを得ません。

解決策

このプロジェクトは、ルーターのRSA + AES暗号化ハンドシェイクを純粋なPythonで完全にリバースエンジニアリングしています。

ルーターの内部エンドポイントと直接通信し、サブ秒の応答時間を実現、ブラウザのオーバーヘッドはゼロです。永続的なデバイスメタデータ(ニックネーム、カスタムメモ、初回/最終検出日時)を保存するローカルSQLiteデータベースと組み合わせ、そのコアエンジンを4つのすぐに使えるインターフェースにまとめています:

  1. 🌐 Webダッシュボード — ライブ検索、ニックネーム編集、1クリックのブロック/ブロック解除トグルを備えた、洗練されたダークグラスモーフィズムのWebアプリ。

  2. 🤖 MCPサーバーAIエージェント(Antigravity、Claude、Cursorなど)がWi-Fiを制御し、わかりやすいニックネームでブロック/ブロック解除できるようにします。

  3. ⚡ REST API(FastAPI)Home Assistant、Webhook、カスタム自動化に最適です。

  4. 🖥️ CLI — 即座に使えるターミナルコマンドとbashスクリプト。


Related MCP server: OpenWRT SSH MCP Server

🎯 実際のユースケース

1. 🤖 AIエージェントによる音声・チャット制御(MCP経由)

このプロジェクトをMCP互換のAIアシスタント(例:Claude Desktop、Antigravity IDE、Cursor)に接続します。次のように話しかけるだけで済みます:

「デバイス f6:cf:28:1c:bd:e5 にニックネーム 'Akanksha Phone' を設定して。」
「Guestroom TV のインターネットアクセスをブロックして。」
「Living Room TV は今Wi-Fiに接続されている?」
「Akanksha Phone のブロックを解除して。」

AIエージェントが接続デバイスを調べ、ニックネーム/ホスト名/IP/MACで対象を特定し、ルーター上で自動的にアクションを実行します。

2. 🌐 ビジュアルWebダッシュボード

http://localhost:8000/ を開くと、レスポンシブなWeb UIですべての接続デバイスを監視できます:

  • ライブ統計バー: 総デバイス数、オンライン中のデバイス数、ブロック数、カスタムニックネーム数。

  • インスタント検索&フィルター: すべて、オンライン、ブロック済み、カスタムニックネームでフィルタリング。

  • インラインニックネームエディター: 任意のデバイスにわかりやすいニックネームと場所のメモを割り当て。

  • 1クリックのブロック/ブロック解除: 処理中に即座に表示されるローディングスピナーとトースト通知でアクセスを切り替え。

3. 🏠 Home Assistant連携

REST APIを使用してルーターをHome Assistantに統合します:

  • 就寝時オートメーション: 学校がある日の午後10時に、子どものタブレットやゲーム機を自動的にブロック。

  • 在室検知: 特定のスマートフォンがネットワークに参加または離脱したときにオートメーションをトリガー。

  • ダッシュボードトグル: Home AssistantのLovelaceダッシュボードに専用の「インターネットをブロック/ブロック解除」スイッチボタンを作成。


✨ 特徴

  • 🏷️ 永続的なデバイスニックネーム — SQLite(data/router.db)に保存されるため、"Guestroom TV" のような人間にわかりやすい名前でデバイスを参照できます。

  • 🎯 スマートなマルチターゲット解決ニックネームホスト名IPアドレス、またはMACアドレスでブロック/ブロック解除/照会が可能(部分一致・大文字小文字を区別しないマッチングに対応)。

  • 🔍 接続デバイスの一覧表示 — ホスト名、IPアドレス、MACアドレス、オンライン状態、接続インターフェース(Ethernet、2.4GHz 802.11、5GHz 802.11ac)。

  • 🚫 デバイスのブロック — ペアレンタルコントロールルールにより、任意のデバイスのインターネットアクセスを24時間365日ブロック。

  • デバイスのブロック解除 — ブロックルールを即座に削除。

  • 📋 ブロック済みポリシーの一覧表示 — アクティブなアクセス制限ポリシーとスケジュールをすべて表示。

  • 🔄 自動同期&自己修復セッション — ルーターのセッションが期限切れになった場合に自動再ログインとセッション復旧を実行。

  • 🔐 ブラウザオーバーヘッドゼロpycryptodomerequests による純粋な暗号認証。


🏗️ アーキテクチャ:4つの操作方法

インターフェース

最適な用途

エントリーポイント

Webダッシュボード

視覚的な管理、ニックネーム編集、ライブデバイス一覧

python -m api.server -> http://localhost:8000

MCPサーバー

AIエージェント(Claude、Antigravity、Cursor)

python -m mcp_server.server

REST API

Home Assistant、Node-RED、カスタム自動化

python -m api.server -> http://localhost:8000/docs

CLI

高速なターミナル操作、cronジョブ、シェルスクリプト

python -m cli.main


📦 インストール

# Clone the repository
git clone https://github.com/surajnai567/airtel-router-api.git
cd airtel-router-api

# Install dependencies
pip install -r requirements.txt

依存関係: requestspycryptodomepython-dotenvfastapiuvicornmcp


⚙️ 設定

ルートディレクトリに .env ファイルを作成します(または .env.example からコピー):

ROUTER_IP=192.168.1.1
ROUTER_USERNAME=admin
ROUTER_PASSWORD=your_router_password

# Optional: REST API & Dashboard settings
API_HOST=0.0.0.0
API_PORT=8000

🔒 セキュリティに関する注意: .env ファイルと data/*.db ファイルは .gitignore に含まれているため、ルーターの認証情報とローカルデータベースがコミットされることはありません。


🌐 1. Webダッシュボード&REST API

サーバーを起動します:

python -m api.server
  • ブラウザで http://localhost:8000/ を開くと、Webダッシュボードが表示されます。

  • 対話型のSwagger APIドキュメントは http://localhost:8000/docs で確認できます。

RESTエンドポイント

Method

Path

説明

ペイロード

GET

/api/devices

ニックネームとブロック状態を含む全接続デバイスを一覧表示

GET

/api/blocked

ニックネーム付きの全ブロック済みデバイスを一覧表示

POST

/api/devices/nickname

ニックネームを設定または解除

{"target": "f6:cf:28:1c:bd:e5", "nickname": "Akanksha Phone", "notes": "Optional"}

POST

/api/block

ニックネーム、ホスト名、IP、またはMACでデバイスをブロック

{"target": "Akanksha Phone", "policy_name": "Optional"}

POST

/api/unblock

ニックネーム、ホスト名、IP、またはMACでデバイスのブロックを解除

{"target": "Akanksha Phone"}

GET

/api/health

ヘルスチェックとルーターの接続状態


🤖 2. MCPサーバーの使用方法(AIエージェント向け)

Model Context Protocol(MCP)を使用して、ルーターのツールをAIエージェントに直接公開します。

利用可能なMCPツール

  • list_devices()NicknameHostnameIPMACActiveBlockedInterface を含む整形されたテーブルを返します。

  • set_device_nickname(target, nickname, notes=None) — デバイスのニックネームを設定または更新します。

  • block_device(target, policy_name=None) — ニックネーム(例:"Guestroom TV")、ホスト名、IP、またはMACでデバイスをブロックします。

  • unblock_device(target) — ニックネーム、ホスト名、IP、またはMACでデバイスのブロックを解除します。

  • list_blocked_devices() — アクティブなブロック済みデバイスをニックネームとポリシー付きで返します。

MCP設定

このサーバーをMCPクライアント設定(例:claude_desktop_config.json または mcp_config.json)に追加します:

{
  "mcpServers": {
    "home_router": {
      "command": "python",
      "args": ["-m", "mcp_server.server"],
      "cwd": "d:/project/routerapi"
    }
  }
}

🖥️ 3. CLIの使用方法

# List all connected/known devices (with nicknames)
python -m cli.main list

# List all currently blocked devices
python -m cli.main blocked

# Block a device by MAC address or Nickname
python -m cli.main block AA:BB:CC:DD:EE:FF

# Block a device with a custom policy name
python -m cli.main block AA:BB:CC:DD:EE:FF --name "Kid_Tablet_Block"

# Unblock a device by MAC address
python -m cli.main unblock AA:BB:CC:DD:EE:FF

🐍 4. Pythonライブラリの使用方法

from core import RouterAPI

# Initialize and authenticate
router = RouterAPI(ip_address="192.168.1.1", username="admin", password="admin_password")
if router.login():
    # 1. Set a friendly nickname
    router.set_nickname("f6:cf:28:1c:bd:e5", "Akanksha Phone")

    # 2. Get all devices (auto-synced with SQLite)
    devices = router.list_devices()
    for d in devices:
        print(f"[{'ONLINE' if d['active'] else 'OFFLINE'}] {d['nickname'] or d['hostname']} ({d['ip']}) - {d['mac']}")

    # 3. Block directly by nickname!
    router.block_device("Akanksha Phone")

    # 4. Unblock by nickname!
    router.unblock_device("Akanksha Phone")

    # Clean up session
    router.logout()

📁 プロジェクト構造

routerapi/
├── core/                      # Core business logic (the engine)
│   ├── __init__.py            # Re-exports RouterAPI, DB helpers, and crypto
│   ├── client.py              # RouterAPI client class with smart target resolution
│   ├── crypto.py              # AES-CBC + RSA encryption implementation
│   └── db.py                  # SQLite database layer for persistent nicknames
│
├── api/                       # REST API & Web Dashboard
│   ├── __init__.py
│   ├── server.py              # FastAPI server with CORS, static routes, & models
│   └── static/                # Web Dashboard assets
│       ├── index.html         # Dashboard HTML template
│       ├── style.css          # Dark glassmorphism stylesheet
│       └── app.js             # Frontend state management & async API calls
│
├── mcp_server/                # Model Context Protocol interface
│   ├── __init__.py
│   └── server.py              # MCP server exposing router tools to AI
│
├── cli/                       # Terminal interface
│   ├── __init__.py
│   └── main.py                # Argparse CLI entry point
│
├── data/                      # Local SQLite storage (git-ignored)
│   └── router.db              # Persistent device metadata & nicknames
│
├── .env                       # Credentials (git-ignored)
├── .env.example               # Template environment configuration
├── .gitignore
├── requirements.txt           # Project dependencies
└── Readme.md                  # Project documentation

⚠️ 注意事項と免責事項

  • セッションの期限切れと自己修復: ルーターのセッションは、非アクティブ状態が続くと自然にタイムアウトします。APIサーバーとMCPサーバーは、その後の呼び出しで自動的に再認証を管理します。

  • ペアレンタルコントロールの互換性: NEWファームウェア(NPCProfileList グループベースのアクセス制御)とOLDファームウェア(pc_config アクセスポリシー)の両方に対応。

  • テスト済みハードウェア: Nokia G-2425G-A GPON Home Gateway(Airtel Xstream Fiber)でテスト済み。


📄 ライセンス

このプロジェクトはMITライセンスの下でライセンスされています。詳細は LICENSE ファイルを参照してください。

A
license - permissive license
Not graded
quality - not tested
B
maintenance

Maintenance

Maintainers
Response time
Release cycle
Releases (12mo)
Commit activity

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Servers

  • A
    license
    A
    quality
    C
    maintenance
    Enables AI assistants to interact with Ubiquiti UniFi network infrastructure for monitoring devices, managing clients, and performing configuration tasks like blocking/unblocking devices and viewing network health.
    10
    1
    GPL 3.0
  • A
    license
    A
    quality
    F
    maintenance
    Enables AI agents to manage OpenWRT routers remotely via SSH, supporting system monitoring, network management, OpenThread Border Router configuration, and package management through natural language commands.
    19
    14
    MIT
  • A
    license
    B
    quality
    D
    maintenance
    Enables AI assistants to manage UniFi network infrastructure through 50+ tools covering devices, clients, networks, WiFi, firewall rules, and guest access using the official UniFi Network API.
    52
    58
    5
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    Provides AI assistants with direct access to multi-vendor network devices for tasks like configuration management, health checks, and topology discovery through 35 specialized tools. It enables natural language control over platforms including Cisco, Juniper, and Nokia using SSH, NETCONF, and SNMP protocols.
    11
    MIT

View all related MCP servers

Related MCP Connectors

  • Search 200+ UnoRouter models (most free), check pricing, and chat through one key

  • AI-powered browser automation — navigate, click, fill forms, and extract data from any website.

  • Reliable web access for AI agents: smart HTTP, rotating proxies, and full-browser rendering.

View all MCP Connectors

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/surajnai567/airtel-router-api'

If you have feedback or need assistance with the MCP directory API, please join our Discord server