reolink-mcp について
reolink-mcpは、ローカルネットワーク上のReolinkカメラを監視・操作するオープンソースのMCPサーバーです。スナップショットや状態の取得に加え、照明、サイレン、ズーム、PTZを制御できます。
主な機能
- 01カメラ一覧とデバイス詳細の確認
- 02スナップショットとAI検知状態の取得
- 03サイレン、スポットライト、赤外線ライト、LEDの制御
- 04ズーム調整とPTZプリセットの管理
- 05読み取り専用モードでの起動
活用シーン
- 01MCPクライアントからカメラのライブスナップショットを表示
- 02カメラ状態と最近の検知状況を確認
- 03照明の調整やPTZプリセットへの移動
MCP 対応
MCPクライアントにReolinkカメラの監視・操作ツールを提供します。接続はローカルネットワーク内に限られ、起動時に操作ツールを除いて読み取り専用にできます。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
uvx reolink-mcpRMCP_CONFIG_FILEPath to the camera config YAML (default: ~/.config/reolink-mcp/config.yaml)RMCP_READ_ONLYSet to 'true' to strip all control tools and run observe-onlyローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
reolink-mcp
Reolink カメラ向けのオープンソース MCP(Model Context Protocol)サーバーです。Claude — または任意の MCP クライアント — から、ローカルネットワーク上の Reolink カメラを確認・操作できます。スナップショット、デバイスの状態、AI 検知の状態、PTZ プリセット、威嚇機能(スポットライト、サイレン、IR/白色 LED)に対応しています。ローカルネットワークのみで動作し、クラウドは不要です。
市場の空白(2026-07-08 確認済み): GitHub、npm、PyPI のいずれにも、Reolink 専用の MCP サーバーはありません。最も近い先行事例も仲介システムが必要です。
dedsxc/mcp-frigate(Frigate NVR が必要)、homeassistant-mcp(Home Assistant が必要)。これは、単独で動作するニッチ分野における先駆けです。
Reolink カメラを使っているユーザーは、MCP クライアントの設定に reolink-mcp を追加して、「玄関のカメラを見せて」と頼むだけで、カメラから直接ライブスナップショットを取得できます。間に NVR やホームオートメーションのデーモンは不要です。
クイックスタート
ローカルネットワークからアクセスできる Reolink カメラと、その管理者のユーザー名/パスワードが必要です。
1. カメラの設定を作成する
config.example.yaml を ~/.config/reolink-mcp/config.yaml にコピーします(または、RMCP_CONFIG_FILE でディスク上の別の場所にあるコピーを指定します)。
cameras:
front_door:
host: 192.168.1.44
username: admin
パスワードをこのファイルに記載しないでください。代わりに、カメラごとに RMCP_CAMERAS__<name>__PASSWORD 環境変数を設定します。<name> は、上記 YAML のカメラのキーと完全に一致する必要があります(小文字の snake_case)。
RMCP_CAMERAS__front_door__PASSWORD=<camera-password>
同時セッション数の上限: Reolink カメラで同時に保持できるセッション数には上限があります。
reolink-mcpは、サーバーの実行中、設定済みのカメラごとにreolink-aioセッションを 1 つ保持します。同じカメラのセッションを保持する別のシステム(NVR、別の MCP サーバーなど)と併用すると、上限に達する可能性があります。以下のカメラの互換性とセッション数の上限を参照してください。
2. MCP クライアントに追加する
Claude Code:
claude mcp add reolink -- uvx reolink-mcp
Claude Desktop(claude_desktop_config.json — macOS:
~/Library/Application Support/Claude/claude_desktop_config.json、Windows:
%APPDATA%\Claude\claude_desktop_config.json):
{
"mcpServers": {
"reolink": {
"command": "uvx",
"args": ["reolink-mcp"],
"env": {
"RMCP_CAMERAS__front_door__PASSWORD": "<camera-password>"
}
}
}
}
その他の MCP クライアント(汎用 stdio):
{
"command": "uvx",
"args": ["reolink-mcp"]
}
これで完了です。MCP クライアントに「玄関のカメラを見せて」と頼んでみてください。
ツール
reolink-aio と公式の MCP Python SDK を基盤にしています。
すべてのツールには readOnlyHint/destructiveHint のアノテーションが付いているため、MCP クライアントは承認の要否を制御できます。Observe ツールは読み取り専用、Control ツールはカメラの状態を変更し、破壊的とマークされているのは set_siren のみです。
| ツール | 種類 | 目的 | 破壊的 |
|---|---|---|---|
list_cameras | Observe | 接続状態、モデル、ホストとともに、設定済みのすべてのカメラを一覧表示します | いいえ |
get_device_info | Observe | カメラのモデル、ファームウェア、ハードウェアの詳細を取得します | いいえ |
get_capabilities | Observe | PTZ、サイレン、スポットライト、IR/白色 LED、ズーム、AI 検知の種類など、カメラが対応する機能を中立的な機能用語で取得します | いいえ |
get_states | Observe | 昼夜モード、白色 LED/スポットライト、IR ライト、サイレン機能、動体検知など、デバイスの現在の状態を取得します | いいえ |
get_recent_events | Observe | オンデマンドのポーリングから、現在の AI 検知状態(人物/車両/ペットに加え、カメラが報告するその他の対象)と、単純な動体検知フラグを取得します | いいえ |
get_snapshot | Observe | カメラのライブ静止画像を MCP 画像コンテンツブロックとして返します | いいえ |
set_siren | Control | カメラのサイレンを鳴らす、または停止します。安全なデフォルトは約 5 秒、上限は 60 秒で、上限を超える要求は制限値に丸めず拒否します | はい |
set_audio_alarm | Control | カメラのサイレン/音声アラーム機能を有効または無効にします。ファームウェアが set_siren を受け付けても音が鳴らない場合に必要です | いいえ |
set_spotlight | Control | カメラのスポットライトをオンまたはオフにします | いいえ |
set_ir_lights | Control | カメラの IR ライトを auto、on、off に設定します | いいえ |
set_white_led | Control | オプションで明るさを指定して、カメラの白色 LED をオンまたはオフにします | いいえ |
set_zoom | Control | カメラのズームを絶対位置(0~100)または相対的な拡大/縮小ステップで設定します | いいえ |
list_presets | Control | カメラの名前付き PTZ プリセットを一覧表示します | いいえ |
ptz_move_to_preset | Control | カメラを名前付き(または数値指定の)PTZ プリセットに移動します | いいえ |
ptz_position | Control | カメラの現在のパン/チルト/ズーム位置を取得し、近い位置に保存済みプリセットがあればその名前を表示します | いいえ |
ptz_guard | Control | カメラの PTZ ガードポイントと自動復帰(set/goto/enable/disable)を設定します | いいえ |
安全性
RMCP_READ_ONLY=trueを設定してサーバーを起動すると、起動時に 10 個すべての Control ツールが取り除かれます。これらのツールは非表示になるのではなく、登録されません。stderr に 1 行の通知が出力され、クライアントには、Control ツールが一切登録されていない、監視専用のクリーンなサーバーが表示されます。set_sirenは、再生時間が指定されていない場合、デフォルトで約 5 秒間鳴らします。また、60 秒の上限を超える要求は、黙って上限値に丸めずに拒否し、より短い再生時間を指定するよう明確なエラーで求めます。- 機能の確認:各 Control ツールはコマンドを送信する前に対象カメラの実際の機能を確認し、サポートされていない機能からの生の API エラーをクライアントに返すのではなく、適切に拒否します(例:「カメラ 'front_door' にはサイレンがありません」)。
カメラの互換性とセッション制限
開発中に以下の環境で実機検証済みです。
| カメラ | 検証済みの機能 |
|---|---|
| P437 | サイレン、スポットライト、ズーム |
| P320 | 赤外線ライト |
PTZ ツール(list_presets、ptz_move_to_preset、ptz_position、
ptz_guard)はモックでのみ検証済みです。実際の PTZ ハードウェアでの検証は
未実施です。
同時セッション数の制限: reolink-aio は、サーバープロセスの稼働中、
カメラごとに長時間維持されるセッションを 1 つ保持します。
Reolink カメラには、受け付け可能な同時セッション数の上限があります。
同じカメラでセッションを独自に保持する別のシステム(NVR、Reolink の公式
アプリ、2 つ目の自動化スタックなど)と reolink-mcp を同時に実行すると、
上限に達することがあります。このプロジェクトの開発環境では、2 つ目の
独立したシステムと共有するカメラで動作させ、この共存条件での動作を
検証しています。ログインエラーやセッションエラーが発生した場合は、
まずカメラのセッションを現在保持している他のシステムがないか確認してください。
ライセンス
MIT
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。