Nectar-MCP
Nectar MCP
Nectar is a stdio MCP server for Pollinations image, video, and audio generation. It gives MCP clients a focused set of creative media tools.
You can generate and edit images, create videos, and generate speech, music, or sound effects. Nectar also lists live models and checks pollen balance. It is intentionally not a full Pollinations wrapper. Text generation, transcription, embeddings, and unrelated account tools remain out of scope.
Tools
Tool | Purpose |
| Lists current image, video, and audio models from Pollinations using separate 15-minute catalog caches, compact summaries, sorting, and capability filters. |
| Returns full metadata for one image, video, or audio model by name or alias. |
| Generates an image from a text prompt with model, size/dimensions, quality, seed, safety, transparency, prompt enhancement, negative prompt, reference image, and response format options. |
| Edits one or more image URLs using a text prompt, with model, size/dimensions, quality, seed, safety, transparency, prompt enhancement, negative prompt, and response format options. |
| Generates a video from a text prompt, with model, duration, aspect ratio, resolution, seed, audio, safety, quality, and reference-frame controls. |
| Generates speech, music, or sound effects with a selected audio model and optional voice, then saves the returned audio locally by default. |
| Checks the authenticated pollen balance or API key budget. |
Related MCP server: ImageGen MCP
Requirements
Node.js 20 or newer
A Pollinations API key from enter.pollinations.ai
Model listing does not require authentication. Generation and balance tools require POLLINATIONS_API_KEY.
Generated images, edited images, videos, and audio are saved locally by default. Set NECTAR_OUTPUT_DIR in your MCP client environment block to choose the default output folder. You can also pass output_dir per tool call.
Install
MCP Client Config
Most MCP clients should pass the API key through the server env block:
{
"mcpServers": {
"pixara": {
"command": "npx",
"args": ["-y", "@pinkpixel/nectar-mcp"],
"env": {
"POLLINATIONS_API_KEY": "sk_your_key_here",
"NECTAR_OUTPUT_DIR": "/absolute/path/to/nectar-output"
}
}
}
}For local development:
git clone https://github.com/pinkpixel-dev/nectar-mcp.git
cd nectar-mcp
npm install
npm run build{
"mcpServers": {
"nectar": {
"command": "node",
"args": ["/absolute/path/to/nectar-mcp/dist/index.js"],
"env": {
"POLLINATIONS_API_KEY": "sk_your_key_here",
"NECTAR_OUTPUT_DIR": "/absolute/path/to/nectar-output"
}
}
}
}Example Requests
Ask your MCP client:
List Pollinations video models and help me choose one for a 9:16 product teaser.Generate a 1024x1024 image of a tiny yellow robot painter in a polished dark UI style.Edit this image URL so the background is transparent and the subject looks more premium.Generate a 6 second 16:9 video of a glowing pollen trail drifting across a dark studio surface.Generate a warm spoken welcome with the nova voice using a current Pollinations speech model.Generate a short lo-fi instrumental with soft piano, brushed drums, and a quiet vinyl texture.Generate the sound of a heavy wooden door closing in a large stone hall.Notes
Image generation uses Pollinations' OpenAI-compatible image generation endpoint.
Image editing currently supports image URLs. Local multipart file upload is intentionally left out of v1.
Image, video, and audio tools default to
save_output: true, converting base64 responses and downloaded URLs into local files.Image generation and image editing default to Pollinations
response_format: "b64_json"because local decoding is the most reliable save path.Saved files go to
output_dir,NECTAR_OUTPUT_DIR, or./nectar-output, in that order.Saved Pollinations media URLs are downloaded with the configured
POLLINATIONS_API_KEY. Nectar does not send that key to non-Pollinations URLs.Tool descriptions intentionally include model examples, parameter guidance, return shape notes, and error-handling hints so MCP clients have enough context to call the tools correctly.
Model listing is compact by default. Audio discovery reads
/audio/models, including live voice metadata when Pollinations supplies it.Use
pollinations_get_model_detailswhen an agent needs full raw metadata for one model.Video generation returns the final media URL and response metadata.
Audio generation uses
GET /audio/{text}. The selected model determines whether the prompt produces speech, music, or a sound effect.Audio saving detects common MP3, WAV, FLAC, Ogg/Opus, AAC, MP4 audio, WebM audio, and PCM media types.
Model support varies by capability, so call
pollinations_list_modelsbefore using model-specific options.The server never stores your API key. Your MCP client passes it through the process environment.
Development
npm run typecheck
npm run buildThe server communicates over stdio and will stay running when started directly. Use an MCP client or inspector to interact with it.
License
Apache-2.0
Made by Pink Pixel.
Available Tools
6 toolspollinations_check_balanceCheck Pollinations BalanceARead-onlyIdempotent
Check the authenticated Pollinations pollen balance or API key budget by calling /account/balance. Use this before expensive image/video generation when the user asks about available pollen, credits, budget, or why a generation may be failing with payment/balance errors. Requires POLLINATIONS_API_KEY in the MCP client's env block. Args: - response_format (string, optional, default markdown): markdown for readable balance output, json for raw account/budget response. Returns: The remaining pollen balance or API key budget fields returned by Pollinations. Error handling: 401 means the MCP server is missing POLLINATIONS_API_KEY or the key is invalid. 403 means the key lacks account:usage permission. 402 on generation tools means insufficient pollen, so use this tool to confirm the balance.
Inputs: response_format.
pollinations_edit_imageEdit Pollinations ImageA
Edit or transform existing image URL(s) with Pollinations using a text instruction. This calls Pollinations' OpenAI-compatible image editing endpoint with JSON image URLs. Use this when the user provides one or more source images and wants changes such as restyling, object/background changes, cleanup, transparent background, composition changes, or image-to-image transformations. Do NOT use this for a brand-new image with no source image; use pollinations_generate_image instead. Args: - prompt (string, required): Editing instruction. Say exactly what to change and what to preserve. Example: 'keep the bee robot unchanged, replace the background with a dark charcoal studio surface, make the wings more translucent'. - image (string or string[], required): Source image URL or URLs. Local file paths are not supported in v1. If the user has a local image, upload it elsewhere first or use a public/content-addressed URL. - model (string, optional): Image-editing-capable Pollinations model. Good candidates may include kontext, gptimage, gptimage-large, gpt-image-2, seedream, seedream-pro, nanobanana, nanobanana-2, nanobanana-pro, klein, p-image-edit. Call pollinations_list_models first if unsure. - n (number, optional, default 1): Number of edited outputs. Pollinations currently supports max 1. - size (string, optional): Output size as WIDTHxHEIGHT, e.g. 1024x1024. If omitted, Pollinations chooses the default. If width and height are provided and size is omitted, Nectar sends WIDTHxHEIGHT as size. - width and height (numbers, optional): Alternative output dimension controls. - quality (string, optional): standard, hd, low, medium, or high. Best supported by gptimage/gpt-image models; unsupported models may ignore it. - response_format (string, optional, default b64_json): b64_json is preferred for local saving because Nectar can decode it directly. Use url only when the caller explicitly wants a Pollinations URL instead of embedded image data. - save_output (boolean, optional, default true): Save returned image data or URL media to a local file and include the path in the result. - output_dir (string, optional): Directory for saved files. Defaults to NECTAR_OUTPUT_DIR or ./nectar-output relative to the server process. - filename_prefix (string, optional): Prefix for saved media filenames. Nectar sanitizes this value. - seed (number, optional): Reproducibility seed where supported. Use -1 for random. - enhance (boolean, optional): Ask Pollinations to enhance the prompt where supported. - negative_prompt (string, optional): Things to avoid in the edited output, where supported. - transparent (boolean, optional): Request transparent output. Best supported by gptimage, gptimage-large, and gpt-image-2. - safe (string, optional): Comma-separated safety filters: privacy, secrets, sexual, violence, shield, true, nsfw. - user (string, optional): End-user identifier for abuse tracking. - output_format (string, optional, default markdown): markdown summary or raw json response. Returns: Markdown or JSON with the edited image URL, base64 length, and revised_prompt when returned. Examples: Use when the user says 'make this image transparent', 'change the outfit', 'turn this logo into a sticker', or 'use this reference image but make it cyberpunk'. Error handling: 401 means missing/invalid POLLINATIONS_API_KEY. 402 means insufficient pollen. 403 means selected model/key permission issue. 400 usually means an unsupported edit model, invalid image URL, or conflicting options; call pollinations_list_models and retry with a model that supports editing.
Inputs: image (required), prompt (required), n, safe, +15 more.
pollinations_generate_imageGenerate Pollinations ImageA
Generate an image from a text prompt using Pollinations image models. This calls Pollinations' OpenAI-compatible image generation endpoint and returns either a generated image URL or base64 image data. Use this when the user wants a new image from text, optionally with reference images for image-to-image generation. Do NOT use this for editing an existing image with specific source-image transformation instructions; use pollinations_edit_image instead. Args: - prompt (string, required): Text description of the desired image. Be specific about subject, style, composition, lighting, colors, and any text that should appear. - model (string, optional): Pollinations image model slug. Known image models include kontext, nanobanana, nanobanana-2, nanobanana-2-lite, nanobanana-pro, seedream5, seedream5-pro, seedream, seedream-pro, ideogram-v4-turbo, ideogram-v4-balanced, ideogram-v4-quality, gptimage, gptimage-large, gpt-image-2, flux, zimage, wan-image, wan-image-pro, qwen-image, grok-imagine, grok-imagine-pro, klein, p-image, p-image-edit, nova-canvas. Call pollinations_list_models first for current pricing/capabilities. - n (number, optional, default 1): Number of images. Pollinations currently supports max 1. - size (string, optional): Output size as WIDTHxHEIGHT, e.g. 1024x1024, 1536x1024, 1024x1536. Do not combine with width/height unless intentionally overriding. - width and height (numbers, optional): Alternative dimension controls. If both are provided and size is omitted, Nectar sends size as WIDTHxHEIGHT. - quality (string, optional): standard, hd, low, medium, or high. Best supported by gptimage, gptimage-large, and gpt-image-2; other models may ignore it. - response_format (string, optional, default b64_json): b64_json is preferred for local saving because Nectar can decode it directly. Use url only when the caller explicitly wants a Pollinations URL instead of embedded image data. - save_output (boolean, optional, default true): Save returned image data or URL media to a local file and include the path in the result. - output_dir (string, optional): Directory for saved files. Defaults to NECTAR_OUTPUT_DIR or ./nectar-output relative to the server process. - filename_prefix (string, optional): Prefix for saved media filenames. Nectar sanitizes this value. - image (string or string[], optional): Reference image URL(s) for image-to-image generation on supported models such as kontext, gptimage, seedream, klein, and nanobanana. - seed (number, optional): Reproducibility seed. Use -1 for random. Supported by models such as flux, zimage, seedream, and klein; other models may ignore it. - enhance (boolean, optional): Ask Pollinations to enhance/expand the prompt when supported. - negative_prompt (string, optional): Things to avoid in the generated image when supported. - transparent (boolean, optional): Request a transparent background. Only supported by gptimage, gptimage-large, and gpt-image-2. - safe (string, optional): Comma-separated safety filters: privacy, secrets, sexual, violence, shield, true, nsfw. true means privacy,secrets. nsfw means sexual,violence. - user (string, optional): End-user identifier for abuse tracking. - output_format (string, optional, default markdown): markdown summary or raw json response. Returns: Markdown or JSON with the generated URL, base64 length, and revised_prompt when Pollinations returns one. Examples: Use model=flux, prompt only for a general image. Use model=gpt-image-2 with transparent=true for a transparent asset. Use image=[url] with kontext or nanobanana for image-to-image reference generation. Error handling: 401 means missing/invalid POLLINATIONS_API_KEY in the MCP env block. 402 means insufficient pollen balance. 403 means the key lacks permission for the selected model. 429 means wait and retry. 400 usually means conflicting or unsupported parameters; call pollinations_list_models and retry with model-supported options.
Inputs: prompt (required), n, safe, seed, +15 more.
pollinations_generate_videoGenerate Pollinations VideoA
Generate a video from a text prompt using Pollinations video models. This calls GET /video/{prompt} and returns the final media URL plus response metadata. Use this when the user wants text-to-video or image-to-video output. For static images, use pollinations_generate_image instead. Args: - prompt (string, required): Text description of the video. Include subject, scene, motion, camera movement, mood, lighting, style, and any timing notes. - model (string, required): Pollinations video model slug. Known video models include veo, seedance-pro, seedance-2.0, wan, wan-fast, wan-pro, wan-pro-1080p, grok-video-pro, ltx-2, p-video-720p, p-video-1080p, nova-reel. Call pollinations_list_models with modality=video first for current capabilities/pricing. - duration (number, optional, 1-120): Duration in seconds. Model rules vary: veo supports 4, 6, or 8s; seedance supports 2-10s; seedance-2.0 supports 4-15s; wan supports 2-15s; nova-reel supports 6-120s in multiples of 6. - aspectRatio (string, optional): 16:9 or 9:16. Use 16:9 for landscape, 9:16 for vertical/social video. If omitted, Pollinations may derive it from width/height. - width and height (numbers, optional): Requested dimensions. Video models map these to nearest supported resolution tiers such as 480p, 720p, or 1080p. - image (string or string[], optional): Reference frame URL(s). For video, image[0] is the start frame. image[1] is the end frame for models with end_frame support. End frame is documented for veo, seedance, seedance-2.0, and wan-fast; other models may ignore image[1]. - audio (boolean, optional): Request generated audio where supported. For veo, set true to enable audio. wan may generate audio regardless of this flag. - seed (number, optional): Reproducibility seed. Use -1 for random. Supported by seedance and nova-reel; unsupported models may ignore it. - quality (string, optional): low, medium, high, or hd. Unsupported models may ignore it. - safe (string, optional): Comma-separated safety filters: privacy, secrets, sexual, violence, shield, true, nsfw. - save_output (boolean, optional, default true): Download and save the returned video URL to a local file and include the path in the result. - output_dir (string, optional): Directory for saved files. Defaults to NECTAR_OUTPUT_DIR or ./nectar-output relative to the server process. - filename_prefix (string, optional): Prefix for saved video filenames. Nectar sanitizes this value. - response_format (string, optional, default markdown): markdown summary or json metadata. Returns: Markdown or JSON containing the video URL, content type, and content length when available. Examples: Use model=veo duration=8 aspectRatio=16:9 for a polished landscape clip. Use image=[startUrl,endUrl] with seedance-2.0 or wan-fast for first/last-frame interpolation. Use aspectRatio=9:16 for TikTok/Reels style output. Error handling: 401 means missing/invalid POLLINATIONS_API_KEY. 402 means insufficient pollen. 403 means key/model permission issue. 429 means wait and retry. 400 often means invalid duration/aspect/model combination; call pollinations_list_models and retry with supported values.
Inputs: model (required), prompt (required), safe, seed, +11 more.
pollinations_get_model_detailsGet Pollinations Model DetailsARead-onlyIdempotent
Get full metadata for one Pollinations image or video model by name or alias. Use this after pollinations_list_models when an agent needs exact pricing, capabilities, reference-image limits, input/output modalities, aliases, or raw fields for a specific model. Results use the same 15-minute in-memory model catalog cache unless refresh=true. Args: - model (string, required): Model name or alias, e.g. nanobanana, p-image-edit, ltx-2, wan-fast, veo. - refresh (boolean, optional, default false): Bypass the 15-minute cache and refetch /image/models first. - response_format (string, optional, default markdown): markdown for readable details, json for raw model metadata. Returns: Full metadata for the matching model. If no model matches, call pollinations_list_models with a broader search.
Inputs: model (required), refresh, response_format.
pollinations_list_modelsList Pollinations ModelsARead-onlyIdempotent
List currently available Pollinations image and video models from /image/models. Results are cached in memory for 15 minutes, so repeated calls are fast. Use this before generation when model choice, pricing, modality, reference-image support, end-frame support, or audio support is unclear. This tool does not require POLLINATIONS_API_KEY. Args: - modality (string, optional, default all): all, image, or video. Use image before image generation/editing. Use video before video generation. - search (string, optional): Case-insensitive search across model names, aliases, brands, descriptions, pricing, capabilities, and raw metadata. Examples: 'gpt', 'transparent', 'end_frame', 'audio', 'seedance', 'banana', 'edit'. Do not use search='cheap' to find cheapest; inspect the Pricing lines instead. - limit (number, optional, default 50, max 100): Maximum number of models to return. - detail (string, optional, default summary): summary returns compact model cards; full returns richer metadata for listed models. For one model, prefer pollinations_get_model_details. - sort_by (string, optional, default default): default, name, or price. Use sort_by=price and sort_order=asc to find cheaper models. - sort_order (string, optional, default asc): asc or desc. - paid_only (boolean, optional): Filter by paid_only flag. - supports_reference_images (boolean, optional): true returns models with max_reference_images > 0. - supports_end_frame (boolean, optional): true returns video models with end_frame capability. - supports_audio (boolean, optional): true returns models that output audio or support audio_output. - refresh (boolean, optional, default false): Bypass the 15-minute in-memory cache and refetch /image/models. - response_format (string, optional, default markdown): markdown for readable summaries, json for structured compact/full metadata. Returns: Compact model names, category, pricing, input/output modalities, and key capability flags by default. Use pollinations_get_model_details for complete raw metadata for one model. Examples: Cheapest images: modality=image, sort_by=price, sort_order=asc, limit=5. Cheapest videos: modality=video, sort_by=price, sort_order=asc, limit=5. First/last-frame videos: modality=video, supports_end_frame=true. Image editing/reference models: modality=image, supports_reference_images=true. Error handling: If no models match, retry with modality=all, remove search, or remove capability filters. Use refresh=true only when you need current model changes.
Inputs: limit, detail, search, refresh, +8 more.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 6 tools
Each tool has a clearly distinct purpose: generate new images vs edit existing ones vs generate videos vs list/fetch model metadata vs check account balance. The descriptions explicitly cross-reference when to use each, eliminating ambiguity.
All tools follow a consistent pollinations_<verb>_<noun> pattern with snake_case: generate_image, edit_image, generate_video, list_models, get_model_details, check_balance. No mixing of conventions or vague verbs.
Six tools is well-scoped for a media generation API, covering the core actions (image gen/edit, video gen) plus necessary supporting utilities (model discovery and account balance). No bloat or unnecessary duplication.
The surface covers all primary workflows: image generation, image editing, video generation (including image-to-video via reference frames), model discovery and details, and balance checking. There are no obvious dead ends or missing critical operations for the stated purpose.
Maintenance
Related MCP Connectors
Stivio MCP server - AI image-to-video generator via MCP.
MCP server for Pixapi: check live credit pricing and balance, then generate images and video.
Official faktry MCP server: generate and edit images, video, audio, and PDFs.
Generate images, video, audio and short films with 140+ AI models from any MCP client.
Related MCP Servers
- AlicenseAqualityCmaintenanceGenerate images, video, and audio directly in Claude Code, Cursor, Windsurf, or any MCP-compatible AI agent. 20+ models — Flux, GPT-Image-1, Imagen 4, Grok Imagine, Seedance, ElevenLabs TTS, and more. Free models work without an API key. Paid models require a Pollinations key.827 npm2MIT
- AlicenseNot gradedqualityDmaintenanceFree, keyless image generation MCP server that lets AI agents create images from text prompts via Pollinations/Flux. Supports multiple aspect ratios and returns local image file paths.MIT
- AlicenseAqualityCmaintenanceEnables MCP-capable chats and agents to generate images, video, and audio through OpenAI, Google Gemini, fal.ai, and Cloudflare Workers AI, optionally routed via Cloudflare AI Gateway. Supports image editing, asynchronous video jobs, and text-to-speech with per-request provider and model overrides, and can run over stdio or streamable HTTP.4MIT
- AlicenseNot gradedqualityAmaintenanceEnables MCP-compatible clients to generate images and videos, synthesize text-to-speech audio, and clone or design custom voices. It also supports flexible output handling (URLs or local files) and multiple transport modes including stdio, REST, and SSE.493 npmMIT