Skip to main content
Glama

axis-cam-mcp

MCP server for still images from Axis network cameras over VAPIX.

See axis-camera.md for full build, test and deployment instructions.

Layout

axis-cam-mcp/
├── LICENSE  README.md  CHANGELOG.md  PLAN.md
├── environment.yml
├── pyproject.toml
├── examples/cameras.yaml
├── src/axis_cam_mcp/{__init__,cameras,vapix,server}.py
└── tests/

Related MCP server: MCP Camera Tool

Quick start

conda env create -f environment.yml
conda activate axis-cam-mcp
pytest -q
axis-cam-mcp --check

See axis-camera.md for camera configuration and AIDA wiring.

Tools

Tool

What it does

list_cameras

The configured names, descriptions and addresses. Never credentials.

grab_frame

One JPEG still. Optional resolution, compression, rotation, channel.

camera_info

Model, product number and firmware. The cheapest reachability proof.

camera_capabilities

What a device actually supports: resolutions, rotations, video inputs.

Devices

Works with native Axis IP cameras and with multi-channel video encoders, which differ in three ways the registry covers:

  • Anonymous access -- auth: none on a camera that needs no login. Otherwise credentials come from the named environment variables, and a missing one is an error rather than a silent unauthenticated request.

  • Several cameras behind one address -- channel picks a video input ("1"-"4", "quad"). Give each view its own registry entry so an agent can choose by description.

  • Fixed resolution lists -- an encoder serves only a handful of sizes. Ask camera_capabilities, or let grab_frame retry at the closest supported size and tell you it did. axis-cam-mcp --check flags a configured resolution or channel the device will refuse.

Available Tools

4 tools
camera_capabilitiesA

What camera actually supports: resolutions, rotations and video inputs.

Ask before guessing a resolution on an unfamiliar device, or to find out which channel of a multi-channel encoder holds the view you want.

The listed resolutions are the WIDTHxHEIGHT values the device advertises. Most also accept named presets they do not advertise - an encoder taking 720x480 will usually take "D1", "4CIF", "CIF" and "QCIF" too.

Inputs: camera (required). Returns: object

camera_infoA

Model, product number and firmware for camera.

The cheapest way to prove credentials and network reach are good without moving an image.

Inputs: camera (required). Returns: object

grab_frameA

Capture one still frame from camera and return it as a JPEG.

If the device refuses the requested resolution, the frame is taken at the closest one it supports instead and the reply says so.

Args: camera: A name from list_cameras. resolution: "WIDTHxHEIGHT", e.g. "1280x720", or a device-specific preset name such as "D1". The camera scales server-side; omit for the camera's configured default. See camera_capabilities. compression: 0-100, where 0 is best quality and the largest file. rotation: 0, 90, 180 or 270 degrees. channel: Which video input to read on a multi-channel encoder, e.g. "3" or "quad". Omit on a single-sensor camera.

Inputs: camera (required), channel, rotation, resolution, +1 more.

list_camerasA

List the configured cameras: name, description and address.

Never returns credentials - only the names of the environment variables they are read from.

Inputs: no named parameters. Returns: result

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

Loading tool schema changelog…

    TDQS

    A4/5.0

    Scored across 4 tools

    Disambiguation5/5

    Each tool has a distinct purpose: listing configured cameras, grabbing a frame, retrieving device metadata, and querying supported capabilities. The potential similarity between camera_info and camera_capabilities is resolved by clear descriptions covering different aspects of the camera.

    Naming Consistency3/5

    Names are all lowercase snake_case and readable, but the convention is mixed: list_cameras and grab_frame use verb_noun while camera_info and camera_capabilities are noun phrases with no verb. This is not chaotic, but it lacks a single predictable pattern.

    Tool Count5/5

    Four tools is well-scoped for a camera-focused MCP: enumeration, metadata, capabilities, and frame capture. Each tool earns its place and there is no redundant or filler functionality.

    Completeness4/5

    The tool set covers the core read-only camera workflow: discover cameras, verify connectivity, check capabilities, and capture still frames. Minor gaps such as continuous video capture, camera configuration, or PTZ control are plausible extensions but do not seem essential to the stated purpose.

    Maintenance

    ActivitySlowing
    ResponsivenessNo recent community issues

    Related MCP Connectors

    Related MCP Servers

    • -
      license
      A
      quality
      Not graded
      maintenance
      A bridge between AI assistants like Claude and Anava-enabled Axis cameras, enabling real-time image analysis, event monitoring, and camera management through natural language commands.
      4
      -
    • A
      license
      A
      quality
      D
      maintenance
      MCP server for configuring Axis IP cameras via VAPIX, supporting device info, snapshots, image settings, overlays, network, PTZ, and system management.
      37
      12 npm
      1
      GPL 3.0