image_round_corner
Add rounded corners to images stored in Qiniu Cloud by specifying horizontal and vertical radius values in pixels or percentages, then retrieve the processed image via URL.
Instructions
Image rounded corner tool that processes images based on width, height, and corner radius, returning information about the processed image. If only radius_x or radius_y is set, the other parameter will be assigned the same value, meaning horizontal and vertical parameters will be identical. The information includes the object_url of the processed image, which users can directly use for HTTP GET requests to retrieve the image content or open in a browser to view the file. The image must be stored in a Qiniu Cloud Bucket. Supported original image formats: psd, jpeg, png, gif, webp, tiff, bmp, avif, heic. Image width and height cannot exceed 30,000 pixels, and total pixels cannot exceed 150 million. Corner radius supports pixels and percentages, but cannot be negative. Pixels are represented by numbers, e.g., 200 means 200px; percentages use !xp, e.g., !25p means 25%.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| object_url | Yes | The URL of the image. This can be a URL obtained via the GetObjectURL tool or a URL generated by other Fop tools. Length Constraints: Minimum length of 1. | |
| radius_x | No | Parameter for horizontal corner size. Can use: pixel values (e.g., 200 for 200px) or percentages (e.g., !25p for 25%), all non-negative values. | |
| radius_y | No | Parameter for vertical corner size. Can use: pixel values (e.g., 200 for 200px) or percentages (e.g., !25p for 25%), all non-negative values. |
Implementation Reference
- The handler function for the image_round_corner tool that applies rounded corners to the image using Qiniu FOP by constructing the func string and adding it to the object URL.def image_round_corner(self, **kwargs) -> list[types.TextContent]: object_url = kwargs.get("object_url", "") radius_x = kwargs.get("radius_x", "") radius_y = kwargs.get("radius_y", "") if object_url is None or len(object_url) == 0: return [ types.TextContent( type="text", text="object_url is required" ) ] if (radius_x is None or len(radius_x) == 0) and (radius_y is None or len(radius_y) == 0) is None: return [ types.TextContent( type="text", text="At least one of radius_x or radius_y must be set" ) ] if radius_x is None or len(radius_x) == 0: radius_x = radius_y elif radius_y is None or len(radius_y) == 0: radius_y = radius_x func = f"roundPic/radiusx/{radius_x}/radiusy/{radius_y}" object_url = utils.url_add_processing_func(auth=self.auth, url=object_url, func=func) return [ types.TextContent( type="text", text=str({ "object_url": object_url, }) ) ]
- Tool metadata including name, description, and input schema definition for image_round_corner using @tools.tool_meta decorator.types.Tool( name="image_round_corner", description="""Image rounded corner tool that processes images based on width, height, and corner radius, returning information about the processed image. If only radius_x or radius_y is set, the other parameter will be assigned the same value, meaning horizontal and vertical parameters will be identical. The information includes the object_url of the processed image, which users can directly use for HTTP GET requests to retrieve the image content or open in a browser to view the file. The image must be stored in a Qiniu Cloud Bucket. Supported original image formats: psd, jpeg, png, gif, webp, tiff, bmp, avif, heic. Image width and height cannot exceed 30,000 pixels, and total pixels cannot exceed 150 million. Corner radius supports pixels and percentages, but cannot be negative. Pixels are represented by numbers, e.g., 200 means 200px; percentages use !xp, e.g., !25p means 25%.""", inputSchema={ "type": "object", "properties": { "object_url": { "type": "string", "description": _OBJECT_URL_DESC }, "radius_x": { "type": "string", "description": "Parameter for horizontal corner size. Can use: pixel values (e.g., 200 for 200px) or percentages (e.g., !25p for 25%), all non-negative values." }, "radius_y": { "type": "string", "description": "Parameter for vertical corner size. Can use: pixel values (e.g., 200 for 200px) or percentages (e.g., !25p for 25%), all non-negative values." }, }, "required": ["object_url"], } ) )
- src/mcp_server/core/media_processing/tools.py:260-267 (registration)Registration of the image_round_corner tool handler by passing tool_impl.image_round_corner to tools.auto_register_tools in the register_tools function.tools.auto_register_tools( [ tool_impl.image_scale_by_percent, tool_impl.image_scale_by_size, tool_impl.image_round_corner, tool_impl.image_info, ] )