argocd-mcp
The ArgoCD MCP Server enables natural language interactions with ArgoCD through AI assistants, allowing you to manage ArgoCD applications and resources seamlessly. With this server, you can:
Authenticate and retrieve user information from ArgoCD
Access server settings, including OIDC, Dex, and UI configurations
Retrieve plugin information about available ArgoCD plugins
Get version details of the ArgoCD API server
List and filter applications by project, name, repository, namespace, or refresh status
Get detailed information about specific applications
Create, update, and delete applications with configurable options
Sync applications with customizable strategies and resource selection
Provides tools for managing ArgoCD applications including listing, creating, updating, deleting, and syncing applications, as well as accessing user information, server settings, and plugin configurations.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@argocd-mcp list applications in the production namespace"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
ArgoCD MCP Server
An MCP (Model Context Protocol) server that integrates with the ArgoCD API, enabling AI assistants and large language models to manage ArgoCD applications and resources through natural language interactions.
Features
Authentication & Session Management:
User info retrieval from ArgoCD API
Token-based authentication with ArgoCD
Server settings and configuration access
Plugin information retrieval
Version information retrieval
Application Management:
List and filter applications by project, name, namespace
Get detailed application information
Create, update, and delete applications
Sync applications with configurable options
Robust API Client:
URL normalization and intelligent endpoint handling
Comprehensive error handling and detailed error messages
Configurable timeouts and SSL verification
Token security protection and masking
Developer Experience:
Full static type checking with mypy
Detailed documentation and examples
Environment-based configuration
Related MCP server: argocd-mcp
Quick Start
Setup
# Clone the repository
git clone https://github.com/severity1/argocd-mcp.git
cd argocd-mcp
# Create virtual environment and activate it
uv venv
source .venv/bin/activate
# Install dependencies
uv pip install -e .Starting the Server
The server is configured via environment variables. Here are the available configuration options:
Environment Variable | Description | Default Value |
| ArgoCD API token | None |
| ArgoCD API endpoint | |
| Verify SSL certificates | true |
You can start the server in several ways:
# Using MCP dev tools (provides debugging tools)
export ARGOCD_TOKEN=YOUR_ARGOCD_TOKEN
mcp dev server.py
# Using MCP run command
export ARGOCD_TOKEN=YOUR_ARGOCD_TOKEN
mcp run server.py
# Standard method
export ARGOCD_TOKEN=YOUR_ARGOCD_TOKEN
uv run server.py
# Setting multiple environment variables
export ARGOCD_TOKEN=YOUR_ARGOCD_TOKEN
export ARGOCD_API_URL=https://your-argocd-server.com:9000/api/v1
export ARGOCD_VERIFY_SSL=false # Disable SSL verification for self-signed certs
uv run server.py
# Using a .env file
echo "ARGOCD_TOKEN=YOUR_ARGOCD_TOKEN
ARGOCD_API_URL=https://your-argocd-server.com:9000/api/v1
ARGOCD_VERIFY_SSL=false" > .env
uv run server.py
# Run in background
export ARGOCD_TOKEN=YOUR_ARGOCD_TOKEN
uv run server.py > server.log 2>&1 & echo $! > server.pidWhen the token is provided via environment variable, Claude can use it without you having to specify it in every command.
Connecting with Claude
Using Claude Code CLI
# Add the MCP server
claude mcp add argocd-mcp "uv run $(pwd)/server.py"
# With token
claude mcp add argocd-mcp -e ARGOCD_TOKEN=YOUR_ARGOCD_TOKEN -- "uv run $(pwd)/server.py"
# Verify it was added
claude mcp list
# For debugging, you can use MCP Inspector with 'mcp dev' commandUsing Claude Desktop
Create a claude_desktop_config.json configuration file:
{
"mcpServers": {
"argocd-mcp": {
"command": "/path/to/uv",
"args": [
"--directory",
"/path/to/argocd-mcp",
"run",
"server.py"
],
"env": {
"ARGOCD_TOKEN": "your_argocd_token",
"ARGOCD_API_URL": "https://your-argocd-server.com/api/v1",
"ARGOCD_VERIFY_SSL": "true"
}
}
}
}Replace the paths and configuration values with your actual values:
Use the full path to the uv executable (find it with
which uvon macOS/Linux orwhere uvon Windows)Set the correct directory path to your argocd-mcp installation
Add your ArgoCD API token
Configure other environment variables as needed
This configuration tells Claude Desktop how to start the MCP server automatically with your specific environment settings.
Available Tools
Session Tools
get_user_info: Get the current user's info via api/v1/session/userinfo
Settings Tools
get_settings: Get ArgoCD server settings including UI, OIDC, and other configurationsget_plugins: Get information about configured ArgoCD plugins
Version Tools
get_version: Get version information of the API server
Application Management Tools
list_applications: Get all applications with filtering optionsget_application_details: Get detailed information about a specific applicationcreate_application: Create a new applicationupdate_application: Update an existing applicationdelete_application: Delete an applicationsync_application: Trigger a sync operation on an application
Example Conversations
Checking User Information
User: What's my user information in ArgoCD?
Claude: Let me retrieve your user information.
⏺ argocd-mcp:get_user_info (MCP)
⎿ {"loggedIn": true, "username": "devops-user", "iss": "argocd"}
You are logged in as 'devops-user'.Getting ArgoCD Version
User: What version of ArgoCD is running on the server?
Claude: Let me check the ArgoCD version information.
⏺ argocd-mcp:get_version (MCP)
⎿ {
"Version": "v2.9.3+5eaf684",
"BuildDate": "2023-09-15T14:25:11Z",
"GitCommit": "5eaf68452",
"GitTreeState": "clean",
"GoVersion": "go1.20.7",
"Compiler": "gc",
"Platform": "linux/amd64",
"KustomizeVersion": "v5.1.1",
"HelmVersion": "v3.12.3",
"KubectlVersion": "v1.27.4",
"JsonnetVersion": "v0.20.0"
}
You're running ArgoCD v2.9.3, built on September 15, 2023. It's running on Linux (amd64) with Go 1.20.7, and includes Kustomize v5.1.1 and Helm v3.12.3.Getting ArgoCD Settings
User: Show me the ArgoCD server settings
Claude: Let me retrieve the ArgoCD server settings for you.
⏺ argocd-mcp:get_settings (MCP)
⎿ {
"clusterSettings": {
"appLabelKey": "argocd.argoproj.io/instance",
"controllerNamespace": "argocd",
"execEnabled": true,
"statusBadgeEnabled": true,
"uiBannerContent": "This is a development instance of ArgoCD",
"url": "https://argocd.example.com"
}
}
Here are the key settings for your ArgoCD server:
- URL: https://argocd.example.com
- Controller namespace: argocd
- Exec enabled: Yes
- Status badge enabled: Yes
- UI Banner: "This is a development instance of ArgoCD"Managing Applications
User: What applications do I have in the "production" project?
Claude: Let me list your applications in the production project.
⏺ argocd-mcp:list_applications (MCP)
⎿ {
"items": [
{
"metadata": {
"name": "frontend-app",
},
"status": {
"sync": {"status": "Synced"},
"health": {"status": "Healthy"},
}
},
{
"metadata": {
"name": "api-service",
},
"status": {
"sync": {"status": "OutOfSync"},
"health": {"status": "Healthy"},
}
},
{
"metadata": {
"name": "database",
},
"status": {
"sync": {"status": "Synced"},
"health": {"status": "Degraded"},
}
}
]
}
You have 3 applications in the production project:
- frontend-app (Synced, Healthy)
- api-service (OutOfSync, Healthy)
- database (Synced, Degraded)User: Sync the api-service application
Claude: I'll sync the api-service application for you.
⏺ argocd-mcp:sync_application (MCP)
⎿ {
"resourcesResult": {
"updated": ["Deployment/api-service"],
"hooks": []
},
"status": "Syncing"
}
Application sync initiated successfully. The sync operation is now in progress.Development
Requirements
Python 3.12+
MCP (includes FastMCP and development tools)
uv package manager (recommended) or pip
ArgoCD API token
Type Checking
This project uses mypy for static type checking to enhance code quality and catch type-related bugs early:
# Install mypy
uv pip install mypy
# Run type checking
uv run -m mypy .Type checking configuration is available in both pyproject.toml and mypy.ini. The configuration enforces strict typing rules including:
Disallowing untyped definitions
Warning on returning Any types
Checking completeness of function definitions
Namespace packages support
Module-specific configurations
Project Structure
The code is organized into a modular structure:
argocd-mcp/
├── api/ # API client and communication
│ ├── __init__.py
│ └── client.py # HTTP client for ArgoCD API
├── models/ # Data models
│ ├── __init__.py
│ └── applications.py # Application data structures
├── tools/ # MCP tools implementation
│ ├── __init__.py
│ ├── session.py # Session tools (user info)
│ ├── applications.py # Application management tools
│ ├── settings.py # Server settings tools
│ └── version.py # Version information tools
├── utils/ # Utility functions
│ ├── __init__.py
├── server.py # Main server entry point
├── pyproject.toml # Project configuration and dependencies
└── mypy.ini # Mypy type checking configurationExtending the Server
To add new features:
Add new tools to the appropriate module in the
toolsdirectoryRegister new tools in
server.pyFollow the existing patterns for parameter validation and error handling
Update documentation in README.md
Add tests for new functionality
Troubleshooting
If you encounter issues:
Check server logs (info logging is enabled by default)
Note that
Processing request of type CallToolRequestis informational, not an errorIf using
mcp dev server.py, the MCP Inspector will automatically open at http://localhost:5173 for debuggingUse the server logs to debug API calls and responses
For SSL certificate issues with self-signed certificates:
# Disable SSL verification
export ARGOCD_VERIFY_SSL=false
uv run server.pyCheck if all required environment variables are properly set:
# Show all current ArgoCD environment variables
env | grep ARGOCDContributing
Contributions are welcome! Please open an issue or pull request if you'd like to contribute to this project.
When contributing, please follow these guidelines:
Ensure all code includes proper type hints
Run mypy type checking before submitting PRs
Add tests for new functionality
Update documentation for any new features or changes
Available Tools
10 toolscreate_applicationA
Create a new application in ArgoCD
Args:
name: The name of the application (required)
project: The project name (required)
repo_url: The Git repository URL (required)
path: Path within the repository (required)
dest_server: Destination K8s API server URL (required)
dest_namespace: Destination namespace (required)
revision: Git revision (default: HEAD)
automated_sync: Enable automated sync (default: False)
prune: Auto-prune resources (default: False)
self_heal: Enable self-healing (default: False)
namespace: Application namespace
validate: Whether to validate the application before creation
upsert: Whether to update the application if it already exists
Returns:
The created application details
Inputs: dest_namespace (required), dest_server (required), name (required), path (required), +9 more.
delete_applicationB
Delete an application from ArgoCD
Args:
name: The name of the application to delete (required)
cascade: Whether to delete application resources as well (default: True)
propagation_policy: The propagation policy ("foreground", "background", or "orphan")
namespace: The application namespace (optional)
Returns:
Success message or error details
Inputs: name (required), cascade, namespace, propagation_policy.
get_application_detailsB
Get details for a specific application
Args:
name: The application name (required)
project: The project name (optional filter)
refresh: Forces application reconciliation if set to 'hard' or 'normal'
namespace: Filter by application namespace
Returns:
Application details
Inputs: name (required), namespace, project, refresh.
get_pluginsB
Get returns Argo CD plugins using api/v1/settings/plugins
This endpoint returns information about available plugins in ArgoCD.
Returns:
List of available plugins
Inputs: no named parameters.
get_settingsB
Get returns Argo CD settings using api/v1/settings
This endpoint returns the ArgoCD server settings including
configuration related to OIDC, Dex, UI customization, and plugins.
Returns:
ArgoCD server settings
Inputs: no named parameters.
get_user_infoB
Get the current user's info via session/userinfo
This endpoint returns information about the currently logged-in user,
including permissions and groups.
Returns:
User information from ArgoCD
Inputs: no named parameters.
get_versionB
Version returns version information of the API server using api/version
This endpoint returns version details of the ArgoCD API server including
Git commit, version, build date, compiler information, and more.
Returns:
Version information of the ArgoCD API server
Inputs: no named parameters.
list_applicationsB
List applications in ArgoCD with filtering options
Args:
project: Filter applications by project name
name: Filter applications by name
repo: Filter applications by repository URL
namespace: Filter applications by namespace
refresh: Forces application reconciliation if set to 'hard' or 'normal'
Returns:
List of applications with pagination information
Inputs: name, namespace, project, refresh, +1 more.
sync_applicationB
Sync an application in ArgoCD
Args:
name: The name of the application to sync (required)
revision: Git revision to sync to (optional)
prune: Whether to prune resources (default: False)
dry_run: Whether to perform a dry run (default: False)
strategy: Sync strategy ("apply" or "hook")
resources: List of resources to sync (optional)
namespace: The application namespace (optional)
Returns:
Sync result details
Inputs: name (required), dry_run, namespace, prune, +3 more.
update_applicationB
Update an existing application in ArgoCD
Args:
name: The application name to update (required)
project: New project name (optional)
repo_url: New Git repository URL (optional)
path: New path within the repository (optional)
dest_server: New destination K8s API server URL (optional)
dest_namespace: New destination namespace (optional)
revision: New Git revision (optional)
automated_sync: Enable/disable automated sync (optional)
prune: Enable/disable auto-pruning resources (optional)
self_heal: Enable/disable self-healing (optional)
validate: Whether to validate the application
Returns:
The updated application details
Inputs: name (required), automated_sync, dest_namespace, dest_server, +7 more.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 10 tools
Each tool has a clearly distinct purpose with no ambiguity. Application management tools (create, delete, get, list, sync, update) target specific actions on applications, while other tools (get_plugins, get_settings, get_user_info, get_version) retrieve distinct types of metadata. The descriptions reinforce these boundaries, making tool selection straightforward.
All tools follow a consistent verb_noun naming pattern throughout. Application tools use create_application, delete_application, get_application_details, list_applications, sync_application, update_application, while metadata tools use get_plugins, get_settings, get_user_info, get_version. This uniformity enhances readability and predictability.
With 10 tools, the count is well-scoped for an ArgoCD server. It provides comprehensive application lifecycle coverage (CRUD + sync) and essential metadata retrieval without being overwhelming. Each tool earns its place, supporting common workflows like deployment management and system inspection.
The tool surface offers complete coverage for ArgoCD's core domain. It includes full CRUD operations for applications (create, get, list, update, delete), sync functionality for deployments, and metadata tools for plugins, settings, user info, and version. There are no obvious gaps, enabling agents to handle typical ArgoCD tasks effectively.
Maintenance
Related MCP Connectors
MCP server for Argo RPG Platform — connects AI assistants to campaign data via OAuth2
MCP server for AI agents to plan, verify, and deploy Cloudflare-native apps.
An MCP server that provides an API to LLMs to manage their JumpCloud resources.
A comprehensive Model Context Protocol (MCP) server that enables AI assistants to interact with yo…
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceAn MCP server that enables interaction with Kubernetes/Minikube clusters through natural language, allowing AI agents like Codename Goose to manage Kubernetes resources via the Model Context Protocol.2MIT

argocd-mcpofficial
AlicenseCqualityCmaintenanceAn implementation of Model Context Protocol (MCP) server for Argo CD.1426,537 npm604Apache 2.0- AlicenseNot gradedqualityDmaintenanceEnables AI assistants to interact with ArgoCD APIs through standardized MCP tools for managing applications, resources, and deployments.MIT
- AlicenseNot gradedqualityCmaintenanceEnables AI assistants to interact with Argo CD applications, managing clusters, applications, and resources through natural language.Apache 2.0