Skip to content

Releases: kotyzap/EdgeMCP-for-Axis

EdgeMCP for Axis 2.0.1

Choose a tag to compare

@kotyzap kotyzap released this 07 Sep 21:53

EdgeMCP for Axis 2.0.1

A Model Context Protocol server that runs inside the camera. No gateway, no
middleware, no cloud round-trip β€” point any MCP client at the camera and it gains
269 tools across 34 modules for that device, guarded by operator-set access levels.

Built 2026-09-07 23:35 CEST Β· aarch64 (ARTPEC-8/9) Β· AXIS OS 12.10 – 13 Β· unsigned
(camera needs "Allow unsigned apps")

File Size SHA-256
EdgeMCP_for_Axis_2_0_1_aarch64.eap 34 MB 8e708e776ef5cf6cbd9a0f785c9fb0e33f40d8330f400c7089f2b1f7709374bf

Changes in 2.0.1

  • Settings page saves again. A variable the toast notification depended on was
    removed with the agent UI in 2.0.0, so Save threw ReferenceError: toastTimer is not defined and silently did nothing. Declaration restored; the
    rest of the surviving page was re-checked for the same class of breakage and no
    other case was found.

Read this before upgrading from 1.x

Will not install on AXIS OS below 12.10. ACAP manifest schema v2 is mandatory
for AXIS OS 13, and schema v2 itself requires 12.10. That floor is a consequence
of OS 13 readiness, not a choice.

The package id changed from needle_mcp to edgemcp. Existing installs are
not upgraded in place β€” remove the old app first β€” and every MCP client URL moves
to /local/edgemcp/mcp.

The on-camera agent is gone. 1.x bundled a 45M language model, speech-to-text
and a neural voice alongside the MCP server. They were 89 % of the download and
nine of the thirteen endpoints, inside a product called EdgeMCP. This release is
an MCP server and nothing else; the agent continues as its own project.

Reinstalling resets settings. VAPIX credentials, the access level and the
direct port's bearer token return to defaults. Re-copy the newly generated token
into your MCP client β€” a stale token is the 401 you will otherwise spend ten
minutes on.

What it is

  • 269 tools across 34 modules over Streamable HTTP, backed by VAPIX, running on the camera.
  • Both MCP protocol revisions from one endpoint. 2025-era clients over the
    stateless legacy path, and 2026-07-28 β€” which removed the initialize
    handshake and protocol sessions entirely β€” natively, including server/discover
    and subscriptions/listen. Current Claude Code uses the new revision; a
    2025-only server cannot answer it at all.
  • Three access levels, operator-set, applied immediately: Read-only (154
    tools), Operate (232, the default), Full (all). tools/list is filtered to
    the level, so the camera never advertises what it will refuse.
  • Annotations on every tool β€” readOnlyHint, destructiveHint,
    idempotentHint, openWorldHint β€” derived from the same classification the
    guardrails enforce, so a tool cannot advertise itself read-only while being
    treated as a write.
  • A one-hour cache hint on tools/list, which is ~176 KB; without it a modern
    client re-fetches the whole thing every turn.
  • Full audit trail: every request, tool call and refusal in the Live Log and the
    AXIS system log.

Install

Camera UI β†’ System β†’ Apps β†’ enable Allow unsigned apps β†’ Add app β†’ upload the
.eap β†’ Start. Open the app's settings page and enter VAPIX admin credentials.

Then point a client at it:

claude mcp add --transport http <name> http://<camera-ip>:8000/mcp \
  --header "Authorization: Bearer <token from the settings page>"

The reverse-proxy path http://<camera-ip>/local/edgemcp/mcp is the same server
behind the camera's own admin digest auth; the direct port exists for clients that
cannot do digest.

Endpoints

/local/edgemcp/mcp           MCP, Streamable HTTP (both protocol revisions)
/local/edgemcp/status.cgi    health + VAPIX self-test
/local/edgemcp/settings.cgi  configuration (GET/POST)
/local/edgemcp/log.cgi       the Live Log

Verified on

AXIS Q1656 (ARTPEC-8), AXIS OS 12.11.77 β€” installs, VAPIX connects, 232
tools at the default access level, real tool calls return live data, and Claude
Code drives it over the 2026-07-28 revision.

Signing

This package is unsigned, which AXIS OS 12 accepts with Allow unsigned apps.
AXIS OS 13 removes unsigned installs β€” sign it through the Axis Service Portal
before deploying there.

v1.4.0 - Axis MCP Server - ARTPEC 7/8/9 - FW 11/12

Choose a tag to compare

@kotyzap kotyzap released this 11 Jul 00:00
aafcb7d

FW 10 ARTPEC 7 - via CamScripter ACAP - axis_mcp_camscripter_1_4_0.zip
FW 11/12 ARTPEC 8/9 - Axis_MCP_Server_1_4_0_aarch64.eap
FW 11/12 ARTPEC 7 - Axis_MCP_Server_1_4_0_armv7hf.eap

NEW in v1.4.0:

The access-level map

Every one of the 252 tools is classified in guardrails.ts. Each level includes everything below it; unknown tools fail closed to Full.

πŸ‘ Read-only - 138 tools
Pure inspection β€” nothing on the camera changes. Device info & health, snapshots, view areas, param reads, PTZ position/limits, event topics, analytics counts (AOA, people counter, queue, demographics, LPV plates), audio/imaging/zipstream status, stream URLs & profiles, recordings list, audit & system logs, MQTT/pairing/storage status, CamStreamer/CamSwitcher/CamOverlay listings.

πŸ•Ή Operate - +76 tools Β· default
Day-to-day control. PTZ moves & presets, guard/recorded tours, autotracking, focus/zoom, image tuning (day-night, stabilizer, rotation, rate control), view-area geometry, native & CamOverlay overlays, audio operation & media clips, relay outputs, start/stop recordings, stream & profile control, zipstream tuning, event schedules, CamStreamer/CamSwitcher control.

πŸ”§ Full - +38 tools
Persistent configuration & maintenance. Reboot and factory default (each also needs confirm: true), raw set_param, ACAP start/stop, config import, capture & device mode, network/NTP/mDNS/geolocation/regional settings, MQTT wiring, signed video, analytics data plumbing, device & camera pairing, recording groups and remote storage topology, log administration.