wasabi-mcp
wasabi-mcp
Servidor MCP para Wasabi (almacenamiento en la nube en caliente compatible con S3). Expone los datos de utilización de buckets de la Stats API de Wasabi como una herramienta MCP.
Descripción general
Servicio HTTP sin estado. Las credenciales nunca se persisten: cada solicitud aporta sus propias credenciales mediante cabeceras, que se utilizan únicamente durante la vida de esa única solicitud.
Admite solicitudes concurrentes; el aislamiento de credenciales por solicitud se realiza mediante
contextvarsde Python, no mediante una instancia de cliente global/compartida.Puntos de entrada:
POST /mcp(protocolo MCP) yGET /health(comprobación de estado).Puerto predeterminado:
8080(configurable medianteMCP_HTTP_PORT).
Related MCP server: mcp-server-s3
Autenticación
La Wasabi Stats API (stats.wasabisys.com) — una API separada y más sencilla que la API de almacenamiento de objetos compatible con S3 — utiliza una única cabecera estática, sin inicio de sesión ni intercambio de tokens:
Authorization: <AccessKey>:<SecretKey>Las claves utilizadas deben ser claves raíz de Wasabi o claves de subusuario con una política de facturación/estadísticas adjunta (WasabiAccountStatsAccess o WasabiBucketStatsAccess) — las claves de solo almacenamiento se rechazan. Esto ya es totalmente sin estado por diseño del propio proveedor; no se almacena nada en caché entre llamadas MCP.
Parámetros de autorización de la cabecera
Cabecera | Tipo | ¿Obligatorio? | Valor predeterminado | Valores enumerados | Descripción del campo | Ejemplo |
| string | Sí | Ninguno | Ninguno | Clave de acceso de la API de Wasabi (debe ser una clave raíz o una clave con una política de permisos de facturación/estadísticas) |
|
| string | Sí | Ninguno | Ninguno | La clave secreta correspondiente |
|
Si falta cualquiera de las dos cabeceras, se devuelve 401:
{
"error": "Missing credentials",
"message": "This server requires the X-Wasabi-Access-Key and X-Wasabi-Secret-Key headers",
"required_headers": ["X-Wasabi-Access-Key", "X-Wasabi-Secret-Key"],
"optional_headers": []
}Variables de entorno
Variable | Tipo | ¿Obligatorio? | Valor predeterminado | Descripción |
| int | No |
| Puerto de escucha HTTP |
| string | No |
| Dirección de escucha HTTP |
| string | No |
| URL base de la Wasabi Stats API (fija, independiente de la región del bucket) |
Endpoint MCP
POST /mcp— protocolo MCP (transporte HTTP por streaming)GET /health— comprobación de estado, devuelve{"status": "ok"}(sondeo puramente local, no llama a la API de Wasabi)
Lista de herramientas
Herramienta | Función | Parámetros |
| Enumera los registros de uso diario de almacenamiento/llamadas a la API de todos los buckets de la cuenta |
|
Las respuestas son el JSON sin procesar del proveedor ({"PageInfo": {...}, "Records": [...]}), serializado de forma compacta (sin sangría, ensure_ascii=False) y limitado a 20 000 caracteres: si la lista Records hiciera que la respuesta superara ese límite, se trunca añadiendo a la carga útil los marcadores truncated/truncated_field/original_count.
Gestión de errores
En caso de error, las herramientas devuelven una envoltura de error JSON (como cadena, no como error a nivel de protocolo) en lugar de lanzar una excepción:
{"error": {"code": "upstream_error", "message": "...", "retryable": true}}code es uno de un vocabulario fijo: not_configured, unauthorized, not_found, invalid_argument, rate_limited, upstream_error. retryable indica a quien llama si merece la pena reintentar. Los conjuntos de resultados vacíos (sin registros de uso para el rango solicitado) se devuelven como un resultado vacío normal, no como un error.
Ejemplo de prueba
# Health check
curl -s http://localhost:8080/health
# Call a tool via the MCP protocol (streamable HTTP) — requires an
# initialize handshake first per the MCP spec; abbreviated example below
# shows the tool-call request body only:
curl -s -X POST http://localhost:8080/mcp \
-H "X-Wasabi-Access-Key: <your-access-key>" \
-H "X-Wasabi-Secret-Key: <your-secret-key>" \
-H "Content-Type: application/json" \
-H "Accept: application/json, text/event-stream" \
-H "mcp-session-id: <session-id-from-initialize>" \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "wasabi_get_bucket_utilizations",
"arguments": {}
}
}'Verificado en vivo (2026-07-30) contra una cuenta real de Wasabi: wasabi_get_bucket_utilizations se invocó de extremo a extremo a través de este servidor en ejecución y devolvió datos reales: 540 registros reales de utilización de buckets en 270 páginas, incluidos nombres reales de buckets (p. ej. «oraclegroup», «centrewestib») en la región ap-southeast-2, con métricas reales de almacenamiento/llamadas a la API.
Referencia de la API
Pública, sin necesidad de iniciar sesión:
Descripción general: https://docs.wasabi.com/apidocs/wasabi-stats-api
Autenticación: https://docs.wasabi.com/apidocs/authentication-with-wasabi-stats-api
Este endpoint: https://docs.wasabi.com/apidocs/stats-api-get-v1standalone-bucket-utilizations
Limitaciones conocidas
El alcance es exactamente el endpoint configurado de MSPbots, no toda la superficie de la API del proveedor — la Wasabi Stats API también ofrece un endpoint de resumen a nivel de cuenta (
GET /v1/standalone/utilizations) y consultas de detalle por bucket por nombre o número; todo ello queda fuera del alcance aquí. La API de almacenamiento de objetos compatible con S3 de Wasabi (CRUD de buckets/objetos) es una API completamente distinta y también queda fuera del alcance.El campo
regionque MSPbots también almacena para esta integración no lo utiliza este servidor — el único endpoint que MSPbots usa realmente (utilizaciones de buckets de la Stats API) tiene una URL base fija (https://stats.wasabisys.com) independientemente de en qué región de Wasabi se encuentre un bucket determinado; cada registro devuelto ya incluye su propio campoRegion.regionsolo importaría para llamadas directas de almacenamiento de objetos compatible con S3, que este servidor no realiza.Los valores predeterminados del intervalo de fechas
from/tolos controla el proveedor — si se omiten, Wasabi utiliza por defecto «hace un mes» hasta «hoy»; este servidor no aplica su propio valor predeterminado y simplemente omite el parámetro cuando no se proporciona.
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Servers
- FlicenseBqualityDmaintenanceA lightweight MCP server that provides real-time hardware statistics including CPU, memory, disk, and NVIDIA GPU usage. It enables users to monitor system performance and retrieve comprehensive host machine specifications through a standardized interface.1
- AlicenseAqualityDmaintenanceMCP server for AWS S3 — list buckets, browse objects, upload/download files, and generate presigned URLs.7604MIT
- AlicenseNot gradedqualityDmaintenanceMCP server for uploading, listing, and retrieving files on S3-compatible storage (AWS S3, DigitalOcean Spaces) with public/private access and temporary URLs.11MIT
- AlicenseNot gradedqualityDmaintenanceMCP server for AWS S3 and compatible object stores, enabling LLM clients to browse buckets and fetch objects.MIT No Attribution
Related MCP Connectors
MCP server exposing Kettle Logic insight articles & industry guidance as tools + resources.
Hosted Amazon Seller and Vendor MCP server for Claude, ChatGPT, Cursor, Codex, Gemini, Copilot.
MCP server for interacting with the Supabase platform
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/MSPbotsAI/wasabi-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server