Axis MCP
# @hemla/axis-mcp
[](https://www.npmjs.com/package/@hemla/axis-mcp)
[](https://github.com/hemla-com/axis-mcp/actions/workflows/ci.yml)
[](LICENSE)
MCP server for configuring [Axis](https://www.axis.com) IP cameras via [VAPIX](https://developer.axis.com/vapix/).
## Installation
### Claude Desktop
Add to your Claude Desktop config (`~/Library/Application Support/Claude/claude_desktop_config.json`):
```json
{
"mcpServers": {
"Axis": {
"command": "npx",
"args": ["-y", "@hemla/axis-mcp@0.2.1"]
}
}
}
```
## 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
```bash
git clone https://github.com/hemla-com/axis-mcp.git
cd axis-mcp
npm install
npm run dev
```
## License
Copyright (c) 2026 [Hemla](https://hemla.com). Licensed under [GPL-3.0](LICENSE).
Derivative works must use the same license and acknowledge Hemla as the original author.
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.