A MCP server project of Qiniu for managing cloud storage, CDN, media processing, and live streaming services.
This server presents 23 tools across CDN, LiveStreaming, Media Processing, and Storage domains. Strengths: most tools have descriptions (194 char median target vs. 150-300 char average here); input schemas are present and use JSON Schema with types; naming follows verb_noun convention (cdn_prefetch_urls, image_scale_by_size, list_buckets). Weaknesses: parameter descriptions are often generic or missing detail about constraints; no output schemas documented; error handling is minimal (no recovery guidance); several parameter types lack descriptions (e.g., 'bucket' in list_buckets repeats across many tools with minimal context); no tool annotations (readOnlyHint, destructiveHint, idempotentHint); descriptions sometimes conflate tool purpose with implementation details. Average tool definition score: 62/100.
Newly added resources are proactively retrieved by the CDN and stored on its cache nodes in advance. Users simply submit the resource URLs, and the CDN automatically triggers the prefetch process.
This function marks resources cached on CDN nodes as expired. When users access these resources again, the CDN nodes will fetch the latest version from the origin server and store them anew.
Fetch a http object to Qiniu bucket.
Get an object contents from Qiniu Cloud bucket. In the GetObject request, specify the full key name for the object.
Get the file download URL, and note that the Bucket where the file is located must be bound to a domain name. If using Qiniu Cloud test domain, HTTPS access will not be available, and users need to make adjustments for this themselves.
Missing output schemas for all tools. LLMs cannot predict return structure, forcing them to guess what fields exist for downstream tool calls or data extraction. This violates the 'documented return types' baseline (100% of A+ tools have documented output schemas).
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | D | 59 | <=2025-11-25 | v2 |
| 2026-03-09 | F | 45 | - | v1 |
Retrieves basic image information, including image format, size, and color model.
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%.
Image scaling tool that resizes images based on a percentage and returns information about the scaled image. The information includes the object_url of the scaled 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.
Image scaling tool that resizes images based on a specified width or height and returns information about the scaled image. The information includes the object_url of the scaled 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.
Return the Bucket you configured based on the conditions.
List objects in Qiniu Cloud, list a part each time, you can set start_after to continue listing, when the number of listed objects is less than max_keys, it means that all files are listed. start_after can be the key of the last file in the previous listing.
Bind a playback domain to a LiveStreaming bucket for live streaming. This allows you to configure the domain for playing back streams via FLV/M3U8/WHEP.
Bind a push domain to a LiveStreaming bucket for live streaming. This allows you to configure the domain for pushing RTMP/WHIP streams.
Create a new bucket in LiveStreaming using S3-style API. The bucket will be created at https://<bucket>.<endpoint_url>
Create a new stream in LiveStreaming using S3-style API. The stream will be created at https://<bucket>.<endpoint_url>/<stream>
Get playback URLs for a stream. Returns FLV, M3U8, and WHEP playback URLs that can be used to play live streams.
Get push URLs for a stream. Returns RTMP and WHIP push URLs that can be used to push live streams.
List all live streaming spaces/buckets. Returns information about all available live streaming buckets.
List all streams in a specific live streaming bucket. Returns the list of streams for the given bucket ID.
Query live streaming traffic statistics for a time range. Returns total traffic (bytes), average bandwidth (bps), peak bandwidth (bps), and optionally raw data for download.
Upload a local file to Qiniu bucket.
Upload text data to Qiniu bucket.
qiniu mcp server version info.
No tool annotations (readOnlyHint, destructiveHint, idempotentHint). Agents cannot distinguish read-only operations from write operations at a glance. This is particularly problematic for tools like upload_text_data, upload_local_file, and fetch_object (marked WRITE in risk assessment), annotations would signal to safety-conscious agents.
Generic or missing parameter descriptions. Parameters like 'bucket' (appears in 10+ tools), 'key', 'url', 'domain' lack detail about format, constraints, or when to use.
Sparse error handling guidance. Tools return TextContent responses but provide no recovery hints, error classification (retryable vs user-fixable vs fatal), or actionable next steps.
Vague tool descriptions for simple operations. E.g., 'image_info': 'Retrieves basic image information, including image format, size, and color model' (40 chars). E.g., list_buckets: 'Return the Bucket you configured based on the conditions' is unclear, does it filter, search, or paginate?
No pagination or result limits documented. Tools like list_buckets, list_objects, live_streaming_list_streams could return hundreds of items. LLM reasoning degrades as context grows.' list_objects accepts max_keys but no upper cap or default is visible in the schema.
Missing validation and constraint details in descriptions. E.g., cdn_prefetch_urls accepts max 60 items (visible in schema minItems/maxItems) but description does not reiterate; image_scale_by_percent accepts 1-999% but no guidance on what happens at extremes; time format for live_streaming_query_live_traffic_stats is 'YYYYMMDDHHMMSS' but not validated against a pattern in schema.
Inconsistent naming for similar parameters across tools. Some use 'bucket' (list_objects, get_object, upload_text_data), others use 'bucket' (live_streaming_list_streams). While the names match, the lack of domain-specific prefixes in storage tools can confuse LLMs when multiple clouds (Qiniu, S3, etc.) are in play. No 'qiniu_bucket' or context prefix.