mcp-server-as-http-python

yonaka15/mcp-server-as-http-python

3.1

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 dayong@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.

Tools
5
Resources
0
Prompts
0

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