Exoscale MCP by usefulapi
Inspect Exoscale: instances, volumes, SKS, DNS, IPs, quotas and usage; start, stop, reboot VMs.
Sollte ich dies verwenden
Qualität und Sicherheit
Befunde (2)
- LOWin exoscale_list_block_storage_volumes
- LOWin exoscale_get_block_storage_volume
Basierend auf einer automatisierten Analyse der Tool-Definitionen und der Einhaltung des Protokolls.
Kontextkosten
Dies ist die ungefähre Anzahl der Tokens, die jedes Mal verbraucht werden, wenn die Tools des Servers in den Kontext eines Modells geladen werden. Höhere Werte verringern die Aufmerksamkeit, die für andere Aufgaben verfügbar ist.
Installieren
Installation mit einem Klick
Fügen Sie dies Ihrer Datei `claude_desktop_config.json` hinzu:
{
"mcpServers": {
"exoscale": {
"url": "https://exoscale.usefulapi.io/mcp"
}
}
}Remote-Endpunkte
https://exoscale.usefulapi.io/mcpstreamable-httpWas es kann
Tool-Inventar
Tools (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.
Eingabe-Schema
{
"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.
Eingabe-Schema
{
"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.
Eingabe-Schema
{
"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}.
Eingabe-Schema
{
"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.
Eingabe-Schema
{
"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.
Eingabe-Schema
{
"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}.
Eingabe-Schema
{
"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.
Eingabe-Schema
{
"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.
Eingabe-Schema
{
"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.
Eingabe-Schema
{
"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}.
Eingabe-Schema
{
"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.
Eingabe-Schema
{
"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}.
Eingabe-Schema
{
"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.
Eingabe-Schema
{
"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}.
Eingabe-Schema
{
"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.
Eingabe-Schema
{
"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}.
Eingabe-Schema
{
"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.
Eingabe-Schema
{
"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}.
Eingabe-Schema
{
"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.
Eingabe-Schema
{
"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}.
Eingabe-Schema
{
"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.
Eingabe-Schema
{
"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}.
Eingabe-Schema
{
"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.
Eingabe-Schema
{
"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}.
Eingabe-Schema
{
"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.
Eingabe-Schema
{
"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"
}Community
Nachweis