Files
my-pal-mcp-server/docs/architecture/overview.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

225 lines
11 KiB
Markdown

# Gemini MCP Server Architecture Overview
## System Overview
The **Gemini MCP Server** implements a sophisticated Model Context Protocol (MCP) server architecture that provides Claude with access to Google's Gemini AI models through specialized tools. This enables advanced AI-assisted development workflows combining Claude's general capabilities with Gemini's deep analytical and creative thinking abilities.
## High-Level Architecture
```
┌─────────────────────────────────────────────────────────────┐
│ Claude Interface │
│ (Claude Desktop App) │
└─────────────────────┬───────────────────────────────────────┘
│ MCP Protocol (stdio)
┌─────────────────────▼───────────────────────────────────────┐
│ MCP Core Engine │
│ • AsyncIO Event Loop (server.py:45) │
│ • Tool Discovery & Registration │
│ • Request/Response Processing │
└─────────────────────┬───────────────────────────────────────┘
┌─────────────────────▼───────────────────────────────────────┐
│ Tool Architecture │
│ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ │
│ │ chat │ │ thinkdeep │ │ analyze │ │
│ │ (quick Q&A) │ │(deep think) │ │(code review)│ │
│ └─────────────┘ └─────────────┘ └─────────────┘ │
│ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ │
│ │ codereview │ │ debug │ │ precommit │ │
│ │(quality) │ │(root cause) │ │(validation) │ │
│ └─────────────┘ └─────────────┘ └─────────────┘ │
└─────────────────────┬───────────────────────────────────────┘
┌─────────────────────▼───────────────────────────────────────┐
│ Support Services │
│ ┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐│
│ │Redis Conversation│ │Security Engine │ │Gemini API ││
│ │Memory & Threading│ │Multi-layer │ │Integration ││
│ │ │ │Validation │ │ ││
│ └─────────────────┘ └─────────────────┘ └─────────────────┘│
└─────────────────────────────────────────────────────────────┘
```
## Core Components
### 1. MCP Core Engine (server.py:45)
**Purpose**: Central coordination hub managing the MCP protocol implementation
**Key Components**:
- **AsyncIO Event Loop**: Handles concurrent tool execution and request processing
- **Tool Discovery**: Dynamic loading and registration via `@server.list_tools()` decorator
- **Protocol Management**: MCP message parsing, validation, and response formatting
**Architecture Pattern**: Event-driven architecture with asyncio for non-blocking operations
### 2. Tool System Architecture
**Purpose**: Modular plugin system for specialized AI capabilities
**Key Components**:
- **BaseTool Abstract Class** (`tools/base.py:25`): Common interface for all tools
- **Plugin Architecture**: Individual tool implementations in `tools/` directory
- **Tool Selection Matrix**: CLAUDE.md defines appropriate tool usage patterns
**Data Flow**:
```
Claude Request → MCP Engine → Tool Selection → Gemini API → Response Processing → Claude
```
**Tool Categories**:
- **Quick Response**: `chat` - immediate answers and brainstorming
- **Deep Analysis**: `thinkdeep` - complex architecture and strategic planning
- **Code Quality**: `codereview` - security audits and bug detection
- **Investigation**: `debug` - root cause analysis and error investigation
- **Exploration**: `analyze` - codebase comprehension and dependency analysis
- **Validation**: `precommit` - automated quality gates
### 3. Security Architecture
**Purpose**: Multi-layer defense system protecting against malicious operations
**Key Components**:
- **Path Validation** (`utils/file_utils.py:45`): Prevents directory traversal attacks
- **Sandbox Enforcement**: PROJECT_ROOT containment for file operations
- **Docker Path Translation**: Host-to-container path mapping with WORKSPACE_ROOT
- **Absolute Path Requirement**: Eliminates relative path vulnerabilities
**Security Layers**:
1. **Input Validation**: Path sanitization and dangerous operation detection
2. **Container Isolation**: Docker environment with controlled file access
3. **Permission Boundaries**: Read-only access patterns with explicit write gates
4. **Error Recovery**: Graceful handling of unauthorized operations
### 4. Thinking Modes System
**Purpose**: Computational budget control for Gemini's analysis depth
**Implementation**:
- **Token Allocation**: `minimal (128), low (2048), medium (8192), high (16384), max (32768)`
- **Dynamic Selection**: Tools adjust thinking depth based on task complexity
- **Resource Management**: Prevents token exhaustion on complex analysis
**Usage Pattern**:
```python
# tools/thinkdeep.py:67
thinking_mode = request.get('thinking_mode', 'high')
context_tokens = THINKING_MODE_TOKENS[thinking_mode]
```
### 5. Conversation System
**Purpose**: Cross-session context preservation and threading
**Key Components**:
- **Redis Persistence** (`utils/conversation_memory.py:30`): Thread storage and retrieval
- **Thread Reconstruction**: UUID-based conversation continuity
- **Cross-Tool Continuation**: `continuation_id` parameter for context flow
- **Follow-up Management**: Structured multi-turn conversation support
**Data Structures**:
```python
# utils/conversation_memory.py:45
class ThreadContext:
thread_id: str
tool_history: List[ToolExecution]
conversation_files: List[str]
context_tokens: int
```
## Integration Points
### Configuration Management (config.py)
**Critical Settings**:
- **`GEMINI_MODEL`** (config.py:24): Model selection for API calls
- **`MAX_CONTEXT_TOKENS`** (config.py:30): Token limits for conversation management
- **`REDIS_URL`** (config.py:60): Conversation memory backend
- **`PROJECT_ROOT`** (config.py:15): Security sandbox boundary
### Utility Services
**File Operations** (`utils/file_utils.py`):
- Token-aware reading with priority system
- Directory expansion with filtering
- Error-resistant content formatting
**Git Integration** (`utils/git_utils.py`):
- Repository state analysis for precommit validation
- Change detection for documentation updates
- Branch and commit tracking
**Token Management** (`utils/token_utils.py`):
- Context optimization and pruning
- File prioritization strategies
- Memory usage monitoring
## Data Flow Patterns
### 1. Tool Execution Flow
```
1. Claude sends MCP request with tool name and parameters
2. MCP Engine validates request and routes to appropriate tool
3. Tool loads conversation context from Redis (if continuation_id provided)
4. Tool processes request using Gemini API with thinking mode configuration
5. Tool stores results in conversation memory and returns formatted response
6. MCP Engine serializes response and sends to Claude via stdio
```
### 2. File Processing Pipeline
```
1. File paths received and validated against security rules
2. Docker path translation (host → container mapping)
3. Token budget allocation based on file size and context limits
4. Priority-based file reading (code files > documentation > logs)
5. Content formatting with line numbers and error handling
6. Context assembly with deduplication across conversation turns
```
### 3. Security Validation Chain
```
1. Path Input → Dangerous Path Detection → Rejection/Sanitization
2. Validated Path → Absolute Path Conversion → Sandbox Boundary Check
3. Bounded Path → Docker Translation → Container Path Generation
4. Safe Path → File Operation → Error-Resistant Content Return
```
## Performance Characteristics
### Scalability Factors
- **Concurrent Tool Execution**: AsyncIO enables parallel processing of multiple tool requests
- **Memory Efficiency**: Token-aware file processing prevents memory exhaustion
- **Context Optimization**: Conversation deduplication reduces redundant processing
- **Error Resilience**: Graceful degradation maintains functionality during failures
### Resource Management
- **Token Budgeting**: 40% context reservation (30% Memory Bank + 10% Memory MCP)
- **File Prioritization**: Direct code files prioritized over supporting documentation
- **Redis Optimization**: Thread-based storage with automatic cleanup
- **Gemini API Efficiency**: Thinking mode selection optimizes computational costs
## Extension Points
### Adding New Tools
1. **Inherit from BaseTool** (`tools/base.py:25`)
2. **Implement required methods**: `execute()`, `get_schema()`
3. **Register with MCP Engine**: Add to tool discovery system
4. **Update CLAUDE.md**: Define collaboration patterns and usage guidelines
### Security Extensions
1. **Custom Validators**: Add to `utils/file_utils.py` validation chain
2. **Path Translators**: Extend Docker path mapping for new mount points
3. **Permission Gates**: Implement granular access controls for sensitive operations
### Performance Optimizations
1. **Caching Layers**: Add Redis caching for frequently accessed files
2. **Context Compression**: Implement intelligent context summarization
3. **Parallel Processing**: Extend AsyncIO patterns for I/O-bound operations
---
This architecture provides a robust, secure, and extensible foundation for AI-assisted development workflows while maintaining clear separation of concerns and comprehensive error handling.