MCP.Market

UVC PTZ Camera MCP server

by AbhijatSaxena·io.github.AbhijatSaxena/uvc-ptz-camera-mcp·v0.2.0

Control a USB (UVC) pan/tilt/zoom camera, with every move confirmed from the picture.

A92/100grade A
What users say
No reviews yet
Be the first
Safety scan
A92/100

full report

Adoption
Growing

0 stars404 downloads/wk

Reviews

Write one

Nobody has reviewed UVC PTZ Camera yet.

If you have run it, two minutes of your experience saves the next person an afternoon.

UVC PTZ Camera tools (17, 1 write)

write = sends, deletes, buys or posts

Read from the package source without running it. The installed server may list more.

  • aim

    Point one axis at an absolute value, and return what the picture confirms.

  • aim_learn

    Remember the current direction under a name, for later use.

  • aim_list

    List the directions recorded for this camera, and its calibrated default pose.

  • camera_status

    Report the camera, its axes and ranges, and whether it is a real device.

  • check_view

    Compare the current picture with one stored by `mark_view`.

  • go_to

    Point the camera at a direction recorded earlier with `aim_learn`.

  • look

    Capture one frame of what the camera currently sees, as a PNG image.

  • mark_view

    Store the current picture under a label, so it can be compared later.

  • nudge

    Move one axis relative to where the device says it is now.

  • plan_shot

    Compile a shot and report what it would do, without moving the camera.

  • recentre

    Return every axis to the camera's own default: centre, level, unzoomed.

  • run_shotwrite action

    Execute a multi-step camera move, verifying after every waypoint.

  • sweep

    Move an axis smoothly to a value over a chosen duration.

  • track_start

    Start following a subject, closing the loop on the picture.

  • track_status

    Report what the follow loop is doing, with the evidence for each iteration.

  • track_stop

    Stop following, and return the summary: what it saw, what it moved, what failed.

  • zoom

    Set optical zoom as a multiplier: 1.0 is wide, up to the camera's maximum.

Public scan report

scanner v0.1.10 · 2026-10-13 · same rubric, same numbers if you re-run it

no findings
  • Code scan13 source files scanned25/25
  • –Live reliabilityno gateway calls yet and no remote to proben/a
  • –Tool poisoningtools not inspected (local package is not executed); not countedn/a
  • Auth qualitylocal package, no credentials required12/15
  • Maintenancelast push 6 days ago15/15
  • Maintainer identityregistry namespace matches repository owner; GitHub account older than a year8/10
Overall 92/100. Components that don't apply are left out of the denominator. Any critical finding is an F.RubricAppeal a findingJSON

How UVC PTZ Camera compares

Against every graded MCP server, from our own scans and uptime checks. Updated after each scan run.

Safety score
92/100
higher than 95% of 48,255 servers
Tools
17
the typical server has 7
Tools that change things
6%
typical: 0%. Fewer write tools means less an agent can break
Downloads a week
404
more than 85% of 12,191 servers with a package

What its tools let an agent do: 15 read · 1 change · 1 run or deploy

Install UVC PTZ Camera in Claude Code, Cursor or VS Code

claude mcp add uvc-ptz-camera-mcp -- uvx uvc-ptz-camera-mcp
Add to Cursor

What the publisher says

From the UVC PTZ Camera repository's README, as published. We do not edit it. Read it on GitHub

uvc-ptz-camera-mcp

<!-- mcp-name: io.github.AbhijatSaxena/uvc-ptz-camera-mcp -->

An MCP server for USB (UVC) pan/tilt/zoom cameras: aim them, nudge them, sweep them smoothly, zoom, and look through them — with every move confirmed by comparing the picture before and after.

No account, no cloud, no vendor SDK. One device, one USB cable.

camera_status       the camera, its axes and ranges, and whether it is real
aim                 point an axis at an absolute value, confirmed from the picture
nudge               move relative to where the device says it is
sweep               a smooth timed move, streamed at 15 Hz
zoom                set zoom as a multiplier (1x .. the camera's maximum)
recentre            every axis back to its default
look                one frame, returned as an image
aim_learn           remember "this direction is the desk"
aim_list            what has been recorded for this camera
go_to               point at a recorded direction
plan_shot           compile a multi-step shot and report what it would do, moving nothing
run_shot            execute a multi-step move, verified after every waypoint
mark_view           store the current picture under a label
check_view          has the picture changed since that label?
track_start         follow a subject: detect, measure, take a step, look again
track_status        what the follow loop is doing, iteration by iteration
track_stop          stop following and report what it saw and what it moved

Composing a shot is planshot then runshot. Planning compiles exactly the steps the executor will compile, reports the per-step schedule, how far each axis travels and how long it takes, and touches nothing — so an agent can iterate on "a panorama, then zoom in on me" against the camera's real ranges before anything moves, instead of finding out afterwards.

Following

trackstart runs a loop that keeps the camera pointed at a subject: detect it, measure how far it is from the centre of the frame, take a bounded step, look again. It decides only from the picture, for the same reason every other move here does — this camera's own report of where it is pointing cannot be trusted. It stops on its own when the subject is lost, when it settles inside the dead zone, when the camera stops answering, or after maxseconds, and track_status lists every iteration with the offset it measured and the step it applied.

Two quantities are mount-dependent rather than device-dependent, so they are explicit parameters instead of clever guesses: gain, degrees of movement per pixel of offset, and invert, which flips the direction. A wrong choice shows up honestly as a residual error that grows, and a single iteration is capped at 25 degrees, so a wrong gain converges slowly rather than throwing the camera across its whole range in one command.

Detection uses OpenCV's bundled face cascade (pip install 'uvc-ptz-camera-mcp[tracking]'), which needs no model download, no account and no network at first use. It finds faces: this follows a person, not a car or a dog. The loop and its arithmetic are tested against the simulator, but no part of follow mode has ever run against real hardware — treat it as the least proven thing here.

Why this exists

This class of camera reports positions it never moved to. Measured on the reference device (a DJI Osmo Pocket 4P in webcam mode, over its standard UVC controls):

at all;

  • a command to pan to 180 read back 180 while the video proved the camera had not moved
  • a whole 32-second run read back 0 on every sample while the frame demonstrably changed;
  • pan 120 read back 119, pan 200 read back 199.

Shortened. The full README is on GitHub.

Nothing above is checked by us. What we check is on the safety report.

UVC PTZ Camera: common questions

Is UVC PTZ Camera MCP server safe?
Yes, by our scan: it is graded A (92/100). Read the UVC PTZ Camera safety report
How do I install UVC PTZ Camera?
It runs on your machine. Copy the Claude Code, Cursor, VS Code or Claude Desktop config from the install section.
Does UVC PTZ Camera need an API key?
No secret keys are declared. It reads 2 settings from the environment.
Is UVC PTZ Camera maintained?
The last commit was 27 days ago (2026-10-08). The latest release is v0.2.0.
How does UVC PTZ Camera compare with other MCP servers?
safety score 92/100 (higher than 95% of 48,255 servers); tools 17 (the typical server has 7); tools that change things 6% (typical: 0%. Fewer write tools means less an agent can break). Full comparison.