Skip to main content

Configuration

Complete configuration guide for the Argo Rollout MCP Server including environment variables, Docker setup, MCP client configuration, and troubleshooting.


Prerequisites​

RequirementDescription
Kubernetes ClusterRunning cluster (v1.24+) with valid kubeconfig
Argo RolloutsArgo Rollouts Controller installed (CRD + Controller)
kubectlConfigured with cluster access
Python 3.10+For local installation (optional)

Installing Argo Rollouts​

If Argo Rollouts is not installed, you can install it via the Helm MCP Server or manually:

kubectl apply -n argo-rollouts -f https://github.com/argoproj/argo-rollouts/releases/latest/download/install.yaml

Installation Options​

# Pull the latest image
docker pull talkopsai/argo-rollout-mcp-server:latest

# Run with default configuration
docker run --rm -it \
-p 8768:8768 \
-v ~/.kube:/app/.kube:ro \
-e K8S_KUBECONFIG=/app/.kube/config \
talkopsai/argo-rollout-mcp-server:latest

# Run with custom context and debug logging
docker run --rm -it \
-p 8768:8768 \
-v ~/.kube:/app/.kube:ro \
-e K8S_KUBECONFIG=/app/.kube/config \
-e K8S_CONTEXT=production-cluster \
-e MCP_LOG_LEVEL=DEBUG \
talkopsai/argo-rollout-mcp-server:latest
note

Mount the full ~/.kube directory (not just config) so certificate paths referenced in your kubeconfig (e.g. minikube, kind) are available inside the container.

Option 2: Build from Source (Docker)​

cd talkops-mcp/src/argo-rollout-mcp-server
docker build -t argo-rollout-mcp-server .

docker run --rm -it \
-p 8768:8768 \
-v ~/.kube:/app/.kube:ro \
-e K8S_KUBECONFIG=/app/.kube/config \
argo-rollout-mcp-server

Option 3: From Source (Python)​

# Install uv if not already installed
curl -LsSf https://astral.sh/uv/install.sh | sh

# Clone the repository
git clone https://github.com/talkops-ai/talkops-mcp.git
cd talkops-mcp/src/argo-rollout-mcp-server

# Create virtual environment and install
uv venv --python=3.12
source .venv/bin/activate # On Unix/macOS

uv pip install -e .
uv run argo-rollout-mcp-server

Environment Variables​

Server Configuration​

VariableDefaultDescription
MCP_SERVER_NAMEargo-rollout-mcp-serverServer name identifier
MCP_SERVER_VERSION0.1.0Server version string
MCP_TRANSPORThttpTransport mode: http or stdio
MCP_HOST0.0.0.0Host address for HTTP server
MCP_PORT8768Port for HTTP server
MCP_PATH/mcpMCP endpoint path
MCP_LOG_LEVELINFOLog level: DEBUG, INFO, WARNING, ERROR
MCP_LOG_FORMATjsonLog format: json or text

Argo & Kubernetes​

VariableDefaultDescription
K8S_KUBECONFIG/app/.kube/configPath to kubeconfig file
K8S_CONTEXT(empty)Specific K8s context to force
K8S_IN_CLUSTERfalseTrue if running inside a pod natively

Prometheus (Metrics Resources)​

VariableDefaultDescription
PROMETHEUS_URLhttp://prometheus:9090Prometheus server URL for metrics (request rate, error rate, latency). When unreachable, metrics resources return placeholder data.

Write Access Control​

Global read-only MCP_ALLOW_WRITE flags are implemented logically at the command layer, ensuring non-destructive apply=False calls when restricted.


MCP Client Configuration​

The server listens on http://localhost:8768/mcp by default. Add this to your MCP client config (e.g. mcp.json or .cursor/mcp.json):

{
"mcpServers": {
"argo-rollout": {
"url": "http://localhost:8768/mcp",
"description": "MCP Server for managing Argo Rollouts and K8s Progressive Delivery"
}
}
}

Troubleshooting​

Connection Errors​

If your MCP client times out reaching port 8768, verify:

  1. The server is running (docker ps or check the process)
  2. Your kubeconfig volume mount is correct: -v ~/.kube:/app/.kube:ro
  3. Port 8768 is not in use by another process

K8s Connectivity​

  1. Ensure your cluster's context matches K8S_CONTEXT (if set)
  2. If using Docker Desktop natively, you may need --network host
  3. Verify kubeconfig: kubectl cluster-info

Invalid kube-config File​

Error: Invalid kube-config file. Expected object with name in contexts list

Solutions:

  • Mount the full ~/.kube directory: -v ~/.kube:/app/.kube:ro
  • Ensure each context in your kubeconfig has a non-empty name field
  • If using minikube/kind, their cert paths must be inside the mounted directory

InsecureRequestWarning​

InsecureRequestWarning: Unverified HTTPS request is suppressed by default when connecting to clusters with self-signed certs (Docker Desktop, minikube, kind). No action needed.


Next Steps​