Axis MCP
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Axis MCPConnect to my Axis camera at 192.168.1.100 and get device info"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
@hemla/axis-mcp
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 secretShow me the camera's device infoTake a snapshotTools
Connection
Tool | Description |
| Connect to an Axis camera via VAPIX |
Device Information
Tool | Description |
| Get device properties (model, serial, firmware) |
| Discover all VAPIX APIs supported by the camera |
| Get available capture modes (resolution/FPS) |
Snapshot
Tool | Description |
| Capture a JPEG snapshot |
Image Settings
Tool | Description |
| Get sensor settings (brightness, contrast, etc.) |
| Update sensor settings |
Overlay
Tool | Description |
| Get text and image overlays |
| Add a text overlay to the video stream |
| Remove an overlay by identity |
Date, Time & NTP
Tool | Description |
| Get current date, time, timezone |
| Set date, time, or timezone |
| Get NTP configuration |
| Configure NTP synchronization |
Network
Tool | Description |
| Get network parameters (IP, DNS, hostname) |
| Get network config via modern API |
| Update network settings |
Stream Profiles
Tool | Description |
| List all stream profiles |
| Create a new stream profile |
| Update an existing stream profile |
| Remove a stream profile |
PTZ (Pan/Tilt/Zoom)
Tool | Description |
| Get current PTZ position |
| Set absolute PTZ position |
| Send relative move command |
| List PTZ preset positions |
| Move to a named preset |
System
Tool | Description |
| Reboot the camera |
| Get system log |
| Get client access log |
| Get detailed server report |
| Reset to factory defaults |
Users & Storage
Tool | Description |
| Get user accounts and groups |
| Create a new user account |
| Update a user's password or role |
| Remove a user account |
| Set up the first admin user on a factory-fresh camera (no auth required) |
| Get storage/SD card information |
Development
git clone https://github.com/hemla-com/axis-mcp.git
cd axis-mcp
npm install
npm run devLicense
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 toolsadd_text_overlayAIdempotent
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_cameraAIdempotent
Connect to an Axis IP camera via VAPIX. Must be called before other tools.
Inputs: host (required), password (required), username (required), port.
create_stream_profileAIdempotent
Create a new stream profile with specified parameters.
Inputs: name (required), parameters (required), description.
create_userAIdempotent
Create a new user account on the camera.
Inputs: user (required), password (required), ptz, role.
discover_apisARead-onlyIdempotent
Discover all VAPIX APIs supported by the connected camera.
Inputs: no named parameters.
factory_defaultADestructive
Reset camera to factory defaults. WARNING: This is destructive and will reboot the camera.
Inputs: hard.
get_access_logARead-onlyIdempotent
Get the camera's client access log.
Inputs: no named parameters.
get_capture_modeARead-onlyIdempotent
Get available capture modes (resolution/FPS combinations) for each channel.
Inputs: no named parameters.
get_datetimeARead-onlyIdempotent
Get the camera's current date, time, and timezone.
Inputs: no named parameters.
get_device_infoARead-onlyIdempotent
Get detailed device information (model, serial, firmware, etc.).
Inputs: no named parameters.
get_image_settingsARead-onlyIdempotent
Get current image sensor settings (brightness, contrast, white balance, etc.).
Inputs: channel.
get_network_configARead-onlyIdempotent
Get network configuration via the modern Network Settings API.
Inputs: no named parameters.
get_network_infoARead-onlyIdempotent
Get network parameters (IP, DNS, hostname, etc.) via legacy param.cgi.
Inputs: no named parameters.
get_ntpARead-onlyIdempotent
Get NTP (time synchronization) configuration.
Inputs: no named parameters.
get_overlayARead-onlyIdempotent
Get text and image overlays configured on the video stream. Queries all cameras by default.
Inputs: camera.
get_ptz_positionARead-onlyIdempotent
Get current PTZ (Pan/Tilt/Zoom) position.
Inputs: camera.
get_ptz_presetsBRead-onlyIdempotent
List all PTZ preset positions.
Inputs: camera.
get_server_reportBRead-onlyIdempotent
Get a detailed server report from the camera.
Inputs: no named parameters.
get_snapshotARead-onlyIdempotent
Capture a JPEG snapshot from the camera.
Inputs: camera, maxWidth, resolution, compression.
get_storage_infoARead-onlyIdempotent
Get information about storage/SD card on the camera.
Inputs: no named parameters.
get_stream_profilesARead-onlyIdempotent
List all stream profiles configured on the camera.
Inputs: no named parameters.
get_system_logARead-onlyIdempotent
Get the camera's system log.
Inputs: no named parameters.
get_usersARead-onlyIdempotent
Get the list of user accounts and their groups.
Inputs: no named parameters.
goto_ptz_presetAIdempotent
Move camera to a named PTZ preset position.
Inputs: presetName (required), speed, camera.
ptz_moveAIdempotent
Send a relative PTZ move command (home, up, down, left, right, upleft, upright, downleft, downright, stop).
Inputs: move (required), speed, camera.
reboot_cameraADestructive
Reboot the camera.
Inputs: no named parameters.
remove_overlayBDestructive
Remove an overlay by its identity number.
Inputs: identity (required).
remove_stream_profileBDestructive
Remove a stream profile.
Inputs: name (required).
remove_userADestructive
Remove a user account from the camera.
Inputs: user (required).
set_datetimeBIdempotent
Set the camera's date, time, or timezone.
Inputs: dateTime, timeZone.
set_image_settingsBIdempotent
Update image sensor settings (brightness, contrast, white balance, WDR, exposure, etc.).
Inputs: wdr, channel, contrast, exposure, +4 more.
set_network_configAIdempotent
Update network settings (hostname, IP, subnet, gateway).
Inputs: hostname, ipv4Address, ipv4Gateway, ipv4SubnetMask.
set_ntpAIdempotent
Configure NTP time synchronization.
Inputs: enabled, serversSource, staticServers.
set_ptz_positionBIdempotent
Set absolute PTZ position.
Inputs: pan, tilt, zoom, speed, +1 more.
setup_initial_userAIdempotent
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_profileBIdempotent
Update an existing stream profile.
Inputs: name (required), parameters (required), description.
update_userBIdempotent
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
Scored across 37 tools
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.
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.
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.
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
Related MCP Connectors
MCP server for network documentation, generated by doc2mcp.
MCP server for the Seline Analytics API
Related MCP Servers
- FlicenseNot gradedqualityBmaintenanceRuns a Model Context Protocol server directly on Axis cameras, enabling any MCP-capable AI to inspect and control the camera without cloud or middleware.15 npm8-
- FlicenseNot gradedqualityDmaintenanceMCP 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.-
- AlicenseAqualityDmaintenanceMCP server for Blue Iris NVR, enabling camera health checks, live/historical snapshots, clip/alert search, and PTZ control via the Blue Iris JSON API.5MIT
- FlicenseNot gradedqualityDmaintenanceMCP server that lets an LLM control an Axis network camera over VAPIX, including live streaming, PTZ, image settings, overlays, clock, light, user management, and a built-in RAG knowledge base of VAPIX docs.-