Skip to main content
Glama

MCP Project Orchestrator

docker-mcp-servers-orchestration.json24 kB
{ "id": "docker-mcp-servers-orchestration", "name": "Docker MCP Servers Orchestration Guide", "description": "A comprehensive guide for setting up, configuring, and orchestrating multiple MCP servers in a Docker environment", "content": "# Docker MCP Servers Orchestration Guide\\n\\n## Overview\\n\\nThis guide will help you set up a containerized environment with multiple integrated MCP servers for {{use_case}}. The architecture leverages Docker Compose to orchestrate these servers, providing a robust foundation for AI-powered applications with enhanced context capabilities.\\n\\n## Prerequisites\\n\\n- Docker and Docker Compose installed\\n- Basic understanding of containerization concepts\\n- Git for cloning repositories\\n- {{additional_prerequisites}}\\n\\n## Core MCP Servers Architecture\\n\\n```mermaid\\ngraph TD\\n subgraph \\\\\\\"Docker Compose Network\\\\\\\"\\n subgraph \\\\\\\"Core Service\\\\\\\"\\n MCP[MCP Prompts Server]\\n end\\n \\n subgraph \\\\\\\"MCP Resource Servers\\\\\\\"\\n FS[Filesystem Server]\\n MEM[Memory Server]\\n GH[GitHub Server]\\n ST[Sequential Thinking]\\n EL[ElevenLabs Server]\\n {{additional_servers}}\\n end\\n \\n subgraph \\\\\\\"Storage Options\\\\\\\"\\n File[(File Storage)]\\n PG[(PostgreSQL)]\\n PGAI[(PGAI/TimescaleDB)]\\n end\\n end\\n \\n Client[AI Client] -->|Requests| MCP\\n MCP -->|Resource URI Requests| FS\\n MCP -->|Resource URI Requests| MEM\\n MCP -->|Resource URI Requests| GH\\n MCP -->|Resource URI Requests| ST\\n MCP -->|Resource URI Requests| EL\\n \\n MCP -->|Storage| File\\n MCP -->|Storage| PG\\n MCP -->|Storage| PGAI\\n \\n FS -->|Access| LocalFiles[(Local Files)]\\n GH -->|API Calls| GitHub[(GitHub API)]\\n EL -->|API Calls| ElevenLabsAPI[(ElevenLabs API)]\\n \\n classDef core fill:#f9a,stroke:#d87,stroke-width:2px\\n classDef server fill:#adf,stroke:#7ad,stroke-width:1px\\n classDef storage fill:#ad8,stroke:#7a6,stroke-width:1px\\n classDef external fill:#ddd,stroke:#999,stroke-width:1px\\n \\n class MCP core\\n class FS,MEM,GH,ST,EL server\\n class File,PG,PGAI storage\\n class Client,LocalFiles,GitHub,ElevenLabsAPI external\\n```\\n\\n## Setting Up Your Environment\\n\\n### 1. Base Docker Compose Configuration\\n\\nCreate a base Docker Compose file (`docker-compose.base.yml`):\\n\\n```yaml\\nversion: '3'\\n\\nservices:\\n mcp-prompts:\\n image: {{registry}}/mcp-prompts:latest\\n container_name: mcp-prompts\\n environment:\\n - NODE_ENV=production\\n - PORT=3000\\n - HOST=0.0.0.0\\n - STORAGE_TYPE=file\\n - PROMPTS_DIR=/app/data/prompts\\n - BACKUPS_DIR=/app/data/backups\\n - LOG_LEVEL=info\\n volumes:\\n - mcp-data:/app/data\\n ports:\\n - \\\\\\\"3000:3000\\\\\\\"\\n healthcheck:\\n test: [\\\\\\\"CMD\\\\\\\", \\\\\\\"node\\\\\\\", \\\\\\\"-e\\\\\\\", \\\\\\\"require('http').request({hostname: 'localhost', port: 3000, path: '/health', timeout: 2000}, (res) => process.exit(res.statusCode !== 200)).end()\\\\\\\"]\\n interval: 30s\\n timeout: 10s\\n retries: 3\\n restart: unless-stopped\\n networks:\\n - mcp-network\\n\\nnetworks:\\n mcp-network:\\n driver: bridge\\n\\nvolumes:\\n mcp-data:\\n name: mcp-data\\n```\\n\\n### 2. Resource Servers Configuration\\n\\nCreate an integration configuration file (`docker-compose.integration.yml`):\\n\\n```yaml\\nversion: '3'\\n\\nservices:\\n # Override the base service with integration configuration\\n mcp-prompts:\\n environment:\\n - MCP_INTEGRATION=true\\n - MCP_MEMORY_URL=http://mcp-memory:3000\\n - MCP_FILESYSTEM_URL=http://mcp-filesystem:3000\\n - MCP_GITHUB_URL=http://mcp-github:3000\\n - MCP_THINKING_URL=http://mcp-sequential-thinking:3000\\n - MCP_ELEVENLABS_URL=http://mcp-elevenlabs:3000\\n depends_on:\\n - mcp-memory\\n - mcp-filesystem\\n - mcp-github\\n - mcp-sequential-thinking\\n - mcp-elevenlabs\\n\\n # MCP Memory Server\\n mcp-memory:\\n image: node:20-alpine\\n container_name: mcp-memory\\n command: sh -c \\\\\\\"npm install -g @modelcontextprotocol/server-memory && npx -y @modelcontextprotocol/server-memory\\\\\\\"\\n ports:\\n - \\\\\\\"3020:3000\\\\\\\"\\n restart: unless-stopped\\n networks:\\n - mcp-network\\n\\n # MCP Filesystem Server\\n mcp-filesystem:\\n image: node:20-alpine\\n container_name: mcp-filesystem\\n command: sh -c \\\\\\\"npm install -g @modelcontextprotocol/server-filesystem && npx -y @modelcontextprotocol/server-filesystem /data\\\\\\\"\\n volumes:\\n - mcp-filesystem-data:/data\\n ports:\\n - \\\\\\\"3021:3000\\\\\\\"\\n restart: unless-stopped\\n networks:\\n - mcp-network\\n\\n # MCP GitHub Server\\n mcp-github:\\n image: node:20-alpine\\n container_name: mcp-github\\n command: sh -c \\\\\\\"npm install -g @modelcontextprotocol/server-github && npx -y @modelcontextprotocol/server-github\\\\\\\"\\n environment:\\n - GITHUB_PERSONAL_ACCESS_TOKEN={{github_token}}\\n ports:\\n - \\\\\\\"3022:3000\\\\\\\"\\n restart: unless-stopped\\n networks:\\n - mcp-network\\n\\n # MCP Sequential Thinking Server\\n mcp-sequential-thinking:\\n image: node:20-alpine\\n container_name: mcp-sequential-thinking\\n command: sh -c \\\\\\\"npm install -g @modelcontextprotocol/server-sequential-thinking && npx -y @modelcontextprotocol/server-sequential-thinking\\\\\\\"\\n ports:\\n - \\\\\\\"3023:3000\\\\\\\"\\n restart: unless-stopped\\n networks:\\n - mcp-network\\n\\n # MCP ElevenLabs Server\\n mcp-elevenlabs:\\n image: node:20-alpine\\n container_name: mcp-elevenlabs\\n command: sh -c \\\\\\\"npm install -g elevenlabs-mcp-server && npx -y elevenlabs-mcp-server\\\\\\\"\\n environment:\\n - ELEVENLABS_API_KEY={{elevenlabs_api_key}}\\n - ELEVENLABS_VOICE_ID={{elevenlabs_voice_id}}\\n - ELEVENLABS_MODEL_ID={{elevenlabs_model_id}}\\n - ELEVENLABS_OUTPUT_DIR=/data/audio\\n volumes:\\n - mcp-elevenlabs-data:/data\\n ports:\\n - \\\\\\\"3024:3000\\\\\\\"\\n restart: unless-stopped\\n networks:\\n - mcp-network\\n\\nvolumes:\\n mcp-filesystem-data:\\n name: mcp-filesystem-data\\n mcp-elevenlabs-data:\\n name: mcp-elevenlabs-data\\n```\\n\\n### 3. Storage Options\\n\\n#### File Storage (Default)\\nUses the default file storage mounted as a Docker volume.\\n\\n#### PostgreSQL Storage\\nCreate a PostgreSQL configuration file (`docker-compose.postgres.yml`):\\n\\n```yaml\\nversion: '3'\\n\\nservices:\\n # Override the base service to use PostgreSQL\\n mcp-prompts:\\n environment:\\n - STORAGE_TYPE=postgres\\n - POSTGRES_HOST=postgres\\n - POSTGRES_PORT=5432\\n - POSTGRES_USER={{postgres_user}}\\n - POSTGRES_PASSWORD={{postgres_password}}\\n - POSTGRES_DATABASE={{postgres_database}}\\n depends_on:\\n postgres:\\n condition: service_healthy\\n\\n # PostgreSQL Database\\n postgres:\\n image: postgres:14-alpine\\n container_name: mcp-prompts-postgres\\n environment:\\n - POSTGRES_USER={{postgres_user}}\\n - POSTGRES_PASSWORD={{postgres_password}}\\n - POSTGRES_DB={{postgres_database}}\\n volumes:\\n - mcp-prompts-postgres-data:/var/lib/postgresql/data\\n - ./postgres/init:/docker-entrypoint-initdb.d\\n ports:\\n - \\\\\\\"5432:5432\\\\\\\"\\n healthcheck:\\n test: [\\\\\\\"CMD-SHELL\\\\\\\", \\\\\\\"pg_isready -U {{postgres_user}}\\\\\\\"]\\n interval: 10s\\n timeout: 5s\\n retries: 5\\n start_period: 10s\\n restart: unless-stopped\\n networks:\\n - mcp-network\\n\\n # Adminer for database management\\n adminer:\\n image: adminer:latest\\n container_name: mcp-prompts-adminer\\n ports:\\n - \\\\\\\"8080:8080\\\\\\\"\\n depends_on:\\n - postgres\\n restart: unless-stopped\\n networks:\\n - mcp-network\\n\\nvolumes:\\n mcp-prompts-postgres-data:\\n name: mcp-prompts-postgres-data\\n```\\n\\n#### PGAI/TimescaleDB (Vector Storage)\\nCreate a PGAI configuration file (`docker-compose.pgai.yml`):\\n\\n```yaml\\nversion: '3'\\n\\nservices:\\n # Override the base service to use PGAI\\n mcp-prompts:\\n environment:\\n - STORAGE_TYPE=pgai\\n - PGAI_HOST=pgai\\n - PGAI_PORT=5432\\n - PGAI_USER=postgres\\n - PGAI_PASSWORD=postgres\\n - PGAI_DATABASE=mcp_prompts\\n - PGAI_API_KEY={{pgai_api_key}}\\n - PGAI_COLLECTION=mcp_prompts\\n depends_on:\\n pgai:\\n condition: service_healthy\\n\\n # TimescaleDB with PGAI extension\\n pgai:\\n image: timescale/timescaledb-pgai:pg15\\n container_name: mcp-prompts-pgai\\n environment:\\n - POSTGRES_USER=postgres\\n - POSTGRES_PASSWORD=postgres\\n - POSTGRES_DB=mcp_prompts\\n volumes:\\n - mcp-prompts-pgai-data:/var/lib/postgresql/data\\n - ./postgres/pgai-init:/docker-entrypoint-initdb.d\\n ports:\\n - \\\\\\\"5433:5432\\\\\\\"\\n healthcheck:\\n test: [\\\\\\\"CMD-SHELL\\\\\\\", \\\\\\\"pg_isready -U postgres\\\\\\\"]\\n interval: 10s\\n timeout: 5s\\n retries: 5\\n start_period: 30s\\n restart: unless-stopped\\n networks:\\n - mcp-network\\n\\n # Adminer for PGAI database management\\n pgai-adminer:\\n image: adminer:latest\\n container_name: mcp-prompts-pgai-adminer\\n ports:\\n - \\\\\\\"8081:8080\\\\\\\"\\n environment:\\n - ADMINER_DEFAULT_SERVER=pgai\\n depends_on:\\n - pgai\\n restart: unless-stopped\\n networks:\\n - mcp-network\\n\\nvolumes:\\n mcp-prompts-pgai-data:\\n name: mcp-prompts-pgai-data\\n```\\n\\n## Deployment and Management\\n\\n### Docker Compose Manager Script\\n\\nCreate a management script (`docker-compose-manager.sh`) for easier orchestration:\\n\\n```bash\\n#!/bin/bash\\n\\n# Colors for output\\nGREEN=\\\\\\\"\\\\\\\\033[0;32m\\\\\\\"\\nYELLOW=\\\\\\\"\\\\\\\\033[1;33m\\\\\\\"\\nBLUE=\\\\\\\"\\\\\\\\033[0;34m\\\\\\\"\\nRED=\\\\\\\"\\\\\\\\033[0;31m\\\\\\\"\\nNC=\\\\\\\"\\\\\\\\033[0m\\\\\\\" # No Color\\n\\n# Base directory for Docker Compose files\\nCOMPOSE_DIR=\\\\\\\"docker/compose\\\\\\\"\\nBASE_COMPOSE=\\\\\\\"$COMPOSE_DIR/docker-compose.base.yml\\\\\\\"\\n\\n# Display help message\\nfunction show_help {\\n echo -e \\\\\\\"${BLUE}MCP Prompts Docker Compose Manager${NC}\\\\\\\"\\n echo -e \\\\\\\"${YELLOW}Usage:${NC} $0 [command] [environment] [options]\\\\\\\"\\n echo\\n echo -e \\\\\\\"${YELLOW}Commands:${NC}\\\\\\\"\\n echo -e \\\\\\\" up Start services\\\\\\\"\\n echo -e \\\\\\\" down Stop services and remove containers\\\\\\\"\\n echo -e \\\\\\\" ps List running services\\\\\\\"\\n echo -e \\\\\\\" logs View logs\\\\\\\"\\n echo -e \\\\\\\" restart Restart services\\\\\\\"\\n echo -e \\\\\\\" image Build Docker images\\\\\\\"\\n echo -e \\\\\\\" publish Build and publish Docker images\\\\\\\"\\n echo\\n echo -e \\\\\\\"${YELLOW}Environments:${NC}\\\\\\\"\\n echo -e \\\\\\\" base Base MCP Prompts service\\\\\\\"\\n echo -e \\\\\\\" development Development environment with hot-reloading\\\\\\\"\\n echo -e \\\\\\\" postgres PostgreSQL storage\\\\\\\"\\n echo -e \\\\\\\" pgai PGAI TimescaleDB storage\\\\\\\"\\n echo -e \\\\\\\" test Testing environment\\\\\\\"\\n echo -e \\\\\\\" integration Multiple MCP servers integration\\\\\\\"\\n echo -e \\\\\\\" sse Server-Sent Events transport\\\\\\\"\\n echo\\n echo -e \\\\\\\"${YELLOW}Options:${NC}\\\\\\\"\\n echo -e \\\\\\\" -d, --detach Run in detached mode\\\\\\\"\\n echo -e \\\\\\\" -t, --tag TAG Specify tag for Docker images\\\\\\\"\\n echo -e \\\\\\\" -h, --help Show this help message\\\\\\\"\\n}\\n\\n# Default values\\nDETACHED=\\\\\\\"\\\\\\\"\\nTAG=\\\\\\\"latest\\\\\\\"\\n\\n# Parse options\\nwhile [[ $# -gt 0 ]]; do\\n case $1 in\\n -h|--help)\\n show_help\\n exit 0\\n ;;\\n -d|--detach)\\n DETACHED=\\\\\\\"-d\\\\\\\"\\n shift\\n ;;\\n -t|--tag)\\n TAG=\\\\\\\"$2\\\\\\\"\\n shift 2\\n ;;\\n *)\\n break\\n ;;\\n esac\\ndone\\n\\n# Check if at least command and environment are provided\\nif [ $# -lt 2 ]; then\\n show_help\\n exit 1\\nfi\\n\\nCOMMAND=$1\\nENV=$2\\n\\n# Validate environment\\nCOMPOSE_FILE=\\\\\\\"\\\\\\\"\\ncase $ENV in\\n base)\\n COMPOSE_FILE=\\\\\\\"$BASE_COMPOSE\\\\\\\"\\n ;;\\n development)\\n COMPOSE_FILE=\\\\\\\"-f $BASE_COMPOSE -f $COMPOSE_DIR/docker-compose.development.yml\\\\\\\"\\n ;;\\n postgres)\\n COMPOSE_FILE=\\\\\\\"-f $BASE_COMPOSE -f $COMPOSE_DIR/docker-compose.postgres.yml\\\\\\\"\\n ;;\\n pgai)\\n COMPOSE_FILE=\\\\\\\"-f $BASE_COMPOSE -f $COMPOSE_DIR/docker-compose.pgai.yml\\\\\\\"\\n ;;\\n test)\\n COMPOSE_FILE=\\\\\\\"-f $BASE_COMPOSE -f $COMPOSE_DIR/docker-compose.test.yml\\\\\\\"\\n ;;\\n integration)\\n COMPOSE_FILE=\\\\\\\"-f $BASE_COMPOSE -f $COMPOSE_DIR/docker-compose.integration.yml\\\\\\\"\\n ;;\\n sse)\\n COMPOSE_FILE=\\\\\\\"-f $BASE_COMPOSE -f $COMPOSE_DIR/docker-compose.sse.yml\\\\\\\"\\n ;;\\n *)\\n echo -e \\\\\\\"${RED}Invalid environment: $ENV${NC}\\\\\\\"\\n show_help\\n exit 1\\n ;;\\nesac\\n\\n# Execute the appropriate command\\ncase $COMMAND in\\n up)\\n echo -e \\\\\\\"${GREEN}Starting MCP Prompts services for environment: $ENV${NC}\\\\\\\"\\n docker compose $COMPOSE_FILE up $DETACHED\\n ;;\\n down)\\n echo -e \\\\\\\"${GREEN}Stopping MCP Prompts services for environment: $ENV${NC}\\\\\\\"\\n docker compose $COMPOSE_FILE down\\n ;;\\n ps)\\n echo -e \\\\\\\"${GREEN}Listing MCP Prompts services for environment: $ENV${NC}\\\\\\\"\\n docker compose $COMPOSE_FILE ps\\n ;;\\n logs)\\n echo -e \\\\\\\"${GREEN}Showing logs for MCP Prompts services in environment: $ENV${NC}\\\\\\\"\\n docker compose $COMPOSE_FILE logs -f\\n ;;\\n restart)\\n echo -e \\\\\\\"${GREEN}Restarting MCP Prompts services for environment: $ENV${NC}\\\\\\\"\\n docker compose $COMPOSE_FILE restart\\n ;;\\n image)\\n echo -e \\\\\\\"${GREEN}Building Docker image for environment: $ENV with tag: $TAG${NC}\\\\\\\"\\n case $ENV in\\n base|production)\\n docker build -t {{registry}}/mcp-prompts:$TAG -f docker/Dockerfile.prod .\\n echo -e \\\\\\\"${GREEN}Built: {{registry}}/mcp-prompts:$TAG${NC}\\\\\\\"\\n ;;\\n development)\\n docker build -t {{registry}}/mcp-prompts:$TAG-dev -f docker/Dockerfile.development .\\n echo -e \\\\\\\"${GREEN}Built: {{registry}}/mcp-prompts:$TAG-dev${NC}\\\\\\\"\\n ;;\\n test)\\n docker build -t {{registry}}/mcp-prompts:$TAG-test -f docker/Dockerfile.testing .\\n echo -e \\\\\\\"${GREEN}Built: {{registry}}/mcp-prompts:$TAG-test${NC}\\\\\\\"\\n ;;\\n *)\\n echo -e \\\\\\\"${RED}Image building not supported for environment: $ENV${NC}\\\\\\\"\\n exit 1\\n ;;\\n esac\\n ;;\\n publish)\\n echo -e \\\\\\\"${GREEN}Building and publishing Docker images with tag: $TAG${NC}\\\\\\\"\\n \\n # Build images\\n docker build -t {{registry}}/mcp-prompts:$TAG -f docker/Dockerfile.prod .\\n docker build -t {{registry}}/mcp-prompts:$TAG-dev -f docker/Dockerfile.development .\\n docker build -t {{registry}}/mcp-prompts:$TAG-test -f docker/Dockerfile.testing .\\n \\n # Push images\\n echo -e \\\\\\\"${GREEN}Publishing images to Docker registry${NC}\\\\\\\"\\n docker push {{registry}}/mcp-prompts:$TAG\\n docker push {{registry}}/mcp-prompts:$TAG-dev\\n docker push {{registry}}/mcp-prompts:$TAG-test\\n \\n echo -e \\\\\\\"${GREEN}Published images:${NC}\\\\\\\"\\n echo -e \\\\\\\" {{registry}}/mcp-prompts:$TAG\\\\\\\"\\n echo -e \\\\\\\" {{registry}}/mcp-prompts:$TAG-dev\\\\\\\"\\n echo -e \\\\\\\" {{registry}}/mcp-prompts:$TAG-test\\\\\\\"\\n ;;\\n *)\\n echo -e \\\\\\\"${RED}Invalid command: $COMMAND${NC}\\\\\\\"\\n show_help\\n exit 1\\n ;;\\nesac\\n```\\n\\nMake the script executable:\\n\\n```bash\\nchmod +x docker-compose-manager.sh\\n```\\n\\n## Launching the Environment\\n\\n### 1. Start the Base Environment\\n\\n```bash\\n./docker-compose-manager.sh up base -d\\n```\\n\\n### 2. Start with MCP Integration\\n\\n```bash\\n./docker-compose-manager.sh up integration -d\\n```\\n\\n### 3. Start with PostgreSQL Storage\\n\\n```bash\\n./docker-compose-manager.sh up postgres -d\\n```\\n\\n### 4. Start with PGAI Vector Storage\\n\\n```bash\\n./docker-compose-manager.sh up pgai -d\\n```\\n\\n## Environment Configuration\\n\\n### Core Services Configuration\\n\\n1. **MCP Prompts Server Configuration**\\n ```\\n # Server Configuration\\n PORT=3000\\n HOST=0.0.0.0\\n NODE_ENV=production\\n LOG_LEVEL=info\\n \\n # Storage Configuration\\n STORAGE_TYPE=file # Options: file, postgres, pgai\\n PROMPTS_DIR=/app/data/prompts\\n BACKUPS_DIR=/app/data/backups\\n \\n # Integration Configuration\\n MCP_INTEGRATION=true\\n MCP_MEMORY_URL=http://mcp-memory:3000\\n MCP_FILESYSTEM_URL=http://mcp-filesystem:3000\\n MCP_GITHUB_URL=http://mcp-github:3000\\n MCP_THINKING_URL=http://mcp-sequential-thinking:3000\\n MCP_ELEVENLABS_URL=http://mcp-elevenlabs:3000\\n ```\\n\\n2. **GitHub Integration**\\n ```\\n # GitHub API Configuration\\n GITHUB_PERSONAL_ACCESS_TOKEN=your_token_here\\n ```\\n\\n3. **ElevenLabs Integration**\\n ```\\n # ElevenLabs API Configuration\\n ELEVENLABS_API_KEY=your_api_key_here\\n ELEVENLABS_VOICE_ID=your_voice_id\\n ELEVENLABS_MODEL_ID=eleven_monolingual_v1\\n ELEVENLABS_OUTPUT_DIR=/data/audio\\n ```\\n\\n### PostgreSQL Configuration\\n\\n```\\n# PostgreSQL Configuration\\nPOSTGRES_USER=postgres\\nPOSTGRES_PASSWORD=secure_password_here\\nPOSTGRES_DATABASE=mcp_prompts\\n```\\n\\n### PGAI/TimescaleDB Configuration\\n\\n```\\n# PGAI Configuration\\nPGAI_HOST=pgai\\nPGAI_PORT=5432\\nPGAI_USER=postgres\\nPGAI_PASSWORD=postgres\\nPGAI_DATABASE=mcp_prompts\\nPGAI_API_KEY=your_pgai_key_here\\nPGAI_COLLECTION=mcp_prompts\\n```\\n\\n## Integration Verification\\n\\n### 1. Health Check\\n\\nCheck if all services are running:\\n\\n```bash\\n./docker-compose-manager.sh ps integration\\n```\\n\\n### 2. Test MCP Prompts Server\\n\\n```bash\\ncurl http://localhost:3000/health\\n```\\n\\n### 3. Test Resource Servers\\n\\n```bash\\n# Test Memory Server\\ncurl http://localhost:3020/health\\n\\n# Test Filesystem Server\\ncurl http://localhost:3021/health\\n\\n# Test GitHub Server\\ncurl http://localhost:3022/health\\n\\n# Test Sequential Thinking Server\\ncurl http://localhost:3023/health\\n\\n# Test ElevenLabs Server\\ncurl http://localhost:3024/health\\n```\\n\\n## Troubleshooting Common Issues\\n\\n### Container Startup Issues\\n\\n1. **Container fails to start**\\n - Check logs: `./docker-compose-manager.sh logs integration`\\n - Verify environment variables are correctly set\\n - Ensure ports are not already in use\\n\\n2. **Network connectivity issues**\\n - Verify all containers are on the same network\\n - Check Docker network configuration: `docker network inspect mcp-network`\\n\\n3. **Storage issues**\\n - Ensure volume permissions are correctly set\\n - Verify database initialization scripts are valid\\n\\n## Resource Management\\n\\n### Clean Up Unused Resources\\n\\n```bash\\n# Remove stopped containers\\ndocker container prune\\n\\n# Remove unused volumes\\ndocker volume prune\\n\\n# Remove unused networks\\ndocker network prune\\n\\n# Remove dangling images\\ndocker image prune\\n```\\n\\n### Data Persistence\\n\\nDocker volumes ensure your data persists across container restarts:\\n\\n```\\nvolumes:\\n mcp-data: # MCP Prompts data\\n mcp-filesystem-data: # Filesystem server data\\n mcp-elevenlabs-data: # Audio output data\\n mcp-prompts-postgres-data: # PostgreSQL data\\n mcp-prompts-pgai-data: # PGAI/TimescaleDB data\\n```\\n\\n## Best Practices for Production\\n\\n1. **Security Considerations**\\n - Use environment files for secrets\\n - Configure proper network isolation\\n - Set up user permissions for service accounts\\n - Enable HTTPS with proper certificates\\n\\n2. **High Availability**\\n - Implement container restart policies\\n - Consider Docker Swarm or Kubernetes for clustering\\n - Set up monitoring and alerting\\n - Establish backup and recovery procedures\\n\\n3. **Performance Optimization**\\n - Tune PostgreSQL/PGAI for your workload\\n - Configure appropriate resource limits\\n - Implement caching strategies\\n - Monitor resource usage\\n\\n## Advanced Customization\\n\\n### Adding Custom MCP Servers\\n\\n1. Create a Dockerfile for your custom server\\n2. Add the service to your Docker Compose file\\n3. Configure environment variables for integration\\n4. Update the MCP Prompts server configuration\\n\\n### Extending with Additional Services\\n\\n```yaml\\nservices:\\n # Your custom MCP server\\n mcp-custom:\\n image: node:20-alpine\\n container_name: mcp-custom\\n command: sh -c \\\\\\\"npm install -g your-custom-mcp-server && npx -y your-custom-mcp-server\\\\\\\"\\n environment:\\n - CUSTOM_API_KEY={{custom_api_key}}\\n ports:\\n - \\\\\\\"3025:3000\\\\\\\"\\n restart: unless-stopped\\n networks:\\n - mcp-network\\n```\\n\\n## Next Steps\\n\\n1. Explore integration with AI clients like Claude Desktop, Zed, and LibreChat\\n2. Implement monitoring and logging solutions\\n3. Set up CI/CD pipelines for deployment\\n4. Explore advanced use cases for your specific domain\\n\\n## Additional Resources\\n\\n- [MCP Protocol Documentation](https://modelcontextprotocol.io/)\\n- [Docker Documentation](https://docs.docker.com/)\\n- [MCP Servers Repository](https://github.com/modelcontextprotocol/servers)\\n- {{additional_resources}}\\n\\nWhat specific aspect of this Docker-based MCP integration would you like me to elaborate on further?\\\",\\n \\\"isTemplate\\\": true,\\n \\\"variables\\\": [\\n \\\"use_case\\\",\\n \\\"additional_prerequisites\\\",\\n \\\"additional_servers\\\",\\n \\\"registry\\\",\\n \\\"github_token\\\",\\n \\\"elevenlabs_api_key\\\",\\n \\\"elevenlabs_voice_id\\\",\\n \\\"elevenlabs_model_id\\\",\\n \\\"postgres_user\\\",\\n \\\"postgres_password\\\",\\n \\\"postgres_database\\\",\\n \\\"pgai_api_key\\\",\\n \\\"custom_api_key\\\",\\n \\\"additional_resources\\\"\\n ],\\n \\\"tags\\\": [\\n \\\"docker\\\",\\n \\\"mcp-integration\\\",\\n \\\"multi-server\\\",\\n \\\"orchestration\\\",\\n \\\"containerization\\\",\\n \\\"devops\\\",\\n \\\"tutorial\\\"\\n ],\\n \\\"createdAt\\\": \\\"2025-03-15T21:00:00.000Z\\\",\\n \\\"updatedAt\\\": \\\"2025-03-15T21:00:00.000Z\\\",\\n \\\"version\\\": 1,\\n \\\"metadata\\\": {\\n \\\"recommended_servers\\\": [\\n \\\"@modelcontextprotocol/server-filesystem\\\",\\n \\\"@modelcontextprotocol/server-memory\\\",\\n \\\"@modelcontextprotocol/server-github\\\",\\n \\\"@modelcontextprotocol/server-sequential-thinking\\\",\\n \\\"elevenlabs-mcp-server\\\"\\n ],\\n \\\"example_values\\\": {\\n \\\"use_case\\\": \\\"AI-powered code analysis and documentation\\\",\\n \\\"additional_prerequisites\\\": \\\"Node.js 18+ for local development\\\",\\n \\\"registry\\\": \\\"sparesparrow\\\",\\n \\\"postgres_user\\\": \\\"postgres\\\",\\n \\\"postgres_password\\\": \\\"secure_password_here\\\",\\n \\\"postgres_database\\\": \\\"mcp_prompts" }

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/sparesparrow/mcp-project-orchestrator'

If you have feedback or need assistance with the MCP directory API, please join our Discord server