mcp-server-as-http-python

mcp-server-as-http-python

3.2

If you are the rightful owner of mcp-server-as-http-python and would like to certify it and/or have it hosted online, please leave a comment on the right or send an email to henry@mcphub.com.

The MCP HTTP Server is a Docker-optimized server designed for Python Model Context Protocol (MCP) servers, currently featuring typst-mcp with plans for universal Python MCP server support.

MCP HTTP Server - Python Runtime

A Docker-optimized HTTP server for Python Model Context Protocol (MCP) servers, currently featuring typst-mcp with plans for universal Python MCP server support.

šŸ Python Focused: Optimized for Python MCP servers with automatic dependency management and virtual environment support.

šŸŽÆ MVP with typst-mcp: Currently configured for typst-mcp server, easily extensible to other Python MCP servers.

šŸš€ Future Roadmap: Designed for universal Python MCP server compatibility including filesystem, web-search, and custom servers.

šŸ—ļø Architecture

mcp-server-as-http-python/
ā”œā”€ā”€ Dockerfile              # Python 3.12 optimized container
ā”œā”€ā”€ docker-compose.yml      # Docker Compose configuration  
ā”œā”€ā”€ docker-build.sh         # Build and deployment script
ā”œā”€ā”€ docker-entrypoint.sh    # Initialization script
ā”œā”€ā”€ mcp_servers.config.json # MCP server configuration
ā”œā”€ā”€ .env.example            # Environment template
└── README.md               # This file

Core Components:

  • Pre-built Binary: Uses mcp-server-as-http-core binary (Rust-based HTTP server)
  • Python Environment: Python 3.13 with pip and virtual environment
  • Dynamic Dependencies: Typst binary and Rust toolchain installed only when needed
  • Docker Optimization: Multi-stage build for minimal runtime image

šŸš€ Quick Start

Prerequisites

  • Docker and Docker Compose
  • Git (for repository cloning)

Option 1: Docker Compose (Recommended)

# Clone repository
git clone https://github.com/yonaka15/mcp-server-as-http-python.git
cd mcp-server-as-http-python

# Copy and configure environment
cp .env.example .env
# Edit .env with your settings

# Start with Docker Compose
docker-compose up -d

# View logs
docker-compose logs -f

Option 2: Build Script

# Clone repository
git clone https://github.com/yonaka15/mcp-server-as-http-python.git
cd mcp-server-as-http-python

# Copy and configure environment  
cp .env.example .env
# Edit .env with your settings

# Build and run
./docker-build.sh

# Or use docker-compose via script
./docker-build.sh --use-compose

Option 3: Manual Docker

# Build image
docker build -t mcp-http-server-python .

# Run container
docker run -d \\
  --name mcp-http-server-python \\
  -p 3000:3000 \\
  --env-file .env \\
  mcp-http-server-python

āš™ļø Configuration

Environment Variables

VariableDefaultDescription
MCP_CONFIG_FILEmcp_servers.config.jsonPath to MCP servers configuration
MCP_SERVER_NAMEtypst-mcpServer name to use from config
MCP_RUNTIME_TYPEpythonRuntime type (fixed for this image)
PORT3000HTTP server port
HTTP_API_KEY-Bearer token for authentication
DISABLE_AUTHtrueDisable authentication (default for development)
WORK_DIR/tmp/mcp-serversWorking directory for MCP servers

Automatic MCP Server Management

The mcp-server-as-http-core automatically handles:

  • Repository Cloning: Automatically clones the configured MCP server repository
  • Dependency Installation: Executes build_command to install required dependencies
  • Runtime Management: Launches and manages the MCP server process
  • Dynamic Setup: No manual installation needed - everything is configured via JSON

This approach provides maximum flexibility while maintaining simplicity.

Python MCP Server Configuration

The typst-mcp server provides powerful LaTeX to Typst conversion capabilities:

{
  "version": "1.0",
  "servers": {
    "typst-mcp": {
      "repository": "https://github.com/johannesbrandenburger/typst-mcp.git",
      "build_command": "pip install mcp[cli] numpy pillow",
      "command": "/app/venv/bin/python3",
      "args": ["server.py"],
      "env": {
        "PYTHONPATH": "/tmp/mcp-servers/typst-mcp",
        "VIRTUAL_ENV": "/app/venv",
        "PATH": "/app/venv/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
      }
    }
  }
}

šŸ› ļø API Usage

With Authentication

curl -X POST http://localhost:3000/api/v1 \\
  -H "Authorization: Bearer your-secret-api-key" \\
  -H "Content-Type: application/json" \\
  -d '{"command": "{\\"jsonrpc\\": \\"2.0\\", \\"id\\": 1, \\"method\\": \\"tools/list\\", \\"params\\": {}}"}'

Without Authentication (Default)

Development mode with DISABLE_AUTH=true:

curl -X POST http://localhost:3000/api/v1 \\
  -H "Content-Type: application/json" \\
  -d '{"command": "{\\"jsonrpc\\": \\"2.0\\", \\"id\\": 1, \\"method\\": \\"tools/list\\", \\"params\\": {}}"}'

Test typst-mcp LaTeX Conversion

curl -X POST http://localhost:3000/api/v1 \\
  -H "Content-Type: application/json" \\
  -d '{"command": "{\\"jsonrpc\\": \\"2.0\\", \\"id\\": 1, \\"method\\": \\"tools/call\\", \\"params\\": {\\"name\\": \\"latex_snippet_to_typst\\", \\"arguments\\": {\\"latex_snippet\\": \\"$f \\\\in K(t^H, \\\\beta)_\\\\delta$\\"}}}"}'

Health Check

curl -f http://localhost:3000/health

šŸŽÆ typst-mcp Features

The current MVP focuses on typst-mcp server capabilities:

Available Tools

  1. list_docs_chapters(): Lists all chapters in the Typst documentation
  2. get_docs_chapter(route): Retrieves specific chapter from Typst documentation
  3. latex_snippet_to_typst(latex_snippet): Converts LaTeX code to Typst using Pandoc
  4. check_if_snippet_is_valid_typst_syntax(typst_snippet): Validates Typst code
  5. typst_snippet_to_image(typst_snippet): Renders Typst code to PNG image

Example Workflow

# 1. List available tools
curl -X POST http://localhost:3000/api/v1 \\
  -H "Content-Type: application/json" \\
  -d '{"command": "{\\"jsonrpc\\": \\"2.0\\", \\"id\\": 1, \\"method\\": \\"tools/list\\", \\"params\\": {}}"}'

# 2. Convert LaTeX to Typst
curl -X POST http://localhost:3000/api/v1 \\
  -H "Content-Type: application/json" \\
  -d '{"command": "{\\"jsonrpc\\": \\"2.0\\", \\"id\\": 2, \\"method\\": \\"tools/call\\", \\"params\\": {\\"name\\": \\"latex_snippet_to_typst\\", \\"arguments\\": {\\"latex_snippet\\": \\"\\\\begin{align} a &= b \\\\\\\\ c &= d \\\\end{align}\\"}}}"}'

# 3. Validate Typst syntax
curl -X POST http://localhost:3000/api/v1 \\
  -H "Content-Type: application/json" \\
  -d '{"command": "{\\"jsonrpc\\": \\"2.0\\", \\"id\\": 3, \\"method\\": \\"tools/call\\", \\"params\\": {\\"name\\": \\"check_if_snippet_is_valid_typst_syntax\\", \\"arguments\\": {\\"typst_snippet\\": \\"$f in K \\\\( t^H \\\\, beta \\\\)_delta$\\"}}}"}'

šŸ”® Future Roadmap

This project is designed for universal Python MCP server support:

Planned MCP Servers

{
  "filesystem": {
    "repository": "https://github.com/modelcontextprotocol/python-sdk.git",
    "build_command": "cd examples/server && pip install -e ../../",
    "command": "/app/venv/bin/python3",
    "args": ["examples/server/filesystem.py", "/tmp/mcp-servers"]
  },
  "web-search": {
    "repository": "https://github.com/modelcontextprotocol/servers.git", 
    "build_command": "cd src/brave_search && pip install -r requirements.txt",
    "command": "/app/venv/bin/python3",
    "args": ["src/brave_search/server.py"]
  },
  "memory": {
    "repository": "https://github.com/modelcontextprotocol/servers.git",
    "build_command": "cd src/memory && pip install -r requirements.txt", 
    "command": "/app/venv/bin/python3",
    "args": ["src/memory/server.py"]
  }
}

Extension Strategy

  1. Multi-server Configuration: Switch between different MCP servers via environment variables
  2. Automatic Dependency Management: Auto-detect and install Python dependencies per server
  3. Runtime Detection: Support for different Python MCP server patterns
  4. Plugin System: Easy addition of new Python MCP servers

🐳 Docker Features

Multi-Stage Build

  • Stage 1: Builds the Rust core binary with optimized settings
  • Stage 2: Python 3.12 Alpine runtime with essential tools

Python Optimizations

  • Virtual environment management (/app/venv)
  • Git repository cloning and building
  • Pandoc for LaTeX conversion
  • Typst binary for document generation
  • Non-root user execution

Security

  • Non-root user execution (mcpuser)
  • Minimal runtime dependencies
  • Health check endpoints

šŸ“Š Monitoring and Management

View Logs

# Docker Compose
docker-compose logs -f

# Docker
docker logs -f mcp-http-server-python

Container Management

# Docker Compose
docker-compose up -d      # Start
docker-compose down       # Stop
docker-compose restart    # Restart

# Docker
docker start mcp-http-server-python
docker stop mcp-http-server-python
docker restart mcp-http-server-python

Health Monitoring

# Check container health
docker inspect mcp-http-server-python | grep -A 10 Health

# Manual health check
curl -f http://localhost:3000/health

# Check running processes
docker exec mcp-http-server-python ps aux

šŸ”§ Development and Debugging

Build Options

# Build without cache
./docker-build.sh --no-cache

# Build only (don't run)
./docker-build.sh --build-only

# Custom port
./docker-build.sh --port 3000

# Use docker-compose
./docker-build.sh --use-compose

Debugging

# Execute shell in container
docker exec -it mcp-http-server-python /bin/sh

# Check Python environment
docker exec mcp-http-server-python python3 --version
docker exec mcp-http-server-python pip --version

# Check virtual environment
docker exec mcp-http-server-python ls -la /app/venv/

# Check typst-mcp installation
docker exec mcp-http-server-python ls -la /tmp/mcp-servers/typst-mcp/

# Test typst binary
docker exec mcp-http-server-python typst --version

# Test pandoc
docker exec mcp-http-server-python pandoc --version

šŸ”— Related Projects

šŸ¤ Contributing

  1. Fork the repository
  2. Clone your fork: git clone <your-fork>
  3. Create a feature branch
  4. Make your changes (focus on Python MCP server support)
  5. Test with ./docker-build.sh --build-only
  6. Submit a pull request

Adding New MCP Servers

To add support for additional Python MCP servers:

  1. Update mcp_servers.config.json with new server configuration
  2. Add any required system dependencies to Dockerfile
  3. Update environment variables in .env.example
  4. Add documentation and examples to README.md

šŸ“„ License

This project is open source under the MIT License. See the LICENSE file for details.

āš ļø Important Notes

  • Docker Required: This implementation is Docker-only and requires Docker to run
  • Python Focus: Optimized specifically for Python MCP servers
  • typst-mcp MVP: Currently configured for typst-mcp, extensible to other servers
  • Future Universal: Designed for easy extension to any Python MCP server

šŸ”„ Updates

To update to the latest core server:

# Rebuild with latest core
./docker-build.sh --no-cache

# Or with docker-compose
docker-compose build --no-cache

šŸ†˜ Support

  • Issues: Report bugs and request features in this repository
  • Core Issues: For HTTP server core functionality, use the core repository
  • typst-mcp: For typst-mcp specific issues, use the typst-mcp repository

šŸš€ Deployment Options

Development

# Quick development setup
cp .env.example .env
echo "DISABLE_AUTH=true" >> .env
echo "MCP_SERVER_NAME=typst-mcp" >> .env
docker-compose up -d

Production

# Production setup with authentication
cp .env.example .env
echo "DISABLE_AUTH=false" >> .env
echo "HTTP_API_KEY=your-secure-api-key-here" >> .env
echo "MCP_SERVER_NAME=typst-mcp" >> .env
docker-compose up -d

Built with ā¤ļø for the MCP (Model Context Protocol) community

🐳 Docker-optimized • šŸ Python-focused • šŸ“ typst-mcp ready • šŸš€ Universally extensible