1. Conduid
  2. Developer Tools
  3. Argo Watcher MCP
MCP server · Developer Tools

Argo Watcher MCP

A proof of concept implementation of MCP server for argo-watcher

Unclaimed MIT devtools
59Fair

Scored 5 days ago · breakdown

About Argo Watcher MCP

Argo Watcher MCP is an MCP server published by shini4i in the Developer Tools category: a proof of concept implementation of MCP server for argo-watcher.

The repository has 1 stars and 0 forks, with the last commit a month ago. Recent commit activity is the strongest signal that reported issues will get attention.

Install

From source
git clone https://github.com/shini4i/argo-watcher-mcp

This server has no ConduID identity, so agent calls to it are not receipted. Pin the version you install and review the source before granting it credentials.

Tools (4)

get_deploy_lockAre deployments currently frozen?

Parameters not published.

get_deploymentsWhat was deployed, when, by whom, with which image tags, and whether it succeeded, failed, or was a rollback.

Parameters not published.

get_reachabilityCan argo-watcher reach ArgoCD and its state backend?

Parameters not published.

get_server_infoWhich argo-watcher version is running, and how is it configured?

Parameters not published.

Ask AI

✦

Ask AI about Argo Watcher MCP

Powered by Claude · Grounded in docs

I know everything about Argo Watcher MCP. Ask me about installation, configuration, usage, or troubleshooting.

Security checks

Static checks derived from the repository 5 days ago. Heuristics on the source, not an audit.

  • ✓README presentThe repository ships documentation.
  • ✓License declaredUsable under a stated license.
  • ✓Tests presentA test suite exists in the repository.
  • ✓Dependencies pinnedA lockfile pins dependency versions.
  • ✓No dynamic code executionSource scan found no eval, dynamic Function, or shell execution.
  • !Scoped permissionsDoesn't declare a permission scope. Assume it can do anything its process can.

Releases

v0.3.0v0.3.0 · 30 Jul 2026Changelog fc10b45ad547c5fa97b5031f08f4541afa48acf3 fix(release): publish v-prefixed image tags bf980e15b052294ab1cf23bc7cf35319b61075b6 fix(release): copy the per-platform binary in the Dockerfile 2aaf9b71173cbee8c4d8a413039708009414d3aa…
v0.2.0v0.2.0 · 1 Jul 2025What's Changed feat: add chat with OpenAI for teting purposes by @shini4i in https://github.com/shini4i/argo-watcher-mcp/pull/1 chore: add health checks endpoints by @shini4i in https://github.com/shini4i/argo-watcher-mcp/pull/2 chore:…
v0.1.0v0.1.0 · 26 Jun 2025The initial PoC release

README

Argo Watcher MCP Server

A simple service that exposes an argo-watcher instance as a set of tools via the Model Context Protocol (MCP), allowing AI agents and other clients to query deployment history.

GitHub Actions GitHub go.mod Go version GitHub release (latest by date) codecov license

[!IMPORTANT] This project is currently a Proof of Concept (PoC). It was built to explore the integration between Argo Watcher and the Model Context Protocol (MCP). As such, it may be subject to significant changes or be abandoned in the future. Please use it with this understanding.

Features

  • Exposes argo-watcher's read-only API as MCP tools: what was deployed, when, by whom, and whether it succeeded.
  • Also surfaces the deploy lock, dependency reachability, and instance config.
  • Runs over stdio or HTTP (streamable SSE) via the official MCP Go SDK.
  • Multi-platform distroless container image.

[!NOTE] Read-only by design: this server cannot create deployments or change the deploy lock.

Tools

Tool Answers Upstream endpoint
get_deployments What was deployed, when, by whom, with which image tags, and whether it succeeded, failed, or was a rollback. GET /api/v1/tasks
get_deploy_lock Are deployments currently frozen? GET /api/v1/deploy-lock
get_reachability Can argo-watcher reach ArgoCD and its state backend? GET /api/v1/reachability
get_server_info Which argo-watcher version is running, and how is it configured? GET /api/v1/version, GET /api/v1/config

Parameters and constraints live in each tool's MCP schema. Two things it does not tell you:

  • get_deployments returns 50 rows by default and 1000 at most, so check total and truncated before counting. An empty result can also mean argo-watcher's database is unreachable; get_reachability distinguishes the two.
  • get_server_info forwards an allowlist of config fields, reduces oidc, webhook and mattermost to their enabled flag, and strips user:password@ from URL-valued fields — argo-watcher does not redact ARGO_URL_ALIAS or DOCKER_IMAGES_PROXY itself.

Required argo-watcher version

Older versions silently ignore unknown query parameters, so a filter can appear to apply when it did not.

Feature Minimum argo-watcher
total, get_deploy_lock v0.10.0
status filter v0.10.2
is_rollback / rollback_target_id v0.11.0
limit / offset v0.12.0
get_reachability v0.13.0
/readyz (this server's own readiness check) unreleased

v0.13.0+ is recommended; v0.14.0 is the current stable upstream release.

This server's readiness check requires argo-watcher's /livez and /readyz, which arrive with the probe split and are unreleased. Against v0.14.0 and older it reports 503 with no probe payload, so give this server an upstream that serves them before wiring a readiness probe to it. Every MCP tool works against v0.13.0+ regardless.

Prerequisites

  • Go 1.26+ (for local builds and development).
  • Docker 24+ (optional, for containerized deployment).
  • Task 3.x (optional, to use the provided Taskfile).
  • A running instance of argo-watcher.

Quickstart

  1. Ensure argo-watcher is running

    The MCP server reads deployment data from an existing argo-watcher instance. You can bootstrap one quickly using the official docker-compose file.

    # In the argo-watcher repository
    docker compose up
    
  2. Configure the MCP server

    Export the required environment variables:

    export ARGO_WATCHER_URL="http://localhost:8001"  # adjust to your deployment
    export HTTP_LISTEN_ADDR=":8000"
    
  3. Run the server locally

    task run
    

    The process exposes:

    • Choose the transport via the TRANSPORT_MODE environment variable (stdio or http).
    • In stdio mode the server communicates over stdin/stdout; in http mode it serves a streamable endpoint on HTTP_LISTEN_ADDR (default :8000).
  4. (Optional) Run via Docker

    GOOS=linux GOARCH=amd64 go build -o linux/amd64/argo-watcher-mcp ./cmd/server
    docker build --build-arg TARGETPLATFORM=linux/amd64 -t argo-watcher-mcp .
    docker run --rm -p 8000:8000 \
      -e ARGO_WATCHER_URL="http://host.docker.internal:8001" \
      argo-watcher-mcp
    

    For the real multi-platform images, use goreleaser release --snapshot --clean.

Configuration

Variable Default Description
ARGO_WATCHER_URL none (required) Base URL of the upstream argo-watcher service.
HTTP_LISTEN_ADDR :8000 Address for the HTTP/SSE transport.
TRANSPORT_MODE stdio Selects transport: stdio for CLI usage or http for SSE over HTTP.
REQUEST_TIMEOUT 15s HTTP timeout for downstream argo-watcher requests. Does not apply to the probe endpoints, which are bounded separately — see Health endpoints.
OTEL_ENABLED true Enables OpenTelemetry instrumentation; set to false to disable all telemetry exports.
OTEL_SERVICE_NAME inherits APP_NAME Overrides the OpenTelemetry service.name resource attribute reported by the server.
OTEL_EXPORTER_OTLP_ENDPOINT none Optional OTLP gRPC endpoint (host:port) used for exporting metrics and traces.
OTEL_EXPORTER_OTLP_INSECURE false Set to true to allow plaintext OTLP connections when the collector does not use TLS.
APP_NAME argo-watcher-mcp Metadata surfaced via MCP implementation info.
APP_VERSION build-stamped (local otherwise) Version surfaced via MCP implementation info. Releases link it in; set this only to override.

Health endpoints

The HTTP transport serves two unauthenticated probe endpoints:

Endpoint Reports Use as
/healthz This process is serving; checks nothing else Liveness probe
/readyz This process is serving and argo-watcher answers Readiness probe

/readyz deliberately stays 200 when argo-watcher answers but reports itself unready — its state backend is down, or it is shutting down. Every replica of this server shares one argo-watcher, so failing readiness there would withdraw all of them at once and take get_reachability, the tool that names the cause, out of reach with them. That verdict is reported in the body instead:

{"status":"ready","argo_watcher":"not_ready","argo_watcher_reason":"state backend unreachable"}

Alert on get_reachability or on argo-watcher's own metrics for that condition. /readyz returns 503 only when argo-watcher's process does not answer at all — including against an upstream too old to serve /livez, per Required argo-watcher version.

Each upstream probe is bounded at 2s rather than by REQUEST_TIMEOUT, so this endpoint answers inside a normal probe deadline even when argo-watcher's readiness handler hangs on its state backend.

Telemetry & Metrics

When telemetry is enabled, the HTTP transport exposes Prometheus metrics at /metrics. Key series:

  • argo_watcher_mcp_requests_total{result="success|invalid|failed"} – MCP tool call counter partitioned by result label; filter by result to obtain invalid or failed counts.
  • argo_watcher_reachable – gauge reporting downstream reachability (1 when argo-watcher answered, 0 otherwise). It tracks reachability, not health: an argo-watcher whose readiness probe reports it unready still reads 1.
  • Standard Go runtime (go_*) and process metrics are registered on the Prometheus endpoint to aid capacity monitoring.

Development

Common tasks are exposed via the included Taskfile:

  • task test – run unit tests.
  • task build – compile the server binary into bin/argo-watcher-mcp.
  • task fmt – format the Go sources.
  • task tidy – tidy module dependencies.
  • task vet – execute go vet ./....
  • task run – start the server locally using the default transport mode (stdio unless TRANSPORT_MODE is set).

Module and build caches live inside .cache/ and are ignored by git.

Releases are produced with GoReleaser and publish multi-architecture container images (linux/amd64 and linux/arm64) to GHCR when tags matching v*.*.* are pushed.

Contributing

As this is a PoC, formal contributions are not the primary focus. However, if you find a bug or have a suggestion, feel free to open an issue.

README fetched from the repository 5 days ago. The original is authoritative.

Questions

About Argo Watcher MCP

How do I install Argo Watcher MCP?

No package has been published for this server, so install it from source: clone the repository and follow its README.

Is Argo Watcher MCP safe to use with an AI agent?

Its trust score is 59 out of 100 (fair). It passes 5 of the 6 static security checks run so far; the failures are listed above. It has no ConduID identity yet, so agent calls to it are not receipted.

Is Argo Watcher MCP still maintained?

Yes — the latest release is v0.3.0 (30 Jul 2026), and the last commit was a month ago. The repository has 1 stars and 4 open issues.