Skip to main content
Glama
AnavaAcap

Anava MCP Server

by AnavaAcap

Anava MCP Server

MCP (Model Context Protocol) server for Anava AI-powered security cameras. This server enables AI assistants like Claude to interact with Anava-enabled Axis cameras for real-time image analysis and event monitoring.

Overview

The Anava MCP Server acts as a bridge between AI assistants and Anava ACAP applications running on Axis cameras. It provides a standardized interface for:

  • 📸 Capturing and analyzing images with custom prompts

  • 📊 Retrieving historical events and analytics

  • 🔍 Real-time camera monitoring

  • ⚙️ Camera configuration management

Related MCP server: MCP Unified Server

Installation

npm install -g @anava/mcp-server

Via Docker

docker pull anava/mcp-server
docker run -e ANAVA_HOST=your-camera-ip -e ANAVA_USERNAME=root -e ANAVA_PASSWORD=pass anava/mcp-server

From Source

git clone https://github.com/AnavaAI/anava-mcp-server.git
cd anava-mcp-server
npm install
npm run build

Configuration

Claude Desktop Setup

Add the MCP server to your Claude Desktop configuration:

  1. Open Claude Desktop settings

  2. Navigate to MCP Servers

  3. Add the following configuration:

{
  "mcpServers": {
    "anava-vision": {
      "command": "npx",
      "args": ["@anava/mcp-server"],
      "env": {
        "ANAVA_HOST": "192.168.1.100",
        "ANAVA_PORT": "80",
        "ANAVA_USERNAME": "root",
        "ANAVA_PASSWORD": "your-password"
      }
    }
  }
}

Environment Variables

Variable

Description

Default

ANAVA_HOST

IP address of your Axis camera

Required

ANAVA_PORT

HTTP port of the camera

80

ANAVA_USERNAME

Camera username

root

ANAVA_PASSWORD

Camera password

Required

Usage

Once configured, you can use the following commands in Claude:

Capture and Analyze

@anava-vision capture-and-analyze "What do you see in this image?"

Get Recent Events

@anava-vision get-events --limit 10

Get Event by ID

@anava-vision get-event <event-id>

Get Event History

@anava-vision get-event-history --days 7

Development

Prerequisites

  • Node.js 18+

  • TypeScript 5+

  • An Axis camera with Anava ACAP installed

Building

npm install
npm run build

Testing

npm test
npm run test:integration  # Requires camera connection

Running Locally

# Development mode with hot reload
npm run dev

# Production mode
npm start

API Reference

MCP Tools

capture-and-analyze

Captures an image from the camera and analyzes it with a custom prompt.

Parameters:

  • prompt (string, required): The analysis prompt

  • channel (number, optional): Camera channel (default: 1)

  • securityProfile (string, optional): Security profile ID to use

Returns:

  • analysis: AI analysis results

  • imageData: Base64 encoded image

  • metadata: Timestamp and camera info

get-events

Retrieves recent events from the camera.

Parameters:

  • limit (number, optional): Number of events to retrieve (default: 50)

Returns:

  • Array of event objects

get-event

Retrieves a specific event by ID.

Parameters:

  • eventId (string, required): Event ID

Returns:

  • Event object with full details

get-event-history

Gets event statistics over a time period.

Parameters:

  • days (number, optional): Number of days to look back (default: 7)

Returns:

  • Event counts by type and date

Troubleshooting

Authentication Failed

  • Verify camera credentials are correct

  • Ensure the camera is accessible from your network

  • Check if digest authentication is enabled on the camera

No Response from Camera

  • Verify the Anava ACAP is installed and running

  • Check camera IP and port settings

  • Ensure firewall allows connection to camera

Analysis Returns Empty

  • Verify Vertex AI credentials are configured in the ACAP

  • Check if the security profile has valid API keys

  • Ensure the camera has internet access for AI services

Security Considerations

  • Store camera credentials securely

  • Use HTTPS when possible (requires camera certificate)

  • Limit network access to cameras

  • Regularly update camera firmware and ACAP

Contributing

We welcome contributions! Please see our Contributing Guide for details.

License

MIT License - see LICENSE for details.

Support

Available Tools

4 tools
anava_capture_analyzeC

Capture an image from camera and analyze it with AI

ParametersJSON Schema
NameRequiredDescriptionDefault
cameraNoCamera name or use default if not specified
channelNoCamera channel number (default: 1)
promptYesAnalysis prompt to send to AI model
security_profileNoSecurity profile name to use

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure. It mentions capturing and analyzing, implying a read operation with AI processing, but fails to detail critical aspects like permissions needed, rate limits, whether the analysis is destructive or reversible, or what the output format might be. This leaves significant gaps for a tool that interacts with hardware and AI models.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, efficient sentence that front-loads the core functionality ('Capture an image from camera and analyze it with AI') with zero wasted words. It's appropriately sized for the tool's complexity, making it easy to parse quickly.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity (interacting with cameras and AI), lack of annotations, and no output schema, the description is insufficient. It doesn't explain the analysis process, potential errors, or what results to expect, leaving the agent under-informed about how to handle this tool effectively in practice.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has 100% description coverage, clearly documenting all four parameters (camera, channel, prompt, security_profile) and their types. The description adds no additional semantic context beyond what's in the schema, such as example prompts or security profile implications, so it meets the baseline of 3 where the schema does the heavy lifting.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose with specific verbs ('capture' and 'analyze') and resources ('image from camera' and 'AI'), making it easy to understand what it does. However, it doesn't explicitly differentiate from its sibling 'anava_capture_image', which likely only captures without analysis, leaving some ambiguity about when to choose one over the other.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives, such as its sibling 'anava_capture_image' for capture-only scenarios or 'anava_get_events'/'anava_monitor_events' for event-related tasks. There's no mention of prerequisites, context, or exclusions, leaving the agent to infer usage based on the purpose alone.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

anava_capture_imageB

Capture an image from camera without analysis

ParametersJSON Schema
NameRequiredDescriptionDefault
cameraNoCamera name or use default if not specified
channelNoCamera channel number (default: 1)
resolutionNoImage resolution (e.g., "1920x1080")

TDQS

B3.2/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries full burden but only states it captures without analysis. It misses key behavioral details: whether this is a read/write operation, if it requires specific permissions, what happens to the captured image (saved/returned), or any rate limits/errors. The description adds minimal context beyond the basic action.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, efficient sentence that front-loads the core purpose ('capture an image from camera') and adds a key constraint ('without analysis'). There is zero waste, and every word earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no annotations and no output schema, the description is incomplete for a tool that likely returns an image or status. It doesn't explain what the tool returns, error conditions, or side effects. For a capture operation with potential system interactions, more context is needed.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so parameters are fully documented in the schema. The description adds no parameter-specific information beyond what the schema provides (e.g., no examples or constraints). Baseline 3 is appropriate as the schema handles parameter semantics adequately.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb ('capture') and resource ('image from camera'), specifying that it's a capture operation without analysis. It distinguishes from sibling 'anava_capture_analyze' by explicitly stating 'without analysis', though it doesn't mention other siblings like get/monitor events.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage context by contrasting with 'anava_capture_analyze' through 'without analysis', suggesting this is for raw image capture. However, it lacks explicit guidance on when to use this versus other siblings or any prerequisites/exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

anava_get_eventsC

Get historical events from camera

ParametersJSON Schema
NameRequiredDescriptionDefault
cameraNoCamera name or use default if not specified
end_timeNoISO timestamp for end of time range
limitNoMaximum number of events to return
start_timeNoISO timestamp for start of time range

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure. It mentions 'Get historical events' but doesn't specify if this is a read-only operation, what permissions are required, how it handles errors, or if there are rate limits. This leaves significant gaps in understanding the tool's behavior beyond basic functionality.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, clear sentence with no wasted words, making it highly concise and front-loaded. It efficiently communicates the core purpose without unnecessary elaboration.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity (4 parameters, no annotations, no output schema), the description is insufficient. It doesn't explain what an 'event' entails, the return format, or how results are structured, leaving the agent with incomplete context for effective use.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema description coverage is 100%, so all parameters are documented in the schema. The description adds no additional meaning beyond implying time-based filtering, which is already covered by the schema's descriptions for 'start_time' and 'end_time'. Thus, it meets the baseline for adequate but not enhanced parameter semantics.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'Get' and the resource 'historical events from camera', making the purpose understandable. However, it doesn't distinguish this tool from its sibling 'anava_monitor_events', which might also retrieve events but potentially in real-time versus historical.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to use this tool versus alternatives like 'anava_monitor_events' or other siblings. The description lacks context about prerequisites, such as needing a camera to be configured or available, and doesn't specify any exclusions or recommended scenarios.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

anava_monitor_eventsC

Monitor camera for real-time events

ParametersJSON Schema
NameRequiredDescriptionDefault
cameraNoCamera name or use default if not specified
durationNoMonitoring duration in seconds
event_typesNoEvent types to monitor (e.g., ["motion", "object"])

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure. It states 'monitor for real-time events' but lacks details on permissions, rate limits, what happens during monitoring (e.g., streaming, alerts), or output format. This is inadequate for a tool with potential real-time implications.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, efficient sentence with zero waste, front-loading the core purpose. It's appropriately sized for the tool's complexity, making it easy to parse quickly.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's real-time monitoring nature, no annotations, and no output schema, the description is incomplete. It fails to explain behavioral aspects like how events are reported, error handling, or dependencies, leaving significant gaps for an AI agent to use it effectively.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents all parameters (camera, duration, event_types). The description adds no additional meaning beyond what the schema provides, such as examples for event_types or default behaviors, meeting the baseline for high coverage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('monitor') and resource ('camera for real-time events'), making the purpose understandable. It distinguishes from sibling tools like 'anava_capture_image' (static capture) and 'anava_get_events' (retrieval of past events) by focusing on real-time monitoring, though it doesn't explicitly name these alternatives.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to use this tool versus alternatives. The description mentions 'real-time events' but doesn't specify scenarios, prerequisites, or exclusions compared to siblings like 'anava_capture_analyze' or 'anava_get_events', leaving usage context unclear.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.

  1. 4 tool updatesv1.0.0
    • First observedanava_capture_analyze
    • First observedanava_capture_image
    • First observedanava_get_events
    • First observedanava_monitor_events

TDQS

A3.6/5.0
Disambiguation5/5

Each tool has a clearly distinct purpose with no overlap: capture+analyze, capture-only, get historical events, and monitor real-time events. The descriptions make it impossible to confuse which tool to use for each specific camera/AI task.

Naming Consistency5/5

All tools follow a perfect 'anava_verb_noun' pattern with consistent snake_case throughout. The naming is predictable and follows the same prefix+action+object structure across all four tools.

Tool Count5/5

Four tools is ideal for this camera/AI monitoring server scope - it covers the essential operations (capture, analyze, historical data, real-time monitoring) without being too sparse or bloated. Each tool clearly earns its place.

Completeness5/5

The tool surface provides complete coverage for camera/AI monitoring: capture functionality (with and without analysis), historical data retrieval, and real-time monitoring. There are no obvious gaps in the core workflow for this domain.

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/AnavaAcap/anava-mcp-server'

If you have feedback or need assistance with the MCP directory API, please join our Discord server