Problem
When the swarm-provenance-mcp Docker image has a newer version available, there's no mechanism to notify the user or auto-update. Users can run stale versions indefinitely without knowing.
This is particularly relevant because Claude Code launches MCP servers via .mcp.json config, and users rarely check manually for updates.
Context
During debugging an MCP setup issue (tools not surfacing in Claude Code sessions), we found this is a common gap across all MCP servers. The npx-based servers can use @latest tag as a workaround, but Docker images have no equivalent automatic mechanism.
Proposed Solutions
Option A — Startup version check:
On server startup, query GitHub releases / GHCR tags and log a warning to stderr if a newer version exists. Example:
INFO: swarm-provenance-mcp v0.1.0
WARN: Newer version v0.2.0 available. Pull with: docker pull ghcr.io/datafund/swarm-provenance-mcp:latest
Option B — MCP protocol version response:
Include update info in the initialize response metadata so the client (Claude Code) can surface it.
Option C — Health check endpoint:
Add version info to the health_check tool response, including whether the running version is latest.
Additional Context
- Current Docker config in
.mcp.json doesn't pin a version tag (uses implicit :latest)
- Docker's
:latest tag doesn't auto-pull — it uses whatever was last pulled locally
- Other MCP servers (plur, datacore) use npx with
@latest suffix as a workaround
Problem
When the swarm-provenance-mcp Docker image has a newer version available, there's no mechanism to notify the user or auto-update. Users can run stale versions indefinitely without knowing.
This is particularly relevant because Claude Code launches MCP servers via
.mcp.jsonconfig, and users rarely check manually for updates.Context
During debugging an MCP setup issue (tools not surfacing in Claude Code sessions), we found this is a common gap across all MCP servers. The npx-based servers can use
@latesttag as a workaround, but Docker images have no equivalent automatic mechanism.Proposed Solutions
Option A — Startup version check:
On server startup, query GitHub releases / GHCR tags and log a warning to stderr if a newer version exists. Example:
Option B — MCP protocol version response:
Include update info in the
initializeresponse metadata so the client (Claude Code) can surface it.Option C — Health check endpoint:
Add version info to the
health_checktool response, including whether the running version is latest.Additional Context
.mcp.jsondoesn't pin a version tag (uses implicit:latest):latesttag doesn't auto-pull — it uses whatever was last pulled locally@latestsuffix as a workaround