We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/vfarcic/dot-ai'
If you have feedback or need assistance with the MCP directory API, please join our Discord server
apiVersion: apps/v1
kind: Deployment
metadata:
name: {{ include "dot-ai.fullname" . }}
labels:
{{- include "dot-ai.labels" . | nindent 4 }}
{{- $annotations := include "dot-ai.annotations" (dict "global" .Values.annotations "local" nil) -}}
{{- if $annotations }}
annotations:
{{- $annotations | nindent 4 }}
{{- end }}
spec:
replicas: 1
selector:
matchLabels:
{{- include "dot-ai.selectorLabels" . | nindent 6 }}
template:
metadata:
labels:
{{- include "dot-ai.selectorLabels" . | nindent 8 }}
{{- $podAnnotations := include "dot-ai.annotations" (dict "global" .Values.annotations "local" nil) -}}
{{- if $podAnnotations }}
annotations:
{{- $podAnnotations | nindent 8 }}
{{- end }}
spec:
{{- /* MCP server no longer needs K8s RBAC - all K8s ops go through plugins (PRD #343) */}}
containers:
- name: mcp-server
image: "{{ .Values.image.repository }}:{{ .Values.image.tag }}"
imagePullPolicy: {{ .Values.image.pullPolicy | default "IfNotPresent" }}
ports:
- containerPort: 3456
name: http
protocol: TCP
env:
- name: TRANSPORT_TYPE
value: "http"
- name: PORT
value: "3456"
- name: HOST
value: "0.0.0.0"
- name: SESSION_MODE
value: "stateless"
# AI Provider configuration
- name: AI_PROVIDER
value: {{ .Values.ai.provider | default "anthropic" | quote }}
{{- if .Values.ai.model }}
- name: AI_MODEL
value: {{ .Values.ai.model | quote }}
{{- end }}
{{- if .Values.ai.customEndpoint.enabled }}
- name: CUSTOM_LLM_BASE_URL
value: {{ .Values.ai.customEndpoint.baseURL | quote }}
- name: CUSTOM_EMBEDDINGS_BASE_URL
value: {{ .Values.ai.customEndpoint.embeddingsBaseURL | default .Values.ai.customEndpoint.baseURL | quote }}
{{- if .Values.ai.customEndpoint.embeddingsModel }}
- name: EMBEDDINGS_MODEL
value: {{ .Values.ai.customEndpoint.embeddingsModel | quote }}
{{- end }}
{{- if .Values.ai.customEndpoint.embeddingsDimensions }}
- name: EMBEDDINGS_DIMENSIONS
value: {{ .Values.ai.customEndpoint.embeddingsDimensions | quote }}
{{- end }}
{{- end }}
# AI Provider API Keys
- name: ANTHROPIC_API_KEY
valueFrom:
secretKeyRef:
name: {{ .Values.secrets.name }}
key: {{ .Values.secrets.anthropic.keyName }}
optional: true
- name: OPENAI_API_KEY
valueFrom:
secretKeyRef:
name: {{ .Values.secrets.name }}
key: {{ .Values.secrets.openai.keyName }}
optional: true
- name: GOOGLE_GENERATIVE_AI_API_KEY
valueFrom:
secretKeyRef:
name: {{ .Values.secrets.name }}
key: {{ .Values.secrets.google.keyName }}
optional: true
- name: XAI_API_KEY
valueFrom:
secretKeyRef:
name: {{ .Values.secrets.name }}
key: {{ .Values.secrets.xai.keyName }}
optional: true
- name: MOONSHOT_API_KEY
valueFrom:
secretKeyRef:
name: {{ .Values.secrets.name }}
key: {{ .Values.secrets.moonshot.keyName }}
optional: true
- name: CUSTOM_LLM_API_KEY
valueFrom:
secretKeyRef:
name: {{ .Values.secrets.name }}
key: {{ .Values.secrets.customLlm.keyName | default "custom-llm-api-key" }}
optional: true
- name: CUSTOM_EMBEDDINGS_API_KEY
valueFrom:
secretKeyRef:
name: {{ .Values.secrets.name }}
key: {{ .Values.secrets.customEmbeddings.keyName | default "custom-embeddings-api-key" }}
optional: true
# PRD #359: QDRANT_URL moved to agentic-tools plugin (all vector ops go through plugin)
# Bearer token authentication (optional)
- name: DOT_AI_AUTH_TOKEN
valueFrom:
secretKeyRef:
name: {{ .Values.secrets.name }}
key: {{ .Values.secrets.auth.keyName }}
optional: true
# Web UI integration (PRD #317: Query Visualization)
{{- if .Values.webUI.baseUrl }}
- name: WEB_UI_BASE_URL
value: {{ .Values.webUI.baseUrl | quote }}
{{- end }}
# Note: KUBERNETES_SERVICE_HOST is automatically set by k8s and triggers in-cluster config
{{- with .Values.extraEnv }}
# Additional environment variables
{{- toYaml . | nindent 8 }}
{{- end }}
resources:
{{- toYaml .Values.resources | nindent 10 }}
livenessProbe:
httpGet:
path: /healthz
port: 3456
initialDelaySeconds: 30
periodSeconds: 10
timeoutSeconds: 5
readinessProbe:
httpGet:
path: /healthz
port: 3456
initialDelaySeconds: 30
periodSeconds: 5
timeoutSeconds: 5
{{- $pluginsConfig := include "dot-ai.pluginsConfig" . -}}
{{- if and $pluginsConfig (ne $pluginsConfig "[]") }}
volumeMounts:
- name: plugins-config
mountPath: /etc/dot-ai
readOnly: true
{{- end }}
{{- if and $pluginsConfig (ne $pluginsConfig "[]") }}
volumes:
- name: plugins-config
configMap:
name: {{ include "dot-ai.fullname" . }}-plugins
{{- end }}
terminationGracePeriodSeconds: 30