LetsCloud MCP Server

Gerencie a infraestrutura do LetsCloud por meio de conversas em linguagem natural. Suporta tanto inglês quanto português.

Documentação

LetsCloud MCP Server

🇧🇷 Versão em português

Servidor MCP remoto + API REST para gerenciar a infraestrutura LetsCloud com assistentes de IA.

Este projeto expõe a plataforma de nuvem da LetsCloud por meio do Model Context Protocol (MCP) para que assistentes de IA como Claude, Cursor, Windsurf, VS Code Copilot e qualquer cliente compatível com MCP possam criar e gerenciar servidores, snapshots e chaves SSH em nome do usuário.

Diferente dos servidores MCP "locais", este é um serviço hospedado: qualquer cliente LetsCloud pode se conectar fornecendo sua chave de API — sem necessidade de instalação no lado do cliente.

O mesmo backend também expõe uma API REST limpa em /api/v1 para integrações HTTP simples (curl, scripts, automações).


✨ Recursos

  • 🔌 Transporte MCP nativo (Streamable HTTP) em /mcp
  • 🌐 API REST em /api/v1 espelhando todas as ferramentas MCP
  • 🔑 Autenticação por requisição via Authorization: Bearer <api-key>
  • 📦 Cobertura completa da API LetsCloud — instâncias, chaves SSH, snapshots, planos, imagens, localizações, conta
  • ⚡ Assíncrono, rápido e leve (FastAPI + httpx + SDK MCP oficial)
  • 🐳 Pronto para Docker
  • 📝 Documentação OpenAPI gerada automaticamente em /docs

🧠 Como funciona

┌──────────────────┐      Authorization: Bearer <api-key>     ┌──────────────────────┐
│ AI client (MCP)  │ ───────────────────────────────────────► │ mcp.letscloud.io/mcp │
│ Claude, Cursor…  │                                          │  (this server)       │
└──────────────────┘                                          └──────────┬───────────┘
                                                                         │  api-token: <key>
                                                                         ▼
                                                            ┌──────────────────────────┐
                                                            │ core.letscloud.io/api    │
                                                            └──────────────────────────┘

A chave de API do usuário nunca sai da requisição: o servidor apenas a repassa para o upstream da LetsCloud e retorna a resposta. O servidor em si não armazena nenhuma credencial.


🚀 Início rápido (usando o servidor hospedado)

Obtenha sua chave de API

Gere uma chave de API no painel da LetsCloud.

Configure seu cliente MCP

Claude Desktop / Cursor / Windsurf (MCP remoto)

{
  "mcpServers": {
    "letscloud": {
      "url": "https://mcp.letscloud.io/mcp",
      "headers": {
        "Authorization": "Bearer YOUR_LETSCLOUD_API_KEY"
      }
    }
  }
}

Nota: os nomes exatos dos campos podem variar ligeiramente entre clientes (alguns usam transport: "streamable-http", outros detectam automaticamente). Consulte a documentação do seu cliente para "servidor MCP remoto".

Teste com 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

🛠️ Ferramentas disponíveis

Ferramenta MCPEndpoint RESTDescrição
get_account_infoGET /api/v1/accountPerfil da conta (nome, saldo, e-mail…)
list_locationsGET /api/v1/locationsTodas as localizações de datacenter
list_plansGET /api/v1/locations/{slug}/plansPlanos disponíveis em uma localização
list_imagesGET /api/v1/locations/{slug}/imagesImagens de SO em uma localização
list_ssh_keysGET /api/v1/ssh-keysListar chaves SSH
get_ssh_keyGET /api/v1/ssh-keys/{title}Obter uma chave SSH
create_ssh_keyPOST /api/v1/ssh-keysCriar chave SSH
delete_ssh_keyDELETE /api/v1/ssh-keys/{slug}Excluir chave SSH
list_serversGET /api/v1/instancesListar instâncias
get_serverGET /api/v1/instances/{id}Detalhes da instância
create_serverPOST /api/v1/instancesCriar instância
delete_serverDELETE /api/v1/instances/{id}Excluir instância
start_serverPUT /api/v1/instances/{id}/power-onLigar
shutdown_serverPUT /api/v1/instances/{id}/power-offDesligar
reboot_serverPUT /api/v1/instances/{id}/rebootReiniciar
reset_server_passwordPUT /api/v1/instances/{id}/reset-passwordRedefinir senha do root
list_snapshotsGET /api/v1/snapshotsListar snapshots
get_snapshotGET /api/v1/snapshots/{slug}Detalhes do snapshot
create_snapshotPOST /api/v1/instances/{id}/snapshotsCriar snapshot
update_snapshotPUT /api/v1/snapshots/{slug}Renomear snapshot
delete_snapshotDELETE /api/v1/snapshots/{slug}Excluir snapshot

Documentação interativa completa (com esquemas de requisição/resposta) está disponível em /docs.


📡 Hospedado vs auto-hospedado

Este projeto é disponibilizado como um serviço hospedado em https://mcp.letscloud.io, operado pela equipe LetsCloud. Como usuário final, você só precisa da sua chave de API LetsCloud — não há nada para instalar localmente.

Se você quiser executar sua própria instância privada (VPC corporativa, testes offline, contribuições), consulte DEPLOY.md para uma configuração Docker ou Python com um único comando.


🔐 Autenticação

Toda requisição a /mcp e /api/v1/* deve conter a chave de API LetsCloud do usuário em uma das seguintes opções:

  • Authorization: Bearer <api-key> (recomendado, compatível com MCP)
  • X-LetsCloud-Token: <api-key> (alternativa)

O servidor encaminha a chave para a API da LetsCloud como api-token: <key> (seguindo o comportamento do SDK Go oficial). O servidor não armazena nada.


🏗️ Arquitetura

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

📄 Licença

MIT — consulte LICENSE.

🔗 Links