Skip to main content
Glama
docker-compose.yml4.46 kB
# Docker Compose for Microsoft Fabric Analytics MCP Server # Provides local development and testing environment services: # Main MCP Server fabric-mcp: build: context: . dockerfile: Dockerfile ports: - "3000:3000" environment: - NODE_ENV=production - PORT=3000 - LOG_LEVEL=info - ENABLE_HEALTH_SERVER=true # Authentication configuration - FABRIC_AUTH_METHOD=${FABRIC_AUTH_METHOD:-service_principal} - FABRIC_CLIENT_ID=${FABRIC_CLIENT_ID} - FABRIC_CLIENT_SECRET=${FABRIC_CLIENT_SECRET} - FABRIC_TENANT_ID=${FABRIC_TENANT_ID} - FABRIC_DEFAULT_WORKSPACE_ID=${FABRIC_DEFAULT_WORKSPACE_ID} # API configuration - FABRIC_API_BASE_URL=https://api.fabric.microsoft.com - FABRIC_API_VERSION=v1 # Performance settings - MAX_CONCURRENT_REQUESTS=100 - REQUEST_TIMEOUT=30000 - ENABLE_REQUEST_LOGGING=true # Health check configuration - HEALTH_CHECK_ENDPOINT=/health - READINESS_CHECK_ENDPOINT=/ready - METRICS_ENDPOINT=/metrics # Security settings - ENABLE_CORS=true - CORS_ORIGIN=* - ENABLE_HELMET=true healthcheck: test: ["CMD", "curl", "-f", "http://localhost:3000/health"] interval: 30s timeout: 10s retries: 3 start_period: 40s restart: unless-stopped volumes: # Mount logs directory for persistence - ./logs:/app/logs labels: - "traefik.enable=true" - "traefik.http.routers.fabric-mcp.rule=Host(`mcp.localhost`)" - "traefik.http.routers.fabric-mcp.entrypoints=web" - "traefik.http.services.fabric-mcp.loadbalancer.server.port=3000" # Redis for caching (optional) redis: image: redis:7-alpine ports: - "6379:6379" environment: - REDIS_PASSWORD=${REDIS_PASSWORD:-} command: redis-server --appendonly yes volumes: - redis_data:/data healthcheck: test: ["CMD", "redis-cli", "ping"] interval: 30s timeout: 3s retries: 5 restart: unless-stopped # Traefik reverse proxy (optional) traefik: image: traefik:v3.0 ports: - "80:80" - "8080:8080" # Traefik dashboard command: - "--api.insecure=true" - "--providers.docker=true" - "--providers.docker.exposedbydefault=false" - "--entrypoints.web.address=:80" - "--accesslog=true" - "--log.level=INFO" volumes: - /var/run/docker.sock:/var/run/docker.sock:ro restart: unless-stopped profiles: - "reverse-proxy" # Prometheus for metrics collection (optional) prometheus: image: prom/prometheus:latest ports: - "9090:9090" command: - '--config.file=/etc/prometheus/prometheus.yml' - '--storage.tsdb.path=/prometheus' - '--web.console.libraries=/etc/prometheus/console_libraries' - '--web.console.templates=/etc/prometheus/consoles' - '--storage.tsdb.retention.time=200h' - '--web.enable-lifecycle' volumes: - ./monitoring/prometheus.yml:/etc/prometheus/prometheus.yml - prometheus_data:/prometheus restart: unless-stopped profiles: - "monitoring" # Grafana for metrics visualization (optional) grafana: image: grafana/grafana:latest ports: - "3001:3000" environment: - GF_SECURITY_ADMIN_PASSWORD=${GRAFANA_PASSWORD:-admin} - GF_USERS_ALLOW_SIGN_UP=false volumes: - grafana_data:/var/lib/grafana - ./monitoring/grafana/dashboards:/etc/grafana/provisioning/dashboards - ./monitoring/grafana/datasources:/etc/grafana/provisioning/datasources restart: unless-stopped profiles: - "monitoring" depends_on: - prometheus # Node Exporter for system metrics (optional) node-exporter: image: prom/node-exporter:latest ports: - "9100:9100" volumes: - /proc:/host/proc:ro - /sys:/host/sys:ro - /:/rootfs:ro command: - '--path.procfs=/host/proc' - '--path.rootfs=/rootfs' - '--path.sysfs=/host/sys' - '--collector.filesystem.mount-points-exclude=^/(sys|proc|dev|host|etc)($$|/)' restart: unless-stopped profiles: - "monitoring" volumes: redis_data: driver: local prometheus_data: driver: local grafana_data: driver: local networks: default: name: fabric-mcp-network driver: bridge

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/santhoshravindran7/Fabric-Analytics-MCP'

If you have feedback or need assistance with the MCP directory API, please join our Discord server