Skip to main content
Glama

MCP Prompts Server

# MCP Development Analysis and Recommendations *Comprehensive analysis of GitHub Events project and mcp-prompts project* *Date: August 20, 2025* *Author: AI Assistant Analysis* --- ## Executive Summary After comprehensive analysis of both the **GitHub Events monitoring project** (`gh_events`) and the **mcp-prompts project**, along with research into MCP server development best practices, this document provides strategic recommendations for repository restructuring, Docker containerization improvements, and development workflow optimization. ### Key Findings 1. **GitHub Events Project**: Well-structured Python/FastAPI project with proper Docker containerization, but lacks MCP server implementation despite having MCP endpoints 2. **MCP-Prompts Project**: Sophisticated TypeScript monorepo with hexagonal architecture, existing Docker infrastructure, but shows signs of over-engineering complexity ("prompt rot") 3. **Docker Infrastructure**: Both projects need unified Docker development practices and consistent containerization standards 4. **Architecture Evolution**: Evidence of architectural complexity growth requiring consolidation and simplification --- ## Current State Analysis ### GitHub Events Monitor (`gh_events`) **Strengths:** - ✅ Clean Python architecture with FastAPI - ✅ Proper Docker containerization with health checks - ✅ Database abstraction with async SQLite - ✅ Comprehensive API documentation - ✅ Background task management - ✅ Environment-based configuration - ✅ Visualization capabilities (matplotlib integration) **Gaps:** - ❌ Missing actual MCP server implementation (only has HTTP endpoints) - ❌ No MCP TypeScript SDK integration - ❌ Limited to single-container deployment - ❌ No multi-architecture Docker builds - ❌ Missing development Docker Compose setup **Technical Debt:** ```python # Current: HTTP-only "MCP" endpoints @app.get("/mcp/capabilities") async def get_mcp_capabilities(): # Returns JSON but no actual MCP protocol ``` ### MCP-Prompts Project **Strengths:** - ✅ Hexagonal architecture with clean separation of concerns - ✅ Comprehensive TypeScript implementation with proper types - ✅ Multiple adapter patterns (file, memory, PostgreSQL) - ✅ Extensive testing and validation - ✅ Docker image building pipeline - ✅ Real MCP protocol implementation - ✅ Academic-quality documentation **Complexity Issues:** ```bash # Evidence from commit analysis CSV: - "The Great Genesis": 127 files, +6076 lines (over-engineering) - "The Build Labyrinth": Circular dependencies, complex imports - "The Return to Simplicity": Acknowledgment of over-complexity ``` **Architectural Debt:** - 🔶 Monorepo complexity with 10+ packages - 🔶 Over-abstracted adapter patterns - 🔶 Complex build dependencies - 🔶 Docker configuration scattered across legacy folders --- ## Research Analysis: MCP Development Best Practices Based on analysis of existing MCP ecosystem and official documentation: ### 1. **Protocol Compliance** ```typescript // Proper MCP server structure import { Server } from "@modelcontextprotocol/sdk/server/index.js"; import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js"; const server = new Server({ name: "github-events", version: "1.0.0" }, { capabilities: { tools: {}, resources: {}, prompts: {} } }); ``` ### 2. **Transport Layer Best Practices** - **Stdio** for development and local usage - **SSE/HTTP** for web integrations - **Docker** for production deployments - **Inspector** for debugging ### 3. **Docker Standards for MCP Servers** ```dockerfile # Best practice: Multi-stage builds FROM node:20-alpine AS builder WORKDIR /app COPY package*.json ./ RUN npm ci --only=production FROM node:20-alpine AS runtime WORKDIR /app COPY --from=builder /app/node_modules ./node_modules COPY . . EXPOSE 3000 HEALTHCHECK --interval=30s --timeout=10s --retries=3 \ CMD curl -f http://localhost:3000/health CMD ["node", "index.js"] ``` --- ## Strategic Recommendations ### 1. Repository Restructuring #### Option A: Unified MCP Development Repository ``` sparrow-mcp/ ├── servers/ │ ├── github-events/ # Python MCP server │ ├── prompts/ # TypeScript MCP server │ └── shared/ # Common utilities ├── docker/ │ ├── docker-compose.yml # Development environment │ ├── Dockerfile.python # Python servers │ └── Dockerfile.node # Node.js servers ├── docs/ # Unified documentation └── scripts/ # Common build/deploy scripts ``` #### Option B: Specialized Repositories (Recommended) ``` mcp-github-events/ # Focused Python MCP server ├── Dockerfile ├── docker-compose.yml ├── src/ └── tests/ mcp-prompts-simplified/ # Refactored TypeScript MCP server ├── Dockerfile ├── docker-compose.yml ├── src/ └── tests/ ``` **Recommendation: Option B** for better maintainability and focused development. ### 2. GitHub Events → True MCP Server Migration #### Implementation Plan: ```python # 1. Add MCP SDK dependency # requirements.txt mcp>=1.0.0 # 2. Create proper MCP server from mcp import McpServer, StdioServerTransport from github_events_monitor.collector import GitHubEventsCollector async def serve(): server = McpServer("github-events") @server.tool("get_event_counts") async def get_event_counts(offset_minutes: int): collector = await get_collector_instance() return await collector.get_event_counts_by_type(offset_minutes) # Add other tools... async with StdioServerTransport() as transport: await server.connect(transport) if __name__ == "__main__": asyncio.run(serve()) ``` #### Docker Enhancement: ```dockerfile # Multi-stage build for Python MCP server FROM python:3.11-slim AS builder WORKDIR /app COPY requirements.txt . RUN pip install --no-cache-dir -r requirements.txt FROM python:3.11-slim AS runtime WORKDIR /app COPY --from=builder /usr/local/lib/python3.11/site-packages /usr/local/lib/python3.11/site-packages COPY src/ ./src/ ENV PYTHONPATH=/app/src EXPOSE 8000 HEALTHCHECK --interval=30s --timeout=10s --retries=3 \ CMD python -c "import requests; requests.get('http://localhost:8000/health')" CMD ["python", "-m", "github_events_monitor.mcp_server"] ``` ### 3. MCP-Prompts Simplification Strategy #### Architectural Simplification: ```typescript // Simplified structure (single package) mcp-prompts/ ├── src/ │ ├── server.ts # Main MCP server │ ├── prompts/ # Prompt management │ ├── storage/ # Simple file/postgres adapters │ └── utils/ ├── Dockerfile ├── docker-compose.yml └── package.json # Single package.json ``` #### Consolidation Benefits: - Reduced build complexity - Clearer dependency management - Faster development cycles - Easier Docker builds - Simplified testing ### 4. Unified Docker Development Environment #### Development Docker Compose: ```yaml version: '3.9' services: # GitHub Events MCP Server github-events: build: context: ./github-events dockerfile: Dockerfile ports: - "8000:8000" environment: - DATABASE_PATH=/app/data/github_events.db - GITHUB_TOKEN=${GITHUB_TOKEN} volumes: - ./github-events/data:/app/data - ./github-events/logs:/app/logs healthcheck: test: ["CMD", "curl", "-f", "http://localhost:8000/health"] interval: 30s timeout: 10s retries: 3 # MCP Prompts Server mcp-prompts: build: context: ./mcp-prompts dockerfile: Dockerfile ports: - "3003:3003" environment: - STORAGE_TYPE=file - PROMPTS_DIR=/app/data volumes: - ./mcp-prompts/data:/app/data healthcheck: test: ["CMD", "curl", "-f", "http://localhost:3003/health"] interval: 30s timeout: 10s retries: 3 # MCP Inspector for debugging inspector: image: modelcontextprotocol/inspector:latest ports: - "5173:5173" environment: - MCP_SERVER_URL=http://github-events:8000 depends_on: - github-events - mcp-prompts # Database for development postgres: image: postgres:16-alpine environment: - POSTGRES_DB=mcp_dev - POSTGRES_USER=mcp - POSTGRES_PASSWORD=mcp_dev_pass ports: - "5432:5432" volumes: - postgres_data:/var/lib/postgresql/data volumes: postgres_data: ``` #### Production Docker Optimization: ```dockerfile # Multi-arch build example FROM --platform=$BUILDPLATFORM node:20-alpine AS builder ARG TARGETPLATFORM ARG BUILDPLATFORM WORKDIR /app COPY package*.json ./ RUN npm ci --only=production FROM --platform=$TARGETPLATFORM node:20-alpine AS runtime WORKDIR /app COPY --from=builder /app/node_modules ./node_modules COPY . . USER node HEALTHCHECK --interval=30s --timeout=10s --retries=3 \ CMD wget --no-verbose --tries=1 --spider http://localhost:3003/health CMD ["node", "server.js"] ``` ### 5. Testing and Quality Assurance #### Integrated Testing Strategy: ```yaml # .github/workflows/mcp-servers.yml name: MCP Servers CI/CD on: [push, pull_request] jobs: test-github-events: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - name: Build Docker image run: docker build -t github-events ./github-events - name: Run tests run: docker run --rm github-events python -m pytest - name: Test MCP protocol run: | docker run -d --name gh-events github-events npx @modelcontextprotocol/inspector --test docker://gh-events test-mcp-prompts: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - name: Setup Node.js uses: actions/setup-node@v4 with: node-version: '20' - name: Install dependencies run: npm ci working-directory: ./mcp-prompts - name: Run tests run: npm test working-directory: ./mcp-prompts - name: Build Docker run: docker build -t mcp-prompts ./mcp-prompts - name: Test Docker run: | docker run -d -p 3003:3003 --name prompts mcp-prompts curl -f http://localhost:3003/health integration-test: needs: [test-github-events, test-mcp-prompts] runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - name: Run docker-compose run: docker-compose up -d - name: Wait for services run: sleep 30 - name: Test integration run: | curl -f http://localhost:8000/health curl -f http://localhost:3003/health # Test MCP protocol interaction npx @modelcontextprotocol/inspector --batch-test ``` ### 6. Development Workflow Improvements #### Enhanced Scripts: ```bash #!/bin/bash # scripts/dev-setup.sh set -e echo "🚀 Setting up MCP development environment..." # Check Docker if ! docker --version > /dev/null 2>&1; then echo "❌ Docker required but not installed" exit 1 fi # Check Node.js if ! node --version > /dev/null 2>&1; then echo "❌ Node.js required but not installed" exit 1 fi # Check Python if ! python3 --version > /dev/null 2>&1; then echo "❌ Python 3.11+ required but not installed" exit 1 fi # Build images echo "📦 Building Docker images..." docker build -t github-events ./github-events docker build -t mcp-prompts ./mcp-prompts # Start services echo "🏃 Starting development environment..." docker-compose up -d # Wait for health checks echo "⏳ Waiting for services to be ready..." timeout 60 bash -c 'until curl -f http://localhost:8000/health > /dev/null 2>&1; do sleep 2; done' timeout 60 bash -c 'until curl -f http://localhost:3003/health > /dev/null 2>&1; do sleep 2; done' echo "✅ Development environment ready!" echo "" echo "🔗 Available endpoints:" echo " • GitHub Events: http://localhost:8000" echo " • MCP Prompts: http://localhost:3003" echo " • Inspector: http://localhost:5173" echo " • PostgreSQL: localhost:5432" echo "" echo "🛠️ Quick commands:" echo " • View logs: docker-compose logs -f" echo " • Stop all: docker-compose down" echo " • Rebuild: docker-compose up --build" ``` --- ## Implementation Roadmap ### Phase 1: Foundation (Week 1-2) - [ ] Create unified repository structure - [ ] Implement true MCP server for GitHub Events - [ ] Simplify mcp-prompts architecture - [ ] Establish Docker development environment ### Phase 2: Integration (Week 3-4) - [ ] Docker Compose for multi-service development - [ ] CI/CD pipeline for both projects - [ ] Integration testing with MCP Inspector - [ ] Documentation consolidation ### Phase 3: Optimization (Week 5-6) - [ ] Performance optimization - [ ] Multi-architecture Docker builds - [ ] Production deployment configurations - [ ] Monitoring and observability ### Phase 4: Enhancement (Week 7-8) - [ ] Advanced MCP features implementation - [ ] Cross-server protocol communication - [ ] Extended testing scenarios - [ ] Community documentation --- ## Risk Assessment and Mitigation ### Technical Risks **Risk**: Breaking changes during refactoring **Mitigation**: - Feature flags for gradual migration - Comprehensive test coverage - Staged rollout approach **Risk**: Docker build complexity **Mitigation**: - Multi-stage builds for optimization - Clear documentation and examples - Automated build validation **Risk**: MCP protocol compatibility **Mitigation**: - Use official MCP SDK - Regular testing with MCP Inspector - Version pinning for stability ### Development Risks **Risk**: Over-engineering (lessons from mcp-prompts history) **Mitigation**: - KISS principle enforcement - Regular architecture reviews - Focus on user value over technical elegance **Risk**: Documentation drift **Mitigation**: - Documentation-driven development - Automated doc generation where possible - Regular review cycles --- ## Success Metrics ### Technical Metrics - Build time reduction: Target <5 minutes for full build - Test coverage: Maintain >90% coverage - Docker image size: <500MB per service - Health check response time: <100ms ### Development Metrics - Time to first contribution: <30 minutes from git clone - CI/CD pipeline duration: <10 minutes - Documentation completeness: 100% API coverage - Issue resolution time: <48 hours average ### Quality Metrics - Zero critical security vulnerabilities - MCP protocol compliance: 100% - Cross-platform compatibility (Linux, macOS, Windows) - Performance benchmarks within acceptable ranges --- ## Conclusion The analysis reveals two mature but architecturally different projects that would benefit significantly from: 1. **Architectural Simplification**: Particularly for mcp-prompts, reducing complexity while maintaining functionality 2. **True MCP Implementation**: Converting GitHub Events from HTTP-only to proper MCP protocol 3. **Unified Development Environment**: Docker-based development with consistent practices 4. **Enhanced Testing**: Integration testing with MCP Inspector and automated validation The recommended approach prioritizes simplicity over complexity, following the lessons learned from the mcp-prompts evolution documented in the commit analysis. The goal is robust, maintainable MCP servers that serve real user needs without architectural overhead. **Next Steps**: Begin with Phase 1 implementation, focusing on the GitHub Events MCP server conversion as it represents the quickest path to value delivery. --- *This analysis is based on comprehensive codebase examination, Docker testing, and research into MCP development best practices as of August 2025.*

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-prompts'

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