Skip to main content

MCP server for Pruna AI — Image generation, editing, upscaling, and video generation

Project description

🎨 pruna-mcp-server

CI PyPI Python License: MIT

MCP server for Pruna AI — ultra-fast image generation, editing, upscaling, and video generation directly from your AI assistant.

Pruna AI is an inference API specialized in image and video generation. It offers sub-2-second image generation starting at $0.005/image, with models for text-to-image, image editing, upscaling, and video generation. This MCP server wraps their API so any MCP-compatible client (Claude Desktop, Kiro, Cursor) can generate visual content natively.

Conforms to MCP Specification 2025-11-25.

Features

  • 6 MCP Tools: generate_image, edit_image, upscale_image, generate_video, list_models, upload_file
  • 7 MCP Prompts: Product photos, virtual staging, social media visuals, game concept art, ad creatives, video ads, image enhancement
  • 2 MCP Resources: pruna://models catalog for model discovery without tool calls
  • 18 models: 10 text-to-image, 3 editing, 1 upscale, 4 video
  • Smart sync/async: Sync for fast image models, async with polling for video
  • Transparent file handling: Pass local paths or URLs — auto-upload handled
  • Native MCP image return: ImageContent blocks for clients that support inline display
  • Full MCP compliance: Tool annotations, structured content, progress notifications

Quick Start

# With uvx (zero install)
uvx pruna-mcp-server

# Or with pip
pip install pruna-mcp-server
pruna-mcp

Set your API key — get one at pruna.ai (go to the developer portal or contact Pruna to request access):

# macOS Keychain (recommended)
security add-generic-password -a $USER -s PRUNA_API_KEY -w "your-api-key"

# Or environment variable
export PRUNA_API_KEY="your-api-key"

MCP Client Configuration

Kiro CLI

Add to your agent config (e.g. ~/.kiro/agents/default.json):

In mcpServers:

"pruna": {
  "command": "sh",
  "args": ["-c", "PRUNA_API_KEY=$(security find-generic-password -a $USER -s PRUNA_API_KEY -w) uv run --directory /path/to/pruna-mcp-server pruna-mcp"],
  "autoApprove": ["generate_image", "edit_image", "upscale_image", "generate_video", "list_models", "upload_file"]
}

In tools, add: "@pruna/*"

In allowedTools, add: "generate_image", "edit_image", "upscale_image", "generate_video", "list_models", "upload_file"

Note: Kiro agents use a tools whitelist with @server-name/* syntax and an allowedTools list. Both must include the Pruna tools for them to be available.

Claude Desktop

Add to ~/Library/Application Support/Claude/claude_desktop_config.json (macOS):

{
  "mcpServers": {
    "pruna": {
      "command": "sh",
      "args": ["-c", "PRUNA_API_KEY=$(security find-generic-password -a $USER -s PRUNA_API_KEY -w) /path/to/uv run --directory /path/to/pruna-mcp-server pruna-mcp"]
    }
  }
}

Important: Use the full path to uv (e.g. /Users/you/.local/bin/uv) — Claude Desktop launches processes with a minimal PATH that doesn't include ~/.local/bin.

Note: Claude Desktop does not render ImageContent inline in the chat. The image is generated and saved locally — Claude will reference the file path in its response.

Cursor

Add to .cursor/mcp.json:

{
  "mcpServers": {
    "pruna": {
      "command": "uvx",
      "args": ["pruna-mcp-server"],
      "env": { "PRUNA_API_KEY": "your-api-key" }
    }
  }
}

Tools

Tool Description Pricing
generate_image Text-to-image with 10 models From $0.0001/image
edit_image Edit 1-5 images with text instructions From $0.010/image
upscale_image AI upscaling to 1-8 megapixels From $0.005/image
generate_video Text/image/audio to video From $0.005/s
list_models Browse all available models with pricing Free
upload_file Upload files for editing/video workflows Free

Image tools return both a JSON metadata block and a native MCP ImageContent block (base64, for images < 5MB).

Prompts

Built-in workflow templates for common use cases:

Prompt Use Case Example
product-photo E-commerce product shots "white leather sneakers on clean background"
virtual-staging Real estate room staging Stage empty rooms with furniture
social-media-visual Platform-optimized visuals Auto aspect ratio per platform
game-concept-art Game assets & environments Characters, weapons, landscapes
ad-creative Digital ads with text overlay Headlines rendered in the image
video-ad Short video ads Talking heads, product demos
image-enhance Upscale + enhance workflow AI-generated image refinement

Configuration

Environment Variable Required Default Description
PRUNA_API_KEY Your Pruna AI API key
PRUNA_OUTPUT_DIR ./pruna-output Directory for downloaded files
PRUNA_POLL_INTERVAL 2 Seconds between async polls
PRUNA_TIMEOUT 120 HTTP timeout in seconds
PRUNA_MAX_RETRIES 3 Max retries on transient errors

Client Compatibility

Client Transport Status Notes
Kiro CLI STDIO ✅ Tested Requires tools + allowedTools config
Claude Desktop STDIO ✅ Tested Use full path to uv; no inline image display
Cursor STDIO 🔲 Planned
Claude Code STDIO 🔲 Planned

Development

git clone https://github.com/charlesrapp/pruna-mcp-server.git
cd pruna-mcp-server
uv sync --extra dev

# Run tests (100 tests, 94% coverage)
uv run pytest --cov

# Lint & type check
uv run ruff check src/ tests/
uv run mypy src/

See CONTRIBUTING.md for guidelines.

License

MIT — see LICENSE.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

pruna_mcp_server-0.1.1.tar.gz (582.1 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

pruna_mcp_server-0.1.1-py3-none-any.whl (18.5 kB view details)

Uploaded Python 3

File details

Details for the file pruna_mcp_server-0.1.1.tar.gz.

File metadata

  • Download URL: pruna_mcp_server-0.1.1.tar.gz
  • Upload date:
  • Size: 582.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.13

File hashes

Hashes for pruna_mcp_server-0.1.1.tar.gz
Algorithm Hash digest
SHA256 01c5e3eb1e6094dfca1dcfef2132ff572019f6c853ef1c65554ab7d6e37731f8
MD5 08563b662a4f00da7fee58fab90e0161
BLAKE2b-256 74321b862e8f1c0a063d4adb268e4e2e1a096f93bb3077983e3c90c6e03efc8b

See more details on using hashes here.

Provenance

The following attestation bundles were made for pruna_mcp_server-0.1.1.tar.gz:

Publisher: publish.yml on charlesrapp/pruna-mcp-server

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file pruna_mcp_server-0.1.1-py3-none-any.whl.

File metadata

File hashes

Hashes for pruna_mcp_server-0.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 6b5157915b8c608b3562c990d2c3086f3e179504d0f3ea4b8e6777d86c7cb978
MD5 4adc88dd6406adba392357496014ca3b
BLAKE2b-256 f5ba204f986ae8874cf002b872ada5d2ef7088fa55ec9df6629003343656d00b

See more details on using hashes here.

Provenance

The following attestation bundles were made for pruna_mcp_server-0.1.1-py3-none-any.whl:

Publisher: publish.yml on charlesrapp/pruna-mcp-server

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page