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

πŸš€ 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

-
security - not tested
A
license - permissive license
-
quality - not tested

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/exrienz/pollenai-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server