Configuration
Complete configuration guide for the Argo Rollout MCP Server including environment variables, Docker setup, MCP client configuration, and troubleshooting.
Prerequisites​
| Requirement | Description |
|---|---|
| Kubernetes Cluster | Running cluster (v1.24+) with valid kubeconfig |
| Argo Rollouts | Argo Rollouts Controller installed (CRD + Controller) |
| kubectl | Configured 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​
Option 1: Docker (Recommended)​
# 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
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​
| Variable | Default | Description |
|---|---|---|
MCP_SERVER_NAME | argo-rollout-mcp-server | Server name identifier |
MCP_SERVER_VERSION | 0.1.0 | Server version string |
MCP_TRANSPORT | http | Transport mode: http or stdio |
MCP_HOST | 0.0.0.0 | Host address for HTTP server |
MCP_PORT | 8768 | Port for HTTP server |
MCP_PATH | /mcp | MCP endpoint path |
MCP_LOG_LEVEL | INFO | Log level: DEBUG, INFO, WARNING, ERROR |
MCP_LOG_FORMAT | json | Log format: json or text |
Argo & Kubernetes​
| Variable | Default | Description |
|---|---|---|
K8S_KUBECONFIG | /app/.kube/config | Path to kubeconfig file |
K8S_CONTEXT | (empty) | Specific K8s context to force |
K8S_IN_CLUSTER | false | True if running inside a pod natively |
Prometheus (Metrics Resources)​
| Variable | Default | Description |
|---|---|---|
PROMETHEUS_URL | http://prometheus:9090 | Prometheus 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:
- The server is running (
docker psor check the process) - Your kubeconfig volume mount is correct:
-v ~/.kube:/app/.kube:ro - Port 8768 is not in use by another process
K8s Connectivity​
- Ensure your cluster's context matches
K8S_CONTEXT(if set) - If using Docker Desktop natively, you may need
--network host - 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
~/.kubedirectory:-v ~/.kube:/app/.kube:ro - Ensure each context in your kubeconfig has a non-empty
namefield - 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​
- Tools — Available MCP tools reference
- Resources and Prompts — MCP resources and prompts
- Common Workflows — Step-by-step workflow guides
- Examples — Quick reference and prompts