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
Hallazgos (2)
- LOWen exoscale_list_block_storage_volumes
- LOWen exoscale_get_block_storage_volume
Basado en el análisis automatizado de las definiciones de herramientas y el cumplimiento del protocolo.
Costo de contexto
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-httpQué puede hacer
Inventario de herramientas
Herramientas (26)
🟢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
Evidencia