An MCP server that allows you to generate and edit images using the Nova Canvas model of Amazon Bedrock
Server has 7 image generation/editing tools with reasonable parameter schemas and descriptions, but significant issues limit production readiness. Tool naming follows verb_noun convention (text_to_image, background_removal, etc.), which is good. However, descriptions lack depth and actionable guidance for LLM selection. Parameter descriptions exist but many lack constraint details (e.g., 'maximum 1024 characters' stated but no pattern validation visible in code). Output schemas are not explicitly documented in code or docstrings, only return type hints exist. Error handling uses McpError but provides minimal recovery guidance. Security concern: file paths accepted as parameters without visible path traversal validation. Only 3 of 7 tools are actually registered and enabled in server.py (text_to_image, color_guided_generation, background_removal), while 4 tools (inpainting, outpainting, image_variation, image_conditioning) are commented out, this indicates incomplete implementation.
Remove the background of an image automatically.
Generate an image using a specified color palette.
Generate an image that follows the layout and composition of a reference image.
Generate a new variation of the input image while maintaining its content.
Inpaint a specific part of an image using a text mask prompt.
Expand the image to create an outpainting.
4 out of 7 tools are commented out and not registered. inpainting, outpainting, image_variation, and image_conditioning are defined but disabled in server.py line 38-41, indicating incomplete feature set. This suggests the server is not production-ready.
Output schemas not explicitly documented. Tools return Dict[str, Any] with comments describing result structure (e.g., 'image_path', 'message') but these are not formalized in docstrings or JSON Schema. LLMs must infer structure from implementation details.
File path parameters (image_path, output_path, reference_image_path, mask_image_path) accepted without visible path traversal validation. background_removal.py line 21 opens files with open(image_path, 'rb') directly. No sanitization against '../' or absolute path manipulation visible. Agents could be tricked into accessing files outside intended directories.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | D | 57 | <=2025-11-25 | v2 |
| 2026-03-09 | F | 41 | - | v1 |
Generate an image from a text prompt using aws nova canvas model. If a color palette is specified, use the color_guided_generation tool first.
Error handling provides no recovery guidance. McpError is raised with string messages (e.g., 'Error occurred while removing background: {str(e)}') but does not categorize errors as retryable, user-fixable, or fatal. LLMs receive no guidance on next steps.
Tool descriptions lack WHEN guidance. Descriptions state WHAT the tool does (e.g., 'Generate an image from a text prompt') but not WHEN to use it vs similar tools or what preconditions exist. text_to_image mentions 'If a color palette is specified, use color_guided_generation first' but does not explain how to detect when a user intends color guidance.
Parameter constraints mentioned in descriptions but not validated in code. color_guided_generation.py describes colors as '1-10 hex color codes' with validation present (line 38-42), but other tools (e.g., inpainting, outpainting) do not validate height/width ranges even though descriptions state defaults like '512'. No bounds checks visible for cfg_scale (described as 1-20 range).
Enum constraints missing for string parameters. outpainting_mode is documented as '(DEFAULT or PRECISE)' but not declared as an enum in schema. control_mode in image_conditioning is documented as '(CANNY_EDGE, etc.)', 'etc.' suggests multiple valid options not enumerated, forcing LLMs to guess valid values.