Argo CD MCP Server

Inspect, sync and manage Argo CD applications, clusters and resources from an MCP client

By argoproj-labs TypeScript Local · stdio DevOps and monitoringCloud platforms

76 popularity score ★ 604 ↓ 27k/wk

Connect your client

Local (npm)

Add in one click

Opens the app, which asks before it adds the server. Then replace each <NAME> in its settings with your value.

Or add it by command or config

It needs ARGOCD_BASE_URL, ARGOCD_API_TOKEN. Replace each <NAME> with your value.

Claude CodeTerminal
claude mcp add argo-cd -e ARGOCD_BASE_URL=<ARGOCD_BASE_URL> -e ARGOCD_API_TOKEN=<ARGOCD_API_TOKEN> -- npx argocd-mcp@latest stdio
Claude Desktopclaude_desktop_config.json
{
  "mcpServers": {
    "argo-cd": {
      "command": "npx",
      "args": [
        "argocd-mcp@latest",
        "stdio"
      ],
      "env": {
        "ARGOCD_BASE_URL": "<ARGOCD_BASE_URL>",
        "ARGOCD_API_TOKEN": "<ARGOCD_API_TOKEN>"
      }
    }
  }
}
Cursor~/.cursor/mcp.json
{
  "mcpServers": {
    "argo-cd": {
      "command": "npx",
      "args": [
        "argocd-mcp@latest",
        "stdio"
      ],
      "env": {
        "ARGOCD_BASE_URL": "<ARGOCD_BASE_URL>",
        "ARGOCD_API_TOKEN": "<ARGOCD_API_TOKEN>"
      }
    }
  }
}
VS Code.vscode/mcp.json
{
  "servers": {
    "argo-cd": {
      "type": "stdio",
      "command": "npx",
      "args": [
        "argocd-mcp@latest",
        "stdio"
      ],
      "env": {
        "ARGOCD_BASE_URL": "<ARGOCD_BASE_URL>",
        "ARGOCD_API_TOKEN": "<ARGOCD_API_TOKEN>"
      }
    }
  }
}
Codex~/.codex/config.toml
[mcp_servers.argo-cd]
command = "npx"
args = ["argocd-mcp@latest", "stdio"]

[mcp_servers.argo-cd.env]
ARGOCD_BASE_URL = "<ARGOCD_BASE_URL>"
ARGOCD_API_TOKEN = "<ARGOCD_API_TOKEN>"
Gemini CLITerminal
gemini mcp add --scope user -e ARGOCD_BASE_URL=<ARGOCD_BASE_URL> -e ARGOCD_API_TOKEN=<ARGOCD_API_TOKEN> argo-cd npx -- argocd-mcp@latest stdio
Local (container)

Add in one click

Opens the app, which asks before it adds the server. Then replace each <NAME> in its settings with your value.

Or add it by command or config

It needs ARGOCD_BASE_URL, ARGOCD_API_TOKEN. Replace each <NAME> with your value.

Claude CodeTerminal
claude mcp add argo-cd -e ARGOCD_BASE_URL=<ARGOCD_BASE_URL> -e ARGOCD_API_TOKEN=<ARGOCD_API_TOKEN> -- docker run -e 'ARGOCD_BASE_URL=<ARGOCD_BASE_URL>' -e 'ARGOCD_API_TOKEN=<ARGOCD_API_TOKEN>' argoprojlabs/mcp-for-argocd
Claude Desktopclaude_desktop_config.json
{
  "mcpServers": {
    "argo-cd": {
      "command": "docker",
      "args": [
        "run",
        "-e",
        "ARGOCD_BASE_URL=<ARGOCD_BASE_URL>",
        "-e",
        "ARGOCD_API_TOKEN=<ARGOCD_API_TOKEN>",
        "argoprojlabs/mcp-for-argocd"
      ],
      "env": {
        "ARGOCD_BASE_URL": "<ARGOCD_BASE_URL>",
        "ARGOCD_API_TOKEN": "<ARGOCD_API_TOKEN>"
      }
    }
  }
}
Cursor~/.cursor/mcp.json
{
  "mcpServers": {
    "argo-cd": {
      "command": "docker",
      "args": [
        "run",
        "-e",
        "ARGOCD_BASE_URL=<ARGOCD_BASE_URL>",
        "-e",
        "ARGOCD_API_TOKEN=<ARGOCD_API_TOKEN>",
        "argoprojlabs/mcp-for-argocd"
      ],
      "env": {
        "ARGOCD_BASE_URL": "<ARGOCD_BASE_URL>",
        "ARGOCD_API_TOKEN": "<ARGOCD_API_TOKEN>"
      }
    }
  }
}
VS Code.vscode/mcp.json
{
  "servers": {
    "argo-cd": {
      "type": "stdio",
      "command": "docker",
      "args": [
        "run",
        "-e",
        "ARGOCD_BASE_URL=<ARGOCD_BASE_URL>",
        "-e",
        "ARGOCD_API_TOKEN=<ARGOCD_API_TOKEN>",
        "argoprojlabs/mcp-for-argocd"
      ],
      "env": {
        "ARGOCD_BASE_URL": "<ARGOCD_BASE_URL>",
        "ARGOCD_API_TOKEN": "<ARGOCD_API_TOKEN>"
      }
    }
  }
}
Codex~/.codex/config.toml
[mcp_servers.argo-cd]
command = "docker"
args = ["run", "-e", "ARGOCD_BASE_URL=<ARGOCD_BASE_URL>", "-e", "ARGOCD_API_TOKEN=<ARGOCD_API_TOKEN>", "argoprojlabs/mcp-for-argocd"]

[mcp_servers.argo-cd.env]
ARGOCD_BASE_URL = "<ARGOCD_BASE_URL>"
ARGOCD_API_TOKEN = "<ARGOCD_API_TOKEN>"
Gemini CLITerminal
gemini mcp add --scope user -e ARGOCD_BASE_URL=<ARGOCD_BASE_URL> -e ARGOCD_API_TOKEN=<ARGOCD_API_TOKEN> argo-cd docker -- run -e 'ARGOCD_BASE_URL=<ARGOCD_BASE_URL>' -e 'ARGOCD_API_TOKEN=<ARGOCD_API_TOKEN>' argoprojlabs/mcp-for-argocd

Settings 7

ARGOCD_BASE_URL Required: Address of the default Argo CD instance; may instead be passed per call as argocdBaseUrl.
ARGOCD_API_TOKEN Required: Argo CD API token for the default instance; not needed when ARGOCD_TOKEN_REGISTRY_PATH is set.
ARGOCD_TOKEN_REGISTRY_PATH Optional: Path to a JSON file mapping extra Argo CD base URLs to their tokens.
MCP_READ_ONLY Optional: Set to true to disable the create, update, delete, sync and resource action tools.
MCP_BIND_ADDRESS Optional: Address the HTTP listener binds to; defaults to 127.0.0.1.
MCP_AUTH_TOKEN Optional: Bearer token every HTTP request must carry; needed when binding beyond loopback.
NODE_TLS_REJECT_UNAUTHORIZED Optional: Set to 0 to accept self-signed Argo CD certificates; weakens TLS checks.

In a container, a setting goes in with -e NAME=value after docker run.

What it does

Argo CD MCP Server connects an MCP client to the REST API of an Argo CD instance, the GitOps continuous delivery tool for Kubernetes. Through it an assistant can list registered clusters and applications, read an application's details, resource tree and managed resources, pull workload logs and Kubernetes events, and look up an AppProject.

It can also act on the instance: create, update and delete applications, start a sync, and run resource actions such as a restart. Setting MCP_READ_ONLY to true removes those five tools, leaving only the reading ones.

It runs over stdio for desktop and editor clients (started with npx), or as an HTTP server, including a stateless mode meant for several replicas behind a Kubernetes autoscaler. A container image, argoprojlabs/mcp-for-argocd, is published for the HTTP setup. One server can reach several Argo CD instances: every tool takes an optional argocdBaseUrl argument, and tokens for extra instances come from a JSON token registry file.

The project sits in the argoproj-labs GitHub organisation, the Argo project's space for incubating projects; it was first written at Akuity and donated there.

What it needs

RuntimeNode.js 18+orDocker

Node.js 18 or newer for the npx route (or Docker for the image). A reachable Argo CD instance, its base URL, and an Argo CD API token for an account with the permissions the tools need; Argo CD's own docs explain how to create one.

Limits

Works only through the Argo CD API: it reaches Kubernetes objects only as far as Argo CD exposes them for its applications. The default token is never sent to any host other than the default base URL, so reaching another instance needs a token registry entry. HTTP sessions are held in memory, so several replicas need sticky sessions or the --stateless flag; in stateless mode GET and DELETE on /mcp are refused. Instances with self-signed certificates need NODE_TLS_REJECT_UNAUTHORIZED=0, which its README warns weakens security.

Who it suits

Platform and DevOps engineers who already run Argo CD and want to ask about application health, diffs, logs and events, or trigger syncs, from VS Code, Cursor or Claude Desktop. Because it can delete applications and run resource actions with whatever rights the token holds, teams that only want visibility should run it with MCP_READ_ONLY and a read-only Argo CD account. Teams wanting direct access to Kubernetes objects outside Argo CD should pick a Kubernetes server instead.

Tools 14 of 16

list_clusters
Lists the clusters registered in Argo CD
get_appproject
Returns one AppProject and its settings
list_applications
Lists applications, with filters
get_application
Returns the full definition and status of one application
create_application
Creates a new Argo CD application
update_application
Changes an existing application
delete_application
Removes an application
sync_application
Starts a sync of an application to its Git source
get_application_resource_tree
Returns the tree of Kubernetes resources behind an application
get_application_managed_resources
Returns the resources an application manages, with optional filtering
get_application_workload_logs
Fetches logs from an application's pods, deployments and other workloads
get_resource_events
Returns Kubernetes events for a resource an application manages
get_resource_actions
Lists the actions available on a managed resource
run_resource_action
Runs one of those actions on a managed resource

Similar servers