Skip to main content
Glama

MinIO MCP Server

MCP (Model Context Protocol) server for MinIO object storage operations. This server provides tools for interacting with MinIO/S3-compatible storage through Claude and other MCP clients.

Features

Bucket Operations

  • minio_list_buckets - List all buckets

  • minio_make_bucket - Create a new bucket

  • minio_remove_bucket - Remove an empty bucket

  • minio_bucket_exists - Check if a bucket exists

Object Operations

  • minio_list_objects - List objects in a bucket

  • minio_get_object - Get object content

  • minio_put_object - Upload content as an object

  • minio_upload_file - Upload a local file

  • minio_download_file - Download object to local file

  • minio_remove_object - Remove an object

  • minio_stat_object - Get object metadata

  • minio_presigned_url - Generate presigned download URL

  • minio_copy_object - Copy object to another location

Related MCP server: S3 MCP Server

Installation

Using pip

pip install minio-mcp
uv pip install minio-mcp

From source

git clone <repository-url>
cd minio-mcp
pip install -e .

Configuration

Set the following environment variables:

export MINIO_ENDPOINT="localhost:9000"
export MINIO_ACCESS_KEY="your-access-key"
export MINIO_SECRET_KEY="your-secret-key"
export MINIO_SECURE="false"  # Set to "true" for HTTPS

Or create a .env file:

MINIO_ENDPOINT=localhost:9000
MINIO_ACCESS_KEY=your-access-key
MINIO_SECRET_KEY=your-secret-key
MINIO_SECURE=false

Usage with Claude Desktop

Add to your Claude Desktop configuration (~/AppData/Roaming/Claude/claude_desktop_config.json on Windows or ~/Library/Application Support/Claude/claude_desktop_config.json on macOS):

{
  "mcpServers": {
    "minio": {
      "command": "uv",
      "args": ["--directory", "D:\\Documents\\minio-mcp", "run", "minio-mcp"],
      "env": {
        "MINIO_ENDPOINT": "localhost:9000",
        "MINIO_ACCESS_KEY": "your-access-key",
        "MINIO_SECRET_KEY": "your-secret-key",
        "MINIO_SECURE": "false"
      }
    }
  }
}

Or using Python directly:

{
  "mcpServers": {
    "minio": {
      "command": "python",
      "args": ["-m", "minio_mcp.server"],
      "env": {
        "MINIO_ENDPOINT": "localhost:9000",
        "MINIO_ACCESS_KEY": "your-access-key",
        "MINIO_SECRET_KEY": "your-secret-key",
        "MINIO_SECURE": "false"
      }
    }
  }
}

Tool Reference

Bucket Operations

minio_list_buckets

List all buckets in MinIO storage.

{}

minio_make_bucket

Create a new bucket.

{
  "bucket_name": "my-new-bucket"
}

minio_remove_bucket

Remove an empty bucket.

{
  "bucket_name": "my-bucket"
}

minio_bucket_exists

Check if a bucket exists.

{
  "bucket_name": "my-bucket"
}

Object Operations

minio_list_objects

List objects in a bucket.

{
  "bucket_name": "my-bucket",
  "prefix": "folder/",
  "recursive": true
}

minio_get_object

Get object content.

{
  "bucket_name": "my-bucket",
  "object_name": "path/to/file.txt"
}

minio_put_object

Upload content as an object.

{
  "bucket_name": "my-bucket",
  "object_name": "new-file.txt",
  "content": "Hello, MinIO!",
  "content_type": "text/plain"
}

minio_upload_file

Upload a local file.

{
  "bucket_name": "my-bucket",
  "object_name": "uploaded-file.txt",
  "file_path": "/path/to/local/file.txt"
}

minio_download_file

Download object to local file.

{
  "bucket_name": "my-bucket",
  "object_name": "file.txt",
  "file_path": "/path/to/save/file.txt"
}

minio_remove_object

Remove an object.

{
  "bucket_name": "my-bucket",
  "object_name": "file-to-delete.txt"
}

minio_stat_object

Get object metadata.

{
  "bucket_name": "my-bucket",
  "object_name": "file.txt"
}

minio_presigned_url

Generate a presigned URL for downloading.

{
  "bucket_name": "my-bucket",
  "object_name": "file.txt",
  "expires": 3600
}

minio_copy_object

Copy an object.

{
  "source_bucket": "source-bucket",
  "source_object": "file.txt",
  "dest_bucket": "dest-bucket",
  "dest_object": "copied-file.txt"
}

Development

Setup Development Environment

# Clone the repository
git clone <repository-url>
cd minio-mcp

# Create virtual environment
python -m venv .venv
source .venv/bin/activate  # Linux/macOS
# or
.venv\Scripts\activate  # Windows

# Install with dev dependencies
pip install -e ".[dev]"

Running Tests

pytest

Quick Start with MinIO

If you don't have MinIO running, you can start it with Docker:

docker run -d \
  --name minio \
  -p 9000:9000 \
  -p 9001:9001 \
  -e MINIO_ROOT_USER=minioadmin \
  -e MINIO_ROOT_PASSWORD=minioadmin \
  minio/minio server /data --console-address ":9001"

Then configure the MCP server with:

  • MINIO_ENDPOINT=localhost:9000

  • MINIO_ACCESS_KEY=minioadmin

  • MINIO_SECRET_KEY=minioadmin

  • MINIO_SECURE=false

The MinIO Console will be available at http://localhost:9001

License

MIT License

Available Tools

13 tools
minio_bucket_existsB

Check if a bucket exists in MinIO

ParametersJSON Schema
NameRequiredDescriptionDefault
bucket_nameYesName of the bucket to check

TDQS

B3.1/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden of behavioral disclosure. While 'Check if' implies a read-only operation, it doesn't specify whether this requires authentication, what happens on errors (e.g., invalid bucket names), or the return format (e.g., boolean vs. detailed response). For a tool with zero annotation coverage, this leaves significant gaps in understanding its behavior.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, efficient sentence that directly states the tool's purpose without unnecessary words. It's front-loaded with the core action ('Check if'), making it easy to parse. Every part of the sentence earns its place by conveying essential information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's low complexity (one parameter, no output schema, no annotations), the description is minimally adequate. It covers the basic purpose but lacks details on usage context, behavioral traits, or output expectations. For a simple existence-check tool, this is borderline viable but leaves room for improvement in guiding the agent effectively.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, with the parameter 'bucket_name' clearly documented in the schema. The description doesn't add any semantic details beyond what the schema provides (e.g., bucket naming conventions, case-sensitivity). With high schema coverage, the baseline score of 3 is appropriate, as the description doesn't compensate but also doesn't detract.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb ('Check if') and resource ('a bucket exists in MinIO'), making the purpose immediately understandable. It distinguishes this tool from siblings like 'minio_list_buckets' (which lists all buckets) and 'minio_make_bucket' (which creates buckets). However, it doesn't explicitly mention the specific resource being checked (e.g., 'in the configured MinIO instance'), which would make it a perfect 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives. It doesn't mention prerequisites (e.g., needing bucket name), exclusions (e.g., not for checking object existence), or direct alternatives like 'minio_list_buckets' (which could also infer existence). Without such context, the agent must infer usage from the tool name alone.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

minio_copy_objectC

Copy an object to another location in MinIO

ParametersJSON Schema
NameRequiredDescriptionDefault
source_bucketYesSource bucket name
source_objectYesSource object name
dest_bucketYesDestination bucket name
dest_objectYesDestination object name

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure. It states the action ('Copy') but doesn't mention whether this requires specific permissions, if it overwrites existing destination objects, what happens on failure, or any rate limits. For a mutation tool with zero annotation coverage, this is a significant gap in transparency.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, efficient sentence that front-loads the core action ('Copy an object') and specifies the context ('to another location in MinIO') without any wasted words. Every part of the sentence contributes directly to understanding the tool's purpose.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity as a mutation operation with no annotations and no output schema, the description is incomplete. It doesn't cover behavioral aspects like permissions, overwrite behavior, error handling, or return values, which are critical for an agent to use this tool correctly in a MinIO context.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, with all parameters clearly documented in the schema (source_bucket, source_object, dest_bucket, dest_object). The description adds no additional parameter semantics beyond implying a copy operation between these locations, so it meets the baseline of 3 where the schema does the heavy lifting.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb ('Copy') and resource ('an object') with the destination context ('to another location in MinIO'), making the purpose immediately understandable. It distinguishes from siblings like 'minio_upload_file' or 'minio_put_object' by focusing on internal copying rather than external uploads, though it doesn't explicitly mention these distinctions.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to use this tool versus alternatives like 'minio_upload_file' for external data or 'minio_put_object' for creating new objects. The description implies usage for internal MinIO object copying but lacks explicit context, prerequisites, or exclusions, leaving the agent to infer based on tool names alone.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

minio_download_fileB

Download an object from MinIO to a local file

ParametersJSON Schema
NameRequiredDescriptionDefault
bucket_nameYesName of the bucket
object_nameYesName of the object to download
file_pathYesLocal path to save the file

TDQS

B3.2/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure. It states the action ('Download') but omits critical details like authentication requirements, error handling (e.g., if the bucket or object doesn't exist), file overwriting behavior, or performance considerations (e.g., for large files). This leaves significant gaps for safe and effective use.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, efficient sentence that directly states the tool's purpose without unnecessary words. It is front-loaded and wastes no space, making it easy to parse quickly.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity (a file operation with potential side effects), lack of annotations, and no output schema, the description is insufficient. It doesn't explain what happens on success (e.g., file saved locally) or failure, nor does it cover security or operational risks, leaving the agent poorly informed for reliable use.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has 100% description coverage, clearly documenting all three parameters (bucket_name, object_name, file_path). The description adds no additional semantic context beyond what the schema provides, such as examples or constraints (e.g., file_path must be writable). This meets the baseline for high schema coverage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the specific action ('Download an object') and resource ('from MinIO to a local file'), distinguishing it from siblings like minio_get_object (which may return data differently) or minio_upload_file (which performs the opposite operation). It precisely communicates the tool's function without ambiguity.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives, such as minio_get_object (which might return object data without saving to a file) or minio_presigned_url (for generating download links). It lacks context about prerequisites, error conditions, or comparisons to sibling tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

minio_get_objectC

Get object content from MinIO bucket

ParametersJSON Schema
NameRequiredDescriptionDefault
bucket_nameYesName of the bucket
object_nameYesName of the object to retrieve

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries full burden for behavioral disclosure. It states the action but doesn't describe what 'Get object content' actually returns (e.g., raw bytes, stream, metadata), whether it requires specific permissions, if there are size limitations, or how errors are handled. For a tool that presumably retrieves potentially large binary data, this lack of behavioral context is significant.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, efficient sentence that states exactly what the tool does without any wasted words. It's front-loaded with the core functionality and uses clear, direct language. Every word earns its place in this minimal but complete statement of purpose.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the complexity of object retrieval operations and the absence of both annotations and output schema, the description is insufficient. It doesn't explain what format the content is returned in, whether it includes metadata, if there are size limitations, or how binary data is handled. For a tool that presumably returns object content, the lack of output information is a significant gap in completeness.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema has 100% description coverage, with both parameters clearly documented in the schema itself. The description adds no additional parameter information beyond what's already in the schema properties. This meets the baseline of 3 for high schema coverage, but doesn't provide any extra semantic context about parameter usage or constraints.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('Get object content') and resource ('from MinIO bucket'), making the purpose immediately understandable. It distinguishes this as a retrieval operation rather than listing, uploading, or other bucket operations. However, it doesn't explicitly differentiate from similar siblings like 'minio_download_file' or 'minio_stat_object' which might also retrieve object data.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives. With siblings like 'minio_download_file', 'minio_stat_object', and 'minio_presigned_url' that might serve similar retrieval purposes, there's no indication of when this specific 'get' operation is preferred. No prerequisites, error conditions, or usage contexts are mentioned.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

minio_list_bucketsB

List all buckets in MinIO storage

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3.1/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries full burden for behavioral disclosure. It states what the tool does but reveals nothing about permissions needed, rate limits, pagination behavior, error conditions, or response format. For a tool with zero annotation coverage, this is insufficient behavioral context.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, efficient sentence that states exactly what the tool does without any wasted words. It's appropriately sized for a simple list operation and front-loads the essential information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's simplicity (no parameters) but lack of annotations and output schema, the description is incomplete. It doesn't explain what the return value looks like (bucket names, metadata, etc.), error conditions, or any behavioral constraints. For even a simple tool, more context would be helpful for an AI agent.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has zero parameters with 100% schema description coverage, so the schema already fully documents the parameter situation. The description appropriately doesn't discuss parameters, maintaining focus on the tool's purpose. Baseline for zero parameters is 4.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb ('List') and resource ('all buckets in MinIO storage'), making the purpose immediately understandable. However, it doesn't explicitly differentiate from its sibling 'minio_list_objects' (which lists objects within buckets rather than buckets themselves), preventing a perfect score.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives. It doesn't mention sibling tools like 'minio_bucket_exists' (for checking a specific bucket) or 'minio_make_bucket' (for creating buckets), leaving the agent to infer usage context from tool names alone.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

minio_list_objectsC

List objects in a MinIO bucket

ParametersJSON Schema
NameRequiredDescriptionDefault
bucket_nameYesName of the bucket
prefixNoFilter objects by prefix (optional)
recursiveNoList objects recursively (default: false)

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries full burden for behavioral disclosure but offers minimal information. It doesn't mention whether this is a read-only operation, what permissions are required, how results are returned (e.g., pagination, format), or any rate limits. This leaves significant gaps for an agent to understand the tool's behavior.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, efficient sentence that communicates the core purpose without any wasted words. It's appropriately sized for a straightforward list operation and gets directly to the point.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool with 3 parameters, no annotations, and no output schema, the description is inadequate. It doesn't explain what the output looks like (e.g., list of object names, metadata), how errors are handled, or any behavioral nuances. The agent would struggle to use this effectively without trial and error.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The description adds no parameter information beyond what's already in the schema, which has 100% coverage with clear descriptions for all three parameters. This meets the baseline score of 3 when schema coverage is high, but doesn't provide additional context like examples or edge cases.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('List objects') and target resource ('in a MinIO bucket'), making the purpose immediately understandable. However, it doesn't differentiate from sibling tools like 'minio_list_buckets' or 'minio_stat_object', which prevents a perfect score.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to use this tool versus alternatives like 'minio_list_buckets' (for listing buckets instead of objects) or 'minio_stat_object' (for detailed info on a single object). The description only states what it does, not when it's appropriate.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

minio_make_bucketC

Create a new bucket in MinIO

ParametersJSON Schema
NameRequiredDescriptionDefault
bucket_nameYesName of the bucket to create

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries full burden for behavioral disclosure. While 'Create' implies a write/mutation operation, it doesn't describe important behaviors: whether this requires specific permissions, what happens if the bucket already exists (error? overwrite?), or any rate limits. The description is minimal and lacks operational context.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is extremely concise - a single sentence that directly states the tool's purpose with zero wasted words. It's front-loaded with the core action and resource, making it immediately scannable and understandable.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a mutation tool (bucket creation) with no annotations and no output schema, the description is inadequate. It doesn't explain what happens on success/failure, return values, error conditions, or provide any operational context. Given the complexity of a write operation in a storage system, more completeness is needed.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already fully documents the single 'bucket_name' parameter. The description adds no additional parameter semantics beyond what's in the schema - it doesn't explain naming constraints, format requirements, or provide examples. Baseline 3 is appropriate when schema does the documentation work.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('Create') and resource ('new bucket in MinIO'), making the purpose immediately understandable. It doesn't explicitly differentiate from sibling tools like 'minio_remove_bucket' or 'minio_list_buckets', but the verb 'Create' provides inherent distinction from those operations.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives. It doesn't mention prerequisites (e.g., needing appropriate permissions), when not to use it (e.g., if bucket already exists), or refer to sibling tools like 'minio_bucket_exists' for checking existence first.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

minio_presigned_urlC

Generate a presigned URL for object download

ParametersJSON Schema
NameRequiredDescriptionDefault
bucket_nameYesName of the bucket
object_nameYesName of the object
expiresNoURL expiration time in seconds (default: 3600)

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries full burden for behavioral disclosure. It states the tool generates a URL but doesn't explain what a 'presigned URL' entails (e.g., temporary access, authentication bypass, or security implications). It mentions 'download' but doesn't clarify if this is read-only, if it modifies data, or what happens on failure. For a tool with potential security/access implications, this is a significant gap.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, efficient sentence: 'Generate a presigned URL for object download'. It's front-loaded with the core action and resource, with zero wasted words. Every part of the sentence contributes directly to understanding the tool's function.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no annotations, no output schema, and a tool that generates URLs (which may have security/access implications), the description is incomplete. It doesn't explain what the tool returns (e.g., URL string, error handling), behavioral traits like idempotency or side effects, or how it differs from siblings. For a 3-parameter tool in a context-rich server, more context is needed.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema fully documents all three parameters (bucket_name, object_name, expires). The description adds no parameter-specific information beyond what's in the schema (e.g., it doesn't explain URL generation logic or default expiration). With high schema coverage, the baseline score of 3 is appropriate as the description doesn't enhance parameter understanding.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose: 'Generate a presigned URL for object download'. It specifies the verb ('Generate') and resource ('presigned URL'), but doesn't distinguish it from potential alternatives like 'minio_get_object' or 'minio_download_file' which might serve similar download purposes. The description is accurate but lacks sibling differentiation.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives. It doesn't mention prerequisites (e.g., bucket/object existence), compare it to siblings like 'minio_download_file' (direct download) or 'minio_get_object' (object retrieval), or specify scenarios where a presigned URL is preferred over direct access. Usage context is implied but not explicit.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

minio_put_objectC

Upload content as an object to MinIO bucket

ParametersJSON Schema
NameRequiredDescriptionDefault
bucket_nameYesName of the bucket
object_nameYesName for the object in the bucket
contentYesText content to upload
content_typeNoMIME type of the content (default: application/octet-stream)

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries full burden for behavioral disclosure. While 'Upload' implies a write operation, it doesn't specify permissions required, whether it overwrites existing objects, error conditions, or any rate limits. For a mutation tool with zero annotation coverage, this leaves significant behavioral gaps.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, efficient sentence that states the core purpose without any unnecessary words. It's appropriately sized for a straightforward upload operation and gets directly to the point.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a mutation tool with no annotations and no output schema, the description is insufficient. It doesn't explain what happens on success/failure, return values, error conditions, or how it differs from similar sibling tools. Given the complexity of object storage operations and the rich sibling toolset, more context is needed.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so all parameters are documented in the schema. The description doesn't add any additional parameter semantics beyond what's already in the schema descriptions. The baseline of 3 is appropriate when the schema does the heavy lifting for parameter documentation.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('Upload content') and target ('as an object to MinIO bucket'), which is specific and unambiguous. However, it doesn't differentiate from sibling tools like 'minio_upload_file' or 'minio_copy_object', leaving some ambiguity about when to choose this specific upload method.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives like 'minio_upload_file' or 'minio_copy_object'. There's no mention of prerequisites, constraints, or typical use cases that would help an agent choose between these similar upload/creation tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

minio_remove_bucketB

Remove an empty bucket from MinIO

ParametersJSON Schema
NameRequiredDescriptionDefault
bucket_nameYesName of the bucket to remove (must be empty)

TDQS

B3.3/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure. It mentions that the bucket must be empty, which is a critical constraint, but doesn't cover other important aspects like permissions required, whether the operation is reversible, error conditions (e.g., if the bucket doesn't exist), or rate limits. This leaves significant gaps in understanding the tool's behavior.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, direct sentence that efficiently conveys the core action and constraint ('Remove an empty bucket from MinIO'). It is front-loaded with the main purpose, has zero wasted words, and is appropriately sized for a simple tool with one parameter.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity (a destructive operation with no annotations and no output schema), the description is insufficiently complete. It lacks details on behavioral traits (e.g., permissions, reversibility), error handling, and what the tool returns (since there's no output schema). For a removal tool, this leaves the agent with critical gaps in understanding how to use it safely and effectively.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has 100% description coverage, with the parameter 'bucket_name' clearly documented as 'Name of the bucket to remove (must be empty)'. The description adds no additional parameter semantics beyond what's in the schema, but since schema coverage is high (>80%), the baseline score is 3. The description's mention of 'empty bucket' reinforces the schema's constraint, slightly enhancing clarity, warranting a score of 4.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('Remove') and resource ('an empty bucket from MinIO'), making the purpose immediately understandable. However, it doesn't explicitly distinguish this tool from sibling tools like 'minio_remove_object' (which removes objects rather than buckets) or 'minio_make_bucket' (which creates buckets), missing an opportunity for full sibling differentiation.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies when to use this tool (to remove empty buckets) but doesn't provide explicit guidance on when NOT to use it or mention alternatives. For instance, it doesn't clarify what happens if the bucket isn't empty or whether there are other bucket management tools to consider, leaving usage context somewhat incomplete.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

minio_remove_objectC

Remove an object from a MinIO bucket

ParametersJSON Schema
NameRequiredDescriptionDefault
bucket_nameYesName of the bucket
object_nameYesName of the object to remove

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries full burden. It states the action is 'Remove,' implying a destructive mutation, but lacks critical behavioral details: whether deletion is permanent or reversible, required permissions, error handling (e.g., if object doesn't exist), or side effects. This is inadequate for a mutation tool with zero annotation coverage.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, direct sentence with zero wasted words. It front-loads the core action ('Remove') and target, making it immediately scannable and efficient. Every word earns its place by conveying essential purpose without redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a destructive mutation tool with no annotations and no output schema, the description is incomplete. It lacks behavioral transparency (e.g., permanence, errors), usage guidelines, and any details on return values or side effects. Given the complexity and risk of object deletion, this minimal description leaves significant gaps for safe and effective use.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, with clear parameter descriptions in the schema ('Name of the bucket', 'Name of the object to remove'). The description adds no additional semantic context beyond implying these parameters are required for the removal action. Baseline 3 is appropriate as the schema handles parameter documentation effectively.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('Remove') and target ('an object from a MinIO bucket'), making the purpose immediately understandable. It distinguishes itself from siblings like 'minio_remove_bucket' by specifying object-level deletion. However, it doesn't explicitly differentiate from other destructive operations like 'minio_put_object' (overwrites) or 'minio_copy_object' (moves), which could be clearer.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to use this tool versus alternatives. For example, it doesn't mention prerequisites (e.g., bucket must exist), when not to use it (e.g., for batch deletions), or alternatives like 'minio_remove_bucket' for bucket-level removal. The agent must infer usage from the name and context alone.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

minio_stat_objectA

Get object metadata without downloading content

ParametersJSON Schema
NameRequiredDescriptionDefault
bucket_nameYesName of the bucket
object_nameYesName of the object

TDQS

A3.6/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. It states the tool retrieves metadata but does not disclose behavioral traits such as required permissions, error handling (e.g., if object doesn't exist), rate limits, or what metadata fields are returned. This leaves significant gaps for a tool that interacts with storage.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, efficient sentence that is front-loaded with the core purpose. There is no wasted text, making it highly concise and well-structured for quick understanding.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no annotations and no output schema, the description is incomplete. It doesn't explain what metadata is returned, error conditions, or operational context (e.g., read-only nature, authentication needs). For a tool with two parameters and interaction with object storage, more detail is needed to guide effective use.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, with clear descriptions for both parameters (bucket_name and object_name). The description does not add meaning beyond the schema, as it doesn't specify parameter formats or constraints. Baseline 3 is appropriate since the schema adequately documents the parameters.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the specific action ('Get object metadata') and resource ('object'), distinguishing it from siblings like minio_get_object (which downloads content) and minio_list_objects (which lists objects). It explicitly mentions 'without downloading content', which clarifies the scope.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage for retrieving metadata only, not content, which differentiates it from minio_get_object. However, it lacks explicit guidance on when to use it versus alternatives like checking object existence or when metadata retrieval is preferred over full download.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

minio_upload_fileC

Upload a local file to MinIO bucket

ParametersJSON Schema
NameRequiredDescriptionDefault
bucket_nameYesName of the bucket
object_nameYesName for the object in the bucket
file_pathYesPath to the local file to upload
content_typeNoMIME type of the content (auto-detected if not provided)

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden of behavioral disclosure. It states the action ('Upload') but doesn't cover critical aspects like authentication requirements, error handling (e.g., what happens if the bucket doesn't exist), rate limits, or whether the operation is idempotent. For a mutation tool with zero annotation coverage, this leaves significant gaps in understanding its behavior.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, efficient sentence that gets straight to the point with zero wasted words. It's front-loaded with the core action and resource, making it easy to parse quickly. Every word earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given this is a mutation tool (upload implies write) with no annotations and no output schema, the description is incomplete. It doesn't address behavioral traits like side effects, error conditions, or response format. For a tool that modifies state, more context is needed to use it safely and effectively.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, with all parameters clearly documented in the input schema. The description doesn't add any meaningful semantic context beyond what the schema provides (e.g., it doesn't explain parameter interactions or constraints). This meets the baseline of 3 since the schema does the heavy lifting, but no extra value is added.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('Upload') and target ('a local file to MinIO bucket'), making the purpose immediately understandable. However, it doesn't differentiate this tool from sibling tools like 'minio_put_object' or 'minio_copy_object', which might have overlapping functionality. The description is specific but lacks sibling distinction.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives like 'minio_put_object' or 'minio_copy_object'. It doesn't mention prerequisites (e.g., bucket must exist), exclusions, or typical use cases. Without this context, an agent might struggle to choose between similar tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 13 tool updatesv0.1.0
    • First observedminio_bucket_exists
    • First observedminio_copy_object
    • First observedminio_download_file
    • First observedminio_get_object
    • First observedminio_list_buckets
    • First observedminio_list_objects
    • First observedminio_make_bucket
    • First observedminio_presigned_url
    • First observedminio_put_object
    • First observedminio_remove_bucket
    • First observedminio_remove_object
    • First observedminio_stat_object
    • First observedminio_upload_file

TDQS

A3.6/5.0

Scored across 13 tools

Disambiguation5/5

Every tool has a clearly distinct purpose with no ambiguity. Each targets a specific action on a specific resource (buckets or objects), such as minio_bucket_exists for checking existence versus minio_make_bucket for creation, and minio_get_object for content retrieval versus minio_stat_object for metadata. The descriptions reinforce these distinctions, making misselection unlikely.

Naming Consistency5/5

All tool names follow a consistent verb_noun pattern with the prefix 'minio_' and snake_case throughout. The verbs are clear and descriptive (e.g., list, get, make, remove), and the nouns specify the target (e.g., buckets, objects, bucket, object). This predictability aids agent understanding and tool selection.

Tool Count5/5

With 13 tools, the count is well-scoped for a MinIO storage server, covering essential operations for bucket and object management. Each tool earns its place by addressing a specific need, such as existence checks, CRUD operations, listing, and utilities like presigned URLs, without being overly sparse or bloated.

Completeness5/5

The tool set provides complete CRUD/lifecycle coverage for the MinIO domain, including bucket operations (create, list, check, remove) and object operations (upload, download, copy, get, remove, stat, presigned URLs). There are no obvious gaps, enabling agents to handle full workflows without dead ends.

Maintenance

ActivityInactive
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • F
    license
    B
    quality
    D
    maintenance
    Enables AI models to interact with Akave's S3-compatible storage by providing tools for managing storage buckets and objects through standardized Model Context Protocol (MCP).
    13
    15
    3
    -
  • A
    license
    Not graded
    quality
    F
    maintenance
    Enables interaction with AWS S3 through MCP, supporting bucket and object management, lifecycle configurations, tagging, policies, CORS settings, presigned URLs, and file uploads/downloads.
    3
    MIT
  • A
    license
    Not graded
    quality
    A
    maintenance
    Provides MCP tools for AWS S3 and S3-compatible storage, enabling file upload, download, listing, deletion, and temporary remote file staging via natural language.
    BSD 3-Clause
  • F
    license
    Not graded
    quality
    C
    maintenance
    Enables LLM agents to interact with MinIO/S3 object storage, supporting bucket and object operations like listing, reading, writing, and generating presigned URLs.
    1
    -