Exoscale MCP by usefulapi

Inspect Exoscale: instances, volumes, SKS, DNS, IPs, quotas and usage; start, stop, reboot VMs.

¿Debería usar esto?

Calidad y seguridad

A
Calidad de la descripción
98%
Integridad del esquema
91%
Calidad de los nombres
78%
Riesgo de envenenamiento
100%
Coincidencia de permisos
100%
Cumplimiento del protocolo
100%

Hallazgos (2)

  • LOWTool 'exoscale_list_block_storage_volumes' name length outside 3-30 rangeen exoscale_list_block_storage_volumes
  • LOWTool 'exoscale_get_block_storage_volume' name length outside 3-30 rangeen exoscale_get_block_storage_volume

Basado en el análisis automatizado de las definiciones de herramientas y el cumplimiento del protocolo.

Costo de contexto

~5,482Tokens (definiciones de herramientas)
~1.3 KBTamaño de respuesta típico
Impacto significativo en la atención (4.28% del contexto de 128k)

Este es el número aproximado de tokens que se consumen cada vez que las herramientas del servidor se cargan en el contexto de un modelo. Los recuentos más altos reducen la atención disponible para otras tareas.

Instalar

Instalación con un clic

Agrega esto a tu archivo `claude_desktop_config.json`:

{
  "mcpServers": {
    "exoscale": {
      "url": "https://exoscale.usefulapi.io/mcp"
    }
  }
}

Puntos de conexión remotos

https://exoscale.usefulapi.io/mcpstreamable-http

Qué puede hacer

Inventario de herramientas

Herramientas (26)

🟢 Solo lectura🟡 Escritura🔴 Eliminación⚪ Desconocido
🟢exoscale_list_zones

List the Exoscale zones (data centers) with their API and object-storage endpoints. Compute, storage and network resources live in one zone each. GET /zone.

Esquema de entrada

{
  "type": "object",
  "properties": {},
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢exoscale_get_organization

The Exoscale organization of the API key: id, name, address, country, account balance and currency. GET /organization.

Esquema de entrada

{
  "type": "object",
  "properties": {},
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢exoscale_list_quotas(limit, offset)

Resource quotas of the organization: for each resource its current usage and limit (instances, volumes, elastic IPs, and so on). GET /quota.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "limit": {
      "description": "Items per window, 1-500 (default 100). The API itself returns whole lists.",
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 500
    },
    "offset": {
      "description": "Items to skip (default 0). Pass the previous reply's next_offset.",
      "type": "integer",
      "minimum": 0,
      "maximum": 1000000
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢exoscale_get_quota(entity)

Usage and limit of one quota entity, for example 'instance'. Use exoscale_list_quotas for the names. GET /quota/{entity}.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "entity": {
      "type": "string",
      "pattern": "^[A-Za-z0-9_-]{1,64}$",
      "description": "Quota resource name, for example instance."
    }
  },
  "required": [
    "entity"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢exoscale_get_usage_report(period, limit, offset)

Aggregated usage of the organization for one month: product, variable, quantity and unit per line. GET /usage-report.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "period": {
      "description": "Month, YYYY-MM, for example 2026-09. Default: the current month.",
      "type": "string",
      "pattern": "^\\d{4}-(0[1-9]|1[0-2])$"
    },
    "limit": {
      "description": "Items per window, 1-500 (default 100). The API itself returns whole lists.",
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 500
    },
    "offset": {
      "description": "Items to skip (default 0). Pass the previous reply's next_offset.",
      "type": "integer",
      "minimum": 0,
      "maximum": 1000000
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢exoscale_list_instances(zone, ip_address, limit, offset)

List the compute instances of one zone: id, name, state, instance type, template, IP addresses and security groups. Call once per zone for a full inventory. GET /instance.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "zone": {
      "description": "Zone of the resource. Default: the zone chosen at login.",
      "type": "string",
      "enum": [
        "ch-gva-2",
        "ch-dk-2",
        "de-fra-1",
        "de-muc-1",
        "at-vie-1",
        "at-vie-2",
        "bg-sof-1",
        "hr-zag-1"
      ]
    },
    "ip_address": {
      "description": "Only the instance with this IP address.",
      "type": "string",
      "maxLength": 64
    },
    "limit": {
      "description": "Items per window, 1-500 (default 100). The API itself returns whole lists.",
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 500
    },
    "offset": {
      "description": "Items to skip (default 0). Pass the previous reply's next_offset.",
      "type": "integer",
      "minimum": 0,
      "maximum": 1000000
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢exoscale_get_instance(id, zone)

Details of one compute instance: state, type, template, disk size, networks, security groups, elastic IPs, snapshots. The cloud-init user-data is never returned. GET /instance/{id}.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "id": {
      "type": "string",
      "pattern": "^[A-Za-z0-9-]{1,64}$",
      "description": "Exoscale resource id (a UUID)."
    },
    "zone": {
      "description": "Zone of the resource. Default: the zone chosen at login.",
      "type": "string",
      "enum": [
        "ch-gva-2",
        "ch-dk-2",
        "de-fra-1",
        "de-muc-1",
        "at-vie-1",
        "at-vie-2",
        "bg-sof-1",
        "hr-zag-1"
      ]
    }
  },
  "required": [
    "id"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟡exoscale_start_instance(id, zone)

WRITE: start a stopped compute instance (normal boot, no rescue profile). Billing for the instance resumes. Returns an operation; poll it with exoscale_get_operation. PUT /instance/{id}:start.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "id": {
      "type": "string",
      "pattern": "^[A-Za-z0-9-]{1,64}$",
      "description": "Exoscale resource id (a UUID)."
    },
    "zone": {
      "description": "Zone of the resource. Default: the zone chosen at login.",
      "type": "string",
      "enum": [
        "ch-gva-2",
        "ch-dk-2",
        "de-fra-1",
        "de-muc-1",
        "at-vie-1",
        "at-vie-2",
        "bg-sof-1",
        "hr-zag-1"
      ]
    }
  },
  "required": [
    "id"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🔴exoscale_stop_instance(id, zone)

WRITE: stop a running compute instance. Running services go down and the public IP may change unless it is an elastic IP. Returns an operation; poll it with exoscale_get_operation. PUT /instance/{id}:stop.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "id": {
      "type": "string",
      "pattern": "^[A-Za-z0-9-]{1,64}$",
      "description": "Exoscale resource id (a UUID)."
    },
    "zone": {
      "description": "Zone of the resource. Default: the zone chosen at login.",
      "type": "string",
      "enum": [
        "ch-gva-2",
        "ch-dk-2",
        "de-fra-1",
        "de-muc-1",
        "at-vie-1",
        "at-vie-2",
        "bg-sof-1",
        "hr-zag-1"
      ]
    }
  },
  "required": [
    "id"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🔴exoscale_reboot_instance(id, zone)

WRITE: reboot a running compute instance. Running services restart and unsaved data in memory is lost. Returns an operation; poll it with exoscale_get_operation. PUT /instance/{id}:reboot.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "id": {
      "type": "string",
      "pattern": "^[A-Za-z0-9-]{1,64}$",
      "description": "Exoscale resource id (a UUID)."
    },
    "zone": {
      "description": "Zone of the resource. Default: the zone chosen at login.",
      "type": "string",
      "enum": [
        "ch-gva-2",
        "ch-dk-2",
        "de-fra-1",
        "de-muc-1",
        "at-vie-1",
        "at-vie-2",
        "bg-sof-1",
        "hr-zag-1"
      ]
    }
  },
  "required": [
    "id"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢exoscale_get_operation(id, zone)

State of an asynchronous operation (pending, success, failure, timeout), for example the reply of a start, stop or reboot. Use the same zone as the call that created it. GET /operation/{id}.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "id": {
      "type": "string",
      "pattern": "^[A-Za-z0-9-]{1,64}$",
      "description": "Exoscale resource id (a UUID)."
    },
    "zone": {
      "description": "Zone of the resource. Default: the zone chosen at login.",
      "type": "string",
      "enum": [
        "ch-gva-2",
        "ch-dk-2",
        "de-fra-1",
        "de-muc-1",
        "at-vie-1",
        "at-vie-2",
        "bg-sof-1",
        "hr-zag-1"
      ]
    }
  },
  "required": [
    "id"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢exoscale_list_instance_types(zone, limit, offset)

List the compute instance types: family, size, CPUs, GPUs, memory and the zones that offer them. GET /instance-type.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "zone": {
      "description": "Zone of the resource. Default: the zone chosen at login.",
      "type": "string",
      "enum": [
        "ch-gva-2",
        "ch-dk-2",
        "de-fra-1",
        "de-muc-1",
        "at-vie-1",
        "at-vie-2",
        "bg-sof-1",
        "hr-zag-1"
      ]
    },
    "limit": {
      "description": "Items per window, 1-500 (default 100). The API itself returns whole lists.",
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 500
    },
    "offset": {
      "description": "Items to skip (default 0). Pass the previous reply's next_offset.",
      "type": "integer",
      "minimum": 0,
      "maximum": 1000000
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢exoscale_get_instance_type(id, zone)

Details of one instance type: family, size, CPUs, GPUs, memory, zones. GET /instance-type/{id}.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "id": {
      "type": "string",
      "pattern": "^[A-Za-z0-9-]{1,64}$",
      "description": "Exoscale resource id (a UUID)."
    },
    "zone": {
      "description": "Zone of the resource. Default: the zone chosen at login.",
      "type": "string",
      "enum": [
        "ch-gva-2",
        "ch-dk-2",
        "de-fra-1",
        "de-muc-1",
        "at-vie-1",
        "at-vie-2",
        "bg-sof-1",
        "hr-zag-1"
      ]
    }
  },
  "required": [
    "id"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢exoscale_list_templates(zone, visibility, family, limit, offset)

List the compute templates (OS images) of a zone: name, family, version, default user, size, visibility. The public list is long: filter by family or page with limit/offset. GET /template.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "zone": {
      "description": "Zone of the resource. Default: the zone chosen at login.",
      "type": "string",
      "enum": [
        "ch-gva-2",
        "ch-dk-2",
        "de-fra-1",
        "de-muc-1",
        "at-vie-1",
        "at-vie-2",
        "bg-sof-1",
        "hr-zag-1"
      ]
    },
    "visibility": {
      "description": "public (Exoscale images) or private (your own). Default: the API default.",
      "type": "string",
      "enum": [
        "private",
        "public"
      ]
    },
    "family": {
      "description": "Template family, for example ubuntu.",
      "type": "string",
      "maxLength": 64
    },
    "limit": {
      "description": "Items per window, 1-500 (default 100). The API itself returns whole lists.",
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 500
    },
    "offset": {
      "description": "Items to skip (default 0). Pass the previous reply's next_offset.",
      "type": "integer",
      "minimum": 0,
      "maximum": 1000000
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢exoscale_get_template(id, zone)

Details of one template: name, family, version, default user, size, boot mode, checksum, zones. GET /template/{id}.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "id": {
      "type": "string",
      "pattern": "^[A-Za-z0-9-]{1,64}$",
      "description": "Exoscale resource id (a UUID)."
    },
    "zone": {
      "description": "Zone of the resource. Default: the zone chosen at login.",
      "type": "string",
      "enum": [
        "ch-gva-2",
        "ch-dk-2",
        "de-fra-1",
        "de-muc-1",
        "at-vie-1",
        "at-vie-2",
        "bg-sof-1",
        "hr-zag-1"
      ]
    }
  },
  "required": [
    "id"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢exoscale_list_security_groups(zone, visibility, limit, offset)

List the security groups of a zone: id, name, description and external sources (firewall), with the rules when the API includes them. GET /security-group.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "zone": {
      "description": "Zone of the resource. Default: the zone chosen at login.",
      "type": "string",
      "enum": [
        "ch-gva-2",
        "ch-dk-2",
        "de-fra-1",
        "de-muc-1",
        "at-vie-1",
        "at-vie-2",
        "bg-sof-1",
        "hr-zag-1"
      ]
    },
    "visibility": {
      "description": "private (yours) or public.",
      "type": "string",
      "enum": [
        "private",
        "public"
      ]
    },
    "limit": {
      "description": "Items per window, 1-500 (default 100). The API itself returns whole lists.",
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 500
    },
    "offset": {
      "description": "Items to skip (default 0). Pass the previous reply's next_offset.",
      "type": "integer",
      "minimum": 0,
      "maximum": 1000000
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢exoscale_get_security_group(id, zone)

Details of one security group: description and external sources, with the rules (protocol, ports, network, direction) when the API includes them. GET /security-group/{id}.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "id": {
      "type": "string",
      "pattern": "^[A-Za-z0-9-]{1,64}$",
      "description": "Exoscale resource id (a UUID)."
    },
    "zone": {
      "description": "Zone of the resource. Default: the zone chosen at login.",
      "type": "string",
      "enum": [
        "ch-gva-2",
        "ch-dk-2",
        "de-fra-1",
        "de-muc-1",
        "at-vie-1",
        "at-vie-2",
        "bg-sof-1",
        "hr-zag-1"
      ]
    }
  },
  "required": [
    "id"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢exoscale_list_elastic_ips(zone, limit, offset)

List the elastic IP addresses of a zone with description, address family, health-check settings and labels. GET /elastic-ip.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "zone": {
      "description": "Zone of the resource. Default: the zone chosen at login.",
      "type": "string",
      "enum": [
        "ch-gva-2",
        "ch-dk-2",
        "de-fra-1",
        "de-muc-1",
        "at-vie-1",
        "at-vie-2",
        "bg-sof-1",
        "hr-zag-1"
      ]
    },
    "limit": {
      "description": "Items per window, 1-500 (default 100). The API itself returns whole lists.",
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 500
    },
    "offset": {
      "description": "Items to skip (default 0). Pass the previous reply's next_offset.",
      "type": "integer",
      "minimum": 0,
      "maximum": 1000000
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢exoscale_get_elastic_ip(id, zone)

Details of one elastic IP: address, CIDR, family, description, health check and labels. GET /elastic-ip/{id}.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "id": {
      "type": "string",
      "pattern": "^[A-Za-z0-9-]{1,64}$",
      "description": "Exoscale resource id (a UUID)."
    },
    "zone": {
      "description": "Zone of the resource. Default: the zone chosen at login.",
      "type": "string",
      "enum": [
        "ch-gva-2",
        "ch-dk-2",
        "de-fra-1",
        "de-muc-1",
        "at-vie-1",
        "at-vie-2",
        "bg-sof-1",
        "hr-zag-1"
      ]
    }
  },
  "required": [
    "id"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢exoscale_list_block_storage_volumes(zone, instance_id, limit, offset)

List the block storage volumes of a zone: name, size, state, the instance each is attached to, encryption and snapshots. GET /block-storage.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "zone": {
      "description": "Zone of the resource. Default: the zone chosen at login.",
      "type": "string",
      "enum": [
        "ch-gva-2",
        "ch-dk-2",
        "de-fra-1",
        "de-muc-1",
        "at-vie-1",
        "at-vie-2",
        "bg-sof-1",
        "hr-zag-1"
      ]
    },
    "instance_id": {
      "description": "Only the volumes attached to this instance.",
      "type": "string",
      "pattern": "^[A-Za-z0-9-]{1,64}$"
    },
    "limit": {
      "description": "Items per window, 1-500 (default 100). The API itself returns whole lists.",
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 500
    },
    "offset": {
      "description": "Items to skip (default 0). Pass the previous reply's next_offset.",
      "type": "integer",
      "minimum": 0,
      "maximum": 1000000
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢exoscale_get_block_storage_volume(id, zone)

Details of one block storage volume: size, block size, state, attached instance, encryption, labels and snapshots. GET /block-storage/{id}.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "id": {
      "type": "string",
      "pattern": "^[A-Za-z0-9-]{1,64}$",
      "description": "Exoscale resource id (a UUID)."
    },
    "zone": {
      "description": "Zone of the resource. Default: the zone chosen at login.",
      "type": "string",
      "enum": [
        "ch-gva-2",
        "ch-dk-2",
        "de-fra-1",
        "de-muc-1",
        "at-vie-1",
        "at-vie-2",
        "bg-sof-1",
        "hr-zag-1"
      ]
    }
  },
  "required": [
    "id"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢exoscale_list_sks_clusters(zone, limit, offset)

List the Scalable Kubernetes Service (SKS) clusters of a zone: name, version, state, level, CNI, endpoint and node pools. GET /sks-cluster.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "zone": {
      "description": "Zone of the resource. Default: the zone chosen at login.",
      "type": "string",
      "enum": [
        "ch-gva-2",
        "ch-dk-2",
        "de-fra-1",
        "de-muc-1",
        "at-vie-1",
        "at-vie-2",
        "bg-sof-1",
        "hr-zag-1"
      ]
    },
    "limit": {
      "description": "Items per window, 1-500 (default 100). The API itself returns whole lists.",
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 500
    },
    "offset": {
      "description": "Items to skip (default 0). Pass the previous reply's next_offset.",
      "type": "integer",
      "minimum": 0,
      "maximum": 1000000
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢exoscale_get_sks_cluster(id, zone)

Details of one SKS cluster: version, state, level, CNI, add-ons, OIDC settings (no secrets), endpoint and node pools. GET /sks-cluster/{id}.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "id": {
      "type": "string",
      "pattern": "^[A-Za-z0-9-]{1,64}$",
      "description": "Exoscale resource id (a UUID)."
    },
    "zone": {
      "description": "Zone of the resource. Default: the zone chosen at login.",
      "type": "string",
      "enum": [
        "ch-gva-2",
        "ch-dk-2",
        "de-fra-1",
        "de-muc-1",
        "at-vie-1",
        "at-vie-2",
        "bg-sof-1",
        "hr-zag-1"
      ]
    }
  },
  "required": [
    "id"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢exoscale_list_dns_domains(limit, offset)

List the DNS domains (zones) hosted at Exoscale: id, unicode name, creation date. DNS is the same in every zone. GET /dns-domain.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "limit": {
      "description": "Items per window, 1-500 (default 100). The API itself returns whole lists.",
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 500
    },
    "offset": {
      "description": "Items to skip (default 0). Pass the previous reply's next_offset.",
      "type": "integer",
      "minimum": 0,
      "maximum": 1000000
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢exoscale_get_dns_domain(id)

Details of one DNS domain. GET /dns-domain/{id}.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "id": {
      "type": "string",
      "pattern": "^[A-Za-z0-9-]{1,64}$",
      "description": "Exoscale resource id (a UUID)."
    }
  },
  "required": [
    "id"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢exoscale_list_dns_records(domain_id, limit, offset)

List the records of one DNS domain: name, type, content, TTL, priority. Use exoscale_list_dns_domains for the domain id. GET /dns-domain/{domain-id}/record.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "domain_id": {
      "type": "string",
      "pattern": "^[A-Za-z0-9-]{1,64}$",
      "description": "Exoscale resource id (a UUID)."
    },
    "limit": {
      "description": "Items per window, 1-500 (default 100). The API itself returns whole lists.",
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 500
    },
    "offset": {
      "description": "Items to skip (default 0). Pass the previous reply's next_offset.",
      "type": "integer",
      "minimum": 0,
      "maximum": 1000000
    }
  },
  "required": [
    "domain_id"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}

Comunidad

Califica este servidor

Evidencia

Observaciones recientes

verificadoversión no registrada26 herramientas