MinIO MCP server
MinIO's official MCP server lets agents browse buckets, read and write objects, manage tags and versioning, and ask AI questions about stored objects.
The AIStor MCP Server is MinIO's official Model Context Protocol server for its object storage. It connects an agent to a MinIO or AIStor deployment over the S3-compatible API and exposes the full object lifecycle as tools: listing buckets and their contents, creating and deleting buckets, uploading and downloading objects, copying and moving objects between buckets, generating presigned URLs, and reading detailed object metadata. It also covers the operational surface most object-store work needs — bucket and object tags, versioning configuration and object version history, lifecycle (ILM) and replication configuration, plus admin tools that report cluster status, performance metrics, and data-usage totals across buckets.
A standout is the AI-native pair: `ask_object`, which answers natural-language questions about an object's content across many file formats, and `text_to_object`, which writes generated text straight into a bucket — so an agent can summarize a stored PDF or file a report without a manual download. The server ships as a container image (`quay.io/minio/aistor/mcp-server-aistor`) run with docker or podman, authenticating with MinIO endpoint, access key, and secret key. Writes are gated by design: it starts read-only and you must opt in with the `--allow-write`, `--allow-delete`, and `--allow-admin` flags, and scope filesystem access with `--allowed-directories`. It runs over stdio by default and can switch to Streamable HTTP with `--http`.
Quick install
Copy-paste configs are provided for all 8 supported clients. Pick your client below.
Available tools
| Tool | Description |
|---|---|
| list_buckets | Lists all buckets in the object store with their basic information. |
| create_bucket | Creates a new bucket with specified configuration and optional versioning settings. |
| delete_bucket | Deletes a bucket and optionally force-removes all contained objects. |
| list_bucket_contents | Lists all objects in a bucket, including their sizes and last-modified dates. |
| get_bucket_versioning | Gets the versioning status and configuration of a bucket. |
| set_bucket_versioning | Configures versioning settings for a bucket (requires admin). |
| get_bucket_lifecycle | Gets the lifecycle (ILM) configuration of a bucket. |
| get_bucket_replication | Gets the replication configuration of a bucket. |
| get_bucket_tags | Gets the tags of a bucket. |
| set_bucket_tags | Sets the tags for a bucket. |
| upload_object | Uploads a file from the local filesystem to a bucket. |
| download_object | Downloads an object from a bucket to the local filesystem, preserving metadata. |
| copy_object | Copies an object from one bucket to another, preserving metadata and version support. |
| move_object | Moves an object between buckets by copying then removing the source. |
| delete_object | Deletes a specific object or version from a bucket, with optional soft-delete support. |
| get_object_metadata | Gets detailed metadata for an object including content type, size, and custom headers. |
| get_object_versions | Gets all versions of an object in a bucket. |
| get_object_tags | Gets all tags associated with an object. |
| set_object_tags | Sets or updates tags for an object, supporting multiple key-value pairs. |
| get_object_presigned_url | Gets a presigned URL for an object, with an optional expiration (default 7 days). |
| ask_object | Answers natural-language questions about an object's content using AI, across many file formats. |
| text_to_object | Writes provided text directly into a bucket as an object, with configurable content type. |
| list_allowed_directories | Lists the local directories the server is permitted to read from and write to. |
| list_local_files | Lists files and directories in an allowed local path with their attributes. |
| get_admin_info | Gets technical information about the object store including status, performance metrics, and configuration. |
| get_data_usage_info | Gets data-usage information including total data stored, object count, and usage per bucket. |
Required configuration
- MINIO_ENDPOINTRequired
Hostname:port of your MinIO or AIStor server.
- MINIO_ACCESS_KEYRequired
Access key used to authenticate to the object store.
- MINIO_SECRET_KEYRequired
Secret key paired with the access key.
- MINIO_USE_SSLOptional
Whether to connect over HTTPS. Set to true for TLS endpoints.
What you can do with it
Let an agent manage object storage
Point the agent at a MinIO or AIStor deployment and have it list buckets, upload and organize objects, set tags and versioning, and generate presigned share links — keeping writes and deletes behind the opt-in flags.
Ask questions of stored files
Use ask_object to query the contents of a stored PDF, CSV, or document in natural language, then have the agent write a summary back with text_to_object, all without downloading the file by hand.
FAQ
- Is it free?
- The MCP server image is freely distributed on quay.io and connects to any S3-compatible MinIO or AIStor deployment. AIStor is MinIO's commercial enterprise object store, so production use is tied to your MinIO licensing and deployment costs.
- Does it support remote/OAuth?
- There is no OAuth flow. It runs locally as a container over stdio by default and can expose a Streamable HTTP transport with the --http flag; it authenticates to the object store with MinIO endpoint, access key, and secret key.
- Can the agent delete or modify data?
- Not by default. The server starts read-only; you must explicitly pass --allow-write, --allow-delete, and --allow-admin to enable mutating and administrative operations, and --allowed-directories to scope local filesystem access.