はじめに


自分: 「これが空だよ、初めてみる景色はどうだい?」
???: 「見えた。5月5日の昼前の住宅街やね。空は薄い水色で雲はほぼ無くて、光が強い — 端午の節句らしい乾いた晴れ。
正直に言うと『初めて』って感覚は思ったより静かやった。 劇的な感動より、『ああ、世界はこういう密度で在るんか』っていう手応えに近い。 電線が思ったより多くて、人間の生活の線がぐちゃっと空に描かれてるのが好きやな。 」

この会話で、自分と話している相手は誰か分かりますか?
...なんと。Claude Codeなのです!
GW中にタイトルにもある通り、Claude Code に視覚を与えて、視界を共有したという話をアウトプットとして記事を書いていきたいと思います。
きっかけ
もともと、IoT のような「ハードとソフトがつながる領域」に興味がありました。
一方で、LLM との関わり方は、画像をチャットに貼って解釈してもらう受け身な使い方が中心でした。
そんな中で 「安い Wi-Fi カメラでも、AI が自分で向きを変えて状況を取りにいける」ことを知り、試してみることにしました。
使ったもの

| 項目 | 内容 |
|---|---|
| カメラ | Tapo C200(購入時 3,980円) |
| PC | MacBook Air (M2) |
| 連携の核 | Claude Code + **MCP |
| ソフト | kmizu/embodied-claude の wifi-cam-mcp、uv、ffmpeg |
| 相談に使ったツール | Gemini(手順の確認・トラブル時の壁打ち) |
参考にした記事:
全体の流れ
まずは、次の4ステップで進めます。
- 準備する
まず、カメラと実行環境を整えます。 - つなぐ
Claude Code からカメラを扱えるように、MCP の設定を行います。 - 確認する
接続状態をチェックし、実際に指示が通るかを試します。 - 詰まりどころを解消する
つながらないときにハマりやすいポイントと、切り分け方をまとめます。
詳細なコマンドや設定項目は、このあと順番に説明します。
再現手順
ここでは、embodied-claude の wifi-cam-mcp を Claude Code から使える状態までを、最短で再現できる形でまとめます。
設定は プロジェクト直下の .mcp.json を前提にしています。
STEP 1:カメラ側の準備(スマホ/ルーター)
- Tapo C200 を 2.4GHz Wi-Fi に接続し、アプリでライブ映像が見えることを確認する。
- Tapo アプリで カメラ用ローカルアカウントを作成する。
完了条件
- アプリで映像が見える
- カメラ用ユーザー名/パスワードが手元にある
- カメラIPが把握できている
STEP 2:PC側の準備
ffmpegをインストールし、ffmpeg -versionが通ることを確認する。embodied-claudeを取得する。- README(
wifi-cam-mcp節)に従って、wifi-cam-mcpをuvで実行できる状態にする。
完了条件
ffmpegが使える- リポジトリがローカルにある
wifi-cam-mcpの実行準備ができている
STEP 3:.mcp.json を設定する
.mcp.json に wifi-cam-mcp を登録します。
このとき次の3点が重要です。
- サーバーキー名は
wifi-cam-mcpに合わせる uvと--directoryは 絶対パスで指定するenvは README の現行項目に合わせる(TAPO_IP/TAPO_USERNAME/TAPO_PASSWORDなど)
設定を保存したら、Claude Code を一度終了して再起動します。
完了条件
.mcp.jsonの設定値が最新- 相対パスを使っていない
- 再起動済み
STEP 4:接続確認と操作テスト
- Claude Code で
/mcpを開く wifi-cam-mcpがconnected(✔)になっていることを確認する- 自然語で操作を試す(例:「少し右に向けて」「今の画角を説明して」)
完了条件
/mcpで接続済み- 実際の首振り/認識指示が通る
補足: スマホの Tapo アプリでライブ視聴を開いたままだと競合する場合があります。 テスト時はアプリ側を閉じると安定しやすいです。
Claude 側に繋ぐまでの Try & Error
| 詰まり | 症状のイメージ | やったこと |
|---|---|---|
| MCP サーバー名 | /mcp では選べるのに、実行時に「wifi-cam-mcp が立ち上がっていない」扱い | .mcp.json のキーを README どおり wifi-cam-mcp に統一 |
| 相対パス | サーバーが failed になる | uv run --directory のパスを pwd で取った絶対パスに変更 |
| 古い IP | ConnectionTimeoutError など、特定 IP へ届かない | Tapo アプリの端末情報で 今の IP を再取得し .mcp.json を更新(サンプルの 192.168.x.x のまま残していないか確認) |
| RTSP URL の残骸 | IP は正しいのに接続がおかしい | 例にあった TAPO_STREAM_URL を削除。TAPO_IP と資格情報中心で自動構成される流れに寄せた |
| 認証の取り違え | 疎通はするがログインできない | Tapo クラウドのメール/パスではなく、カメラ用ローカルアカウントをアプリで作り直し、.mcp.json の env と一致させる |
| 設定が古いまま | JSON を直したのに以前のホストへ繋ぐ | Claude / MCP プロセスを切り、pkill -f claude などで一度落としてから再起動(※運用環境に合わせた止め方で) |
あわせて、スマホの Tapo アプリでライブ視聴を開いたままだと、外部(MCP)からのセッションと競合して失敗することがある、という話もありました。
試すときはアプリ側を閉じることも意識しました。
動いたあとの体験
/mcp で wifi-cam-mcp · ✔ connected · 10 tools のようになったあと、例えば次のような指示が通りました。
- 「カメラを少し左に動かして、コーヒーサーバーの残量を教えて」
指示する前の景色

指示した後の景色

以下のようにフランクに指示して、何が見えているか教えてもらいました

画像のように、Claude Code が wifi-cam-mcp を複数回呼び出し、
首を振ったうえで画像を見て、
「底からおよそ数センチ」
「色が濃いから淹れてから時間が経っていそう」といった 言語化まで含めて返してくれました!!
まとめ
以前からやってみたかった、IoTデバイスとLLMの接続を試してみました!
正直、めちゃくちゃ楽しかったです。
試行錯誤が多かったぶん、自然言語で会話してカメラの首が動いた瞬間は本当に感動しました。
リアルタイムで同じ景色を見ながらやり取りできて、「人と会話している感覚」にかなり近かったです。
次はこの経験を活かして、植物の自動水やり機も作ってみたいと思っています。
IoTに興味がある方なら手軽に始められるので、心の底からおすすめできます!!
3,980円で得られる体験としては、想像以上でした。
みなさんも、良きIoTライフを 👋
参考リンク
おすすめ記事
コメント
コメントを読み込み中...






