LetsCloud MCP Server
Gestiona la infraestructura de LetsCloud a través de conversaciones en lenguaje natural. Compatible con inglés y portugués.
Documentación
LetsCloud MCP Server
Servidor MCP remoto + API REST para gestionar la infraestructura de LetsCloud con asistentes de IA.
Este proyecto expone la plataforma en la nube de LetsCloud a través del Model Context Protocol (MCP) para que asistentes de IA como Claude, Cursor, Windsurf, VS Code Copilot y cualquier cliente compatible con MCP puedan crear y gestionar servidores, snapshots y claves SSH en nombre del usuario.
A diferencia de los servidores MCP "locales", este es un servicio alojado: cualquier cliente de LetsCloud puede conectarse proporcionando su clave de API — no se requiere instalación en el lado del cliente.
El mismo backend también expone una API REST limpia en /api/v1 para integraciones HTTP simples (curl, scripts, automatizaciones).
✨ Características
- 🔌 Transporte MCP nativo (Streamable HTTP) en
/mcp - 🌐 API REST en
/api/v1que replica cada herramienta MCP - 🔑 Autenticación por solicitud mediante
Authorization: Bearer <api-key> - 📦 Cobertura completa de la API de LetsCloud — instancias, claves SSH, snapshots, planes, imágenes, ubicaciones, cuenta
- ⚡ Asíncrono, rápido y ligero (FastAPI + httpx + SDK oficial de MCP)
- 🐳 Listo para Docker
- 📝 Documentación OpenAPI autogenerada en
/docs
🧠 Cómo funciona
┌──────────────────┐ Authorization: Bearer <api-key> ┌──────────────────────┐
│ AI client (MCP) │ ───────────────────────────────────────► │ mcp.letscloud.io/mcp │
│ Claude, Cursor… │ │ (this server) │
└──────────────────┘ └──────────┬───────────┘
│ api-token: <key>
▼
┌──────────────────────────┐
│ core.letscloud.io/api │
└──────────────────────────┘
La clave de API del usuario nunca sale de la solicitud: el servidor simplemente la reenvía al upstream de LetsCloud y devuelve la respuesta. El servidor no almacena credenciales.
🚀 Inicio rápido (usando el servidor alojado)
Obtén tu clave de API
Genera una clave de API en el panel de LetsCloud.
Configura tu cliente MCP
Claude Desktop / Cursor / Windsurf (MCP remoto)
{
"mcpServers": {
"letscloud": {
"url": "https://mcp.letscloud.io/mcp",
"headers": {
"Authorization": "Bearer YOUR_LETSCLOUD_API_KEY"
}
}
}
}
Nota: los nombres exactos de los campos pueden variar ligeramente entre clientes (algunos usan
transport: "streamable-http", otros lo detectan automáticamente). Consulta la documentación de tu cliente para "servidor MCP remoto".
Prueba con curl (API REST)
curl -H "Authorization: Bearer YOUR_LETSCLOUD_API_KEY" \
https://mcp.letscloud.io/api/v1/account
curl -H "Authorization: Bearer YOUR_LETSCLOUD_API_KEY" \
https://mcp.letscloud.io/api/v1/instances
🛠️ Herramientas disponibles
| Herramienta MCP | Endpoint REST | Descripción |
|---|---|---|
get_account_info | GET /api/v1/account | Perfil de la cuenta (nombre, saldo, correo…) |
list_locations | GET /api/v1/locations | Todas las ubicaciones de datacenter |
list_plans | GET /api/v1/locations/{slug}/plans | Planes disponibles en una ubicación |
list_images | GET /api/v1/locations/{slug}/images | Imágenes de SO en una ubicación |
list_ssh_keys | GET /api/v1/ssh-keys | Listar claves SSH |
get_ssh_key | GET /api/v1/ssh-keys/{title} | Obtener una clave SSH |
create_ssh_key | POST /api/v1/ssh-keys | Crear clave SSH |
delete_ssh_key | DELETE /api/v1/ssh-keys/{slug} | Eliminar clave SSH |
list_servers | GET /api/v1/instances | Listar instancias |
get_server | GET /api/v1/instances/{id} | Detalles de la instancia |
create_server | POST /api/v1/instances | Crear instancia |
delete_server | DELETE /api/v1/instances/{id} | Eliminar instancia |
start_server | PUT /api/v1/instances/{id}/power-on | Encender |
shutdown_server | PUT /api/v1/instances/{id}/power-off | Apagar |
reboot_server | PUT /api/v1/instances/{id}/reboot | Reiniciar |
reset_server_password | PUT /api/v1/instances/{id}/reset-password | Restablecer contraseña de root |
list_snapshots | GET /api/v1/snapshots | Listar snapshots |
get_snapshot | GET /api/v1/snapshots/{slug} | Detalles del snapshot |
create_snapshot | POST /api/v1/instances/{id}/snapshots | Crear snapshot |
update_snapshot | PUT /api/v1/snapshots/{slug} | Renombrar snapshot |
delete_snapshot | DELETE /api/v1/snapshots/{slug} | Eliminar snapshot |
La documentación interactiva completa (con esquemas de solicitud/respuesta) está disponible en /docs.
📡 Alojado vs autoalojado
Este proyecto se ofrece como servicio alojado en https://mcp.letscloud.io, operado por el equipo de LetsCloud. Como usuario final solo necesitas tu clave de API de LetsCloud — no hay nada que instalar localmente.
Si quieres ejecutar tu propia instancia privada (VPC corporativa, pruebas sin conexión, contribuciones), consulta DEPLOY.md para una configuración de Docker o Python con un solo comando.
🔐 Autenticación
Cada solicitud a /mcp y /api/v1/* debe incluir la clave de API de LetsCloud del usuario en una de las siguientes opciones:
Authorization: Bearer <api-key>(recomendada, compatible con MCP)X-LetsCloud-Token: <api-key>(alternativa)
El servidor reenvía la clave a la API de LetsCloud como api-token: <key> (coincidiendo con el comportamiento del SDK oficial de Go). El servidor no almacena nada.
🏗️ Arquitectura
src/letscloud_mcp/
├── main.py # FastAPI app, mounts /mcp and /api/v1
├── __main__.py # uvicorn entrypoint (python -m letscloud_mcp)
├── config.py # Settings via pydantic-settings
├── auth.py # Per-request token extraction (ContextVar)
├── logging_setup.py # structlog
├── letscloud/
│ ├── client.py # Async httpx client for core.letscloud.io
│ ├── models.py # Pydantic models (Profile, Instance, Snapshot…)
│ └── exceptions.py
├── mcp_app/
│ ├── server.py # FastMCP server (Streamable HTTP)
│ └── tools.py # @mcp.tool functions
└── rest/
└── routes.py # FastAPI router for /api/v1
📄 Licencia
MIT — consulta LICENSE.
🔗 Enlaces
- LetsCloud – proveedor de nube
- SDK oficial de Go – la base de este cliente
- Model Context Protocol
- Guía de autoalojamiento
- Política de seguridad · Contribuciones