docker-mcp-server / CLAUDE.md
Peter Michael Gits
Add CLAUDE.md documentation and update version to 0.1.1
450ae85
# CLAUDE.md
This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
## Project Overview
This is a Docker-based Model Context Protocol (MCP) server designed for deployment on Hugging Face Spaces. The project implements a custom MCP server with HTTP wrapper functionality and includes both FastAPI applications and MCP protocol handlers.
## Architecture
### Core Components
- **mcp_server.py**: Core MCP server implementation with JSON-RPC 2.0 protocol handling
- Implements MCP protocol methods (initialize, tools/list, tools/call, resources/list, resources/read)
- Includes sample tools (echo, current_time, calculate, word_count, reverse_text)
- Contains decorator-based tool and resource registration system
- **http_wrapper.py**: FastAPI HTTP wrapper that exposes MCP server over HTTP (main entry point)
- Converts HTTP requests to MCP protocol calls
- Provides web interface and API documentation
- Health check endpoint at `/health`
- **proxy_script.py**: Local proxy for connecting Claude Desktop to remote HTTP MCP server
- Bridges stdio-based MCP protocol to HTTP endpoints
- Configured for Hugging Face Spaces deployment
- **app.py**: Alternative FastAPI app with HuggingFace transformers integration (T5 model)
- **main.py**: Simple hello world script
## Development Commands
### Running Locally
```bash
# Install dependencies
pip install -r requirements.txt
# Run the main HTTP server (recommended)
python3 http_wrapper.py
# Run MCP server in stdio mode
python3 mcp_server.py
# Run alternative app with transformers
python3 app.py
```
### Docker Deployment
```bash
# Build container
docker build -t mcp-server .
# Run container
docker run -p 7860:7860 mcp-server
```
### Testing
- Health check: `curl http://localhost:7860/health`
- List tools: `curl http://localhost:7860/tools`
- API docs available at: `http://localhost:7860/docs`
## Key Technical Details
### MCP Protocol Implementation
- Uses JSON-RPC 2.0 for all communications
- Protocol version: 2024-11-05
- Supports both stdio and HTTP transport modes
### Tool Registration
Tools are registered using the `@server.tool()` decorator with:
- Name and description
- Parameter schema definitions
- Async function implementations
### Resource System
Resources use the `@server.resource()` decorator for URI-based content access.
### Deployment Environment
- Designed for Hugging Face Spaces with Docker SDK
- Default port: 7860
- Health checks configured for container orchestration
- Non-root user execution for security
## Container Configuration
- Base image: python:3.11-slim
- Exposed port: 7860
- Entry point: `http_wrapper.py`
- Health check endpoint: `/health`
- Working directory: `/app`