A Model Context Protocol (MCP) server that enables AI assistants to generate images, text, and audio through the Pollinations APIs
- Generate image URLs from text prompts
- Generate images and return them as base64-encoded data AND save as png, jpeg, jpg, or webp (default: png)
- Generate text responses from text prompts
- Generate audio responses from text prompts
- List available image and text generation models
- No authentication required
- Simple and lightweight
- Compatible with the Model Context Protocol (MCP)
- Node.js: Version 14.0.0 or higher
- For best performance, we recommend Node.js 16.0.0 or higher
- Node.js versions below 16 use an AbortController polyfill
To install mcpollinations for Claude Desktop automatically via Smithery:
npx -y @smithery/cli install @pinkpixel-dev/mcpollinations --client claude
The easiest way to use the MCP server:
# Run directly with npx (no installation required)
npx @pinkpixel/mcpollinations
If you prefer to install it globally:
# Install globally
npm install -g @pinkpixel/mcpollinations
# Run the server
mcpollinations
# or
npx @pinkpixel/mcpollinations
Or clone the repository:
# Clone the git repository
git clone https://github.com/pinkpixel-dev/mcpollinations.git
# Run the server
mcpollinations
# or
npx @pinkpixel/mcpollinations
# or run directly
node /path/to/MCPollinations/pollinations-mcp-server.js
To integrate the server with applications that support the Model Context Protocol (MCP):
- Generate an MCP configuration file:
# If installed globally
npx @pinkpixel/mcpollinations generate-config
# Or run directly
node /path/to/MCPollinations/generate-mcp-config.js
-
Follow the prompts to customize your configuration or use the defaults.
- Set custom output and temporary directories (defaults to relative paths for portability)
- Windows users: Consider using absolute paths (e.g.,
C:\Users\YourName\Pictures\MCPollinations
) for more reliable file saving
- Windows users: Consider using absolute paths (e.g.,
- Configure optional authentication (token and referrer for enhanced access)
- Configure default parameters for image generation (with a list of available models, dimensions, etc.)
- Configure default parameters for text generation (with a list of available models)
- Configure default parameters for audio generation (voice)
- Specify which tools should be allowed
- Set custom output and temporary directories (defaults to relative paths for portability)
-
Copy the generated
mcp.json
file to your application's MCP settings .json file. -
Restart your application.
After integration, you can use commands like:
"Generate an image of a sunset over the ocean using MCPollinations"
MCPollinations supports optional authentication to provide access to more models and better rate limits. The server works perfectly without authentication (free tier), but users with API tokens can get enhanced access.
Method 1: Environment Variables (Recommended for security)
# Set environment variables before running the server
export POLLINATIONS_TOKEN="your-api-token"
export POLLINATIONS_REFERRER="https://your-domain.com"
# Then run the server
npx @pinkpixel/mcpollinations
Method 2: MCP Configuration File When generating your MCP configuration, you'll be prompted for optional authentication settings:
{
"mcpollinations": {
"auth": {
"token": "your-api-token",
"referrer": "https://your-domain.com"
}
}
}
token
(optional): Your Pollinations API token for enhanced accessreferrer
(optional): Your domain/application referrer URL
Both parameters are completely optional. Leave them empty or unset to use the free tier.
MCPollinations respects your MCP configuration settings as defaults. When you ask an AI assistant to generate content:
- Your configured models, output directories, and parameters are used automatically
- To override: Specifically instruct the AI to use different settings
- "Generate an image using the gptimage model"
- "Save this image to my Desktop folder"
- "Use a temperature of 1.2 for this text generation"
Example Instructions:
- ✅ "Generate a sunset image" → Uses your configured model and output directory
- ✅ "Generate a sunset image with the flux model" → Overrides model only
- ✅ "Generate a sunset image and save it to C:\Pictures" → Overrides output path only
This ensures your preferences are always respected unless you specifically want different settings for a particular request.
If you encounter this error when running the MCP server:
ReferenceError: AbortController is not defined
This is usually caused by running on an older version of Node.js (below version 16.0.0). Try one of these solutions:
-
Update Node.js (recommended):
- Update to Node.js 16.0.0 or newer
-
Use Global Installation
- Update to the latest version of the package:
npm install -g @pinkpixel/mcpollinations # Run with npx npx @pinkpixel/mcpollinations
-
Install AbortController manually:
- If for some reason the polyfill doesn't work:
npm install node-abort-controller
To check your current Node.js version:
node --version
If it shows a version lower than 16.0.0, consider upgrading for best compatibility.
The MCP server provides the following tools:
generateImageUrl
- Generates an image URL from a text promptgenerateImage
- Generates an image, returns it as base64-encoded data, and saves it to a file by default (PNG format)editImage
- NEW! Edit or modify existing images based on text promptsgenerateImageFromReference
- NEW! Generate new images using existing images as referencelistImageModels
- Lists available models for image generation
respondText
- Responds with text to a prompt using text models (customizable parameters)respondAudio
- Generates an audio response to a text prompt (customizable voice parameter)listTextModels
- Lists available models for text generationlistAudioVoices
- Lists all available voices for audio generation
The respondText
tool supports several parameters for fine-tuning text generation:
model
: Choose from available text models (uselistTextModels
to see current options)temperature
(0.0-2.0): Controls randomness in the output- Lower values (0.1-0.7) = more focused and deterministic
- Higher values (0.8-2.0) = more creative and random
top_p
(0.0-1.0): Controls diversity via nucleus sampling- Lower values = more focused on likely tokens
- Higher values = considers more token possibilities
system
: System prompt to guide the model's behavior and personality
// Example options for respondText
const options = {
model: "openai", // Model selection
temperature: 0.7, // Balanced creativity
top_p: 0.9, // High diversity
system: "You are a helpful assistant that explains things clearly and concisely."
};
In your MCP configuration, you can set defaults:
{
"default_params": {
"text": {
"model": "openai",
"temperature": 0.7,
"top_p": 0.9,
"system": "You are a helpful coding assistant."
}
}
}
MCPollinations now supports powerful image-to-image generation with two specialized tools:
Perfect for modifying existing images:
- Remove objects: "remove the cat from this image"
- Add elements: "add a dog to this scene"
- Change backgrounds: "replace the background with mountains"
- Style modifications: "make the lighting more dramatic"
Perfect for creating variations and new styles:
- Style transfer: "make this photo look like a painting"
- Format changes: "convert this to a cartoon style"
- Creative variations: "create a futuristic version of this"
- Artistic interpretations: "make this look like a sketch"
gptimage
: Versatile model for both editing and reference generationkontext
: Specialized model optimized for image-to-image tasks
// Edit an existing image
const editResult = await editImage(
"change the background to a sunset beach",
"https://example.com/photo.jpg",
"gptimage"
);
// Generate from reference
const referenceResult = await generateImageFromReference(
"make this into a watercolor painting",
"https://example.com/photo.jpg",
"kontext"
);
Generate images with transparent backgrounds using the gptimage
model:
- Perfect for logos, icons, and graphics
- Set
transparent: true
in your requests - Only works with the
gptimage
model
When using the generateImage
tool:
- Images are saved to disk by default as PNG files
- The default save location is the current working directory where the MCP server is running
- The 'flux' model is used by default
- A random seed is generated by default for each image (ensuring variety)
- Base64-encoded image data is always returned, regardless of whether the image is saved to a file
// Example options for generateImage
const options = {
// Model selection (defaults to 'flux')
model: "flux",
// Image dimensions
width: 1024,
height: 1024,
// Generation options
seed: 12345, // Specific seed for reproducibility (defaults to random)
enhance: true, // Enhance the prompt using an LLM before generating (defaults to true)
safe: false, // Content filtering (defaults to false)
transparent: false, // Generate with transparent background (gptimage model only)
// File saving options
saveToFile: true, // Set to false to skip saving to disk
outputPath: "/path/to/save/directory", // Custom save location
fileName: "my_custom_name", // Without extension
format: "png" // png, jpeg, jpg, or webp
};
When using Claude or another application with the MCP server:
-
Images are saved in the current working directory of where the MCP server is running, not where Claude or the client application is installed.
-
If you start the MCP server manually from a specific directory, images will be saved there by default.
-
If Claude Desktop launches the MCP server automatically, images will be saved in Claude Desktop's working directory (typically in an application data folder).
💡 Windows Users: For reliable file saving on Windows, use absolute paths in your MCP configuration instead of relative paths (e.g., C:\Users\YourName\Pictures\MCPollinations
instead of ./mcpollinations-output
). Relative paths may not resolve as expected depending on the working directory context.
- The response from Claude after generating an image includes the full file path where the image was saved
- You can specify a familiar location using the
outputPath
parameter - Best practice: Ask Claude to save images to an easily accessible folder like your Pictures or Downloads directory
The MCP server ensures that generated images always have unique filenames and will never overwrite existing files:
-
Default filenames include:
- A sanitized version of the prompt (first 20 characters)
- A timestamp
- A random suffix
-
Custom filenames are also protected:
- If you specify a filename and a file with that name already exists, a numeric suffix will be added automatically
- For example:
sunset.png
,sunset_1.png
,sunset_2.png
, etc.
This means you can safely generate multiple images with the same prompt or filename without worrying about overwriting previous images.
Even when saving to a file, the base64-encoded image data is always returned and can be used for:
- Embedding in web pages (
<img src="data:image/png;base64,..." />
) - Passing to other services or APIs
- Processing in memory without filesystem operations
- Displaying in applications that support data URIs
If you want to use the package in your own projects:
# Install as a dependency
npm install @pinkpixel/mcpollinations
# Import in your code
import { generateImageUrl, generateImage, repsondText, respondAudio, listTextModels, listImageModels, listAudioVoices } from '@pinkpixel/mcpollinations';