Files
my-pal-mcp-server/docs/user-guides/troubleshooting.md
PCITI c5313b170a docs+docker: Enhanced Docker configuration and workflow fixes (#4)
* addinte templates and user guide

* up docs

* up

* up claude.md

* add mb

* umb

* up workflow

* up settings claude

* adding detailed docs

* adding missing files docs

* add main readme for docs

* up main readme

* adding docs for tests

* Complete documentation integration with test structure analysis link

Adds link to comprehensive test structure documentation in main README.md,
finalizing the progressive disclosure strategy for project documentation.
This completes the documentation integration work that includes:
- Architecture documentation
- API reference documentation
- Contributing guidelines
- Detailed test analysis

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>

* removing folders from git

* up

* up

* up gitignore

* feat: Add automatic semantic versioning workflow

- Create GitHub Actions workflow for automatic version bumping based on PR title prefixes
- Add version bumping script (scripts/bump_version.py) for programmatic updates
- Update PR template with semantic versioning guidelines
- Document versioning workflow in contributing guide
- Integrate with existing Docker build workflow via git tags

This enables automatic version management:
- feat: triggers MINOR version bump
- fix: triggers PATCH version bump
- breaking: triggers MAJOR version bump
- docs/chore/test: no version bump

🤖 Generated with Claude Code

Co-Authored-By: Claude <noreply@anthropic.com>

* fix: Separate Docker workflows for testing and publishing

- Add docker-test.yml for PR validation (build test only)
- Fix build_and_publish_docker.yml to trigger only on tags
- Remove problematic sha prefix causing invalid tag format
- Ensure proper workflow sequence: PR test → merge → version → publish

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>

* style: Fix black formatting issues in bump_version.py

- Fix spacing and indentation to pass black formatter
- Ensure code quality standards are met for CI workflow

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>

* style: Modernize type hints in bump_version.py

- Replace typing.Tuple with modern tuple syntax
- Remove deprecated typing imports per ruff suggestions
- Maintain Python 3.10+ compatibility

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>

* fix: Remove invalid colon in bash else statement

- Fix bash syntax error in auto-version workflow
- Remove Python-style colon from else statement
- Resolves exit code 127 in version bump determination

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>

* feat: Add Docker build combinations for non-versioning prefixes

- Add support for prefix+docker combinations (docs+docker:, chore+docker:, etc.)
- Enable Docker build for non-versioning changes when requested
- Add repository_dispatch trigger for Docker workflow
- Update Docker tagging for PR-based builds (pr-X, main-sha)
- Update PR template with new prefix options

This allows contributors to force Docker builds for documentation,
maintenance, and other non-versioning changes when needed.

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>

* docs: Add comprehensive PR prefix and automation documentation

- Update CONTRIBUTING.md with detailed PR prefix system explanation
- Add automation workflow documentation to docs/contributing/workflows.md
- Create new user-friendly contributing guide at docs/user-guides/contributing-guide.md
- Include Mermaid diagrams for workflow visualization
- Document Docker testing combinations and image tagging strategy
- Add best practices and common mistakes to avoid

This provides clear guidance for contributors on using the automated
versioning and Docker build system effectively.

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>

* docs+docker: Complete documentation infrastructure with Docker automation testing (#2)

* fix: Remove invalid colon in bash else statement

- Fix bash syntax error in auto-version workflow
- Remove Python-style colon from else statement
- Resolves exit code 127 in version bump determination

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>

* feat: Add Docker build combinations for non-versioning prefixes

- Add support for prefix+docker combinations (docs+docker:, chore+docker:, etc.)
- Enable Docker build for non-versioning changes when requested
- Add repository_dispatch trigger for Docker workflow
- Update Docker tagging for PR-based builds (pr-X, main-sha)
- Update PR template with new prefix options

This allows contributors to force Docker builds for documentation,
maintenance, and other non-versioning changes when needed.

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>

* docs: Add comprehensive PR prefix and automation documentation

- Update CONTRIBUTING.md with detailed PR prefix system explanation
- Add automation workflow documentation to docs/contributing/workflows.md
- Create new user-friendly contributing guide at docs/user-guides/contributing-guide.md
- Include Mermaid diagrams for workflow visualization
- Document Docker testing combinations and image tagging strategy
- Add best practices and common mistakes to avoid

This provides clear guidance for contributors on using the automated
versioning and Docker build system effectively.

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>

---------

Co-authored-by: Patryk Ciechanski <patryk.ciechanski@inetum.com>
Co-authored-by: Claude <noreply@anthropic.com>

* fix: Correct digest reference in Docker artifact attestation

- Add id to build step to capture outputs
- Fix subject-digest reference from steps.build.outputs.digest
- Resolves 'One of subject-path or subject-digest must be provided' error

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>

* docs: Add comprehensive Docker image usage instructions

- Add Option B (Published Docker Image) to main README.md
- Update installation guide with published image as fastest option
- Add comprehensive configuration examples for GHCR images
- Document image tagging strategy (latest, versioned, PR builds)
- Include version pinning examples for stability
- Highlight benefits: instant setup, no build, cross-platform

Users can now choose between:
1. Published image (fastest, no setup) - ghcr.io/patrykiti/gemini-mcp-server:latest
2. Local build (development, customization) - traditional setup

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>

* feat: Add automated Docker image usage instructions and PR comments

- Generate comprehensive usage instructions in workflow summary after Docker build
- Include exact docker pull commands with built image tags
- Auto-generate Claude Desktop configuration examples
- Add automatic PR comments with testing instructions for +docker builds
- Show expected image tags (pr-X, main-sha) in PR comments
- Include ready-to-use configuration snippets for immediate testing
- Link to GitHub Container Registry and Actions for monitoring

Now when Docker images are built, users get:
- Step-by-step usage instructions in workflow summary
- PR comments with exact pull commands and config
- Copy-paste ready Claude Desktop configurations
- Direct links to monitor build progress

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>

* feat: Add automatic README.md updating after Docker builds

- Updates Docker image references in README.md and documentation files
- Automatically commits and pushes changes after image builds
- Handles both release builds (version tags) and development builds (PR numbers)
- Ensures documentation always references the latest published images
- Uses sed pattern matching to update ghcr.io image references

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>

* correcting

* up

* fix: GitHub Actions workflows semantic errors

Fixed critical semantic and logic errors in auto-version and Docker workflows:

Auto-version.yml fixes:
- Removed duplicate echo statements for should_build_docker output
- Fixed malformed if/else structure (else after else)
- Removed redundant conditional blocks for docker: prefixes
- Cleaned up duplicate lines in summary generation

Build_and_publish_docker.yml fixes:
- Replaced hardcoded 'patrykiti' with dynamic ${{ github.repository_owner }}
- Enhanced regex pattern to support underscores in Docker tags: [a-zA-Z0-9\._-]*
- Fixed sed patterns for dynamic repository owner detection

These changes ensure workflows execute correctly and support any repository owner.

🤖 Generated with Claude Code

Co-Authored-By: Claude <noreply@anthropic.com>

* docs: Add advanced Docker configuration options to README

Added comprehensive configuration section with optional environment variables:

Docker Configuration Features:
- Advanced configuration example with all available env vars
- Complete table of environment variables with descriptions
- Practical examples for common configuration scenarios
- Clear documentation of config.py options for Docker users

Available Configuration Options:
- DEFAULT_MODEL: Choose between Pro (quality) vs Flash (speed)
- DEFAULT_THINKING_MODE_THINKDEEP: Control token costs with thinking depth
- LOG_LEVEL: Debug logging for troubleshooting
- MCP_PROJECT_ROOT: Security sandbox for file access
- REDIS_URL: Custom Redis configuration

Benefits:
- Users can customize server behavior without rebuilding images
- Better cost control through model and thinking mode selection
- Enhanced security through project root restrictions
- Improved debugging capabilities with configurable logging
- Complete transparency of available configuration options

This addresses user request for exposing config.py parameters via Docker environment variables.

🤖 Generated with Claude Code

Co-Authored-By: Claude <noreply@anthropic.com>

---------

Co-authored-by: Patryk Ciechanski <patryk.ciechanski@inetum.com>
Co-authored-by: Claude <noreply@anthropic.com>
2025-06-12 12:10:27 +02:00

7.5 KiB

Troubleshooting Guide

This guide helps you resolve common issues with the Gemini MCP Server.

Quick Diagnostics

Check System Status

# Verify containers are running
docker compose ps

# Check logs for errors
docker compose logs -f

# Test API connectivity
docker exec -it gemini-mcp-server python -c "import os; print('API Key set:', bool(os.getenv('GEMINI_API_KEY')))"

Common Issues

1. "Connection failed" in Claude Desktop

Symptoms:

  • Claude Desktop shows "Connection failed" when trying to use Gemini tools
  • MCP server appears disconnected

Diagnosis:

# Check if containers are running
docker compose ps

# Should show both containers as 'Up'

Solutions:

  1. Containers not running:

    docker compose up -d
    
  2. Container name mismatch:

    # Check actual container name
    docker ps --format "{{.Names}}"
    
    # Update Claude Desktop config if needed
    
  3. Docker Desktop not running:

    • Ensure Docker Desktop is started
    • Check Docker daemon status: docker info

2. "GEMINI_API_KEY environment variable is required"

Symptoms:

  • Server logs show API key error
  • Tools respond with authentication errors

Solutions:

  1. Check .env file:

    cat .env | grep GEMINI_API_KEY
    
  2. Update API key:

    nano .env
    # Change: GEMINI_API_KEY=your_actual_api_key
    
    # Restart services
    docker compose restart
    
  3. Verify key is valid:

3. Redis Connection Issues

Symptoms:

  • Conversation threading not working
  • Error logs mention Redis connection failures

Diagnosis:

# Check Redis container
docker compose ps redis

# Test Redis connectivity
docker exec -it gemini-mcp-redis redis-cli ping
# Should return: PONG

Solutions:

  1. Start Redis container:

    docker compose up -d redis
    
  2. Reset Redis data:

    docker compose down
    docker volume rm gemini-mcp-server_redis_data
    docker compose up -d
    
  3. Check Redis logs:

    docker compose logs redis
    

4. Tools Not Responding / Hanging

Symptoms:

  • Gemini tools start but never complete
  • Long response times
  • Timeout errors

Diagnosis:

# Check resource usage
docker stats

# Check for memory/CPU constraints

Solutions:

  1. Restart services:

    docker compose restart
    
  2. Increase memory limits:

    # In docker-compose.override.yml
    services:
      gemini-mcp:
        deploy:
          resources:
            limits:
              memory: 4G
    
  3. Check API rate limits:

    • Verify your Gemini API quota
    • Consider using a paid API key for higher limits

5. File Access Issues

Symptoms:

  • "File not found" errors when using file paths
  • Permission denied errors

Diagnosis:

# Check mounted directory
docker exec -it gemini-mcp-server ls -la /workspace

# Verify file permissions
ls -la /path/to/your/file

Solutions:

  1. Use absolute paths:

    ✅ /Users/yourname/project/file.py
    ❌ ./file.py
    
  2. Check file exists in mounted directory:

    # Files must be within WORKSPACE_ROOT (default: $HOME)
    echo $WORKSPACE_ROOT
    
  3. Fix permissions (Linux):

    sudo chown -R $USER:$USER /path/to/your/files
    

6. Port Conflicts

Symptoms:

  • "Port already in use" errors
  • Services fail to start

Diagnosis:

# Check what's using port 6379
lsof -i :6379
netstat -tulpn | grep 6379

Solutions:

  1. Stop conflicting services:

    # If you have local Redis running
    sudo systemctl stop redis
    # or
    brew services stop redis
    
  2. Use different ports:

    # In docker-compose.override.yml
    services:
      redis:
        ports:
          - "6380:6379"
    

Platform-Specific Issues

Windows (WSL2)

Common Issues:

  • Docker Desktop WSL2 integration not enabled
  • File path format issues
  • Permission problems

Solutions:

  1. Enable WSL2 integration:

    • Docker Desktop → Settings → Resources → WSL Integration
    • Enable integration for your WSL distribution
  2. Use WSL2 paths:

    # Run commands from within WSL2
    cd /mnt/c/Users/yourname/project
    ./setup-docker.sh
    
  3. File permissions:

    # In WSL2
    chmod +x setup-docker.sh
    

macOS

Common Issues:

  • Docker Desktop not allocated enough resources
  • File sharing permissions

Solutions:

  1. Increase Docker resources:

    • Docker Desktop → Settings → Resources
    • Increase memory to at least 4GB
  2. File sharing:

    • Docker Desktop → Settings → Resources → File Sharing
    • Ensure your project directory is included

Linux

Common Issues:

  • Docker permission issues
  • systemd conflicts

Solutions:

  1. Docker permissions:

    sudo usermod -aG docker $USER
    # Log out and back in
    
  2. Start Docker daemon:

    sudo systemctl start docker
    sudo systemctl enable docker
    

Advanced Troubleshooting

Debug Mode

Enable detailed logging:

# In .env file
LOG_LEVEL=DEBUG

# Restart with verbose output
docker compose down && docker compose up

Container Debugging

Access container for inspection:

# Enter MCP server container
docker exec -it gemini-mcp-server bash

# Check Python environment
python --version
pip list

# Test Gemini API directly
python -c "
import google.generativeai as genai
import os
genai.configure(api_key=os.getenv('GEMINI_API_KEY'))
model = genai.GenerativeModel('gemini-pro')
print('API connection test successful')
"

Network Debugging

Check container networking:

# Inspect Docker network
docker network ls
docker network inspect gemini-mcp-server_default

# Test container communication
docker exec -it gemini-mcp-server ping redis

Clean Reset

Complete environment reset:

# Stop everything
docker compose down -v

# Remove images
docker rmi $(docker images "gemini-mcp-server*" -q)

# Clean setup
./setup-docker.sh

Performance Optimization

Resource Monitoring

# Monitor container resources
docker stats

# Check system resources
htop  # or top
df -h  # disk space

Optimization Tips

  1. Allocate adequate memory:

    • Minimum: 2GB for Docker Desktop
    • Recommended: 4GB+ for large projects
  2. Use SSD storage:

    • Docker volumes perform better on SSDs
  3. Limit context size:

    • Use specific file paths instead of entire directories
    • Utilize thinking modes to control token usage

Getting Help

Collect Debug Information

Before seeking help, collect:

# System information
docker --version
docker compose --version
uname -a

# Container status
docker compose ps
docker compose logs --tail=100

# Configuration
cat .env | grep -v "GEMINI_API_KEY"

Support Channels

Creating Bug Reports

Include in your bug report:

  1. System information (OS, Docker version)
  2. Steps to reproduce
  3. Expected vs actual behavior
  4. Relevant log output
  5. Configuration (without API keys)

See Also: