search_operationsLABSCO SUMMARY
Full API coverage without a hand-written handler anywhere, and a real choice about where the cost lands.
Most ArgoCD integrations hardcode a handful of operations and then trail the product. Reading the OpenAPI spec at startup means a new ArgoCD release needs a restart rather than a maintainer. The decision it hands you is the tool mode: two meta-tools keep the tool list tiny at the price of a search round trip before every call, while one typed tool per endpoint removes that round trip and leans on the client to defer loading the definitions. The OAuth modes are what make it usable on a shared cluster, because the model inherits the operator's own RBAC instead of a service account's.
What it is
A Go server that reads ArgoCD's OpenAPI spec at startup and exposes every endpoint it finds, with no handler written per operation. In the default search mode the model discovers an endpoint and calls it through a generic executor; in generated mode each endpoint becomes its own typed tool.
What you get
- search_operations returns matching endpoints with their method, path, summary and parameters, and execute_operation proxies the call to ArgoCD carrying the user's token — two tools covering the entire spec
- TOOL_MODE set to generated instead produces one typed tool per endpoint, so the model calls the operation directly with individual typed parameters and no search step
- A new ArgoCD release needs a restart rather than a code change, because the spec is the source of truth rather than a hand-maintained list
- Three authentication modes — a static ArgoCD API token, OAuth through ArgoCD's own Dex, or OAuth through the external OIDC provider ArgoCD already trusts; both OAuth paths apply that person's own RBAC
- A read-only flag that disables every write operation at once, and ALLOWED_RESOURCES to restrict which ArgoCD resources are exposed at all
- Per-user rate limiting with a token bucket, so a loop cannot hammer the ArgoCD API
- Structured JSON audit logging for every tool call, recording user, method, path, status and duration
- Tools are annotated as read-only, destructive or idempotent, so a client can categorise them rather than treating them alike
- Prompt templates for the recurring jobs — unhealthy applications, a diff, a rollback, logs — and optional semantic search over the endpoints through Ollama embeddings
Requirements
A Go server, installed through the Helm chart at oci://ghcr.io/matthisholleville/charts/argocd-mcp or run locally pointed at your ArgoCD base URL. Authentication is a static ArgoCD API token for local development, CI or a single user, or OAuth through Dex or an external OIDC provider when each person's own RBAC should apply. TOOL_MODE picks between search, which registers two tools and costs a discovery round trip before each call, and generated, which registers one tool per endpoint and depends on a client that defers tool loading.
Setup effort
One command plus a key — claude mcp add argocd -s user -- docker run --rm -i -e ARGOCD_BASE_URL=<YOUR_ARGOCD_BASE_URL> -e ARGOCD_TOKEN=<YOUR_ARGOCD_TOKEN> ghcr.io/matthisholleville/argocd-mcp:latest
USE CASES
Working out why an application is unhealthy
Search the spec for the status and resource-tree endpoints, then execute them against the application in question.
Syncing or rolling back a deployment
The sync and rollback operations are reachable the same way as anything else in the spec, with the call carrying your own token.
Letting a team read the cluster without touching it
Read-only mode disables every write in one flag, and ALLOWED_RESOURCES narrows what is even visible.
Keeping up with a new ArgoCD version
The endpoint list comes from the spec at startup, so upgrading ArgoCD and restarting is the whole upgrade path.
Answering what the assistant actually did
Every tool call is logged as structured JSON with the user, method, path, status and duration behind it.
2 tools
Listed in project docs. Your client may show a different list.
execute_operationBEFORE YOU INSTALL
What to know first
Tools you get
2 tools named in the project's documentation.
Requires
ARGOCD_TOKEN in your environment
INSTALLATION
Connect your client
Server setup
Claude Code — Docker
claude mcp add argocd -s user -- docker run --rm -i -e ARGOCD_BASE_URL=<YOUR_ARGOCD_BASE_URL> -e ARGOCD_TOKEN=<YOUR_ARGOCD_TOKEN> ghcr.io/matthisholleville/argocd-mcp:latestMCP Clients
Claude Desktop
{
"mcpServers": {
"argocd": {
"command": "docker",
"args": [
"run",
"--rm",
"-i",
"-e",
"ARGOCD_BASE_URL=<YOUR_ARGOCD_BASE_URL>",
"-e",
"ARGOCD_TOKEN=<YOUR_ARGOCD_TOKEN>",
"ghcr.io/matthisholleville/argocd-mcp:latest"
]
}
}
}Claude Code — OAuth
claude mcp add --transport http --callback-port 9382 argocd http://localhost:8080/mcpKubernetes — Helm
helm install argocd-mcp oci://ghcr.io/matthisholleville/charts/argocd-mcp --set argocd.baseURL=<YOUR_ARGOCD_BASE_URL> --set argocd.token=<YOUR_ARGOCD_TOKEN>