 dd098a5c84
			
		
	
	dd098a5c84
	
	
	
		
			
			- Complete API reference with all interfaces and examples - Detailed deployment guide for development and production - Main README with architecture overview and usage instructions 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
		
			
				
	
	
		
			640 lines
		
	
	
		
			12 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
			
		
		
	
	
			640 lines
		
	
	
		
			12 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
| # BZZZ MCP Server Deployment Guide
 | |
| 
 | |
| Complete deployment guide for the BZZZ MCP Server in various environments.
 | |
| 
 | |
| ## Table of Contents
 | |
| 
 | |
| - [Prerequisites](#prerequisites)
 | |
| - [Environment Configuration](#environment-configuration)
 | |
| - [Development Deployment](#development-deployment)
 | |
| - [Production Deployment](#production-deployment)
 | |
| - [Docker Deployment](#docker-deployment)
 | |
| - [Systemd Service](#systemd-service)
 | |
| - [Monitoring and Health Checks](#monitoring-and-health-checks)
 | |
| - [Backup and Recovery](#backup-and-recovery)
 | |
| - [Troubleshooting](#troubleshooting)
 | |
| 
 | |
| ## Prerequisites
 | |
| 
 | |
| ### System Requirements
 | |
| 
 | |
| **Minimum Requirements:**
 | |
| - Node.js 18.0 or higher
 | |
| - 2 CPU cores
 | |
| - 4GB RAM
 | |
| - 10GB disk space
 | |
| - Network access to OpenAI API
 | |
| - Network access to BZZZ Go service
 | |
| 
 | |
| **Recommended Requirements:**
 | |
| - Node.js 20.0 or higher
 | |
| - 4 CPU cores
 | |
| - 8GB RAM
 | |
| - 50GB disk space
 | |
| - High-speed internet connection
 | |
| - Load balancer for multiple instances
 | |
| 
 | |
| ### External Dependencies
 | |
| 
 | |
| 1. **OpenAI API Access**
 | |
|    - Valid OpenAI API key
 | |
|    - GPT-5 model access
 | |
|    - Sufficient API credits
 | |
| 
 | |
| 2. **BZZZ Go Service**
 | |
|    - Running BZZZ Go service instance
 | |
|    - Network connectivity to BZZZ service
 | |
|    - Compatible BZZZ API version
 | |
| 
 | |
| 3. **Network Configuration**
 | |
|    - Outbound HTTPS access (port 443) for OpenAI
 | |
|    - HTTP/WebSocket access to BZZZ service
 | |
|    - Optionally: Inbound access for health checks
 | |
| 
 | |
| ## Environment Configuration
 | |
| 
 | |
| ### Environment Variables
 | |
| 
 | |
| Create a `.env` file or set system environment variables:
 | |
| 
 | |
| ```bash
 | |
| # OpenAI Configuration
 | |
| OPENAI_MODEL=gpt-5
 | |
| OPENAI_MAX_TOKENS=4000
 | |
| OPENAI_TEMPERATURE=0.7
 | |
| 
 | |
| # BZZZ Configuration
 | |
| BZZZ_NODE_URL=http://localhost:8080
 | |
| BZZZ_NETWORK_ID=bzzz-production
 | |
| 
 | |
| # Cost Management
 | |
| DAILY_COST_LIMIT=100.0
 | |
| MONTHLY_COST_LIMIT=1000.0
 | |
| COST_WARNING_THRESHOLD=0.8
 | |
| 
 | |
| # Performance Settings
 | |
| MAX_ACTIVE_THREADS=10
 | |
| MAX_AGENTS=5
 | |
| THREAD_TIMEOUT=3600
 | |
| 
 | |
| # Logging
 | |
| LOG_LEVEL=info
 | |
| LOG_FILE=/var/log/bzzz-mcp/server.log
 | |
| 
 | |
| # Node.js Settings
 | |
| NODE_ENV=production
 | |
| ```
 | |
| 
 | |
| ### Security Configuration
 | |
| 
 | |
| 1. **API Key Management**
 | |
| ```bash
 | |
| # Create secure directory
 | |
| sudo mkdir -p /opt/bzzz-mcp/secrets
 | |
| sudo chown bzzz:bzzz /opt/bzzz-mcp/secrets
 | |
| sudo chmod 700 /opt/bzzz-mcp/secrets
 | |
| 
 | |
| # Store OpenAI API key
 | |
| echo "your-openai-api-key" | sudo tee /opt/bzzz-mcp/secrets/openai-api-key.txt
 | |
| sudo chown bzzz:bzzz /opt/bzzz-mcp/secrets/openai-api-key.txt
 | |
| sudo chmod 600 /opt/bzzz-mcp/secrets/openai-api-key.txt
 | |
| ```
 | |
| 
 | |
| 2. **Network Security**
 | |
| ```bash
 | |
| # Configure firewall (Ubuntu/Debian)
 | |
| sudo ufw allow out 443/tcp  # OpenAI API
 | |
| sudo ufw allow out 8080/tcp # BZZZ Go service
 | |
| sudo ufw allow in 3000/tcp  # Health checks (optional)
 | |
| ```
 | |
| 
 | |
| ## Development Deployment
 | |
| 
 | |
| ### Local Development Setup
 | |
| 
 | |
| 1. **Clone and Install**
 | |
| ```bash
 | |
| cd /path/to/BZZZ/mcp-server
 | |
| npm install
 | |
| ```
 | |
| 
 | |
| 2. **Configure Development Environment**
 | |
| ```bash
 | |
| # Copy example environment file
 | |
| cp .env.example .env
 | |
| 
 | |
| # Edit configuration
 | |
| nano .env
 | |
| ```
 | |
| 
 | |
| 3. **Start Development Server**
 | |
| ```bash
 | |
| # With hot reload
 | |
| npm run dev
 | |
| 
 | |
| # Or build and run
 | |
| npm run build
 | |
| npm start
 | |
| ```
 | |
| 
 | |
| ### Development Docker Setup
 | |
| 
 | |
| ```dockerfile
 | |
| # Dockerfile.dev
 | |
| FROM node:20-alpine
 | |
| 
 | |
| WORKDIR /app
 | |
| 
 | |
| # Install dependencies
 | |
| COPY package*.json ./
 | |
| RUN npm ci
 | |
| 
 | |
| # Copy source
 | |
| COPY . .
 | |
| 
 | |
| # Development command
 | |
| CMD ["npm", "run", "dev"]
 | |
| ```
 | |
| 
 | |
| ```bash
 | |
| # Build and run development container
 | |
| docker build -f Dockerfile.dev -t bzzz-mcp:dev .
 | |
| docker run -p 3000:3000 -v $(pwd):/app bzzz-mcp:dev
 | |
| ```
 | |
| 
 | |
| ## Production Deployment
 | |
| 
 | |
| ### Manual Production Setup
 | |
| 
 | |
| 1. **Create Application User**
 | |
| ```bash
 | |
| sudo useradd -r -s /bin/false bzzz
 | |
| sudo mkdir -p /opt/bzzz-mcp
 | |
| sudo chown bzzz:bzzz /opt/bzzz-mcp
 | |
| ```
 | |
| 
 | |
| 2. **Install Application**
 | |
| ```bash
 | |
| # Copy built application
 | |
| sudo cp -r dist/ /opt/bzzz-mcp/
 | |
| sudo cp package*.json /opt/bzzz-mcp/
 | |
| sudo chown -R bzzz:bzzz /opt/bzzz-mcp
 | |
| 
 | |
| # Install production dependencies
 | |
| cd /opt/bzzz-mcp
 | |
| sudo -u bzzz npm ci --only=production
 | |
| ```
 | |
| 
 | |
| 3. **Configure Logging**
 | |
| ```bash
 | |
| sudo mkdir -p /var/log/bzzz-mcp
 | |
| sudo chown bzzz:bzzz /var/log/bzzz-mcp
 | |
| sudo chmod 755 /var/log/bzzz-mcp
 | |
| 
 | |
| # Setup log rotation
 | |
| sudo tee /etc/logrotate.d/bzzz-mcp << EOF
 | |
| /var/log/bzzz-mcp/*.log {
 | |
|     daily
 | |
|     rotate 30
 | |
|     compress
 | |
|     delaycompress
 | |
|     missingok
 | |
|     notifempty
 | |
|     create 644 bzzz bzzz
 | |
|     postrotate
 | |
|         systemctl reload bzzz-mcp
 | |
|     endscript
 | |
| }
 | |
| EOF
 | |
| ```
 | |
| 
 | |
| ## Docker Deployment
 | |
| 
 | |
| ### Production Dockerfile
 | |
| 
 | |
| ```dockerfile
 | |
| FROM node:20-alpine AS builder
 | |
| 
 | |
| WORKDIR /app
 | |
| 
 | |
| # Copy package files
 | |
| COPY package*.json ./
 | |
| 
 | |
| # Install all dependencies
 | |
| RUN npm ci
 | |
| 
 | |
| # Copy source code
 | |
| COPY . .
 | |
| 
 | |
| # Build application
 | |
| RUN npm run build
 | |
| 
 | |
| # Production stage
 | |
| FROM node:20-alpine AS production
 | |
| 
 | |
| # Create app user
 | |
| RUN addgroup -g 1001 -S bzzz && \
 | |
|     adduser -S bzzz -u 1001
 | |
| 
 | |
| # Create app directory
 | |
| WORKDIR /opt/bzzz-mcp
 | |
| 
 | |
| # Copy built application
 | |
| COPY --from=builder --chown=bzzz:bzzz /app/dist ./dist
 | |
| COPY --from=builder --chown=bzzz:bzzz /app/package*.json ./
 | |
| 
 | |
| # Install only production dependencies
 | |
| RUN npm ci --only=production && npm cache clean --force
 | |
| 
 | |
| # Create directories
 | |
| RUN mkdir -p /var/log/bzzz-mcp && \
 | |
|     chown bzzz:bzzz /var/log/bzzz-mcp
 | |
| 
 | |
| # Switch to app user
 | |
| USER bzzz
 | |
| 
 | |
| # Health check
 | |
| HEALTHCHECK --interval=30s --timeout=3s --start-period=5s --retries=3 \
 | |
|   CMD node dist/health-check.js || exit 1
 | |
| 
 | |
| EXPOSE 3000
 | |
| 
 | |
| CMD ["node", "dist/index.js"]
 | |
| ```
 | |
| 
 | |
| ### Docker Compose Setup
 | |
| 
 | |
| ```yaml
 | |
| version: '3.8'
 | |
| 
 | |
| services:
 | |
|   bzzz-mcp:
 | |
|     build: .
 | |
|     container_name: bzzz-mcp-server
 | |
|     restart: unless-stopped
 | |
|     environment:
 | |
|       - NODE_ENV=production
 | |
|       - LOG_LEVEL=info
 | |
|       - BZZZ_NODE_URL=http://bzzz-go:8080
 | |
|       - DAILY_COST_LIMIT=100.0
 | |
|       - MONTHLY_COST_LIMIT=1000.0
 | |
|     volumes:
 | |
|       - ./secrets:/opt/bzzz-mcp/secrets:ro
 | |
|       - bzzz-mcp-logs:/var/log/bzzz-mcp
 | |
|     networks:
 | |
|       - bzzz-network
 | |
|     depends_on:
 | |
|       - bzzz-go
 | |
|     labels:
 | |
|       - "traefik.enable=true"
 | |
|       - "traefik.http.routers.bzzz-mcp.rule=Host(`bzzz-mcp.local`)"
 | |
|       - "traefik.http.services.bzzz-mcp.loadbalancer.server.port=3000"
 | |
| 
 | |
|   bzzz-go:
 | |
|     image: bzzz-go:latest
 | |
|     container_name: bzzz-go-service
 | |
|     restart: unless-stopped
 | |
|     ports:
 | |
|       - "8080:8080"
 | |
|     networks:
 | |
|       - bzzz-network
 | |
| 
 | |
| volumes:
 | |
|   bzzz-mcp-logs:
 | |
| 
 | |
| networks:
 | |
|   bzzz-network:
 | |
|     driver: bridge
 | |
| ```
 | |
| 
 | |
| ### Deployment Commands
 | |
| 
 | |
| ```bash
 | |
| # Build and start services
 | |
| docker-compose up -d
 | |
| 
 | |
| # View logs
 | |
| docker-compose logs -f bzzz-mcp
 | |
| 
 | |
| # Update application
 | |
| docker-compose pull
 | |
| docker-compose up -d --force-recreate
 | |
| 
 | |
| # Stop services
 | |
| docker-compose down
 | |
| ```
 | |
| 
 | |
| ## Systemd Service
 | |
| 
 | |
| ### Service Configuration
 | |
| 
 | |
| ```ini
 | |
| # /etc/systemd/system/bzzz-mcp.service
 | |
| [Unit]
 | |
| Description=BZZZ MCP Server
 | |
| Documentation=https://docs.bzzz.local/mcp-server
 | |
| After=network-online.target
 | |
| Wants=network-online.target
 | |
| 
 | |
| [Service]
 | |
| Type=simple
 | |
| User=bzzz
 | |
| Group=bzzz
 | |
| WorkingDirectory=/opt/bzzz-mcp
 | |
| 
 | |
| # Environment
 | |
| Environment=NODE_ENV=production
 | |
| Environment=LOG_LEVEL=info
 | |
| EnvironmentFile=-/etc/bzzz-mcp/environment
 | |
| 
 | |
| # Execution
 | |
| ExecStart=/usr/bin/node dist/index.js
 | |
| ExecReload=/bin/kill -HUP $MAINPID
 | |
| 
 | |
| # Process management
 | |
| Restart=always
 | |
| RestartSec=10
 | |
| KillMode=mixed
 | |
| KillSignal=SIGTERM
 | |
| TimeoutSec=30
 | |
| 
 | |
| # Security
 | |
| NoNewPrivileges=yes
 | |
| ProtectSystem=strict
 | |
| ProtectHome=yes
 | |
| ReadWritePaths=/var/log/bzzz-mcp
 | |
| PrivateTmp=yes
 | |
| 
 | |
| # Logging
 | |
| StandardOutput=journal
 | |
| StandardError=journal
 | |
| SyslogIdentifier=bzzz-mcp
 | |
| 
 | |
| [Install]
 | |
| WantedBy=multi-user.target
 | |
| ```
 | |
| 
 | |
| ### Service Management
 | |
| 
 | |
| ```bash
 | |
| # Install and enable service
 | |
| sudo systemctl daemon-reload
 | |
| sudo systemctl enable bzzz-mcp
 | |
| sudo systemctl start bzzz-mcp
 | |
| 
 | |
| # Service status and logs
 | |
| sudo systemctl status bzzz-mcp
 | |
| sudo journalctl -u bzzz-mcp -f
 | |
| 
 | |
| # Service control
 | |
| sudo systemctl stop bzzz-mcp
 | |
| sudo systemctl restart bzzz-mcp
 | |
| sudo systemctl reload bzzz-mcp
 | |
| ```
 | |
| 
 | |
| ### Environment File
 | |
| 
 | |
| ```bash
 | |
| # /etc/bzzz-mcp/environment
 | |
| OPENAI_MODEL=gpt-5
 | |
| BZZZ_NODE_URL=http://localhost:8080
 | |
| BZZZ_NETWORK_ID=bzzz-production
 | |
| DAILY_COST_LIMIT=100.0
 | |
| MONTHLY_COST_LIMIT=1000.0
 | |
| LOG_FILE=/var/log/bzzz-mcp/server.log
 | |
| ```
 | |
| 
 | |
| ## Monitoring and Health Checks
 | |
| 
 | |
| ### Health Check Script
 | |
| 
 | |
| ```javascript
 | |
| // health-check.js
 | |
| const http = require('http');
 | |
| 
 | |
| function healthCheck() {
 | |
|   return new Promise((resolve, reject) => {
 | |
|     const req = http.request({
 | |
|       hostname: 'localhost',
 | |
|       port: 3000,
 | |
|       path: '/health',
 | |
|       method: 'GET',
 | |
|       timeout: 3000
 | |
|     }, (res) => {
 | |
|       if (res.statusCode === 200) {
 | |
|         resolve('healthy');
 | |
|       } else {
 | |
|         reject(new Error(`Health check failed: ${res.statusCode}`));
 | |
|       }
 | |
|     });
 | |
| 
 | |
|     req.on('error', reject);
 | |
|     req.on('timeout', () => reject(new Error('Health check timeout')));
 | |
|     req.end();
 | |
|   });
 | |
| }
 | |
| 
 | |
| healthCheck()
 | |
|   .then(() => process.exit(0))
 | |
|   .catch(() => process.exit(1));
 | |
| ```
 | |
| 
 | |
| ### Monitoring Script
 | |
| 
 | |
| ```bash
 | |
| #!/bin/bash
 | |
| # /usr/local/bin/bzzz-mcp-monitor.sh
 | |
| 
 | |
| LOG_FILE="/var/log/bzzz-mcp/monitor.log"
 | |
| SERVICE_NAME="bzzz-mcp"
 | |
| 
 | |
| log() {
 | |
|     echo "$(date '+%Y-%m-%d %H:%M:%S') $1" >> $LOG_FILE
 | |
| }
 | |
| 
 | |
| # Check if service is running
 | |
| if ! systemctl is-active --quiet $SERVICE_NAME; then
 | |
|     log "ERROR: Service $SERVICE_NAME is not running"
 | |
|     systemctl restart $SERVICE_NAME
 | |
|     log "INFO: Attempted to restart $SERVICE_NAME"
 | |
|     exit 1
 | |
| fi
 | |
| 
 | |
| # Check memory usage
 | |
| MEMORY_USAGE=$(ps -o pid,ppid,cmd,%mem --sort=-%mem -C node | grep bzzz-mcp | awk '{print $4}')
 | |
| if [[ -n "$MEMORY_USAGE" ]] && (( $(echo "$MEMORY_USAGE > 80" | bc -l) )); then
 | |
|     log "WARNING: High memory usage: ${MEMORY_USAGE}%"
 | |
| fi
 | |
| 
 | |
| # Check log file size
 | |
| LOG_SIZE=$(du -m /var/log/bzzz-mcp/server.log 2>/dev/null | cut -f1)
 | |
| if [[ -n "$LOG_SIZE" ]] && (( LOG_SIZE > 100 )); then
 | |
|     log "WARNING: Large log file: ${LOG_SIZE}MB"
 | |
| fi
 | |
| 
 | |
| log "INFO: Health check completed"
 | |
| ```
 | |
| 
 | |
| ### Cron Job Setup
 | |
| 
 | |
| ```bash
 | |
| # Add to crontab
 | |
| sudo crontab -e
 | |
| 
 | |
| # Check every 5 minutes
 | |
| */5 * * * * /usr/local/bin/bzzz-mcp-monitor.sh
 | |
| ```
 | |
| 
 | |
| ## Backup and Recovery
 | |
| 
 | |
| ### Configuration Backup
 | |
| 
 | |
| ```bash
 | |
| #!/bin/bash
 | |
| # /usr/local/bin/backup-bzzz-mcp.sh
 | |
| 
 | |
| BACKUP_DIR="/backup/bzzz-mcp"
 | |
| DATE=$(date +%Y%m%d_%H%M%S)
 | |
| 
 | |
| mkdir -p $BACKUP_DIR
 | |
| 
 | |
| # Backup configuration
 | |
| tar -czf $BACKUP_DIR/config-$DATE.tar.gz \
 | |
|   /etc/bzzz-mcp/ \
 | |
|   /opt/bzzz-mcp/secrets/ \
 | |
|   /etc/systemd/system/bzzz-mcp.service
 | |
| 
 | |
| # Backup logs (last 7 days)
 | |
| find /var/log/bzzz-mcp/ -name "*.log" -mtime -7 -exec \
 | |
|   tar -czf $BACKUP_DIR/logs-$DATE.tar.gz {} +
 | |
| 
 | |
| # Cleanup old backups (keep 30 days)
 | |
| find $BACKUP_DIR -name "*.tar.gz" -mtime +30 -delete
 | |
| 
 | |
| echo "Backup completed: $DATE"
 | |
| ```
 | |
| 
 | |
| ### Recovery Procedure
 | |
| 
 | |
| 1. **Stop Service**
 | |
| ```bash
 | |
| sudo systemctl stop bzzz-mcp
 | |
| ```
 | |
| 
 | |
| 2. **Restore Configuration**
 | |
| ```bash
 | |
| cd /backup/bzzz-mcp
 | |
| tar -xzf config-YYYYMMDD_HHMMSS.tar.gz -C /
 | |
| ```
 | |
| 
 | |
| 3. **Verify Permissions**
 | |
| ```bash
 | |
| sudo chown -R bzzz:bzzz /opt/bzzz-mcp
 | |
| sudo chmod 600 /opt/bzzz-mcp/secrets/*
 | |
| ```
 | |
| 
 | |
| 4. **Restart Service**
 | |
| ```bash
 | |
| sudo systemctl start bzzz-mcp
 | |
| sudo systemctl status bzzz-mcp
 | |
| ```
 | |
| 
 | |
| ## Troubleshooting
 | |
| 
 | |
| ### Common Issues
 | |
| 
 | |
| **1. Service Won't Start**
 | |
| ```bash
 | |
| # Check logs
 | |
| sudo journalctl -u bzzz-mcp -n 50
 | |
| 
 | |
| # Common causes:
 | |
| # - Missing API key file
 | |
| # - Permission issues
 | |
| # - Port conflicts
 | |
| # - Missing dependencies
 | |
| ```
 | |
| 
 | |
| **2. High Memory Usage**
 | |
| ```bash
 | |
| # Monitor memory usage
 | |
| ps aux | grep node
 | |
| htop
 | |
| 
 | |
| # Possible solutions:
 | |
| # - Reduce MAX_AGENTS
 | |
| # - Decrease MAX_ACTIVE_THREADS
 | |
| # - Restart service periodically
 | |
| ```
 | |
| 
 | |
| **3. OpenAI API Errors**
 | |
| ```bash
 | |
| # Check API key validity
 | |
| curl -H "Authorization: Bearer $OPENAI_API_KEY" \
 | |
|   https://api.openai.com/v1/models
 | |
| 
 | |
| # Common issues:
 | |
| # - Invalid or expired API key
 | |
| # - Rate limit exceeded
 | |
| # - Insufficient credits
 | |
| ```
 | |
| 
 | |
| **4. BZZZ Connection Issues**
 | |
| ```bash
 | |
| # Test BZZZ service connectivity
 | |
| curl http://localhost:8080/api/v1/health
 | |
| 
 | |
| # Check network configuration
 | |
| netstat -tulpn | grep 8080
 | |
| ```
 | |
| 
 | |
| ### Performance Tuning
 | |
| 
 | |
| **Node.js Optimization:**
 | |
| ```bash
 | |
| # Add to service environment
 | |
| NODE_OPTIONS="--max-old-space-size=4096 --optimize-for-size"
 | |
| ```
 | |
| 
 | |
| **System Optimization:**
 | |
| ```bash
 | |
| # Increase file descriptor limits
 | |
| echo "bzzz soft nofile 65536" >> /etc/security/limits.conf
 | |
| echo "bzzz hard nofile 65536" >> /etc/security/limits.conf
 | |
| 
 | |
| # Optimize network settings
 | |
| echo 'net.core.somaxconn = 1024' >> /etc/sysctl.conf
 | |
| sysctl -p
 | |
| ```
 | |
| 
 | |
| ### Debug Mode
 | |
| 
 | |
| Enable debug logging for troubleshooting:
 | |
| 
 | |
| ```bash
 | |
| # Temporary debug mode
 | |
| sudo systemctl edit bzzz-mcp
 | |
| 
 | |
| # Add:
 | |
| [Service]
 | |
| Environment=LOG_LEVEL=debug
 | |
| 
 | |
| # Reload and restart
 | |
| sudo systemctl daemon-reload
 | |
| sudo systemctl restart bzzz-mcp
 | |
| ```
 | |
| 
 | |
| ### Log Analysis
 | |
| 
 | |
| ```bash
 | |
| # Real-time log monitoring
 | |
| sudo journalctl -u bzzz-mcp -f
 | |
| 
 | |
| # Error analysis
 | |
| grep -i error /var/log/bzzz-mcp/server.log | tail -20
 | |
| 
 | |
| # Performance analysis
 | |
| grep -i "response time" /var/log/bzzz-mcp/server.log | tail -10
 | |
| ```
 | |
| 
 | |
| This completes the comprehensive deployment guide. Follow the appropriate section based on your deployment environment and requirements. |