Skip to content

apiminio

docs.apimin.io Release PyPI Version Build status codecov Commit activity License

apiminio banner

apiminio is a Python package that provides a ready-to-use REST API for interacting with MinIO S3 storage, built with FastAPI and the MinIO Python client. It enables seamless file uploads, downloads, and bucket management via HTTP interface ideal for integrating MinIO S3 into your applications with minimal setup.

Additionally, wrapped AI agent tools via MCP are now supported to provide an interface for LLMs to S3 bucket objects ✨

πŸ”œ Customization of your own endpoints!

πŸ“„ Table of Contents

πŸ’‘ Project

  1. [ ] At 1st basic implementation of apiminio, handling buckets and files will be focused.
  2. [x] Create buckets
  3. [x] List buckets
  4. [x] Delete buckets
  5. [x] Upload files
  6. [ ] Download files
  7. [x] Delete files
  8. [x] MCP (Model Context Protocol) wrapped endpoints to enable usage for AI agent tools
  9. [ ] Customization of additional endpoints and MCP tools
  10. [ ] Security will be at the 2nd development stage using authenticated sessions by credentials as well as tokens.
  11. [ ] Certificate handling and TLS will be the 3rd level.

🚦 Prerequisites

πŸš€ Install

Recommended

uv add apiminio

or use pip

pip install apiminio

πŸ’₯ Usage 🌰🐿️

Create your python file, e.g., apiminio_server.py, configure your S3 server and run it. You can use the following examples as a starting point.

βœ”οΈ Minimal Example

from apiminio import Apiminio, MinioConfig
from pydantic import SecretStr

app = Apiminio(
    minio_config=MinioConfig(
        endpoint="localhost:9000",
        access_key="minioadmin",
        secret_key=SecretStr("minioadmin"),
        secure=False
    )
)

if __name__ == "__main__":
    # Serve FastAPI using Uvicorn
    import uvicorn

    uvicorn.run("minimal:app", host="0.0.0.0", port=8000, reload=True)

🐍 Run the Server

Either just run python apiminio_server.py or use fastapi run apiminio_server.py.

You can use flags and parmeters inherited from FastAPI to deploy your apiminio server via Uvicorn πŸ¦„πŸ Open apiminio docs and explore your new API on http://localhost:8000 πŸ”¬

Support

Thats it! Please leave me a ⭐ if you like the projekt πŸ€— More features coming soon!

πŸ₯ Kubernetes

This repository has a skaffold.yaml configuration with a working minio as well as the apiminio service to bootstrap the development πŸ˜ŽπŸ™Œ

πŸ›ž Commands

To clone this repository, run:

git clone https://github.com/raederan/apiminio.git

To instantly provide minio with apiminio, e.g., run:

skaffold dev --no-prune=false --cache-artifacts=false --default-repo localhost:32000/apiminio --port-forward

πŸ“œ License

This project is licensed under the terms of the Apache License 2.0.

The banner file is based on an original png generated using Microsoft Copilot and subsequently modified further as svg by the initial author of this repository.

πŸ¦₯ Authors

Andreas RΓ€der