LLMエージェントでUniFiネットワークとカメラを管理する
UniFi Controllerでファイアウォールを設定したり、UniFi Protectでカメラの特定のクリップを検索したりしたことがある人なら、その面倒くささが分かるだろう。Webインターフェースを開き、メニューをクリックし、適切なVLANやクライアントMACアドレスを探す。スクリプトで自動化することも可能だが、UbiquitiのAPIは所々で独特で、バージョンごとに変更がある。
unifi-mcpプロジェクトは異なるアプローチを採用している。Model Context Protocol(MCP)を使用した一連のサーバーで、Claude Code、Codex、OpenClawなどのAIアシスタントをUniFiコントローラに接続する。
プロジェクトの中身
リポジトリはPythonとTypeScriptのモノレポとして構成されており、Ubiquiti製品エリアをカバーする3つの主要モジュールに分けられている:
- Network — ネットワーク機器を管理するモジュール。VLAN、ファイアウォール、クライアント、Wi-Fiネットワーク、デバイス向けの186のツールを備えている。
- Protect — ビデオ監視ツール。イベントの検索、モーション検知の分析、カメラ操作向けの61の関数を含む。
- Access — アクセス制御管理。ドア、認証情報、アクセスログ向けの36の関数を含む。
さらに、MCPプロトコルをサポートしていないクライアント向けのREST/GraphQLサーバーが別途用意されており、Cloudflare Workers経由でローカルネットワークとリモートエージェントを接続するCloud Relayシステムも含まれている。
セキュリティと致命的なエラーからの保護
言語モデルにホームネットワークやオフィスネットワークのファイアウォールへの直接アクセスを許可することは、大胆な判断だ。unifi-mcpの開発者は、何か壊すリスクを減らすために2つの安全メカニズムを組み込んでいる。
最初のメカニズムは、プレビュー確認方式だ。設定変更はまずプレビューを返し、AIエージェントはコントローラに送信する正確なJSONまたはルールリストを表示して、明示的な確認を待つ。
2番目の要素は機密データの自動編集だ。デフォルトでは、すべてのWi-Fiパスワード、VPNキー、SNMPコミュニティ、トークンがツール応答から削除され、***REDACTED***に置き換えられる。モデルはコンテキスト内でシークレットを見ることはなく、ログに誤って「漏洩」することもない。ただし、信頼できるローカル管理スクリプトを実行している場合は、環境変数介してマスクを無効にすることができる。
実践的なシナリオ
インターフェースを手動で検索する代わりに、自然言語でエージェントにクエリを書くことができる。
ネットワークモジュールの場合:
- 「ゲストVLANのすべてのクライアント、信号強度、トラフィック量を表示」
- 「ファイアウォールルールを監査し、重複や競合するポリシーを検出」
- 「IoTデバイスのインターネットアクセスを深夜0時から午前6時までブロックするルールを作成」
セキュリティシステムの場合:
- 「今週の入り口での車両認識イベントをすべて検索」
- 「タイムスタンプを照合:午前2時に正面玄関でバッジタップしたのは誰で、その時刻に近くでモーションを記録したカメラはどれか」
ちなみに、頻繁なタスク向けにはリポジトリにエージェント向けの組み込みスキルがすでに含まれている。例えば、Firewall Auditorは16のネットワークセキュリティチェックを実行し、修復の推奨事項と共に100点満点のスコアを出力する。
技術的な仕組み
このプロジェクトは、最近のMCPプロトコルの改訂版 активно uses features from recent MCP protocol revisions. Since a tool with 186 functions can fill an LLM's context window before the conversation even starts, lazy discovery is implemented here. Initially, the server only passes search meta-tools to the assistant, and specific endpoints are loaded on demand.
ローカル環境でサーバーを起動するには、uvxで単一のコマンドを実行する:
uvx unifi-network-mcp@latest
uvx unifi-protect-mcp@latest
uvx unifi-access-mcp@latest
設定は環境変数を通じて渡される。接続にはUniFiコントローラ上的ローカル管理者アカウントが必要だ。注:二要素認証やUbiquiti SSOのアカウントは動作しない——MCPが機能するには別途ローカルサービスユーザーを作成する必要がある。
Claude Desktop用の設定例:
{
"mcpServers": {
"unifi-network": {
"command": "uvx",
"args": ["unifi-network-mcp@latest"],
"env": {
"UNIFI_HOST": "192.168.1.1",
"UNIFI_USERNAME": "mcp-service-account",
"UNIFI_PASSWORD": "your-safe-password"
}
}
}
}
試してみる価値はあるか
このプロジェクトは、同クラスとしては成熟しているように見える:GitHubで588スター、アクティブなコミット、Python 3.13+サポート。システム管理者、Home Assistant愛好家、Ubiquiti上で自動化を構築している人々に役立つだろう。
家にアクセスポイント1つだけなら、MCPサーバーを設定する意味はない。しかし、ファイアウォール、カメラ、アクセス制御を含む複雑なインフラストラクチャでは、ダッシュボードを手動で検索する代わりにエージェントに質問できる機能は、大幅な時間節約になる。
関連プロジェクト