apiVersion: apps/v1 kind: Deployment metadata: name: {{ .Release.Name }} labels: app: mcp-server app.kubernetes.io/name: mcp-server app.kubernetes.io/instance: {{ .Release.Name }} app.kubernetes.io/managed-by: argocd spec: replicas: {{ .Values.replicaCount }} selector: matchLabels: app: mcp-server template: metadata: labels: app: mcp-server app.kubernetes.io/name: mcp-server spec: securityContext: {{- toYaml .Values.securityContext | nindent 8 }} nodeSelector: {{- toYaml .Values.nodeSelector | nindent 8 }} tolerations: {{- toYaml .Values.tolerations | nindent 8 }} containers: - name: mcp-server image: "{{ .Values.image.repository }}:{{ .Values.image.tag }}" imagePullPolicy: {{ .Values.image.pullPolicy }} securityContext: {{- toYaml .Values.containerSecurityContext | nindent 12 }} env: - name: HOME value: /tmp - name: PIP_USER value: "1" - name: PYTHONUSERBASE value: /tmp/.local command: ["sh", "-c"] args: - | export PATH=/tmp/.local/bin:$PATH pip install --no-cache-dir --user fastapi uvicorn httpx pydantic cat > /tmp/main.py << 'PYEOF' from fastapi import FastAPI app = FastAPI(title="Cryptophys MCP Server") @app.get("/healthz") def healthz(): return {"status": "ok"} @app.get("/") def root(): return {"message": "Cryptophys MCP Server", "version": "1.0.0", "autonomous": True, "gitops": True, "argocd": True} @app.post("/mcp") async def mcp_endpoint(request: dict = {}): return {"jsonrpc": "2.0", "result": {"tools": ["read_ssot", "write_ledger", "query_k8s"], "resources": ["ssot://", "ledger://"]}, "id": request.get("id", 1)} if __name__ == "__main__": import uvicorn uvicorn.run(app, host="0.0.0.0", port=8088) PYEOF python /tmp/main.py ports: - containerPort: {{ .Values.service.targetPort }} resources: {{- toYaml .Values.resources | nindent 12 }} readinessProbe: httpGet: path: /healthz port: {{ .Values.service.targetPort }} initialDelaySeconds: 90 periodSeconds: 10 livenessProbe: httpGet: path: /healthz port: {{ .Values.service.targetPort }} initialDelaySeconds: 120 periodSeconds: 30