☁️

Argo CD MCP Server

Updated June 2026✓ OfficialTrust grade A98/100

The Argo CD MCP server, an Argo Project Labs implementation (argoproj-labs/mcp-for-argocd) that lets an assistant drive a live Argo CD instance in natural language over stdio or HTTP stream transport. Built by argoproj-labs, it is officially maintained and best for Cloud.

by argoproj-labs

About

the Argo CD MCP server, an Argo Project Labs implementation (argoproj-labs/mcp-for-argocd) that lets an assistant drive a live Argo CD instance in natural language over stdio or HTTP stream transport. Install it with npx argocd-mcp@latest stdio on Node 18+ and give it two things: ARGOCD_BASE_URL and ARGOCD_API_TOKEN. The tool surface is genuinely operational rather than read-only — list_applications, get_application, create_application, update_application, delete_application and sync_application for the application lifecycle; get_application_resource_tree, get_application_managed_resources, get_application_workload_logs, get_resource_events, get_resource_actions and run_resource_action for the Kubernetes objects underneath; plus list_clusters and get_appproject. get_application_workload_logs is the one that changes day-to-day work: it pulls Pod and Deployment logs for a failing app without a kubectl context, so an agent can go from 'this app is degraded' to the actual stack trace in one hop. Two configuration details cause most first-run failures. Self-signed or private-CA certificates on the Argo CD endpoint need NODE_TLS_REJECT_UNAUTHORIZED=0 in the client config, which is a development-only workaround. And the API token is deliberately never accepted as a tool-call argument — it is read only from the x-argocd-api-token header or the ARGOCD_API_TOKEN environment variable, so it never enters a prompt, model context, or tool-call log. For fleets, ARGOCD_TOKEN_REGISTRY_PATH points at a JSON file mapping each base URL to its own token; a call then targets an instance with the non-secret argocdBaseUrl argument and the server pairs it with the registered credential. The default token is bound to the default base URL and is never sent to another host, which is what stops a prompt-injected argocdBaseUrl from exfiltrating it. If the registry file is set but missing or malformed the server fails closed at startup rather than falling back. One more thing worth knowing before you expose it: the http and sse transports open a listener that reaches delete_application and run_resource_action, and ARGOCD_API_TOKEN does not protect it — that token authenticates the server to Argo CD, not the caller to the server. It binds 127.0.0.1 by default; set MCP_AUTH_TOKEN to require Authorization: Bearer on every inbound request before changing MCP_BIND_ADDRESS.

A
Reliable98/100
low confidence · 1 measured signal

Grade A (98/100, reliable) from 1 measured signal, based on repository evidence. Only one signal stands behind it, so treat the grade as provisional.

What was measured

  • Repository maintenance100/100 · weight 20

    The repository has been pushed to or released within the last six months. — last push 2026-07-09, last release 2026-06-11 (v0.8.0).

  • Source verification100/100 · weight 25

    The repository URL was confirmed to resolve against the live GitHub API and is not archived.

  • Provenance90/100 · weight 10

    Published and maintained by the vendor of the service it connects to, rather than by a third party.

  • Listing ↔ repository match100/100 · weight 5

    The listing name lines up with the linked repository argoproj-labs/mcp-for-argocd.

What could not be measured

These contributed nothing to the score — not a penalty, not a zero. They are why the confidence reads the way it does.

  • Live MCP handshakeunknown

    No remote endpoint to handshake — this server installs and runs locally over stdio, so there is nothing to probe from the outside.

  • Measured uptimeunknown

    No probe history recorded for this server yet.

  • Tool-schema stabilityunknown

    Drift is a difference between two successive checks, and this server has none recorded.

Installation

npm / npx
npx argocd-mcp@latest stdio

The Argo CD MCP server is argoproj-labs/mcp-for-argocd, and it is the one the ecosystem has settled on — there is no competing implementation with meaningful adoption, so the "which server" question that dogs most MCP setups does not apply here. The question that does matter is exposure. The tool list includes delete_application, sync_application and run_resource_action, so this is a write path into your delivery pipeline, not a read-only dashboard. The server binds loopback by default and that default is doing real work; the two sections below on tokens and network exposure are the ones to read before you move it anywhere.

Setting up the Argo CD MCP server

  1. 1.Create an Argo CD API token

    The server authenticates to Argo CD with an API token, not your login. Generate one per the Argo CD API authorization docs and scope it to what the assistant should be allowed to do — a token that can only read is the difference between a bad answer and a deleted application, because Argo CD, not the MCP server, is what enforces the limit.

  2. 2.Add the server to your client

    Node 18 or newer. The published package is argocd-mcp; stdio is the transport to start with. The same JSON shape works in Cursor (.cursor/mcp.json), VS Code (.vscode/mcp.json) and Claude Desktop, with ARGOCD_BASE_URL pointing at your Argo CD endpoint.

    .cursor/mcp.json
    {
      "mcpServers": {
        "argocd-mcp": {
          "command": "npx",
          "args": ["argocd-mcp@latest", "stdio"],
          "env": {
            "ARGOCD_BASE_URL": "<argocd_url>",
            "ARGOCD_API_TOKEN": "<argocd_token>"
          }
        }
      }
    }
  3. 3.If your Argo CD uses a self-signed certificate

    A private CA or self-signed cert on the Argo CD endpoint makes every call fail at the TLS handshake. Adding NODE_TLS_REJECT_UNAUTHORIZED to the env block disables Node certificate validation and gets you moving, but it disables it for the whole process — the README flags it as a development-only workaround, and it should not follow you into a shared or production deployment.

    env entry
    "NODE_TLS_REJECT_UNAUTHORIZED": "0"
  4. 4.For several Argo CD instances, use a token registry

    Point ARGOCD_TOKEN_REGISTRY_PATH at a JSON file mapping each base URL to its own token — a mounted Kubernetes secret is the intended shape. A call then names an instance with the non-secret argocdBaseUrl argument and the server pairs it with the registered token, so no credential passes through the tool call. Restrict the file to the server user (chmod 400); if it is set but missing or malformed the server throws at startup rather than falling back to the default credential.

    token-registry.json
    [
      { "baseUrl": "https://argo-a.example.com", "token": "<token-a>" },
      { "baseUrl": "https://argo-b.example.com", "token": "<token-b>" }
    ]

What the server can do

Applications, the Kubernetes resources beneath them, and the cluster registry. Six of these tools mutate state, which is what the exposure settings below are protecting.

list_applications

List and filter every application Argo CD manages. The usual entry point.

get_application

Full detail for one application, including sync and health status.

sync_application

Trigger a sync. Mutating — this deploys.

create_application / update_application / delete_application

Full application lifecycle. All three mutate.

get_application_resource_tree

The Kubernetes objects an application owns, as a tree. Use it to find which object is degraded.

get_application_managed_resources

The managed resources with their live-vs-desired diff.

get_application_workload_logs

Pod and Deployment logs for an application, without a kubectl context. The tool that changes day-to-day debugging.

get_resource_events

Kubernetes events for an application’s resources — usually where the real cause is.

get_resource_actions / run_resource_action

List and execute resource actions (restart, and so on). run_resource_action mutates.

list_clusters

Every cluster registered with this Argo CD.

get_appproject

Detail for one AppProject, including its permitted destinations.

What people use it for

Diagnose a degraded application end to end

The payments app is Degraded in Argo CD. Get its resource tree, find the unhealthy object, then pull that workload’s logs and its recent events and tell me the cause.

This is the chain the server exists for: resource tree to locate, workload logs for the stack trace, resource events for the scheduling or image-pull reason. Doing it by hand is three context switches between the Argo CD UI and kubectl.

Audit drift before a release

List every application that is OutOfSync, and for each one summarise what differs between the live and desired state.

list_applications filters on sync status and get_application_managed_resources carries the diff, so the whole answer comes from read-only tools — safe to run against production with a read-scoped token.

Check what an AppProject actually permits

Show me the AppProject for the platform team and tell me which clusters and namespaces it is allowed to deploy into.

AppProject destinations are the guardrail most teams configure once and never re-read. get_appproject makes that reviewable in a sentence.

Which one should you use?

Argo CD MCP addresses the delivery layer. The two below sit either side of it, and the split is clean enough that teams often run this one alongside one of them rather than choosing.

Kubernetes MCP

When the question is about the cluster rather than the delivery pipeline — arbitrary objects, namespaces Argo CD does not manage, anything applied outside GitOps. Argo CD MCP only sees what Argo CD manages, which is the point of it.

GitHub MCP

When the fix is a manifest change. In GitOps the repository is the source of truth, so the actual remedy for a bad deploy is usually a pull request; Argo CD MCP tells you what broke and GitHub MCP is where you change it.

Every command, environment variable, and endpoint above was read from the project’s own documentation on 2026-08-21: argoproj-labs/mcp-for-argocd README, Argo CD docs — API authorization / token.

Browse all MCP server setup guides.

Frequently Asked Questions

Does ARGOCD_API_TOKEN secure the HTTP endpoint?
No, and assuming it does is the significant mistake here. That token authenticates the server to Argo CD; it says nothing about who is calling the server. The http and sse transports open a listener that reaches delete_application, sync_application and run_resource_action. Inbound access is controlled separately: set MCP_AUTH_TOKEN to require an Authorization: Bearer header on every request, and only then consider changing MCP_BIND_ADDRESS from its 127.0.0.1 default. --allow-unauthenticated exists for the case where something in front already authenticates callers.
Why does overriding argocdBaseUrl to another instance fail?
By design. The argocdBaseUrl argument arrives in the tool call, so a prompt-injected model could point it at an attacker-controlled host — and if the default token were paired with any supplied URL, it would be sent there as a bearer header. The default token is therefore bound to the default base URL and never sent elsewhere. Targeting a second instance requires registering its token, and thus its hostname, in the token registry up front.
Why can the assistant not see my API token to pass it in?
It is deliberately never accepted as a tool argument. The token is read only from the x-argocd-api-token header (HTTP transport) or the ARGOCD_API_TOKEN environment variable, so it never enters a prompt, the model context, or a tool-call log. On the HTTP transport a connection carrying no token is rejected with 400 Bad Request unless a token registry is configured.
Every call fails with a certificate error. What is wrong?
Argo CD is almost certainly serving a self-signed certificate or one from a private CA that Node does not trust. NODE_TLS_REJECT_UNAUTHORIZED=0 in the client env block gets you past it, at the cost of disabling certificate validation for the entire Node process. Prefer adding your CA to the system trust store for anything longer-lived than a local experiment.
What is Argo CD MCP Server?
Argo CD is an MCP server built by argoproj-labs. The Argo CD MCP server, an Argo Project Labs implementation (argoproj-labs/mcp-for-argocd) that lets an assistant drive a live Argo CD instance in natural language over stdio or HTTP stream transport. Install it with npx argocd-mcp@latest stdio on Node 18+ and give it two things: ARGOCD_BASE_URL and ARGOCD_API_TOKEN. The tool surface is genuinely operational rather than read-only — list_applications, get_application, create_application, update_application, delete_application and sync_application for the application lifecycle; get_application_resource_tree, get_application_managed_resources, get_application_workload_logs, get_resource_events, get_resource_actions and run_resource_action for the Kubernetes objects underneath; plus list_clusters and get_appproject. get_application_workload_logs is the one that changes day-to-day work: it pulls Pod and Deployment logs for a failing app without a kubectl context, so an agent can go from 'this app is degraded' to the actual stack trace in one hop. Two configuration details cause most first-run failures. Self-signed or private-CA certificates on the Argo CD endpoint need NODE_TLS_REJECT_UNAUTHORIZED=0 in the client config, which is a development-only workaround. And the API token is deliberately never accepted as a tool-call argument — it is read only from the x-argocd-api-token header or the ARGOCD_API_TOKEN environment variable, so it never enters a prompt, model context, or tool-call log. For fleets, ARGOCD_TOKEN_REGISTRY_PATH points at a JSON file mapping each base URL to its own token; a call then targets an instance with the non-secret argocdBaseUrl argument and the server pairs it with the registered credential. The default token is bound to the default base URL and is never sent to another host, which is what stops a prompt-injected argocdBaseUrl from exfiltrating it. If the registry file is set but missing or malformed the server fails closed at startup rather than falling back. One more thing worth knowing before you expose it: the http and sse transports open a listener that reaches delete_application and run_resource_action, and ARGOCD_API_TOKEN does not protect it — that token authenticates the server to Argo CD, not the caller to the server. It binds 127.0.0.1 by default; set MCP_AUTH_TOKEN to require Authorization: Bearer on every inbound request before changing MCP_BIND_ADDRESS.
Who built Argo CD MCP Server?
Argo CD MCP Server was built by argoproj-labs.
Is Argo CD MCP Server free?
Yes, Argo CD MCP Server has a free option. This MCP server is free and open-source. Check the GitHub repository for details.
How do I install Argo CD MCP Server?
Install Argo CD MCP Server with npm: npx argocd-mcp@latest stdio
What does Argo CD MCP Server integrate with?
Argo CD MCP Server integrates with Claude Desktop, Cursor, VS Code, Cline.

Repo Health

Actively maintained

Local/stdio install — runs on your machine, so there is no remote endpoint to verify live. Trust signal below is from the source repo.

Last commit
2mo ago
Last release
v0.8.0 · 3mo ago
Install
binary

Quick Info

Install Type
npm
Author
argoproj-labs
Categories
2
Integrations
4

Related Servers

💻

Git

Tools to read, search, and manipulate Git repositories. Full Git operations support.

Local
💻

GitHub MCP Server

authenticated access to the whole GitHub platform — repositories, files, branches, issues, pull requests, Actions runs, security alerts, discussions and notifications — from Claude, Cursor, VS Code, Copilot CLI and any other MCP host. There is no npm package for this server, and that trips up most people who try to install it: `@github/mcp-server` is not published to the npm registry, so any `npx` line you find for it will fail. GitHub ships it three other ways. The easiest is the hosted remote server at https://api.githubcopilot.com/mcp/, which needs no install at all — point an HTTP-transport MCP client at that URL and log in with OAuth (VS Code 1.101+, Claude Desktop, Claude Code, Cursor and Windsurf all support this). The second is the official Docker image ghcr.io/github/github-mcp-server, which is what the copy-paste command on this page runs; on github.com it now performs a browser-based OAuth login on first use and keeps the token in memory only, which is why the published Docker configs map a fixed loopback callback port (-p 127.0.0.1:8085:8085 with GITHUB_OAUTH_CALLBACK_PORT=8085) so the container can receive the callback. Prefer a token? Set GITHUB_PERSONAL_ACCESS_TOKEN instead — it takes precedence over OAuth, and the minimum useful scopes are repo, read:org and read:packages. The third is the native Go binary from the repository's releases, which needs no fixed port for the OAuth flow. GitHub Enterprise Server has no hosted option: use the local server with --gh-host or GITHUB_HOST set to your instance (include the https:// scheme — it defaults to http://, which GHES rejects). Toolsets can be narrowed with GITHUB_TOOLSETS, and an insiders channel is available at /mcp/insiders or via the X-MCP-Insiders header.

Auth required📘
💻

GitLab MCP Server

a first-party MCP endpoint built into the GitLab instance itself — there is no package to install, because the server ships inside GitLab and answers at https://<your-gitlab>/api/v4/mcp (gitlab.com exposes the same path, so https://gitlab.com/api/v4/mcp works for SaaS projects). It landed as an experiment in GitLab 18.3 and moved to beta in 18.6. Authentication is the part that makes it different from every community GitLab server: it uses OAuth 2.0 Dynamic Client Registration, so the first time a client connects it registers itself as an OAuth application on your instance and is issued an access token — no personal access token pasted into a config file. Administrators who do not want one OAuth application per tool can pre-create a shared application instead. Three prerequisites are what actually block most first connections: GitLab Duo must be set to Always on or On by default, beta and experimental features must be enabled, and MCP access must be switched on at the group or instance level. The tool surface covers issues and merge requests (create_issue, get_issue, create_merge_request, get_merge_request, list_merge_requests, get_merge_request_commits, get_merge_request_diffs, get_merge_request_pipelines, create_merge_request_note, get_merge_request_notes), CI/CD (manage_pipeline for list/create/delete/retry/cancel, get_pipeline_jobs, get_job_log), work items (create_workitem_note, get_workitem_notes, link_work_items, get_saved_view_work_items), search (search across the instance, search_labels, semantic_code_search), list_wiki_pages, and attach_scan_profile. HTTP is the recommended transport — claude mcp add --transport http GitLab https://gitlab.com/api/v4/mcp — and clients that only speak stdio can wrap it with npx mcp-remote <url> on Node 20+. Send the X-Gitlab-Mcp-Server-Tool-Name-Prefix header if generic names like search collide with another connected server. If your instance predates 18.3 or Duo is not available to you, the community alternative most teams land on is zereight/gitlab-mcp (1,889 stars as of 2026-08-16, npm @zereight/mcp-gitlab), which authenticates with a plain personal access token and ships 217 tools — including merge_merge_request, approve_merge_request, execute_graphql and full CI/CD variable management, none of which the built-in server exposes — behind GITLAB_PERMISSION_MODE=readonly/modify and GITLAB_TOOLSETS/GITLAB_TOOLS filtering. One further change worth noting: MCP server access moved from GitLab Premium to GitLab Free in 19.2 and became a setting of its own.

Auth required📘
☁️

AWS MCP Servers

AWS Labs maintains a monorepo of specialized, open-source MCP servers that bring AWS best practices directly into AI-assisted development workflows, spanning infrastructure, data, AI/ML, cost management, and healthcare/life-sciences domains. Rather than one monolithic server, the project ships dozens of focused servers you install individually depending on the task: the AWS Documentation MCP Server for real-time official docs and API references, dedicated servers for Terraform/CDK/CloudFormation infrastructure-as-code, container and serverless platforms (ECS, EKS, Lambda), SQL/NoSQL databases (DynamoDB, RDS, Aurora), search and analytics (OpenSearch), messaging (SQS/SNS), and cost/billing analysis. Most servers install via uvx with a package name like awslabs.aws-documentation-mcp-server, run locally over stdio, and use standard AWS credential chains (IAM roles, profiles, or access keys) rather than exposing raw account credentials to the model. AWS also now offers a managed, remote "AWS MCP Server" (in preview) that combines full API coverage with pre-built agent SOPs, syntactically validated API calls, and complete CloudTrail audit logging for teams that want centralized governance instead of running servers locally. The Getting Started with Kiro/Cursor/VS Code/Claude Code sections in the repo provide one-click install configs for each server, making it straightforward to wire up only the AWS services a given project actually touches.

Local
☁️

Cloudflare MCP Server

Cloudflare ships two different things under this name. The mcp-server-cloudflare repo provides 16 remote, domain-specific MCP servers rather than one monolith — Documentation, Workers Bindings (storage/AI/compute primitives), Workers Builds, Observability (logs/analytics), Container sandboxes, Browser Rendering (fetch pages, convert to markdown, screenshots), Logpush health, AI Gateway (prompt/response search), AI Search, Audit Logs, DNS Analytics, Digital Experience Monitoring, Cloudflare One CASB, Radar, GraphQL analytics and the Agents SDK docs server, each on its own `*.mcp.cloudflare.com/mcp` hostname. Separately, the Cloudflare API MCP server at mcp.cloudflare.com/mcp (repo: cloudflare/mcp) exposes the whole 2,500+ endpoint Cloudflare API through just two tools, `search` and `execute`, using the Code Mode pattern — model-written JavaScript runs in an isolated Dynamic Worker, costing ~1,000 tokens of context against the ~1.17M an equivalent native-tool server would need. Pick a domain server when you want a readable, curated tool list for one product area; pick the API server for breadth or for endpoints nobody wrote a tool for. All endpoints are Streamable HTTP on `/mcp` and support the MCP 2026-07-28 spec; the historical `/sse` URLs remain as aliases for the same Streamable HTTP handler but no longer serve the deprecated HTTP+SSE transport, so clients pinned to SSE must switch. Auth is OAuth on connect, or a scoped Cloudflare API token as a bearer header for CI. Clients without native remote-MCP support bridge via `npx mcp-remote https://<subdomain>.mcp.cloudflare.com/mcp`.

Live📘

Sponsored

Better Stack

Free Plan

Get alerted when your APIs, browser tests, payment pipelines, or MCP server dependencies go down. Used by 100K+ developers.

Start monitoring free →