Teams MCP - Deployment — Unique AI Documentation

Teams MCP - Deployment

1 min read

Prerequisites

Before deploying the Teams MCP Server, ensure you have:

Helm Chart

The Teams MCP Server is deployed using a Helm chart that wraps the backend-service chart.

Add Helm Repository

helm registry login ghcr.io/unique-ag/helm-charts

Install

helm install teams-mcp oci://ghcr.io/unique-ag/helm-charts/teams-mcp \
  --namespace teams-mcp \
  --create-namespace \
  --values values.yaml

Upgrade

helm upgrade teams-mcp oci://ghcr.io/unique-ag/helm-charts/teams-mcp \
  --namespace teams-mcp \
  --values values.yaml

Required Secrets

Create the following Kubernetes secrets before deployment:

apiVersion: v1
kind: Secret
metadata:
  name: teams-mcp-secrets
  namespace: teams-mcp
type: Opaque
stringData:
  DATABASE_URL: "postgresql://user:password@host:5432/teams_mcp"
  AMQP_URL: "amqp://user:password@rabbitmq:5672/teams-mcp"
  MICROSOFT_CLIENT_SECRET: "<from-entra-app-registration>"
  MICROSOFT_WEBHOOK_SECRET: "<128-char-random-string>"
  AUTH_HMAC_SECRET: "<64-char-hex-string>"
  ENCRYPTION_KEY: "<64-char-hex-string>"

Generating Secrets

# Generate MICROSOFT_WEBHOOK_SECRET (128 characters)
openssl rand -hex 64

# Generate AUTH_HMAC_SECRET (64 characters hex = 256 bits)
openssl rand -hex 32

# Generate ENCRYPTION_KEY (64 characters hex = 256 bits)
openssl rand -hex 32

Minimal Values Configuration

server:
  envVars:
    - secretRef:
        name: teams-mcp-secrets

mcpConfig:
  app:
    selfUrl: https://teams.mcp.example.com

microsoft:
    clientId: "12345678-1234-1234-1234-123456789012"

unique:
    apiBaseUrl: http://api-gateway.unique:8080
    ingestionServiceBaseUrl: http://node-ingestion.unique:8091

Note: Ingress is disabled by default. Traffic routing is handled by Kong Gateway via HTTPRoute or KongIngress resources configured separately.

Database Migration

Database migrations run automatically on deployment via a Helm hook:

server:
  hooks:
    migration:
      enabled: true
      command: |
        pnpm run db:migrate

To run migrations manually:

kubectl exec -it deploy/teams-mcp -- pnpm run db:migrate

Health Checks

The service exposes health endpoints:

Endpoint Purpose
/health Kubernetes liveness probe
/ready Kubernetes readiness probe

Monitoring

Prometheus Metrics

Metrics are exposed on port 51346 at /metrics.

server:
  ports:
    metrics: 51346
  env:
    OTEL_EXPORTER_PROMETHEUS_HOST: "0.0.0.0"
    OTEL_EXPORTER_PROMETHEUS_PORT: "51346"
    OTEL_METRICS_EXPORTER: "prometheus"

Grafana Dashboard

A Grafana dashboard is automatically created when enabled:

grafana:
  dashboard:
    enabled: true
    folder: mcp-servers

Prometheus Alerts

Default alerts are included for GraphQL and Unique API errors:

alerts:
  enabled: true
  defaultAlerts:
    graphql:
      enabled: true
    uniqueApi:
      enabled: true

Network Policies

Network policies are enabled by default to restrict ingress traffic:

server:
  networkPolicy:
    enabled: true
    policyTypes:
      - Ingress

Terraform Modules

Terraform modules are available for:

See Authentication Guide for Terraform usage.

Troubleshooting

See FAQ for common questions and deployment issues.