Skip to main content
Glama
Axis MCP

Axis MCP

by hemla-com

@hemla/axis-mcp

npm CI License: GPL-3.0

MCP server for configuring Axis IP cameras via VAPIX.

Installation

Claude Desktop

Add to your Claude Desktop config (~/Library/Application Support/Claude/claude_desktop_config.json):

{
  "mcpServers": {
    "Axis": {
      "command": "npx",
      "args": ["-y", "@hemla/axis-mcp@0.2.1"]
    }
  }
}

Related MCP server: Hikvision CCTV MCP

Usage

Connect to a camera first, then use any tool:

Connect to my Axis camera at 192.168.1.100 with user admin and password secret
Show me the camera's device info
Take a snapshot

Tools

Connection

Tool

Description

connect_camera

Connect to an Axis camera via VAPIX

Device Information

Tool

Description

get_device_info

Get device properties (model, serial, firmware)

discover_apis

Discover all VAPIX APIs supported by the camera

get_capture_mode

Get available capture modes (resolution/FPS)

Snapshot

Tool

Description

get_snapshot

Capture a JPEG snapshot

Image Settings

Tool

Description

get_image_settings

Get sensor settings (brightness, contrast, etc.)

set_image_settings

Update sensor settings

Overlay

Tool

Description

get_overlay

Get text and image overlays

add_text_overlay

Add a text overlay to the video stream

remove_overlay

Remove an overlay by identity

Date, Time & NTP

Tool

Description

get_datetime

Get current date, time, timezone

set_datetime

Set date, time, or timezone

get_ntp

Get NTP configuration

set_ntp

Configure NTP synchronization

Network

Tool

Description

get_network_info

Get network parameters (IP, DNS, hostname)

get_network_config

Get network config via modern API

set_network_config

Update network settings

Stream Profiles

Tool

Description

get_stream_profiles

List all stream profiles

create_stream_profile

Create a new stream profile

update_stream_profile

Update an existing stream profile

remove_stream_profile

Remove a stream profile

PTZ (Pan/Tilt/Zoom)

Tool

Description

get_ptz_position

Get current PTZ position

set_ptz_position

Set absolute PTZ position

ptz_move

Send relative move command

get_ptz_presets

List PTZ preset positions

goto_ptz_preset

Move to a named preset

System

Tool

Description

reboot_camera

Reboot the camera

get_system_log

Get system log

get_access_log

Get client access log

get_server_report

Get detailed server report

factory_default

Reset to factory defaults

Users & Storage

Tool

Description

get_users

Get user accounts and groups

create_user

Create a new user account

update_user

Update a user's password or role

remove_user

Remove a user account

setup_initial_user

Set up the first admin user on a factory-fresh camera (no auth required)

get_storage_info

Get storage/SD card information

Development

git clone https://github.com/hemla-com/axis-mcp.git
cd axis-mcp
npm install
npm run dev

License

Copyright (c) 2026 Hemla. Licensed under GPL-3.0.

Derivative works must use the same license and acknowledge Hemla as the original author.

Available Tools

37 tools
add_text_overlayA
Idempotent

Add a text overlay to the video stream. Supports format modifiers like %F (date), %T (time).

Inputs: text (required), x, y, color, +4 more.

connect_cameraA
Idempotent

Connect to an Axis IP camera via VAPIX. Must be called before other tools.

Inputs: host (required), password (required), username (required), port.

create_stream_profileA
Idempotent

Create a new stream profile with specified parameters.

Inputs: name (required), parameters (required), description.

create_userA
Idempotent

Create a new user account on the camera.

Inputs: user (required), password (required), ptz, role.

discover_apisA
Read-onlyIdempotent

Discover all VAPIX APIs supported by the connected camera.

Inputs: no named parameters.

factory_defaultA
Destructive

Reset camera to factory defaults. WARNING: This is destructive and will reboot the camera.

Inputs: hard.

get_access_logA
Read-onlyIdempotent

Get the camera's client access log.

Inputs: no named parameters.

get_capture_modeA
Read-onlyIdempotent

Get available capture modes (resolution/FPS combinations) for each channel.

Inputs: no named parameters.

get_datetimeA
Read-onlyIdempotent

Get the camera's current date, time, and timezone.

Inputs: no named parameters.

get_device_infoA
Read-onlyIdempotent

Get detailed device information (model, serial, firmware, etc.).

Inputs: no named parameters.

get_image_settingsA
Read-onlyIdempotent

Get current image sensor settings (brightness, contrast, white balance, etc.).

Inputs: channel.

get_network_configA
Read-onlyIdempotent

Get network configuration via the modern Network Settings API.

Inputs: no named parameters.

get_network_infoA
Read-onlyIdempotent

Get network parameters (IP, DNS, hostname, etc.) via legacy param.cgi.

Inputs: no named parameters.

get_ntpA
Read-onlyIdempotent

Get NTP (time synchronization) configuration.

Inputs: no named parameters.

get_overlayA
Read-onlyIdempotent

Get text and image overlays configured on the video stream. Queries all cameras by default.

Inputs: camera.

get_ptz_positionA
Read-onlyIdempotent

Get current PTZ (Pan/Tilt/Zoom) position.

Inputs: camera.

get_ptz_presetsB
Read-onlyIdempotent

List all PTZ preset positions.

Inputs: camera.

get_server_reportB
Read-onlyIdempotent

Get a detailed server report from the camera.

Inputs: no named parameters.

get_snapshotA
Read-onlyIdempotent

Capture a JPEG snapshot from the camera.

Inputs: camera, maxWidth, resolution, compression.

get_storage_infoA
Read-onlyIdempotent

Get information about storage/SD card on the camera.

Inputs: no named parameters.

get_stream_profilesA
Read-onlyIdempotent

List all stream profiles configured on the camera.

Inputs: no named parameters.

get_system_logA
Read-onlyIdempotent

Get the camera's system log.

Inputs: no named parameters.

get_usersA
Read-onlyIdempotent

Get the list of user accounts and their groups.

Inputs: no named parameters.

goto_ptz_presetA
Idempotent

Move camera to a named PTZ preset position.

Inputs: presetName (required), speed, camera.

ptz_moveA
Idempotent

Send a relative PTZ move command (home, up, down, left, right, upleft, upright, downleft, downright, stop).

Inputs: move (required), speed, camera.

reboot_cameraA
Destructive

Reboot the camera.

Inputs: no named parameters.

remove_overlayB
Destructive

Remove an overlay by its identity number.

Inputs: identity (required).

remove_stream_profileB
Destructive

Remove a stream profile.

Inputs: name (required).

remove_userA
Destructive

Remove a user account from the camera.

Inputs: user (required).

set_datetimeB
Idempotent

Set the camera's date, time, or timezone.

Inputs: dateTime, timeZone.

set_image_settingsB
Idempotent

Update image sensor settings (brightness, contrast, white balance, WDR, exposure, etc.).

Inputs: wdr, channel, contrast, exposure, +4 more.

set_network_configA
Idempotent

Update network settings (hostname, IP, subnet, gateway).

Inputs: hostname, ipv4Address, ipv4Gateway, ipv4SubnetMask.

set_ntpA
Idempotent

Configure NTP time synchronization.

Inputs: enabled, serversSource, staticServers.

set_ptz_positionB
Idempotent

Set absolute PTZ position.

Inputs: pan, tilt, zoom, speed, +1 more.

setup_initial_userA
Idempotent

Set up the initial admin user on a factory-fresh Axis camera. Does NOT require connect_camera — connects directly without authentication.

Inputs: host (required), password (required), port, username.

update_stream_profileB
Idempotent

Update an existing stream profile.

Inputs: name (required), parameters (required), description.

update_userB
Idempotent

Update an existing user's password or role.

Inputs: user (required), ptz, role, password.

Tool Schema Changelog

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

    TDQS

    A3.6/5.0

    Scored across 37 tools

    Disambiguation4/5

    Most tools have distinct purposes, but there is some overlap: get_network_info and get_network_config both retrieve network information via different APIs, which could confuse an agent. Also, multiple log retrieval tools (get_system_log, get_access_log, get_server_report) might cause similar ambiguity.

    Naming Consistency5/5

    Tools follow a consistent verb_noun pattern (e.g., get_storage_info, set_ptz_position, create_user, factory_default). Even ptz_move and goto_ptz_preset fit the pattern. No mixing of conventions.

    Tool Count2/5

    37 tools is excessive for typical MCP server scope. While the domain (camera management) is broad, this feels overwhelming. Most well-scoped servers have under 20 tools.

    Completeness5/5

    The tool set covers the full lifecycle and major features of Axis cameras: user management, network config, PTZ, overlays, stream profiles, logs, NTP, reboot, factory reset. No obvious gaps for camera administration.

    Maintenance

    ActivityInactive
    ResponsivenessNo recent community issues

    Related MCP Connectors

    Related MCP Servers

    • F
      license
      Not graded
      quality
      D
      maintenance
      MCP server for managing Hikvision NVRs and IP cameras via ISAPI, providing tools for device info, camera channels, user management, and configuration changes with safety confirmations.
      -