pruna-mcp-server
The pruna-mcp-server integrates Pruna AI's capabilities for high-speed image and video generation, editing, and upscaling directly into MCP-compatible AI clients.
Generate images (
generate_image): Create images from text prompts using multiple models, with control over aspect ratio, custom dimensions, and seed for reproducibility.Edit images (
edit_image): Modify 1–5 images using text instructions, accepting both local file paths and URLs as input.Virtual try-on (
try_on_image): Fit up to 11 garments onto a person's photo, with options for turbo mode, pose references, and output quality control.Upscale images (
upscale_image): AI-powered upscaling up to 128 megapixels, with options to enhance fine details and improve realism for AI-generated images.Generate videos (
generate_video): Create videos from text prompts, input images, or audio, with control over duration (1–20s), resolution (720p/1080p), aspect ratio, and FPS.Transform videos (
transform_video): Apply video-to-video transformations — animate a subject or replace characters using reference images — while preserving motion, timing, and scene structure.Upload files (
upload_file): Upload local files (up to 20MB) to Pruna AI for use in editing and video workflows.List models (
list_models): Browse all available Pruna AI models with their capabilities and pricing, filterable by category (image, editing, try-on, upscale, video, video-edit).Built-in workflow templates: Pre-built prompts for common tasks such as product photography, virtual staging, social media visuals, game concept art, and ad creative generation.
Generated images are returned as native MCP ImageContent blocks, and videos as EmbeddedResource blobs or ResourceLinks for easy client handling.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@pruna-mcp-servergenerate an image of a futuristic city skyline"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
🎨 pruna-mcp-server
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
8 MCP Tools:
generate_image,edit_image,try_on_image,upscale_image,generate_video,transform_video,list_models,upload_file7 MCP Prompts: Product photos, virtual staging, social media visuals, game concept art, ad creatives, video ads, image enhancement
2 MCP Resources:
pruna://modelscatalog for model discovery without tool calls21 models: 10 text-to-image, 3 editing, 1 virtual try-on, 1 upscale, 4 video, 2 video-to-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:
ImageContentblocks for clients that support inline displayFull MCP compliance: Tool annotations, structured content, progress notifications
Related MCP server: jgkme/kilo-image-gen-mcp
Quick Start
# With uvx (zero install)
uvx pruna-mcp-server
# Or with pip
pip install pruna-mcp-server
pruna-mcpSet 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"
# Linux (GNOME Keyring)
secret-tool store --label="Pruna API Key" service pruna-mcp-server key api_key <<< "your-api-key"
# Windows (PowerShell)
[System.Environment]::SetEnvironmentVariable("PRUNA_API_KEY", "your-api-key", "User")
# Or environment variable (all platforms)
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", "try_on_image", "upscale_image", "generate_video", "transform_video", "list_models", "upload_file"]
}In tools, add: "@pruna/*"
In allowedTools, add: "generate_image", "edit_image", "try_on_image", "upscale_image", "generate_video", "transform_video", "list_models", "upload_file"
Note: Kiro agents use a
toolswhitelist with@server-name/*syntax and anallowedToolslist. 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
ImageContentinline 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 |
| Text-to-image with 10 models | From $0.0001/image |
| Edit 1-5 images with text instructions | From $0.010/image |
| Virtual try-on: fit up to 11 garments onto a person | $0.015 first + $0.008/extra garment |
| AI upscaling up to 128 megapixels | From $0.005/image |
| Text/image/audio to video | From $0.005/s |
| Video-to-video: animate a subject or replace characters | $0.03/s (720p), $0.06/s (1080p) |
| Browse all available models with pricing | Free |
| 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).
Video tools return a JSON metadata block (including a download_url to the Pruna delivery URL), the .mp4 as a native MCP binary resource (EmbeddedResource blob, for videos < 25MB) so clients materialize the file the same way they save images, and a ResourceLink to the same delivery URL as a fallback for larger files. All tools return an absolute file_path.
Prompts
Built-in workflow templates for common use cases:
Prompt | Use Case | Example |
| E-commerce product shots | "white leather sneakers on clean background" |
| Real estate room staging | Stage empty rooms with furniture |
| Platform-optimized visuals | Auto aspect ratio per platform |
| Game assets & environments | Characters, weapons, landscapes |
| Digital ads with text overlay | Headlines rendered in the image |
| Short video ads | Talking heads, product demos |
| Upscale + enhance workflow | AI-generated image refinement |
Configuration
Environment Variable | Required | Default | Description |
| ✅ | — | Your Pruna AI API key |
| — |
| Directory for downloaded files |
| — |
| Seconds between async polls |
| — |
| HTTP timeout in seconds |
| — |
| Max retries on transient errors |
Client Compatibility
Client | Transport | Status | Notes |
Kiro CLI | STDIO | ✅ Tested | Requires |
Claude Desktop | STDIO | ✅ Tested | Use full path to |
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 (147 tests, 97% 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.
Available Tools
8 toolsedit_imageA
Edit one or more images with text instructions using Pruna AI.
Args: prompt: Edit instruction describing the desired changes images: 1-5 image URLs or local file paths model: Model to use (default: p-image-edit) aspect_ratio: Output aspect ratio seed: Random seed for reproducible generation
| Name | Required | Description | Default |
|---|---|---|---|
| seed | No | ||
| model | No | p-image-edit | |
| images | Yes | ||
| prompt | Yes | ||
| aspect_ratio | No | match_input_image |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate the tool is modifiable (readOnlyHint=false) and not destructive. The description adds that it uses 'Pruna AI' (external dependency) but does not elaborate on side effects, rate limits, or required permissions. Some value added beyond annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise, starting with a clear purpose sentence followed by a parameter list. Every sentence adds value, and the structure is easy to scan. No redundant or unnecessary text.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers the core functionality and parameters but omits details like valid model options, aspect ratio formats, error handling, output format, and prerequisites. Given the complexity and lack of output schema, more completeness would help an agent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With schema description coverage at 0%, the description lists each parameter with a brief explanation (e.g., 'prompt: Edit instruction describing the desired changes'). This adds meaning beyond the schema's bare titles, though some params like aspect_ratio receive minimal clarification.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool edits one or more images using text instructions, specifying the verb (edit) and resource (images) distinctly. This differentiates it from sibling tools like generate_image or generate_video, which create new content.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies use when an existing image needs modification via a text prompt, and provides parameter docs like prompt and images. However, it does not explicitly state when not to use it or mention alternative tools for similar tasks.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
generate_imageA
Generate an image from a text prompt using Pruna AI.
Args: prompt: Text description of the image to generate model: Model to use (default: p-image) aspect_ratio: Output aspect ratio (1:1, 16:9, 9:16, 4:3, 3:4, 3:2, 2:3, custom) width: Custom width 256-1440, multiple of 16. Only when aspect_ratio=custom height: Custom height 256-1440, multiple of 16. Only when aspect_ratio=custom seed: Random seed for reproducible generation
| Name | Required | Description | Default |
|---|---|---|---|
| seed | No | ||
| model | No | p-image | |
| width | No | ||
| height | No | ||
| prompt | Yes | ||
| aspect_ratio | No | 16:9 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, destructiveHint=false, so the description's addition of constraints (e.g., dimension multiples) and seed for reproducibility adds some value. However, it does not disclose other behavioral traits like rate limits, authentication, or what happens on failure.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise, using a docstring format with a clear one-line summary followed by an organized Args list. Every sentence adds value—no redundancy or irrelevant information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description explains input parameters well but does not describe the output format (e.g., image URL, base64). Given no output schema, this omission could leave an agent uncertain about what is returned. Additionally, no usage context or error handling is mentioned.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema description coverage, the description fully explains all six parameters. It defines defaults (model: p-image, aspect_ratio: 16:9), lists allowed aspect ratios, and specifies valid ranges and conditions for width/height. This provides essential meaning beyond the schema's type and title.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action 'Generate an image from a text prompt' and specifies the tool (Pruna AI). The verb and resource are specific, and it naturally distinguishes from sibling tools like 'edit_image' and 'generate_video'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description does not provide explicit guidance on when to use this tool versus alternatives (e.g., edit_image for modifications). It is implied that this is for generating new images from text, but no when-not-to-use or exclusion criteria are given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
generate_videoB
Generate a video from text, image, or audio using Pruna AI.
Args: prompt: Text prompt for video generation model: Model to use (p-video, wan-t2v, wan-i2v, vace) image: Input image URL/path for image-to-video audio: Input audio URL/path for audio-conditioned video duration: Duration in seconds (1-20) resolution: Video resolution (720p or 1080p) aspect_ratio: Aspect ratio (ignored when image is provided) fps: Frames per second (24 or 48) seed: Random seed for reproducible generation
| Name | Required | Description | Default |
|---|---|---|---|
| fps | No | ||
| seed | No | ||
| audio | No | ||
| image | No | ||
| model | No | p-video | |
| prompt | Yes | ||
| duration | No | ||
| resolution | No | 720p | |
| aspect_ratio | No | 16:9 |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate non-read-only, open-world, non-idempotent, non-destructive behavior, but the description adds no behavioral context beyond listing parameters. There is no mention of costs, generation time, or error conditions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise and front-loaded with the purpose, followed by a clear parameter list. However, it could be better structured with explicit defaults or grouped parameters.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description lacks mention of prerequisites (e.g., uploading image/audio files) and does not clarify behavior with multiple inputs. Since output schema exists, return values are not expected, but the tool's complexity warrants more completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema description coverage, the description adds meaning by listing parameters and brief explanations (e.g., 'prompt: Text prompt for video generation'), but it does not provide constraints or allowed values for parameters like model or resolution.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Generate a video from text, image, or audio using Pruna AI,' specifying the verb and resource, and implicitly distinguishes from sibling tools like generate_image and transform_video.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance on when to use this tool vs alternatives such as generate_image or transform_video. The description lists inputs but does not provide decision criteria or mention prerequisites like file uploads.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_modelsARead-onlyIdempotent
List available Pruna AI models with capabilities and pricing.
Args: category: Filter by category: image, editing, try-on, upscale, video, video-edit
| Name | Required | Description | Default |
|---|---|---|---|
| category | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond annotations (readOnlyHint, idempotentHint, destructiveHint), the description adds that the tool returns 'capabilities and pricing' and supports filtering. It does not describe pagination or rate limits, but for a simple list operation this is adequate.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise, with a clear main sentence and a docstring-style args section. It could be slightly more structured, but it efficiently conveys the purpose and filter option.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (one optional parameter, output schema exists), the description covers its purpose and filter. It does not mention pagination or output structure, but the output schema likely handles that. It is complete enough for a listing tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description adds meaning to the 'category' parameter by listing the allowed values: image, editing, try-on, upscale, video, video-edit. The input schema only specifies type string/null with no enums, so the description compensates for low schema coverage (0%).
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'list' and resource 'Pruna AI models', and specifies it returns 'capabilities and pricing'. It distinguishes from sibling tools that perform actions (edit, generate, etc.).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance on when to use this tool vs alternatives. The description only mentions filtering by category, but does not discuss when listing is appropriate or when to prefer other tools. Sibling tools are all action-oriented, so the distinction is implicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
transform_videoA
Transform a source video using reference images (video-to-video).
Two models are available:
p-video-animate: animate a single subject reference image using the motion from the source video (provide exactly 1 reference).
p-video-replace: replace the character(s) in the source video using 1-3 identity reference images.
Motion, timing, camera movement, and scene structure are preserved.
Args: video: Source video URL or local file path (.mp4) references: Reference images (URLs or local file paths). Exactly 1 for p-video-animate, 1-3 for p-video-replace. model: Model to use (p-video-animate or p-video-replace) resolution: Output resolution (720p or 1080p) target_fps: Working FPS (original, 24, or 48) instruction_prompt: Optional guidance on how to apply the transform turbo: Faster generation for slightly lower quality save_audio: Save the output video with audio ignore_audio: Ignore source audio during generation seed: Random seed for reproducible generation
| Name | Required | Description | Default |
|---|---|---|---|
| seed | No | ||
| model | No | p-video-animate | |
| turbo | No | ||
| video | Yes | ||
| references | Yes | ||
| resolution | No | 720p | |
| save_audio | No | ||
| target_fps | No | original | |
| ignore_audio | No | ||
| instruction_prompt | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations provide minimal info (readOnlyHint=false, destructiveHint=false), so the description carries the burden. It reveals that motion, timing, etc. are preserved and that turbo mode offers faster generation at lower quality. However, it lacks disclosure of limitations (e.g., maximum video length, supported input formats) or side effects beyond the stated transformations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-organized with a lead sentence, model breakdown, and a bullet list of parameters. It is slightly verbose but every sentence adds value. Could be condensed slightly, but overall efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 10 parameters, no nested objects, and an existing output schema, the description covers all parameters and model usage. It lacks mention of prerequisites (e.g., pre-uploaded files), potential error conditions, or integration with sibling tools like upload_file. Nearly complete, with minor gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 0% description coverage, leaving all parameter meaning to the description. The description provides thorough inline explanations for all 10 parameters, including details on reference count constraints per model and optional instruction prompt. This fully compensates for the schema's lack of descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly specifies it is a video-to-video transform using reference images. It distinguishes two models (p-video-animate and p-video-replace) with different use cases, which differentiates it from sibling tools like generate_video or edit_image.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explains when to use each model based on number of references and what is preserved (motion, timing, etc.). However, it does not explicitly state when not to use this tool or mention alternatives for other scenarios, which would strengthen guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
try_on_imageA
Virtually fit one or more garments onto a person's photo using Pruna AI.
Args: person_image: Image URL or local file path of the person garment_images: 1-11 garment reference images (URLs or local file paths). Up to 6 recommended for best quality. model: Model to use (default: p-image-try-on) prompt: Experimental guidance for non-flatlay garment images (e.g. which garment from which image to use) turbo: Faster generation. Not recommended for more than 4 garments reference_pose: Experimental. Image URL/path to repose the person before try-on seed: Random seed for reproducible generation output_format: Output format (webp, jpg, png) output_quality: Quality for jpg/webp outputs (0-100) preserve_input_size: Resize the result back to the person image size
| Name | Required | Description | Default |
|---|---|---|---|
| seed | No | ||
| model | No | p-image-try-on | |
| turbo | No | ||
| prompt | No | ||
| person_image | Yes | ||
| output_format | No | jpg | |
| garment_images | Yes | ||
| output_quality | No | ||
| reference_pose | No | ||
| preserve_input_size | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations provide no behavioral hints (readOnlyHint=false, destructiveHint=false), so the description carries full burden. It discloses recommendations (up to 6 garments, turbo not for >4), experimental flags (prompt, reference_pose), and defaults, but omits details on failure modes, rate limits, or exact output format.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is brief and well-structured: a one-sentence summary followed by a bullet-like list of parameters. Every sentence adds value, with no redundancy or fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite 10 parameters and no output schema, the description explains each parameter well and offers usage tips. However, it lacks an explicit description of what the tool returns (e.g., an image URL) and does not specify input format requirements (e.g., valid file types).
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must fully explain parameters. It does so with clear explanations for all 10 parameters, including defaults, recommendations, and experimental notes—adding significant meaning beyond raw schema property names.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it virtually fits garments onto a person's photo using Pruna AI. The verb 'fit' and resource 'garments onto person's photo' are specific, and the tool is distinct from siblings like edit_image or generate_image due to its focused try-on functionality.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implicitly defines usage for virtual try-on but does not explicitly state when to use this tool over alternatives or when not to use it. Sibling tools like edit_image or generate_image are not mentioned, so an agent lacks guidance on trade-offs.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
upload_fileAIdempotent
Upload a local file to Pruna AI for use in editing/video workflows.
Args: file_path: Local file path to upload (max 20MB)
| Name | Required | Description | Default |
|---|---|---|---|
| file_path | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds a key behavioral constraint (max 20MB) beyond what annotations provide. It aligns with annotations (idempotentHint, non-destructive). However, it could disclose whether duplicate file paths overwrite or create new versions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is very concise: two sentences plus an args section. It is front-loaded with the primary purpose and the args section is clear and efficient. No extraneous text.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple one-parameter tool with an output schema, the description covers the essential behavior. It could be improved by indicating what the tool returns (e.g., file ID) or prerequisites (file existence), but it is largely adequate.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description adds the 20MB size limit and clarifies that file_path is a local path. Since the schema has 0% description coverage, this is a valuable addition. It could specify allowed file types or formats.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action (upload), the target (Pruna AI), and the context (editing/video workflows). It effectively distinguishes from sibling tools that perform other operations like editing or generating.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides context on when to use this tool (for editing/video workflows) but does not explicitly mention when not to use it or suggest alternatives. The sibling tools list implies related use cases.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
upscale_imageAIdempotent
Upscale an image using Pruna AI.
Args: image: Image URL or local file path to upscale target: Target resolution in megapixels (1-128, capped at 128 MP) output_format: Output format (webp, jpg, png) enhance_details: Enhance fine textures enhance_realism: Improve realism (recommended for AI-generated images)
| Name | Required | Description | Default |
|---|---|---|---|
| image | Yes | ||
| target | No | ||
| output_format | No | jpg | |
| enhance_details | No | ||
| enhance_realism | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already provide readOnlyHint=false (mutation), destructiveHint=false, and idempotentHint=true. The description adds that it upsamples and enhances details/realism but does not reveal additional behavioral traits like file size limits or processing time. It meets the baseline but adds minimal value beyond annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Extremely concise: one-line purpose followed by a clear bullet list of parameters. Every sentence is necessary and front-loaded, with no redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers all input parameters but omits details about the output (e.g., returned image URL). Given the tool's moderate complexity and lack of output schema, describing the return value would improve completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema description coverage, the description fully explains each parameter: image source, target megapixels with range, output format options, and boolean enhancements. This adds crucial meaning beyond the schema's type/defaults, enabling correct usage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's action: 'Upscale an image using Pruna AI.' This directly conveys the purpose, distinguishing it from sibling tools like edit_image and generate_image.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance on when to use this tool versus alternatives. It does not mention any prerequisites or situations where the tool is inappropriate, leaving the agent to infer usage from the parameter descriptions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.
8 tool updates
v0.2.0- First observed
edit_image - First observed
generate_image - First observed
generate_video - First observed
list_models - First observed
transform_video - First observed
try_on_image - First observed
upload_file - First observed
upscale_image
TDQS
Each tool has a clearly distinct purpose: image generation, image editing, video generation, video transformation, try-on, upscaling, model listing, and file upload. No two tools overlap in function.
All tool names follow a consistent verb_noun pattern (e.g., generate_image, edit_image, list_models) using snake_case, making them predictable and easy to understand.
With 8 tools, the server is well-scoped for its purpose—covering core media generation and editing tasks without being overly sparse or cluttered.
The set covers major operations: generation, editing, transformation, upscaling, try-on, model listing, and file upload. A minor gap is the lack of a text-based video editing tool analogous to edit_image, but overall it's quite complete.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
MCP server for Luma Dream Machine AI video generation
MCP server for NanoBanana AI image generation and editing
MCP server for Qwen Image 3 AI image generation
MCP server for Midjourney AI image generation and editing
Related MCP Servers
- AlicenseAqualityDmaintenanceMCP server for Krea.ai enabling AI image and video generation using models like Flux, Hailuo, Runway, Kling, and others via natural language prompts.9319Apache 2.0
- AlicenseNot gradedqualityBmaintenanceMCP server for generating, editing, and processing images via multiple providers including Kilo, OpenRouter, OpenAI, and Gemini, with local tools for background removal, resizing, and cropping.232MIT
- FlicenseNot gradedqualityCmaintenanceAn MCP server for AI-powered image processing (generate, edit, vary, analyze) supporting OpenAI, Gemini, Ideogram, and custom relay endpoints.-
- AlicenseAqualityDmaintenanceMCP server for AI-powered media generation: images, videos, audio, and upscaling using 99 AI models.6MIT
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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/charlesrapp/pruna-mcp-server'
If you have feedback or need assistance with the MCP directory API, please join our Discord server