mcptesta/docker-compose.yml
Ryan Malloy bea4a2e5d3 Initial release: MCPTesta v1.0.0 🧪
Community-driven testing excellence for the MCP ecosystem

MCPTesta is a comprehensive testing framework for FastMCP servers that brings
scientific rigor and enterprise-grade capabilities to MCP protocol testing.

🎯 Core Features:
• Comprehensive FastMCP server testing with advanced protocol support
• Parallel execution with intelligent dependency resolution
• Flexible CLI and YAML configuration system
• Rich reporting: console, HTML, JSON, and JUnit formats
• Advanced MCP protocol features: notifications, cancellation, progress tracking
• Production-ready Docker environment with caddy-docker-proxy integration

🧪 Advanced Testing Capabilities:
• Multi-transport support (stdio, SSE, WebSocket)
• Authentication testing (Bearer tokens, OAuth flows)
• Stress testing and performance validation
• Memory profiling and leak detection
• CI/CD integration with comprehensive reporting

🎨 Professional Assets:
• Complete logo package with lab experiment theme
• Comprehensive documentation with Diátaxis framework
• Community-focused branding and messaging
• Multi-platform favicon and social media assets

📚 Documentation:
• Getting started tutorials and comprehensive guides
• Complete CLI and YAML reference documentation
• Architecture explanations and testing strategies
• Team collaboration and security compliance guides

🚀 Ready for:
• Community contributions and external development
• Enterprise deployment and production use
• Integration with existing FastMCP workflows
• Extension and customization for specific needs

Built with modern Python practices using uv, FastMCP, and Starlight documentation.
Designed for developers who demand scientific precision in their testing tools.

Repository: https://git.supported.systems/mcp/mcptesta
Documentation: https://mcptesta.l.supported.systems
2025-09-20 03:20:49 -06:00

104 lines
2.7 KiB
YAML

# MCPTesta Docker Compose Configuration
# Modern Docker Compose without version attribute
x-logging: &default-logging
driver: json-file
options:
max-size: "${LOG_MAX_SIZE:-10m}"
max-file: "${LOG_MAX_FILES:-3}"
x-healthcheck: &default-healthcheck
interval: ${HEALTH_CHECK_INTERVAL:-30s}
timeout: ${HEALTH_CHECK_TIMEOUT:-10s}
retries: ${HEALTH_CHECK_RETRIES:-3}
start_period: ${HEALTH_CHECK_START_PERIOD:-40s}
services:
# Documentation Site
docs:
build:
context: ./docs
dockerfile: Dockerfile
target: ${NODE_ENV:-development}
args:
NODE_ENV: ${NODE_ENV:-development}
environment:
NODE_ENV: ${NODE_ENV:-development}
HOST: ${DOCS_HOST:-0.0.0.0}
PORT: ${DOCS_PORT:-4321}
DOMAIN: ${DOMAIN:-mcptesta.l.supported.systems}
labels:
# Caddy Docker Proxy configuration
caddy: ${DOCS_DOMAIN:-mcptesta.l.supported.systems}
caddy.reverse_proxy: "{{upstreams 4321}}"
caddy.encode: gzip
caddy.header.Cache-Control: "public, max-age=31536000"
caddy.header.X-Frame-Options: "SAMEORIGIN"
caddy.header.X-Content-Type-Options: "nosniff"
volumes:
# Development: Mount source for hot reloading
- ./docs:/app:${DEV_WATCH_ENABLED:-true}
# Exclude node_modules from host mount
- /app/node_modules
healthcheck:
<<: *default-healthcheck
test: ["CMD", "wget", "--no-verbose", "--tries=1", "--spider", "http://localhost:4321/"]
logging: *default-logging
networks:
- caddy
- monitoring
restart: unless-stopped
deploy:
resources:
limits:
cpus: ${DOCS_CPU_LIMIT:-0.5}
memory: ${DOCS_MEMORY_LIMIT:-512m}
reservations:
memory: 256m
# Security settings
security_opt:
- no-new-privileges:true
read_only: false # Astro needs write access for builds
tmpfs:
- /tmp:noexec,nosuid,size=100m
user: "1000:1000"
# Optional: Documentation builder for production builds
docs-builder:
build:
context: ./docs
dockerfile: Dockerfile
target: builder
environment:
NODE_ENV: production
volumes:
- ./docs:/app
- docs_build:/app/dist
profiles:
- build
command: npm run build
networks:
- internal
networks:
# External Caddy network for reverse proxy
caddy:
external: true
name: caddy
# Monitoring network
monitoring:
driver: bridge
name: ${COMPOSE_PROJECT}_monitoring
# Internal network for build processes
internal:
driver: bridge
internal: true
name: ${COMPOSE_PROJECT}_internal
volumes:
# Production build artifacts
docs_build:
driver: local
name: ${COMPOSE_PROJECT}_docs_build