MCP HTTP Advanced Host-Client-Server Application

CI/CDPython 3.9+License: MITCoverage: 90%+

A production-ready implementation of the Model Context Protocol (MCP) over HTTP with LLM tool integration, featuring OpenAI GPT models, comprehensive security, resilience patterns, and enterprise testing.

๐ŸŽฏ Key Features

Core Capabilities

  • โœ… HTTP-based MCP - Distributed tool protocol over HTTP
  • โœ… LLM Integration - OpenAI GPT model with function calling
  • โœ… Filesystem Tools - Read/write files with security
  • โœ… Web UI - Gradio interface for exploration and testing
  • โœ… AI Agent - Autonomous tool execution based on user intent

Production Ready

  • โœ… Configuration Management - JSON config with env var substitution
  • โœ… Security - Path traversal prevention, input validation, UTF-8 enforcement
  • โœ… Resilience - Connection retry, heartbeat verification, error recovery
  • โœ… Logging - Structured logging with configurable levels
  • โœ… Testing - 75+ tests with 90%+ coverage, CI/CD pipeline
  • โœ… Documentation - Comprehensive guides for configuration and testing

๐Ÿ“ฆ What's Included

๐ŸŽฏ mcp_http_server.py          HTTP MCP Server (FastMCP)
๐ŸŽจ mcp_http_client_app.py      Web UI (Gradio) for exploration
๐Ÿค– mcp_http_host_app.py        AI Agent with OpenAI integration
๐Ÿ“‹ mcp_config.py               Configuration management with priority resolution
โš™๏ธ  mcp_config.json            Production configuration
๐Ÿงช tests/                      75+ test cases with pytest
๐Ÿ”„ .github/workflows/ci_cd.yml  GitHub Actions CI/CD pipeline
๐Ÿ“š Documentation               Guides for quick start, config, testing, and review

๐Ÿš€ Quick Start (5 minutes)

Prerequisites

python 3.9+          # For async/await and type hints
pip package manager  # For dependency installation
OpenAI API key       # For GPT model access

Installation

  1. Clone and setup

    git clone <repo>
    cd advanced-mcp-host-client-server-app
    pip install -r requirements.txt
    
  2. Set API key

    export OPENAI_API_KEY=sk-your-key-here
    
  3. Start server

    python mcp_http_server.py
    # Server running on http://127.0.0.1:8000
    
  4. Start AI Host (new terminal)

    python mcp_http_host_app.py http://127.0.0.1:8000 ./workspace
    # Access at http://127.0.0.1:7862
    
  5. Chat with AI

    • Go to http://127.0.0.1:7862
    • Type: "List the files in workspace"
    • AI calls list_files tool automatically!

See QUICKSTART.md for detailed setup instructions.

๐Ÿ“– Documentation

Document Purpose
QUICKSTART.md 5-minute setup and common tasks
CONFIG.md Configuration reference with examples
TESTING.md Testing guide with 75+ test cases
PROJECT_REVIEW.md Complete technical review and architecture

๐Ÿ—๏ธ Architecture

Component Diagram

โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚              MCP Application Suite                    โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜

    GUI Client                AI Host App            API Clients
   (Gradio UI)         (GPT + Tool Calling)       (Custom clients)
        โ”‚                     โ”‚                        โ”‚
        โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
                              โ”‚
                         HTTP/Streamable
                              โ”‚
                    โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ–ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
                    โ”‚  HTTP MCP Server   โ”‚
                    โ”‚   (FastMCP)        โ”‚
                    โ”‚                    โ”‚
                    โ”‚ โ€ข File Tools       โ”‚
                    โ”‚ โ€ข Resources        โ”‚
                    โ”‚ โ€ข Prompts          โ”‚
                    โ”‚ โ€ข Analysis         โ”‚
                    โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
                              โ”‚
                         Workspace
                    (./workspace files)

Component Responsibilities

  • mcp_http_server.py: Exposes filesystem and analysis tools via HTTP MCP
  • mcp_http_client_app.py: Web UI for exploring tools, resources, and prompts
  • mcp_http_host_app.py: LLM agent that calls tools autonomously
  • mcp_config.py: Centralized configuration with priority resolution
  • tests/: Comprehensive test suite for reliability

๐Ÿ”’ Security Features

Feature Purpose Example
Roots Validation Prevent directory traversal Blocks ../../etc/passwd
Path Checking Block absolute paths Rejects /etc/passwd
Input Validation Sanitize parameters Checks for special chars
UTF-8 Encoding Prevent encoding attacks Enforces UTF-8 on files
Error Safety No path disclosure Returns safe error messages

โš™๏ธ Configuration

Three Tiers (Priority)

1. Command-line arguments  (Highest priority)
   โ””โ”€ python app.py --model gpt-4o

2. Configuration file
   โ””โ”€ mcp_config.json with "model": "gpt-4o-mini"

3. Environment variables
   โ””โ”€ export OPENAI_MODEL=gpt-4o-mini

4. Hardcoded defaults      (Lowest priority)
   โ””โ”€ DEFAULT_MODEL = "gpt-4o-mini"

Example mcp_config.json

{
  "openai": {
    "api_key": "${OPENAI_API_KEY}",
    "model": "gpt-4o-mini"
  },
  "server": {
    "host": "127.0.0.1",
    "port": 8000
  },
  "gui": {
    "host": "127.0.0.1",
    "port": 7862
  },
  "logging": {
    "level": "INFO"
  }
}

See CONFIG.md for complete configuration guide.

๐Ÿงช Testing

Run All Tests

pip install -r requirements-test.txt
pytest tests/ -v

Test Coverage

  • Overall: 90%+
  • Config module: 95%+
  • Server module: 90%+
  • Client module: 85%+

Test Types

  • Unit Tests (60%): Fast, isolated component tests
  • Security Tests (20%): Vulnerability and attack prevention
  • Integration Tests (20%): Real-world scenarios

See TESTING.md for comprehensive testing guide.

๐Ÿ”„ Resilience Features

Feature Impact Details
Connection Retry Automatic recovery 3 attempts, 1s delay
Heartbeat Detects dead connections 2s verification timeout
History Bounded Prevents token overflow Max 20 messages
Error Recovery Graceful degradation Logs errors, continues

๐Ÿ“Š Performance

Metric Value
Server Throughput ~100+ requests/second
Tool Call Latency <50ms (local network)
Connection Time <1 second (with retry)
Memory Baseline ~100MB
Max History 20 messages (bounded)

๐Ÿš€ Deployment

Local Development

# Terminal 1: Server
python mcp_http_server.py

# Terminal 2: GUI Client
python mcp_http_client_app.py http://localhost:8000 ./workspace

# Terminal 3: AI Host
python mcp_http_host_app.py http://localhost:8000 ./workspace

Docker

docker build -t mcp-app .
docker run -e OPENAI_API_KEY=$OPENAI_API_KEY -p 8000:8000 -p 7862:7862 mcp-app

GitHub Actions CI/CD

  • โœ… Automated testing on Python 3.9-3.11
  • โœ… Runs on Linux, macOS, Windows
  • โœ… Code quality checks (pylint, black, flake8, mypy)
  • โœ… Security checks (bandit, safety)
  • โœ… Coverage reporting

See PROJECT_REVIEW.md for deployment details.

๐Ÿ› ๏ธ Tools & Technologies

Core

  • FastMCP 2.12.5: MCP server framework
  • OpenAI SDK 2.6.1: GPT model integration
  • Gradio 5.49.1: Web UI framework
  • Uvicorn 0.38.0: ASGI server
  • HTTPx: HTTP client

Testing

  • Pytest 7.4.3: Test framework
  • Pytest-asyncio: Async test support
  • Pytest-cov: Coverage reporting
  • Black, Pylint, Flake8, MyPy: Code quality

๐Ÿ“ API Reference

Server Tools

read_file(filepath: str) -> str
  # Read file from workspace

write_file(filepath: str, content: str) -> str
  # Write file to workspace

list_files(directory: str) -> List[str]
  # List directory contents

analyze_code(code: str, focus: str = "") -> str
  # Analyze code with LLM

Client Methods

await client.connect()
await client.list_tools()
await client.call_tool(name, arguments)
await client.list_resources()
await client.read_resource(uri)
await client.list_prompts()
await client.get_prompt(name, arguments)

๐Ÿ” Security Considerations

โœ… Implemented

  • Path traversal prevention
  • Input validation on all parameters
  • UTF-8 encoding enforcement
  • Error message safety
  • Dependency security checks (CI/CD)

โš ๏ธ To Implement

  • API authentication
  • Authorization/RBAC
  • Rate limiting
  • Request signing
  • Data encryption at rest

See PROJECT_REVIEW.md for security details.

๐Ÿค Contributing

  1. Fork the repository
  2. Create a feature branch (git checkout -b feature/amazing-feature)
  3. Commit changes (git commit -m 'Add amazing feature')
  4. Push to branch (git push origin feature/amazing-feature)
  5. Open a Pull Request

All PRs must:

  • โœ… Pass all tests
  • โœ… Maintain 90%+ coverage
  • โœ… Pass code quality checks
  • โœ… Include documentation

๐Ÿ“‹ Project Status

โœ… Completed

  • HTTP MCP server with filesystem tools
  • Gradio web UI for tool exploration
  • OpenAI integration with function calling
  • Configuration management system
  • 75+ test cases with CI/CD pipeline
  • Comprehensive documentation
  • Security hardening
  • Resilience patterns

๐Ÿšง In Progress

  • Enhanced monitoring and metrics
  • Performance optimization
  • Extended logging

๐Ÿ“‹ Planned

  • Multi-instance load balancing
  • Persistent conversation storage
  • Database-backed file storage
  • Authentication/authorization
  • WebSocket support
  • Batch operations
  • Custom tool templates

๐Ÿ“„ License

This project is licensed under the MIT License - see LICENSE file for details.

๐Ÿ‘ฅ Author

Deepak Upadhyay - Engineering

๐Ÿ™ Acknowledgments

  • FastMCP team for MCP server framework
  • OpenAI for GPT model APIs
  • Gradio for web UI components
  • Python async/await ecosystem

๐Ÿ“ž Support

For issues, questions, or feature requests:

  1. Check Documentation

    • QUICKSTART.md - Common tasks
    • CONFIG.md - Configuration help
    • TESTING.md - Test documentation
  2. Review Examples

    • Check tests/ for usage examples
    • Review mcp_config.json for setup
  3. Debug Issues

    • Enable debug logging: LOG_LEVEL=DEBUG
    • Check PROJECT_REVIEW.md for architecture
    • Run tests: pytest -v to verify setup

๐ŸŽ“ Learning Resources

Version: 1.0.0 Last Updated: 2024 Status: Production Ready โœ…

Made with โค๏ธ for the agentic engineering community.

MCP Server ยท Populars

MCP Server ยท New

    jackccrawford

    Geniuz

    Your AI remembers now. Geniuz stores everything in a local database locally on Mac, Windows, Linux, Raspberry Pi. No cloud. No account. No API keys. Nothing leaves your machine. It's open source; you can read every line of code.

    Community jackccrawford
    ggui-ai

    ggui

    The universal interface layer between AI agents and humans. Generate rich UIs on demand via MCP.

    Community ggui-ai
    aanno

    CocoIndex Code MCP Server

    An RAG for code development, implemented as MCP server with cocoindex

    Community aanno
    timescale

    Tiger Linear MCP Server

    A wrapper around the Linear API for internal LLMs

    Community timescale
    choplin

    MCP Gemini CLI

    MCP Server

    Community choplin