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
330 lines
7.2 KiB
Markdown
330 lines
7.2 KiB
Markdown
# MCPTesta Docker Environment
|
|
|
|
🐳 **Comprehensive Docker Compose setup for MCPTesta documentation with development and production configurations.**
|
|
|
|
## 🚀 Quick Start
|
|
|
|
### Prerequisites
|
|
- Docker and Docker Compose installed
|
|
- Make utility
|
|
- Internet connection for downloading base images
|
|
|
|
### One-Command Setup
|
|
```bash
|
|
make up
|
|
```
|
|
|
|
This will:
|
|
1. Validate your environment
|
|
2. Create required networks
|
|
3. Build and start the documentation site
|
|
4. Make it available at `http://mcptesta.l.supported.systems`
|
|
|
|
## 📋 Available Commands
|
|
|
|
### 🔧 Quick Start
|
|
```bash
|
|
make validate # Validate setup
|
|
make setup # Initial setup + validation
|
|
make up # Complete setup and start dev environment
|
|
```
|
|
|
|
### 🔨 Development
|
|
```bash
|
|
make dev # Start development with hot reloading
|
|
make dev-detached # Start development in background
|
|
make dev-logs # Follow development logs
|
|
```
|
|
|
|
### 🏭 Production
|
|
```bash
|
|
make env-prod # Switch to production mode
|
|
make prod # Start production environment
|
|
make prod-logs # Follow production logs
|
|
```
|
|
|
|
### 📊 Monitoring
|
|
```bash
|
|
make status # Show container status
|
|
make health # Check health status
|
|
make logs # Show all logs
|
|
make logs-live # Follow all logs in real-time
|
|
```
|
|
|
|
### 🛠️ Management
|
|
```bash
|
|
make build # Build images
|
|
make rebuild # Rebuild without cache
|
|
make restart # Restart all services
|
|
make clean # Stop and cleanup
|
|
make deep-clean # Full cleanup including images
|
|
```
|
|
|
|
### 🐛 Debugging
|
|
```bash
|
|
make shell # Access container shell
|
|
make debug # Show comprehensive debug info
|
|
make network # Show network information
|
|
```
|
|
|
|
## 🏗️ Architecture
|
|
|
|
### Services
|
|
|
|
#### `docs` - Documentation Site
|
|
- **Development**: Astro with hot reloading
|
|
- **Production**: Static build served by nginx
|
|
- **Domain**: `mcptesta.l.supported.systems`
|
|
- **Port**: 4321
|
|
- **Features**: HTTPS, caching, compression, security headers
|
|
|
|
### Networks
|
|
|
|
#### `caddy` (External)
|
|
- Reverse proxy network for automatic HTTPS
|
|
- Shared with other projects using caddy-docker-proxy
|
|
|
|
#### `monitoring` (Internal)
|
|
- Service health monitoring
|
|
- Metrics collection
|
|
|
|
### Volumes
|
|
|
|
#### Development
|
|
- Live code mounting for hot reloading
|
|
- Separate node_modules volume
|
|
- Build cache for performance
|
|
|
|
#### Production
|
|
- Static build artifacts
|
|
- Optimized for performance and security
|
|
|
|
## ⚙️ Configuration
|
|
|
|
### Environment Variables (.env)
|
|
```bash
|
|
# Core configuration
|
|
COMPOSE_PROJECT=mcptesta
|
|
NODE_ENV=development
|
|
DOCS_DOMAIN=mcptesta.l.supported.systems
|
|
|
|
# Resource limits
|
|
DOCS_MEMORY_LIMIT=512m
|
|
DOCS_CPU_LIMIT=0.5
|
|
|
|
# Health checks
|
|
HEALTH_CHECK_INTERVAL=30s
|
|
HEALTH_CHECK_TIMEOUT=10s
|
|
HEALTH_CHECK_RETRIES=3
|
|
```
|
|
|
|
### Environment Modes
|
|
|
|
#### Development Mode
|
|
- Hot reloading enabled
|
|
- Volume mounts for live editing
|
|
- Verbose logging
|
|
- Relaxed security settings
|
|
- Debug ports exposed
|
|
|
|
#### Production Mode
|
|
- Static build optimization
|
|
- Read-only filesystem
|
|
- Enhanced security headers
|
|
- Resource limits enforced
|
|
- Monitoring enabled
|
|
|
|
## 🔄 Switching Between Modes
|
|
|
|
```bash
|
|
# Switch to development
|
|
make env-dev
|
|
make dev
|
|
|
|
# Switch to production
|
|
make env-prod
|
|
make prod
|
|
```
|
|
|
|
## 🎯 Integration Features
|
|
|
|
### Caddy Integration
|
|
Automatic reverse proxy with:
|
|
- HTTPS certificates via Let's Encrypt
|
|
- Load balancing
|
|
- Compression (gzip/zstd)
|
|
- Security headers
|
|
- Caching policies
|
|
|
|
### Hot Reloading
|
|
Development environment supports:
|
|
- Astro dev server with instant rebuilds
|
|
- File watching with automatic restarts
|
|
- LiveReload integration
|
|
- Source map support
|
|
|
|
### Security
|
|
Production environment includes:
|
|
- Non-root user execution
|
|
- Read-only root filesystem
|
|
- Security headers (HSTS, CSP, etc.)
|
|
- Minimal attack surface
|
|
- Regular security updates
|
|
|
|
## 📁 File Structure
|
|
|
|
```
|
|
mcptesta/
|
|
├── .env # Environment configuration
|
|
├── docker-compose.yml # Main compose configuration
|
|
├── docker-compose.dev.yml # Development overrides
|
|
├── docker-compose.prod.yml # Production overrides
|
|
├── Makefile # Management commands
|
|
├── DOCKER.md # Detailed documentation
|
|
├── README-DOCKER.md # This quick reference
|
|
├── docs/
|
|
│ ├── Dockerfile # Multi-stage documentation build
|
|
│ ├── .dockerignore # Build optimization
|
|
│ ├── package.json # Node.js dependencies
|
|
│ └── src/ # Documentation source
|
|
├── config/
|
|
│ ├── nginx-dev.conf # Development proxy config
|
|
│ └── fluent-bit.conf # Production logging
|
|
└── scripts/
|
|
├── health-check.sh # Container health validation
|
|
├── start-docs.sh # Container startup script
|
|
└── validate-setup.sh # Environment validation
|
|
```
|
|
|
|
## 🧪 Testing & Validation
|
|
|
|
### Health Checks
|
|
Comprehensive health monitoring:
|
|
```bash
|
|
# Manual health check
|
|
make health
|
|
|
|
# Container-level health check
|
|
docker compose exec docs /app/scripts/health-check.sh
|
|
```
|
|
|
|
### Validation
|
|
Pre-flight validation:
|
|
```bash
|
|
# Validate complete setup
|
|
make validate
|
|
|
|
# Check specific components
|
|
docker compose config # Validate compose files
|
|
./scripts/validate-setup.sh # Full environment check
|
|
```
|
|
|
|
## 🚨 Troubleshooting
|
|
|
|
### Common Issues
|
|
|
|
#### "Caddy network not found"
|
|
```bash
|
|
make caddy-network
|
|
```
|
|
|
|
#### "Port 4321 already in use"
|
|
```bash
|
|
# Check what's using the port
|
|
netstat -tlnp | grep :4321
|
|
|
|
# Or change port in .env
|
|
echo "DOCS_PORT=4322" >> .env
|
|
```
|
|
|
|
#### "Permission denied" errors
|
|
```bash
|
|
# Fix ownership
|
|
sudo chown -R $USER:$USER docs/
|
|
|
|
# Fix permissions
|
|
chmod +x scripts/*.sh
|
|
```
|
|
|
|
#### Container won't start
|
|
```bash
|
|
# Check logs
|
|
make logs
|
|
|
|
# Debug container
|
|
make shell
|
|
|
|
# Full debug info
|
|
make debug
|
|
```
|
|
|
|
### Debug Commands
|
|
|
|
```bash
|
|
# Container status
|
|
make status
|
|
|
|
# Network connectivity
|
|
make network
|
|
|
|
# Resource usage
|
|
docker stats $(docker compose ps -q)
|
|
|
|
# Validate configuration
|
|
docker compose config
|
|
|
|
# Test health endpoint
|
|
curl -f http://mcptesta.l.supported.systems/ || echo "Site not accessible"
|
|
```
|
|
|
|
## 🎨 Customization
|
|
|
|
### Custom Domain
|
|
```bash
|
|
# Change domain in .env
|
|
DOCS_DOMAIN=mydocs.example.com
|
|
|
|
# Restart services
|
|
make restart
|
|
```
|
|
|
|
### Resource Limits
|
|
```bash
|
|
# Modify .env
|
|
DOCS_MEMORY_LIMIT=1g
|
|
DOCS_CPU_LIMIT=1.0
|
|
|
|
# Apply changes
|
|
make restart
|
|
```
|
|
|
|
### Additional Services
|
|
Add to `docker-compose.yml`:
|
|
```yaml
|
|
my-service:
|
|
image: my-image:latest
|
|
networks:
|
|
- caddy
|
|
labels:
|
|
caddy: myservice.l.supported.systems
|
|
caddy.reverse_proxy: "{{upstreams 8080}}"
|
|
```
|
|
|
|
## 🔗 Related Documentation
|
|
|
|
- [DOCKER.md](./DOCKER.md) - Comprehensive Docker documentation
|
|
- [docs/README.md](./docs/README.md) - Documentation site details
|
|
- [MCPTesta README](./README.md) - Main project documentation
|
|
|
|
## 💡 Pro Tips
|
|
|
|
1. **Use make commands** - They handle complexity and provide consistent behavior
|
|
2. **Check logs regularly** - `make logs-live` shows real-time activity
|
|
3. **Validate before changes** - `make validate` catches issues early
|
|
4. **Use development mode** - Hot reloading makes documentation editing fast
|
|
5. **Monitor resources** - `make debug` shows comprehensive system info
|
|
6. **Keep it clean** - `make clean` prevents disk space issues
|
|
|
|
---
|
|
|
|
**Happy Dockerizing! 🐳** |