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 threwReferenceError: toastTimer is not definedand 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_mcptoedgemcp. 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 theinitialize
handshake and protocol sessions entirely β natively, includingserver/discover
andsubscriptions/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/listis 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.