Skip to main content
Glama
exrienz
by exrienz

πŸš€ MCPO - MCP Pollinations Proxy

A Docker-containerized MCP (Model Context Protocol) proxy that combines mcpo CLI tool with Pollinations MCP server, providing AI image, text, audio, and vision generation capabilities through standard REST endpoints.

🌟 Features

🎨 Multimodal AI Capabilities

  • Image Generation: Create stunning images from text prompts with 1024x1024 default resolution

  • Image-to-Image: Transform existing images using text descriptions

  • Vision Analysis: Analyze, describe, compare images and extract text (OCR)

  • Text Generation: Simple and advanced text generation with system prompts

  • Text-to-Speech: Convert text to speech with multiple voice options

  • Audio Generation: Create contextual audio responses

πŸ”§ Technical Features

  • OpenAPI REST Endpoints: Standard HTTP/REST interface for all MCP capabilities

  • Docker Containerized: Easy deployment and consistent environment

  • Real-time Processing: Direct API integration with Pollinations services

  • Multiple Model Support: Access various AI models for different tasks

Related MCP server: MiniMax MCP JS

πŸš€ Quick Start

Prerequisites

  • Docker and Docker Compose

  • Port 7777 available

Installation & Usage

  1. Clone the repository

    git clone <repository-url>
    cd mcpo
  2. Build and run the container

    docker-compose build
    docker-compose up
  3. Access the service

    • Service runs on: http://localhost:7777

    • OpenAPI docs: http://localhost:7777/docs

    • API endpoints: http://localhost:7777/api/...

Development Commands

# Build the container
docker-compose build

# Run in detached mode
docker-compose up -d

# View logs
docker-compose logs

# Stop the service
docker-compose down

🎯 API Endpoints

The service exposes Pollinations MCP server functionality through REST endpoints:

πŸ–ΌοΈ Image Generation

  • POST /api/generateImage - Generate image from text prompt

  • POST /api/generateImageUrl - Get image generation URL

  • POST /api/generateImageToImage - Transform image with text prompt

  • GET /api/listImageModels - List available image models

πŸ“ Text Generation

  • POST /api/generateText - Simple text generation

  • POST /api/generateAdvancedText - Advanced text with system prompts

  • GET /api/listTextModels - List available text models

πŸ‘οΈ Vision & Analysis

  • POST /api/analyzeImageFromUrl - Analyze image from URL

  • POST /api/analyzeImageFromData - Analyze base64 image data

  • POST /api/compareImages - Compare two images

  • POST /api/extractTextFromImage - OCR text extraction

🎡 Audio Generation

  • POST /api/sayText - Text-to-speech conversion

  • POST /api/respondAudio - Generate contextual audio responses

  • GET /api/listAudioVoices - List available voices

πŸ—οΈ Architecture

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”    β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”    β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚   Client App    │───▢│  MCPO Proxy  │───▢│  Pollinations API   β”‚
β”‚   (HTTP/REST)   β”‚    β”‚  (Port 7777) β”‚    β”‚  (MCP Protocol)     β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜    β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜    β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

Container Stack

  • Base: Node.js 18 Alpine Linux

  • Python: Installed for mcpo CLI tool

  • Port: 7777 exposed for HTTP access

  • Host: Configured to bind to 0.0.0.0

Service Flow

  1. Container starts with mcpo CLI tool

  2. mcpo proxies the pollinations-model-context-protocol MCP server

  3. MCP server capabilities become available via OpenAPI endpoints

  4. External applications use standard HTTP/REST calls

πŸ“ Project Structure

mcpo/
β”œβ”€β”€ docker-compose.yml          # Docker compose configuration
β”œβ”€β”€ Dockerfile                  # Container definition
β”œβ”€β”€ CLAUDE.md                   # Development instructions
β”œβ”€β”€ pollinations-mcp-src/       # MCP server source code
β”‚   β”œβ”€β”€ src/
β”‚   β”‚   β”œβ”€β”€ services/
β”‚   β”‚   β”‚   β”œβ”€β”€ imageService.js     # Image generation & transformation
β”‚   β”‚   β”‚   β”œβ”€β”€ textService.js      # Text generation (simple & advanced)
β”‚   β”‚   β”‚   β”œβ”€β”€ audioService.js     # Text-to-speech & audio
β”‚   β”‚   β”‚   β”œβ”€β”€ visionService.js    # Image analysis & OCR
β”‚   β”‚   β”‚   β”œβ”€β”€ authService.js      # Authentication
β”‚   β”‚   β”‚   └── resourceService.js  # Resource management
β”‚   β”‚   β”œβ”€β”€ utils/
β”‚   β”‚   β”‚   β”œβ”€β”€ coreUtils.js        # Core utilities
β”‚   β”‚   β”‚   β”œβ”€β”€ polyfills.js        # Node.js polyfills
β”‚   β”‚   β”‚   └── schemaUtils.js      # Schema validation
β”‚   β”‚   └── index.js                # Main MCP server
β”‚   └── pollinations-mcp.js         # Entry point
└── README.md                    # This file

πŸ”§ Configuration

Default Settings

  • Image Resolution: 1024x1024 pixels

  • Image Quality: Private=true, NoLogo=true, Enhance=true

  • Text Generation: OpenAI-compatible models

  • Audio Format: MP3 with Alloy voice

  • Vision Models: GPT-4o for image analysis

Environment Variables

The container automatically configures the MCP proxy without additional environment variables needed.

🎨 Usage Examples

Image Generation

curl -X POST http://localhost:7777/api/generateImage \
  -H "Content-Type: application/json" \
  -d '{
    "prompt": "A serene mountain landscape at sunset",
    "options": {
      "width": 1024,
      "height": 1024,
      "model": "flux"
    }
  }'

Vision Analysis

curl -X POST http://localhost:7777/api/analyzeImageFromUrl \
  -H "Content-Type: application/json" \
  -d '{
    "imageUrl": "https://example.com/image.jpg",
    "prompt": "What do you see in this image?"
  }'

Text-to-Speech

curl -X POST http://localhost:7777/api/sayText \
  -H "Content-Type: application/json" \
  -d '{
    "text": "Hello, this is a test of text to speech",
    "voice": "alloy",
    "format": "mp3"
  }'

🀝 Contributing

  1. Fork the repository

  2. Create a feature branch (git checkout -b feature/amazing-feature)

  3. Commit your changes (git commit -m 'Add amazing feature')

  4. Push to the branch (git push origin feature/amazing-feature)

  5. Open a Pull Request

πŸ“„ License

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

πŸ™ Acknowledgments


Built with ❀️ using Docker, Node.js, and Python

Related MCP Connectors

Related MCP Servers