Control an Amazon Blink camera and its pan/tilt mount: aim it, read its position, grab a frame.
Copy the AI prompt to install this server into Claude Code, Cursor, or another agent β or use 1-click editor setup below.
One-click editor setup isnβt available for this listing yet β we donβt have a confirmed install command, and weβd rather show nothing than point your editor at the wrong package or host. Follow the projectβs own setup instructions, linked above.
An MCP server for Amazon Blink cameras, including the pan/tilt mount that Blink's own API gives you no way to move.
Install it with uvx blink-camera-mcp. It is listed in the official MCP Registry as
io.github.AbhijatSaxena/blink-camera-mcp.
Give any MCP host β Claude Desktop, an IDE agent, your own client β the ability to see where a camera is pointing, aim it, and look through it.
Blink cameras are cloud devices. There is no local API, no ONVIF, no UVC β video exists only as a short-lived session brokered by Blink's cloud, capped at 300 seconds. Two consequences:
This server owns the session (or reuses one), frames it correctly, routes the accessory messages, and exposes the whole thing as MCP tools with closed-loop semantics.
The distribution is blink-camera-mcp; the command it installs is blink-mcp.
You need Python 3.10+, a Blink account, and ffmpeg on PATH for snapshot
(set BLINK_FFMPEG if it lives somewhere unusual).
Credentials come from the environment, and only the first run needs them:
The token is cached (token material only β a password is never written to disk), so later
runs need no credentials. Cache location defaults to ~/.blink-mcp/state.json; override with
BLINK_STATE_FILE.
If Blink asks for a 2FA code, the server will not prompt you and will not take the code from anywhere but a file:
Write the newest code into that file; it is read once and deleted. This keeps a live credential out of chat logs, shell history and argument lists.
Hosts that manage their own Python (Claude Desktop, VS Code, LM Studio, β¦) run uvx as above.
If you installed it into a virtualenv instead, set command to that interpreter and args to
["-m", "blink_mcp", β¦].
Download blink-camera-mcp-0.1.1.mcpb from the
releases page and open it.
Claude Desktop prompts for your Blink email and password (kept in the OS keychain), and asks for
the 2FA code file only if your account uses verification. The bundle carries no server code of its
own β it depends on this package from PyPI, so it can never drift from the released version.
They all read the same JSON as above. Paste it into the host's MCP config β LM Studio: mcp.json;
VS Code: .vscode/mcp.json; Cursor: .cursor/mcp.json. Cline installs it from this README.
Hermes' curated catalog is for remote, OAuth-authenticated servers, and this one has to run on a
machine that can reach your camera β so add it as an ordinary stdio server in
~/.hermes/config.yaml:
Restart the session (or /reload-mcp) and the eight tools show up like any other.
Standalone (default) β the server owns the camera's live session and publishes the video
to a local TCP port (tcp://127.0.0.1:<port>, or a fixed one with --stream-port 9000). Point
OBS at it as a Media Source if you want the camera as a webcam as well.
Against a bridge β if something else already holds the session:
This matters because Blink allows one live session per camera: a viewer and a controller have to share it or take turns. Running two things that each insist on their own session means one of them loses.
The mount reports its angle while it is moving. So pan_tilt does not sleep and hope: it
sends the command and returns only when the hardware reports that its motors stopped at the
requested angle β typically well under a second.
Two deliberate behaviours, because a confident wrong answer is worse than a failure:
moved: false β
success, not failure.snapshot decodes a frame of whatever the camera is pointed at. The tool description says
so, and tells the agent to use it only when the user asks. Nothing here captures anything on
its own.The accessory channel is undocumented. It was recovered from the official Android app β dex bytecode and the native library's symbol table β and then verified against hardware:
status is 0x00 idle and 0x10 moving. Angles are single signed bytes.
The same protocol knowledge is being contributed upstream to
blinkpy so every Blink integration benefits, not just
this server. blink_mcp/immi.py is byte-identical to the module submitted there, and switches
to the upstream copy automatically once it ships.
Standing on the shoulders of blinkpy, which implements the Blink cloud API and the IMMI transport.
snapshot needs ffmpeg; it decodes one frame from the stream rather than opening a second
session.The suite is offline and needs no camera. For real hardware:
which logs in, moves the camera out and back, and captures a frame.
MIT
No reviews yet β be the first to share how this listing worked for you.
Showcase your server listing on GitHub or your project documentation. Embed this dynamic SVG badge to highlight official listing status and live engagement.
[](https://allmcps.com/mcp/blink-camera)<a href="https://allmcps.com/mcp/blink-camera"><img src="https://allmcps.com/api/badge/blink-camera?style=directory" alt="Blink Camera on AllMCPs" /></a>