Advanced MCP HTTP Server
by Deepak31mu
README.md
# MCP HTTP Advanced Host-Client-Server Application
[](https://github.com/yourusername/advanced-mcp-host-client-server-app/actions)
[](https://www.python.org/downloads/)
[](LICENSE)
[](TESTING.md)
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
```bash
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**
```bash
git clone <repo>
cd advanced-mcp-host-client-server-app
pip install -r requirements.txt
```
2. **Set API key**
```bash
export OPENAI_API_KEY=sk-your-key-here
```
3. **Start server**
```bash
python mcp_http_server.py
# Server running on http://127.0.0.1:8000
```
4. **Start AI Host** (new terminal)
```bash
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](QUICKSTART.md) for detailed setup instructions.
## ๐ Documentation
| Document | Purpose |
|----------|---------|
| [QUICKSTART.md](QUICKSTART.md) | 5-minute setup and common tasks |
| [CONFIG.md](CONFIG.md) | Configuration reference with examples |
| [TESTING.md](TESTING.md) | Testing guide with 75+ test cases |
| [PROJECT_REVIEW.md](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
```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](CONFIG.md) for complete configuration guide.
## ๐งช Testing
### Run All Tests
```bash
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](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
```bash
# 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
```bash
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](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
```python
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
```python
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](PROJECT_REVIEW.md#security-checklist) 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](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](QUICKSTART.md) - Common tasks
- [CONFIG.md](CONFIG.md) - Configuration help
- [TESTING.md](TESTING.md) - Test documentation
2. **Review Examples**
- Check [tests/](tests/) for usage examples
- Review [mcp_config.json](mcp_config.json) for setup
3. **Debug Issues**
- Enable debug logging: `LOG_LEVEL=DEBUG`
- Check [PROJECT_REVIEW.md](PROJECT_REVIEW.md) for architecture
- Run tests: `pytest -v` to verify setup
## ๐ Learning Resources
- [Model Context Protocol Spec](https://modelcontextprotocol.io/)
- [OpenAI Function Calling](https://platform.openai.com/docs/guides/function-calling)
- [FastMCP Documentation](https://github.com/jlowin/fastmcp)
- [Gradio Documentation](https://gradio.app/)
---
**Version**: 1.0.0
**Last Updated**: 2024
**Status**: Production Ready โ
Made with โค๏ธ for the agentic engineering community.
This server cannot be deployed
Maintenance
ActivityInactive
ResponsivenessNo issues