Run the complete MCP Server with LangGraph stack locally with Docker Compose for development and testing. Includes all services: agent, OpenFGA, OpenTelemetry, Jaeger, Prometheus, and Grafana.
Quick Setup: Get the full stack running in 2 minutes with one script.
## Start in dev modedocker compose -f docker-compose.yml -f docker/docker-compose.dev.yml up## In another terminal, edit codevim agent.py## Save file - server automatically reloads!## Check logs to see reloaddocker compose logs -f agent
## Install test dependenciesuv sync## Start servicesdocker compose up -d## Wait for health./scripts/wait-for-health.sh## Run testspytest tests/## Stop servicesdocker compose down
## Use different modelMODEL_NAME=claude-sonnet-4-5-20250929 docker compose up## Enable debug loggingLOG_LEVEL=DEBUG docker compose up## Use OpenAI instead of GoogleLLM_PROVIDER=openai MODEL_NAME=gpt-5.1 docker compose up
## Start servicesdocker compose up -d## Wait for OpenFGAsleep 5## Run setup scriptpython scripts/setup_openfga.py## Copy store and model IDs to .env## OPENFGA_STORE_ID=...## OPENFGA_MODEL_ID=...## Restart agent to use new IDsdocker compose restart agent
# Production modedocker compose up -d# Development mode with hot reloaddocker compose -f docker-compose.yml -f docker/docker-compose.dev.yml up# Build from scratchdocker compose up -d --build# Start specific servicedocker compose up -d agent
View logs
# All servicesdocker compose logs -f# Specific servicedocker compose logs -f agent# Last 100 linesdocker compose logs --tail=100 agent# Since timestampdocker compose logs --since 2025-10-10T10:00:00
Stop services
# Stop alldocker compose down# Stop and remove volumes (clean slate)docker compose down -v# Stop specific servicedocker compose stop agent
# Verify all services on same networkdocker network inspect mcp_server_langgraph_observability# Verify service names resolvedocker compose exec agent ping openfga
Solution: Ensure all services use networks: [observability]
Slow build times
Solutions:
Use BuildKit: DOCKER_BUILDKIT=1 docker compose build
Cache dependencies: Mount pip cache
Use lighter base images: Already using python:3.12-slim
Out of disk space
Clean up:
# Remove unused imagesdocker image prune -a# Remove unused volumesdocker volume prune# Remove all stopped containersdocker container prune# Nuclear option - remove everythingdocker system prune -a --volumes