Argo Watcher MCP
A proof of concept implementation of MCP server for argo-watcher
Installation
npx argo-watcher-mcpAsk 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.
0/500
Reviews
Documentation
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.
[!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 deployment tasks as an MCP tool.
- Filter deployments by application name and time range.
- Runs over stdio and HTTP (streamable SSE) via the official MCP Go SDK.
- Packaged as a production-ready Docker container.
- Modular, testable Go architecture.
Prerequisites
- Go 1.25+ (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
-
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 -
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" -
Run the server locally
task runThe process exposes:
- Choose the transport via the
TRANSPORT_MODEenvironment variable (stdioorhttp). - In
stdiomode the server communicates over stdin/stdout; inhttpmode it serves a streamable endpoint onHTTP_LISTEN_ADDR(default:8000).
- Choose the transport via the
-
(Optional) Run via Docker
GOOS=linux GOARCH=amd64 go build -o argo-watcher-mcp ./cmd/server docker build -t argo-watcher-mcp . docker run --rm -p 8000:8000 \ -e ARGO_WATCHER_URL="http://host.docker.internal:8001" \ argo-watcher-mcp
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. |
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 | 0.0.1-dev | Version surfaced via MCP implementation info. |
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 byresultto obtain invalid or failed counts.argo_watcher_reachableβ gauge reporting downstream reachability (1when Argo Watcher responded successfully,0otherwise).- 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 intobin/argo-watcher-mcp.task fmtβ format the Go sources.task tidyβ tidy module dependencies.task vetβ executego vet ./....task runβ start the server locally using the default transport mode (stdiounlessTRANSPORT_MODEis 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.
