version: '3.8' services: # MCP Server with stdio transport (default) roslyn-stone-mcp-stdio: build: context: . dockerfile: src/RoslynStone.Api/Dockerfile image: roslyn-stone-mcp:latest-stdio container_name: roslyn-stone-mcp-stdio environment: - DOTNET_ENVIRONMENT=Development - MCP_TRANSPORT=stdio - OTEL_EXPORTER_OTLP_ENDPOINT=http://aspire-dashboard:18889 - OTEL_SERVICE_NAME=roslyn-stone-mcp-stdio - OTEL_RESOURCE_ATTRIBUTES=service.namespace=roslyn-stone,service.instance.id=mcp-stdio-1 stdin_open: true tty: true networks: - roslyn-stone-network depends_on: - aspire-dashboard # MCP Server with HTTP transport roslyn-stone-mcp-http: build: context: . dockerfile: src/RoslynStone.Api/Dockerfile image: roslyn-stone-mcp:latest-http container_name: roslyn-stone-mcp-http environment: - DOTNET_ENVIRONMENT=Development - MCP_TRANSPORT=http - ASPNETCORE_URLS=http://+:8080 - OTEL_EXPORTER_OTLP_ENDPOINT=http://aspire-dashboard:18889 - OTEL_SERVICE_NAME=roslyn-stone-mcp-http - OTEL_RESOURCE_ATTRIBUTES=service.namespace=roslyn-stone,service.instance.id=mcp-http-1 ports: - "8080:8080" # MCP HTTP endpoint networks: - roslyn-stone-network depends_on: - aspire-dashboard aspire-dashboard: image: mcr.microsoft.com/dotnet/aspire-dashboard:10.0 container_name: aspire-dashboard ports: - "18888:18888" # Dashboard UI - "18889:18889" # OTLP gRPC endpoint environment: - DOTNET_DASHBOARD_UNSECURED_ALLOW_ANONYMOUS=true networks: - roslyn-stone-network networks: roslyn-stone-network: driver: bridge