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
104 lines
2.7 KiB
YAML
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 |