LABSCO SUMMARY
Object storage the assistant can read from, not just point at.
The surface is small on purpose: list, read, upload. What makes it worth wiring in is that the read returns the object's contents rather than a link, so a log or a CSV sitting in a bucket becomes something the model can work with in the same turn.
What it is
Qiniu's MCP server for Kodo object storage, built on the S3 protocol, letting an AI client list buckets and objects, read object contents and upload files.
What you get
- Bucket listing across the buckets you configure
- Object listing inside a bucket, by prefix, and continuing where the previous batch stopped
- Object contents read straight into the conversation
- Uploads, either of a local file or of content you supply
- Resource listing that returns 20 items by default, with the tools available to walk the rest
Requirements
Python 3.12 or newer and the uv package manager. In the client config: a Qiniu access key and secret key, the S3 region name and endpoint URL, and the buckets to expose, all in one region and no more than about 20.
Setup effort
One command plus a key — uvx qiniu-mcp-server, then supply credentials
USE CASES
Finding a file you only half remember
List the objects in a bucket by prefix, then ask it to continue from where the first batch stopped.
Reading a log without downloading it
The object's contents come back into the conversation directly.
Putting a generated file into a bucket
Upload a local file, or hand over the content and let the server write it.
Checking what is in a set of buckets
List the buckets configured for the region and drill into the one you need.
BEFORE YOU INSTALL
What to know first
Requires
- uvx on PATH
- Python 3.12 or later
- QINIU_ACCESS_KEY in your environment
- QINIU_SECRET_KEY in your environment
Where it runs
All 5 documented clients run the server on your machine.
INSTALLATION
Connect your client
Server setup
uvx qiniu-mcp-serverMCP Clients
VS Code
{
"servers": {
"qiniu": {
"command": "uvx",
"args": [
"qiniu-mcp-server"
],
"env": {
"QINIU_ACCESS_KEY": "<YOUR_QINIU_ACCESS_KEY>",
"QINIU_SECRET_KEY": "<YOUR_QINIU_SECRET_KEY>",
"QINIU_REGION_NAME": "<YOUR_QINIU_REGION_NAME>",
"QINIU_ENDPOINT_URL": "<YOUR_QINIU_ENDPOINT_URL>",
"QINIU_BUCKETS": "<YOUR_BUCKET_1>,<YOUR_BUCKET_2>"
},
"disabled": false
}
}
}Cline, Cursor
{
"mcpServers": {
"qiniu": {
"command": "uvx",
"args": [
"qiniu-mcp-server"
],
"env": {
"QINIU_ACCESS_KEY": "<YOUR_QINIU_ACCESS_KEY>",
"QINIU_SECRET_KEY": "<YOUR_QINIU_SECRET_KEY>",
"QINIU_REGION_NAME": "<YOUR_QINIU_REGION_NAME>",
"QINIU_ENDPOINT_URL": "<YOUR_QINIU_ENDPOINT_URL>",
"QINIU_BUCKETS": "<YOUR_BUCKET_1>,<YOUR_BUCKET_2>"
},
"disabled": false
}
}
}Claude Desktop
If Claude Desktop reports Error: spawn uvx ENOENT, put the absolute path of uvx in command — for example /usr/local/bin/uvx.
{
"mcpServers": {
"qiniu": {
"command": "uvx",
"args": [
"qiniu-mcp-server"
],
"env": {
"QINIU_ACCESS_KEY": "<YOUR_QINIU_ACCESS_KEY>",
"QINIU_SECRET_KEY": "<YOUR_QINIU_SECRET_KEY>",
"QINIU_REGION_NAME": "<YOUR_QINIU_REGION_NAME>",
"QINIU_ENDPOINT_URL": "<YOUR_QINIU_ENDPOINT_URL>",
"QINIU_BUCKETS": "<YOUR_BUCKET_1>,<YOUR_BUCKET_2>"
},
"disabled": false
}
}
}Any MCP client — Live API key
{
"mcpServers": {
"qiniu": {
"command": "uvx",
"args": [
"qiniu-mcp-server"
],
"env": {
"QINIU_LIVE_API_KEY": "<YOUR_QINIU_LIVE_API_KEY>"
},
"disabled": false
}
}
}