Exoscale MCP by usefulapi
Inspect Exoscale: instances, volumes, SKS, DNS, IPs, quotas and usage; start, stop, reboot VMs.
我該用這個嗎
品質與安全性
發現項目(2)
- LOW在 exoscale_list_block_storage_volumes 中
- LOW在 exoscale_get_block_storage_volume 中
根據工具定義與協定合規性的自動化分析。
上下文成本
這是每次將伺服器的工具載入模型上下文時所消耗的約略 token 數量。數量越高,可用於其他工作的注意力就越少。
安裝
一鍵安裝
將以下內容加入你的 `claude_desktop_config.json` 檔案:
{
"mcpServers": {
"exoscale": {
"url": "https://exoscale.usefulapi.io/mcp"
}
}
}遠端端點
https://exoscale.usefulapi.io/mcpstreamable-http它能做什麼
工具清單
工具(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.
輸入結構描述
{
"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.
輸入結構描述
{
"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.
輸入結構描述
{
"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}.
輸入結構描述
{
"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.
輸入結構描述
{
"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.
輸入結構描述
{
"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}.
輸入結構描述
{
"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.
輸入結構描述
{
"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.
輸入結構描述
{
"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.
輸入結構描述
{
"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}.
輸入結構描述
{
"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.
輸入結構描述
{
"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}.
輸入結構描述
{
"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.
輸入結構描述
{
"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}.
輸入結構描述
{
"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.
輸入結構描述
{
"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}.
輸入結構描述
{
"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.
輸入結構描述
{
"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}.
輸入結構描述
{
"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.
輸入結構描述
{
"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}.
輸入結構描述
{
"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.
輸入結構描述
{
"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}.
輸入結構描述
{
"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.
輸入結構描述
{
"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}.
輸入結構描述
{
"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.
輸入結構描述
{
"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"
}社群
證據