- π€ ArgoCD Agent is an LLM-powered agent built using the LangGraph ReAct Agent workflow and MCP tools.
- π Protocol Support: Compatible with ACP and A2A protocols for integration with external user clients.
- π‘οΈ Secure by Design: Enforces ArgoCD API token-based RBAC and supports external authentication for strong access control.
- π Integrated Communication: Uses langchain-mcp-adapters to connect with the ArgoCD MCP server within the LangGraph ReAct Agent workflow.
- π First-Party MCP Server: The MCP server is generated by our first-party openapi-mcp-codegen utility, ensuring version/API compatibility and software supply chain integrity.
- Ensure your
.envfile is set up as described in the cnoe-agent-utils usage guide based on your LLM Provider. - Refer to .env.example as an example.
Example .env file:
LLM_PROVIDER=aws-bedrock
AGENT_NAME=ArgoCD
## ArgoCD Configuration
ARGOCD_TOKEN=
ARGOCD_API_URL=
ARGOCD_VERIFY_SSL=true
## A2A Agent Configuration
A2A_HOST=localhost
A2A_PORT=8000
########### LLM Configuration ###########
# AWS Configuration
AWS_ACCESS_KEY_ID=
AWS_SECRET_ACCESS_KEY=
AWS_REGION=
AWS_BEDROCK_MODEL_ID="us.amazon.nova-pro-v1:0"
AWS_BEDROCK_PROVIDER="amazon"
Note:
- If you don't have access to an ArgoCD server, see the Local Development Setup section below to quickly spin up a local ArgoCD instance and deploy a sample app before proceeding.
- If you are using a different container runtime such as
podmanorctr, please substitutedockerwith the respective utility in the commands below.
Run the agent in a Docker container using your .env file:
docker run -p 0.0.0.0:8000:8000 -it \
-v $(pwd)/.env:/app/.env \
ghcr.io/cnoe-io/agent-argocd:a2a-latestUse the agent-chat-cli to interact with the agent:
uvx https://github.com/cnoe-io/agent-chat-cli.git a2aflowchart TD
subgraph Client Layer
A[User Client ACP/A2A]
end
subgraph Agent Transport Layer
B[AGNTCY ACP<br/>or<br/>Google A2A]
end
subgraph Agent Graph Layer
C[LangGraph ReAct Agent]
end
subgraph Tools/MCP Layer
D[Langchain MCP Adapter]
E[ArgoCD MCP Server]
F[ArgoCD API Server]
end
A --> B --> C
C --> D
D -.-> C
D --> E --> F --> E
- π€ LangGraph + LangChain MCP Adapter for agent orchestration
- π§ Azure OpenAI GPT-4o as the LLM backend
- π Connects to ArgoCD via a dedicated ArgoCD MCP agent
- π Multi-protocol support: Compatible with both ACP and A2A protocols for flexible integration and multi-agent orchestration
Note: This section assumes you have basic familiarity with Kubernetes concepts and tools, as running ArgoCD locally requires interacting with Kubernetes clusters and resources.
If you don't have an existing ArgoCD server, you can quickly spin one up using kind:
-
Install KinD Reference: https://kind.sigs.k8s.io/docs/user/quick-start/#installing-from-release-binaries
-
Create a kind cluster:
kind create cluster --name cnoe-argocd-agent
-
Install ArgoCD in the
argocdnamespace:kubectl create namespace argocd
kubectl apply -n argocd -f https://raw.githubusercontent.com/argoproj/argo-cd/stable/manifests/install.yaml
-
Expose the ArgoCD API server: Wait until all the pods are running by checking their status:
kubectl get pods -A
kubectl port-forward svc/argocd-server -n argocd 8080:443
The API will be available at
https://localhost:8080. -
Get the ArgoCD admin password:
kubectl -n argocd get secret argocd-initial-admin-secret -o jsonpath="{.data.password}" | base64 -d && echo
-
(Optional) Install ArgoCD CLI:
brew install argocd # or see https://argo-cd.readthedocs.io/en/stable/cli_installation/
Note: Use a new terminal session and continue to run ArgoCD locally via port forwarding.
To deploy the Guestbook demo application using the ArgoCD CLI, follow these steps:
- Login to ArgoCD:
argocd login localhost:8080 --username admin --password <ARGOCD_ADMIN_PASSWORD> --insecure- Create the Guestbook application:
argocd app create guestbook \
--repo https://github.com/argoproj/argocd-example-apps.git \
--path guestbook \
--dest-server https://kubernetes.default.svc \
--dest-namespace default- Sync (deploy) the application:
argocd app sync guestbook- Check application status:
argocd app get guestbook- Generate an ArgoCD API Token:
To interact programmatically with ArgoCD, you need an API token. After logging in with the CLI, run:
kubectl -n argocd patch configmap argocd-cm --type merge -p '{"data":{"accounts.admin":"login,apiKey"}}'kubectl -n argocd rollout restart deployment argocd-serverargocd account generate-token --account adminCopy the output token and set it as ARGOCD_TOKEN in your .env file.
ARGOCD_TOKEN=
ARGOCD_API_URL=https://localhost:8080
ARGOCD_VERIFY_SSL=false
For more details, see the official getting started guide.
- Ensure your
.envfile is set up as described in the cnoe-agent-utils usage guide based on your LLM Provider. - Refer to .env.example as an example.
- A2A Mode:
make run-a2a
To interact with the agent in A2A mode:
uvx https://github.com/cnoe-io/agent-chat-cli.git a2aor
make run-a2a-clientExample Interaction
> Your Question: how can you help?
Agent: I can assist you with managing applications in ArgoCD, including tasks such as:
- Listing Applications: Retrieve a list of applications with filtering options.
- Getting Application Details: Fetch detailed information about a specific application.
- Creating Applications: Create new applications in ArgoCD.
- Updating Applications: Update existing applications.
- Deleting Applications: Remove applications from ArgoCD.
- Syncing Applications: Synchronize applications to a specific Git revision.
- Getting User Info: Retrieve information about the current user.
- Getting ArgoCD Settings: Access server settings.
- Getting Plugins: List available plugins.
- Getting Version Information: Retrieve ArgoCD API server version.
- π οΈ Uses
create_react_agentfor tool-calling - π Tools loaded from the ArgoCD MCP server (submodule)
- β‘ MCP server launched via
uv runwithstdiotransport - πΈοΈ Single-node LangGraph for inference and action routing
agent_argocd
βββ __main__.py
βββ agent.py
βββ graph.py
βββ llm_factory.py
βββ models.py
βββ protocol_bindings
β βββ __init__.py
β βββ a2a_server
β β βββ agent_executor.py
β βββ acp_server
β β βββ agent.json
β βββ mcp_server
β βββ __init__.py
β βββ mcp_argocd
β βββ __init__.py
β βββ api
β β βββ client.py
β βββ models
β β βββ base.py
β βββ server.py
β βββ tools
β β βββ api_v1_applications.py
β βββ utils
β βββ __init__.py
βββ state.py
This project uses a first-party MCP module generated from the ArgoCD OpenAPI specification using our openapi-mcp-codegen utility. The generated MCP server is included as a git submodule in argocd_mcp/.
All ArgoCD-related LangChain tools are defined by this MCP server implementation, ensuring up-to-date API compatibility and supply chain integrity.
This evaluation uses agentevals to perform strict trajectory match evaluation of the agent's behavior. To run the evaluation suite:
make evalsThis will:
- Set up and activate the Python virtual environment
- Install evaluation dependencies (
agentevals,tabulate,pytest) - Run strict trajectory matching tests against the agent
=======================================
Setting up the Virtual Environment
=======================================
Virtual environment already exists.
=======================================
Activating virtual environment
=======================================
To activate venv manually, run: source .venv/bin/activate
. .venv/bin/activate
Running Agent Strict Trajectory Matching evals...
Installing agentevals with Poetry...
. .venv/bin/activate && uv add agentevals tabulate pytest
...
set -a && . .env && set +a && uv run evals/strict_match/test_strict_match.py
...
Test ID: argocd_agent_1
Prompt: show argocd version
Reference Trajectories: [['__start__', 'agent_argocd']]
Note: Shows the version of the ArgoCD Server Version.
...
Results:
{'score': True}
...
Latest Strict Match Eval Results
Apache 2.0 (see LICENSE)
See MAINTAINERS.md
- Contributions welcome via PR or issue!
- LangGraph and LangChain for agent orchestration frameworks.
- langchain-mcp-adapters for MCP integration.
- AGNTCY Agent Connect Protocol(ACP)
- AGNTCY Agent Gateway Protocol(AGP)
- AGNTCY Workflow Server Manager (WFSM) for deployment and orchestration.
- Model Context Protocol (MCP) for the protocol specification.
- Google A2A
- The open source community for ongoing support and contributions.