Inspect servers, storage, networks, databases and billing, and start, stop or back up servers.
Maintain this server? Claim it
Call this server's tools from your browser. Nothing to install.
Requests go through mcptry because browsers can't call most MCP servers directly. Header values are sent to the server for that request only and are never stored or logged.
Tool list from our last check. Connect live to refresh it.
Take an on-demand, point-in-time backup of a storage device. Additive (nothing is overwritten) but backups are billed per GB. Asynchronous: the storage goes to a backuping/maintenance state and back to online — poll upcloud_get_storage. UpCloud: POST /1.3/storage/{uuid}/backup.
A short description for the backup, 1-255 characters.
The storage UUID.
The server marks this tool as destructive. Running it may delete or overwrite data on the server or in any account you connected with your headers.
Take an on-demand, point-in-time backup of a storage device. Additive (nothing is overwritten) but backups are billed per GB. Asynchronous: the storage goes to a backuping/maintenance state and back to online — poll upcloud_get_storage. UpCloud: POST /1.3/storage/{uuid}/backup.
| Argument | Type | Description |
|---|---|---|
| title* | string | A short description for the backup, 1-255 characters. |
| storage_uuid* | string | The storage UUID. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"storage_uuid",
"title"
],
"properties": {
"title": {
"type": "string",
"maxLength": 255,
"minLength": 1,
"description": "A short description for the backup, 1-255 characters."
},
"storage_uuid": {
"type": "string",
"pattern": "^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$",
"description": "The storage UUID."
}
}
}The calling account: username, remaining credits and resource limits (cores, memory, storage per tier, IPs, networks, managed services). A cheap way to confirm the token works. UpCloud: GET /1.3/account.
No arguments.
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {}
}Billing summary for one month with per-resource details (servers, storages, managed databases, object storage, …: amount, hours, plan, zone, labels) and totals. Needs an account allowed to read billing. UpCloud: GET /1.3/account/billing/summary/{yearmonth}.
| Argument | Type | Description |
|---|---|---|
| yearmonth* | string | The month, YYYY-MM, e.g. 2026-09. |
| resource_id | string | Only this resource: its UUID, or for IP addresses the address itself. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"yearmonth"
],
"properties": {
"yearmonth": {
"type": "string",
"pattern": "^\\d{4}-(0[1-9]|1[0-2])$",
"description": "The month, YYYY-MM, e.g. 2026-09."
},
"resource_id": {
"type": "string",
"pattern": "^[0-9a-fA-F:.\\-]{2,64}$",
"description": "Only this resource: its UUID, or for IP addresses the address itself."
}
}
}Full details of one server: state, plan, cores/memory, network interfaces and IP addresses, attached storage devices, firewall on/off, simple-backup schedule, labels, tags and remote-access settings. UpCloud: GET /1.3/server/{uuid}.
| Argument | Type | Description |
|---|---|---|
| server_uuid* | string | The server UUID. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"server_uuid"
],
"properties": {
"server_uuid": {
"type": "string",
"pattern": "^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$",
"description": "The server UUID."
}
}
}Details of one storage: size, tier, state (e.g. online, backuping), encryption, the servers it is attached to, its backups and backup_rule. Poll this to follow a backup started with upcloud_create_storage_backup. UpCloud: GET /1.3/storage/{uuid}.
| Argument | Type | Description |
|---|---|---|
| storage_uuid* | string | The storage UUID. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"storage_uuid"
],
"properties": {
"storage_uuid": {
"type": "string",
"pattern": "^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$",
"description": "The storage UUID."
}
}
}Security audit trail of the account (up to 180 days): who did what to which resource, when, from which IP and via API or Hub. Filter by action, origin, resource type, time window or a keyword (UUID, username or IP). Returns total_count for paging. UpCloud: GET /1.3/audit-logs.
| Argument | Type | Description |
|---|---|---|
| q | string | Keyword: a resource UUID, account username or IP address. |
| limit | integer | Max entries to return, 0-200 (API default 50). |
| action | string | Only this action. |
| offset | integer | Offset into the results (API default 0). |
| origin | string | Only this origin. |
| created_after | string | ISO timestamp, e.g. 2026-09-01T00:00:00Z (inclusive). Default 180 days ago. |
| resource_type | string | Only this resource type (uks = Kubernetes). |
| created_before | string | ISO timestamp (inclusive). Default now. |
Managed Database services (PostgreSQL, MySQL, Valkey, OpenSearch): uuid, title, type, plan, zone, state, component hosts/ports, backups and labels. Note the response can include connection URIs with credentials. UpCloud: GET /1.3/database.
| Argument | Type | Description |
|---|---|---|
| label | array | Label filters: a key (`env`) or key=value (`env=prod`). Several are ANDed. Keys match case-insensitively. |
| limit | integer | Max entries to return, 0-100 (API default 10). |
| offset | integer | Offset into the results (API default 0). |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"label": {
"type": "array",
"items": {
"type": "string",
"maxLength": 255,
"minLength": 1
},
"description": "Label filters: a key (`env`) or key=value (`env=prod`). Several are ANDed. Keys match case-insensitively."
},
"limit": {
"type": "integer",
"maximum": 100,
"minimum": 0,
"description": "Max entries to return, 0-100 (API default 10)."
},
"offset": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 0,
"description": "Offset into the results (API default 0)."
}
}
}The firewall rules of one server in evaluation order (position, direction, action, family, protocol, address and port ranges, comment). Whether the firewall is enabled at all is the `firewall` field of upcloud_get_server. UpCloud: GET /1.3/server/{uuid}/firewall_rule.
| Argument | Type | Description |
|---|---|---|
| server_uuid* | string | The server UUID. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"server_uuid"
],
"properties": {
"server_uuid": {
"type": "string",
"pattern": "^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$",
"description": "The server UUID."
}
}
}Every IP address on the account: address, family (IPv4/IPv6), access (public/utility/private), the server it is assigned to, zone, PTR record, floating flag and release policy. UpCloud: GET /1.3/ip_address.
No arguments.
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {}
}Managed Kubernetes clusters: name, uuid, zone, plan, state, network/CIDR, control-plane IP filter, labels and node groups (plan, count, state). UpCloud: GET /1.3/kubernetes.
No arguments.
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {}
}Managed Load Balancer services with their frontends, backends and members, networks, plan, zone, configured status and operational state. UpCloud: GET /1.3/load-balancer.
| Argument | Type | Description |
|---|---|---|
| label | array | Label filters: a key (`env`) or key=value (`env=prod`). Several are ANDed. Keys match case-insensitively. |
| limit | integer | Max entries to return, 0-100 (API default 10). |
| offset | integer | Offset into the results (API default 0). |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"label": {
"type": "array",
"items": {
"type": "string",
"maxLength": 255,
"minLength": 1
},
"description": "Label filters: a key (`env`) or key=value (`env=prod`). Several are ANDed. Keys match case-insensitively."
},
"limit": {
"type": "integer",
"maximum": 100,
"minimum": 0,
"description": "Max entries to return, 0-100 (API default 10)."
},
"offset": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 0,
"description": "Offset into the results (API default 0)."
}
}
}Networks visible to the account — public, utility and private SDN networks — with their IP subnets, DHCP settings, routes, attached servers and peerings. Optionally only one zone. UpCloud: GET /1.3/network/.
| Argument | Type | Description |
|---|---|---|
| zone | string | Only networks in this zone, e.g. fi-hel1. |
| label | array | Label filters: a key (`env`) or key=value (`env=prod`). Several are ANDed. Keys match case-insensitively. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"zone": {
"type": "string",
"pattern": "^[a-z0-9-]{2,40}$",
"description": "Only networks in this zone, e.g. fi-hel1."
},
"label": {
"type": "array",
"items": {
"type": "string",
"maxLength": 255,
"minLength": 1
},
"description": "Label filters: a key (`env`) or key=value (`env=prod`). Several are ANDed. Keys match case-insensitively."
}
}
}Managed Object Storage (S3-compatible) services: uuid, name, region, configured status and operational state, public/private endpoints, custom domains and labels. UpCloud: GET /1.3/object-storage-2.
| Argument | Type | Description |
|---|---|---|
| sort | string | Order of results; prefix - for descending (API default -created_at). |
| limit | integer | Max entries to return, 0-100 (API default 10). |
| offset | integer | Offset into the results (API default 0). |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"sort": {
"enum": [
"created_at",
"-created_at",
"service_name",
"-service_name",
"operational_state",
"-operational_state",
"region_name",
"-region_name"
],
"type": "string",
"description": "Order of results; prefix - for descending (API default -created_at)."
},
"limit": {
"type": "integer",
"maximum": 100,
"minimum": 0,
"description": "Max entries to return, 0-100 (API default 10)."
},
"offset": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 0,
"description": "Offset into the results (API default 0)."
}
}
}Fixed-price server plans: name (e.g. 2xCPU-4GB), cores, memory, included storage size/tier and transfer, plus GPU model/amount for GPU plans. UpCloud: GET /1.3/plan.
No arguments.
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {}
}The price list per zone in the account's currency: per-hour prices for plans, cores, memory, storage tiers, backups, IPv4 addresses and traffic. UpCloud: GET /1.3/price.
No arguments.
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {}
}Cloud servers on the account (summary: uuid, title, hostname, zone, plan, cores, memory, state, tags, labels). Filter by state, a free-text search (name, title, uuid, zone, IP, hostname, tag or template), tags or labels. Use upcloud_get_server for IPs and disks. UpCloud: GET /1.3/server.
| Argument | Type | Description |
|---|---|---|
| tag | string | Tag filter: `a,b` matches servers with ANY of the tags, `a:b` servers with ALL of them. |
| label | array | Label filters: a key (`env`) or key=value (`env=prod`). Several are ANDed. Keys match case-insensitively. |
| limit | integer | Max servers to return (use with offset to page). |
| state | string | Only servers in this state. |
| offset | integer | Offset into the results (API default 0). |
| search | string | Match by name, title, uuid, zone, IP address, hostname, tag name or template name. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"tag": {
"type": "string",
"maxLength": 255,
"description": "Tag filter: `a,b` matches servers with ANY of the tags, `a:b` servers with ALL of them."
},
"label": {
"type": "array",
"items": {
"type": "string",
"maxLength": 255,
"minLength": 1
},
"description": "Label filters: a key (`env`) or key=value (`env=prod`). Several are ANDed. Keys match case-insensitively."
},
"limit": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 1,
"description": "Max servers to return (use with offset to page)."
},
"state": {
"enum": [
"started",
"stopped",
"maintenance",
"error"
],
"type": "string",
"description": "Only servers in this state."
},
"offset": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 0,
"description": "Offset into the results (API default 0)."
},
"search": {
"type": "string",
"maxLength": 255,
"description": "Match by name, title, uuid, zone, IP address, hostname, tag name or template name."
}
}
}Storage devices: disks, backups, CD-ROM images and OS templates (uuid, title, type, tier, size GB, state, zone, labels). Narrow by `kind`: private (yours), public (UpCloud-provided), normal (disks), backup, cdrom, template or favorite. UpCloud: GET /1.3/storage[/{kind}].
| Argument | Type | Description |
|---|---|---|
| kind | string | Narrow the list. Omit for every accessible storage. |
| label | array | Label filters: a key (`env`) or key=value (`env=prod`). Several are ANDed. Keys match case-insensitively. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"kind": {
"enum": [
"private",
"public",
"normal",
"backup",
"cdrom",
"template",
"favorite"
],
"type": "string",
"description": "Narrow the list. Omit for every accessible storage."
},
"label": {
"type": "array",
"items": {
"type": "string",
"maxLength": 255,
"minLength": 1
},
"description": "Label filters: a key (`env`) or key=value (`env=prod`). Several are ANDed. Keys match case-insensitively."
}
}
}Available zones (data centres) with id (e.g. fi-hel1, de-fra1, us-chi1), description and whether they are public or private-cloud. Zone ids are used by every other resource. UpCloud: GET /1.3/zone.
No arguments.
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {}
}Change a server's title, hostname and/or simple-backup schedule. Only these reversible fields are exposed — no resizing or plan change (billing) and no firewall toggle. simple_backup is `HHMM,daily|dailies|weeklies|monthlies` (UTC time) or `no` to disable. UpCloud: PUT /1.3/server/{uuid}.
| Argument | Type | Description |
|---|---|---|
| title | string | A short informational description, 0-255 characters. |
| hostname | string | A valid hostname, e.g. web1.example.com (max 128). |
| server_uuid* | string | The server UUID. |
| simple_backup | string | e.g. 0430,dailies — or `no` to turn simple backups off. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"server_uuid"
],
"properties": {
"title": {
"type": "string",
"maxLength": 255,
"description": "A short informational description, 0-255 characters."
},
"hostname": {
"type": "string",
"pattern": "^[A-Za-z0-9.-]+$",
"maxLength": 128,
"description": "A valid hostname, e.g. web1.example.com (max 128)."
},
"server_uuid": {
"type": "string",
"pattern": "^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$",
"description": "The server UUID."
},
"simple_backup": {
"type": "string",
"pattern": "^(no|([01]\\d|2[0-3])[0-5]\\d,(daily|dailies|weeklies|monthlies))$",
"description": "e.g. 0430,dailies — or `no` to turn simple backups off."
}
}
}DISRUPTIVE: stop and start a running server. soft (default) needs a timeout: after it, timeout_action=destroy hard-stops and restarts, ignore (API default) aborts and leaves the server running. hard power-cycles immediately. UpCloud: POST /1.3/server/{uuid}/restart.
| Argument | Type | Description |
|---|---|---|
| timeout | integer | Soft-stop timeout in seconds, 1-600. Required for a soft restart. |
| stop_type | string | soft = ACPI shutdown signal (default); hard = equivalent of pulling the power cable. |
| server_uuid* | string | The server UUID. |
| timeout_action | string | What to do if the soft stop times out: destroy (hard stop, then start) or ignore (give up). |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"server_uuid"
],
"properties": {
"timeout": {
"type": "integer",
"maximum": 600,
"minimum": 1,
"description": "Soft-stop timeout in seconds, 1-600. Required for a soft restart."
},
"stop_type": {
"enum": [
"soft",
"hard"
],
"type": "string",
"description": "soft = ACPI shutdown signal (default); hard = equivalent of pulling the power cable."
},
"server_uuid": {
"type": "string",
"pattern": "^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$",
"description": "The server UUID."
},
"timeout_action": {
"enum": [
"destroy",
"ignore"
],
"type": "string",
"description": "What to do if the soft stop times out: destroy (hard stop, then start) or ignore (give up)."
}
}
}Start a stopped server (billing for a started server resumes). Fails with 409 if it is not stopped. `async` returns immediately — poll upcloud_get_server for state=started. UpCloud: POST /1.3/server/{uuid}/start.
| Argument | Type | Description |
|---|---|---|
| start_type | string | sync (default) waits for the start; async returns at once. |
| server_uuid* | string | The server UUID. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"server_uuid"
],
"properties": {
"start_type": {
"enum": [
"sync",
"async"
],
"type": "string",
"description": "sync (default) waits for the start; async returns at once."
},
"server_uuid": {
"type": "string",
"pattern": "^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$",
"description": "The server UUID."
}
}
}DISRUPTIVE: stop a running server — it goes offline until started again with upcloud_start_server. soft (default) sends an ACPI shutdown; with a timeout, a hard stop follows if it is still running. hard is like pulling the plug and can lose unsaved data. UpCloud: POST /1.3/server/{uuid}/stop.
| Argument | Type | Description |
|---|---|---|
| timeout | integer | Soft-stop timeout in seconds, 1-600. |
| stop_type | string | soft = ACPI shutdown signal (default); hard = equivalent of pulling the power cable. |
| server_uuid* | string | The server UUID. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"server_uuid"
],
"properties": {
"timeout": {
"type": "integer",
"maximum": 600,
"minimum": 1,
"description": "Soft-stop timeout in seconds, 1-600."
},
"stop_type": {
"enum": [
"soft",
"hard"
],
"type": "string",
"description": "soft = ACPI shutdown signal (default); hard = equivalent of pulling the power cable."
},
"server_uuid": {
"type": "string",
"pattern": "^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$",
"description": "The server UUID."
}
}
}{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"q": {
"type": "string",
"maxLength": 255,
"description": "Keyword: a resource UUID, account username or IP address."
},
"limit": {
"type": "integer",
"maximum": 200,
"minimum": 0,
"description": "Max entries to return, 0-200 (API default 50)."
},
"action": {
"enum": [
"create",
"read",
"update",
"delete",
"access-update",
"attach",
"detach",
"login",
"logout"
],
"type": "string",
"description": "Only this action."
},
"offset": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 0,
"description": "Offset into the results (API default 0)."
},
"origin": {
"enum": [
"api",
"gui",
"upcloud_internal"
],
"type": "string",
"description": "Only this origin."
},
"created_after": {
"type": "string",
"description": "ISO timestamp, e.g. 2026-09-01T00:00:00Z (inclusive). Default 180 days ago."
},
"resource_type": {
"enum": [
"account",
"auth",
"init-script",
"managed-database",
"managed-loadbalancer",
"managed-loadbalancer-certificate-bundle",
"managed-object-storage",
"server",
"ssh-key",
"storage",
"uks"
],
"type": "string",
"description": "Only this resource type (uks = Kubernetes)."
},
"created_before": {
"type": "string",
"description": "ISO timestamp (inclusive). Default now."
}
}
}