- Updated Docker container references throughout documentation - Fixed issue templates with correct container name - Updated all docker exec commands in guides - Ensured consistency with new zen-mcp-server naming 🤖 Generated with Claude Code Co-Authored-By: Claude <noreply@anthropic.com>
407 lines
12 KiB
Markdown
407 lines
12 KiB
Markdown
# 🐳 Docker User Guide: Using Gemini MCP Server
|
|
|
|
This guide shows you how to use the Gemini MCP Server with Claude Desktop using the automated Docker setup. **Everything is handled automatically** - no manual Redis setup required!
|
|
|
|
## 🎯 What You'll Get
|
|
|
|
After following this guide, you'll have:
|
|
- ✅ Gemini MCP Server running with Claude Desktop
|
|
- ✅ Redis automatically configured for conversation threading
|
|
- ✅ Access to all Gemini tools: `chat`, `thinkdeep`, `codereview`, `debug`, `analyze`, `precommit`
|
|
- ✅ Persistent data storage that survives container restarts
|
|
|
|
## 📋 Prerequisites
|
|
|
|
### Required
|
|
1. **Docker Desktop** - [Download here](https://www.docker.com/products/docker-desktop/)
|
|
2. **Claude Desktop** - [Download here](https://claude.ai/download)
|
|
3. **Gemini API Key** - [Get one here](https://makersuite.google.com/app/apikey)
|
|
4. **Git** - For cloning the repository
|
|
|
|
### Platform Support
|
|
- ✅ **macOS** (Intel and Apple Silicon M1/M2/M3)
|
|
- ✅ **Linux** (AMD64 and ARM64)
|
|
- ✅ **Windows** (requires WSL2 + Docker Desktop for Claude Desktop)
|
|
|
|
### Windows Setup Requirements
|
|
**Windows users must use WSL2 + Docker Desktop:**
|
|
1. **Install WSL2** - [Microsoft WSL Guide](https://docs.microsoft.com/en-us/windows/wsl/install)
|
|
2. **Install Docker Desktop** - [Docker for Windows](https://docs.docker.com/desktop/windows/install/)
|
|
3. **Enable WSL2 integration** in Docker Desktop settings
|
|
4. **Run Claude Desktop** in Windows (Docker containers run in WSL2)
|
|
|
|
**Why WSL2 is required:**
|
|
- Docker images are Linux-based (python:3.11-slim)
|
|
- Docker Desktop automatically runs containers in WSL2 Linux environment
|
|
- Provides full compatibility with Linux containers on Windows
|
|
|
|
**Alternative for Windows:** Install Python directly and run server with `pip install -r requirements.txt && python server.py`
|
|
|
|
## 🚀 Setup Option 1: Published Docker Image (Fastest)
|
|
|
|
**Quick setup using pre-built image from GitHub Container Registry - no build required!**
|
|
|
|
### Step 1: Pull Published Image
|
|
|
|
```bash
|
|
# Download the latest stable version
|
|
docker pull ghcr.io/beehiveinnovations/zen-mcp-server:latest
|
|
|
|
# Optional: Pull a specific version
|
|
docker pull ghcr.io/beehiveinnovations/zen-mcp-server:v1.2.0
|
|
```
|
|
|
|
### Step 2: Configure Claude Desktop
|
|
|
|
**Find your Claude Desktop config file:**
|
|
- **macOS**: `~/Library/Application Support/Claude/claude_desktop_config.json`
|
|
- **Windows (WSL required)**: `/mnt/c/Users/USERNAME/AppData/Roaming/Claude/claude_desktop_config.json`
|
|
|
|
**Add this configuration:**
|
|
```json
|
|
{
|
|
"mcpServers": {
|
|
"gemini": {
|
|
"command": "docker",
|
|
"args": [
|
|
"run", "--rm", "-i",
|
|
"-e", "GEMINI_API_KEY",
|
|
"ghcr.io/beehiveinnovations/zen-mcp-server:latest"
|
|
],
|
|
"env": {
|
|
"GEMINI_API_KEY": "your-gemini-api-key-here"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
```
|
|
|
|
### Step 3: Update Available Tags
|
|
|
|
Available image tags:
|
|
- `latest` - Most recent stable release
|
|
- `v1.2.0`, `v1.1.0`, etc. - Specific version releases
|
|
- `pr-{number}` - Development builds from pull requests
|
|
- `main-{sha}` - Development builds from main branch
|
|
|
|
```bash
|
|
# See all available tags
|
|
docker search ghcr.io/beehiveinnovations/zen-mcp-server
|
|
|
|
# Or check GitHub Container Registry
|
|
open https://github.com/BeehiveInnovations/zen-mcp-server/pkgs/container/zen-mcp-server
|
|
```
|
|
|
|
### Step 4: Test Installation
|
|
|
|
Restart Claude Desktop and try:
|
|
```
|
|
"Use gemini to say hello and confirm the connection works"
|
|
```
|
|
|
|
**Benefits of Published Image:**
|
|
- ✅ **Instant setup** - No build time, no source code needed
|
|
- ✅ **Always updated** - Automatically built with every release
|
|
- ✅ **Smaller footprint** - No development dependencies
|
|
- ✅ **Version control** - Pin to specific versions for stability
|
|
- ✅ **Cross-platform** - Works on any Docker-supported OS
|
|
|
|
---
|
|
|
|
## 🛠️ Setup Option 2: Local Build (For Development)
|
|
|
|
### Step 1: Clone Repository
|
|
|
|
```bash
|
|
git clone https://github.com/BeehiveInnovations/zen-mcp-server.git
|
|
cd zen-mcp-server
|
|
```
|
|
|
|
### Step 2: One-Command Setup
|
|
|
|
```bash
|
|
# Automated setup - builds images and starts all services
|
|
./setup-docker.sh
|
|
```
|
|
|
|
**What this script does automatically:**
|
|
- ✅ Creates `.env` file with your API key (if `GEMINI_API_KEY` environment variable is set)
|
|
- ✅ Builds the Gemini MCP Server Docker image
|
|
- ✅ Starts Redis container for conversation threading
|
|
- ✅ Starts MCP server container
|
|
- ✅ Configures networking between containers
|
|
- ✅ Shows you the exact Claude Desktop configuration
|
|
|
|
### Step 3: Add Your API Key (if needed)
|
|
|
|
If you see a message about updating your API key:
|
|
|
|
```bash
|
|
# Edit .env file and replace placeholder with your actual key
|
|
nano .env
|
|
# Change: GEMINI_API_KEY=your-gemini-api-key-here
|
|
# To: GEMINI_API_KEY=your_actual_api_key
|
|
|
|
# Restart services to apply changes
|
|
docker compose restart
|
|
```
|
|
|
|
### Step 4: Configure Claude Desktop
|
|
|
|
The setup script shows you the exact configuration. Add this to your Claude Desktop config:
|
|
|
|
**Find your config file:**
|
|
- **macOS**: `~/Library/Application Support/Claude/claude_desktop_config.json`
|
|
- **Windows (WSL)**: `/mnt/c/Users/USERNAME/AppData/Roaming/Claude/claude_desktop_config.json`
|
|
|
|
**Configuration:**
|
|
```json
|
|
{
|
|
"mcpServers": {
|
|
"gemini": {
|
|
"command": "docker",
|
|
"args": [
|
|
"exec",
|
|
"-i",
|
|
"zen-mcp-server",
|
|
"python",
|
|
"server.py"
|
|
]
|
|
}
|
|
}
|
|
}
|
|
```
|
|
|
|
### Step 5: Restart Claude Desktop & Test
|
|
|
|
1. Completely quit and restart Claude Desktop
|
|
2. Test with: `"Use gemini to chat about Python best practices"`
|
|
|
|
## 🚀 Setup Option 2: Published Docker Image (Advanced)
|
|
|
|
If you prefer to use the published image without cloning:
|
|
|
|
```bash
|
|
# Create a directory for your work
|
|
mkdir gemini-mcp-project && cd gemini-mcp-project
|
|
|
|
# Create minimal docker-compose.yml
|
|
cat > docker-compose.yml << 'EOF'
|
|
services:
|
|
redis:
|
|
image: redis:7-alpine
|
|
container_name: gemini-mcp-redis
|
|
restart: unless-stopped
|
|
ports:
|
|
- "6379:6379"
|
|
volumes:
|
|
- redis_data:/data
|
|
|
|
gemini-mcp:
|
|
image: ghcr.io/beehiveinnovations/zen-mcp-server:latest
|
|
container_name: zen-mcp-server
|
|
restart: unless-stopped
|
|
depends_on:
|
|
- redis
|
|
environment:
|
|
- GEMINI_API_KEY=${GEMINI_API_KEY}
|
|
- REDIS_URL=redis://redis:6379/0
|
|
- WORKSPACE_ROOT=${HOME}
|
|
volumes:
|
|
- ${HOME}:/workspace:ro
|
|
stdin_open: true
|
|
tty: true
|
|
|
|
volumes:
|
|
redis_data:
|
|
EOF
|
|
|
|
# Create .env file
|
|
echo "GEMINI_API_KEY=your-gemini-api-key-here" > .env
|
|
|
|
# Start services
|
|
docker compose up -d
|
|
```
|
|
|
|
## 🛠️ Available Tools
|
|
|
|
Once set up, you can use any of these tools naturally in Claude:
|
|
|
|
| Tool | Example Usage |
|
|
|------|---------------|
|
|
| **`chat`** | "Use gemini to brainstorm API design ideas" |
|
|
| **`thinkdeep`** | "Use gemini to think deeper about this architecture" |
|
|
| **`codereview`** | "Use gemini to review my Python code for security issues" |
|
|
| **`debug`** | "Use gemini to debug this error: [paste stack trace]" |
|
|
| **`analyze`** | "Use gemini to analyze my project structure" |
|
|
| **`precommit`** | "Use gemini to validate my git changes before commit" |
|
|
|
|
## 📁 File Access
|
|
|
|
The Docker setup automatically mounts your home directory as `/workspace`. This means:
|
|
|
|
- ✅ Gemini can read files anywhere in your home directory
|
|
- ✅ You can analyze entire projects: "Use gemini to analyze my ~/Projects/myapp/src/ directory"
|
|
- ✅ Works with absolute paths: "Use gemini to review /Users/yourname/project/main.py"
|
|
|
|
## 🔧 Management Commands
|
|
|
|
### Check Status
|
|
```bash
|
|
# See if containers are running
|
|
docker compose ps
|
|
|
|
# Should show both 'gemini-mcp-redis' and 'zen-mcp-server' as 'Up'
|
|
```
|
|
|
|
### View Logs
|
|
```bash
|
|
# Check MCP server logs
|
|
docker compose logs gemini-mcp -f
|
|
|
|
# Check Redis logs
|
|
docker compose logs redis -f
|
|
|
|
# View all logs
|
|
docker compose logs -f
|
|
```
|
|
|
|
### Update to Latest Version
|
|
```bash
|
|
# For cloned repository setup
|
|
git pull origin main
|
|
./setup-docker.sh
|
|
|
|
# For published image setup
|
|
docker compose pull
|
|
docker compose up -d
|
|
```
|
|
|
|
### Stop/Start Services
|
|
```bash
|
|
# Stop containers (keeps data)
|
|
docker compose stop
|
|
|
|
# Start containers again
|
|
docker compose start
|
|
|
|
# Restart all services
|
|
docker compose restart
|
|
|
|
# Stop and remove everything
|
|
docker compose down
|
|
|
|
# Stop and remove everything including volumes (⚠️ deletes Redis data)
|
|
docker compose down -v
|
|
```
|
|
|
|
## 🔒 Security Notes
|
|
|
|
1. **API Key**: Your Gemini API key is stored in the container environment. The `.env` file is gitignored for security.
|
|
|
|
2. **File Access**: The container can read files in your home directory (mounted as read-only). This is necessary for file analysis.
|
|
|
|
3. **Network**: Redis runs on localhost:6379 but is only accessible to the MCP server container by default.
|
|
|
|
## 🚨 Troubleshooting
|
|
|
|
### "Connection failed" in Claude Desktop
|
|
```bash
|
|
# Check if containers are running
|
|
docker compose ps
|
|
|
|
# Should show both containers as 'Up'
|
|
# If not, check logs:
|
|
docker compose logs gemini-mcp
|
|
```
|
|
|
|
### "GEMINI_API_KEY environment variable is required"
|
|
```bash
|
|
# Edit your .env file
|
|
nano .env
|
|
# Update: GEMINI_API_KEY=your_actual_api_key
|
|
|
|
# Restart services
|
|
docker compose restart
|
|
```
|
|
|
|
### Containers won't start
|
|
```bash
|
|
# Check logs for specific errors
|
|
docker compose logs
|
|
|
|
# Rebuild and restart
|
|
docker compose down
|
|
docker compose up --build -d
|
|
```
|
|
|
|
### Tools not responding
|
|
```bash
|
|
# Check container resources
|
|
docker stats
|
|
|
|
# Restart everything
|
|
docker compose restart
|
|
|
|
# If still having issues, check Claude Desktop config
|
|
```
|
|
|
|
### Permission issues (Linux)
|
|
```bash
|
|
# Ensure proper ownership
|
|
sudo chown -R $USER:$USER .
|
|
|
|
# Make setup script executable
|
|
chmod +x setup-docker.sh
|
|
```
|
|
|
|
## 💡 How It Works (Technical Details)
|
|
|
|
The setup uses Docker Compose to orchestrate two services:
|
|
|
|
1. **Redis Container** (`gemini-mcp-redis`)
|
|
- Official Redis 7 Alpine image
|
|
- Automatic data persistence with Docker volume
|
|
- Available at `redis:6379` within Docker network
|
|
- Available at `localhost:6379` from host machine
|
|
|
|
2. **Gemini MCP Server** (`zen-mcp-server`)
|
|
- Built from local Dockerfile or pulled from GHCR
|
|
- Automatically connects to Redis container
|
|
- Your home directory mounted for file access
|
|
- Configured with proper environment variables
|
|
|
|
**Key Benefits:**
|
|
- 🔄 **Automatic Service Discovery**: No IP configuration needed
|
|
- 💾 **Data Persistence**: Redis data survives container restarts
|
|
- 🛡️ **Isolation**: Services run in isolated containers
|
|
- 🚀 **Easy Updates**: Pull latest images with one command
|
|
|
|
## 🎉 What's Next?
|
|
|
|
Once you're set up:
|
|
|
|
1. **Explore the tools**: Try each tool to understand their specialties
|
|
2. **Read the main README**: [Full documentation](../README.md) has advanced usage patterns
|
|
3. **Join discussions**: [GitHub Discussions](https://github.com/BeehiveInnovations/zen-mcp-server/discussions) for tips and tricks
|
|
4. **Contribute**: Found a bug or want a feature? [Open an issue](https://github.com/BeehiveInnovations/zen-mcp-server/issues)
|
|
|
|
## 💡 Pro Tips
|
|
|
|
1. **Conversation Threading**: Gemini remembers context across multiple interactions thanks to automatic Redis setup!
|
|
|
|
2. **File Analysis**: Point Gemini at entire directories: "Use gemini to analyze my entire ~/Projects/myapp for architectural improvements"
|
|
|
|
3. **Collaborative Workflows**: Combine tools: "Use gemini to analyze this code, then review it for security issues"
|
|
|
|
4. **Thinking Modes**: Control depth vs cost: "Use gemini with minimal thinking to quickly explain this function"
|
|
|
|
5. **Logs are your friend**: Always check `docker compose logs -f` if something seems wrong
|
|
|
|
---
|
|
|
|
**Need Help?**
|
|
- 📖 [Full Documentation](../README.md)
|
|
- 💬 [Community Discussions](https://github.com/BeehiveInnovations/zen-mcp-server/discussions)
|
|
- 🐛 [Report Issues](https://github.com/BeehiveInnovations/zen-mcp-server/issues)
|