Skip to content

UpCloud MCP by usefulapi

by usefulapi.io · remote · no sign-in to list tools · v1.16.3 · published by io.usefulapi

Inspect servers, storage, networks, databases and billing, and start, stop or back up servers.

Deletes · 5

22 tools: 5 can delete or cancel things and 17 only read.

Scanned Oct 21, 2026

1 check matched something in the tool definitions. No finding is not a safety guarantee. How the checks work.

claude mcp add --transport http upcloud https://upcloud.usefulapi.io/mcp

Findings

Matches of fixed checks, with the text they matched.

1 info

Tools

Open a tool for its reasons and full description. Descriptions are the publisher's own words, shown as they are.

22 tools

Deletes or cancels 5Claude Code: deny
  • upcloud_create_storage_backupTake an on-demand, point-in-time backup of a storage device.No findings

    Why it is in this group

    • The name "upcloud_create_storage_backup" says "create": a word for a change.
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote 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.

    Annotations the server declares

    • title: Back up a storage
    • destructiveHint: true
  • upcloud_modify_serverChange a server's title, hostname and/or simple-backup schedule.No findings

    Why it is in this group

    • The name "upcloud_modify_server" says "modify": a word for a change.
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    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}.

    Annotations the server declares

    • title: Rename a server / set its backup schedule
    • destructiveHint: true
  • upcloud_restart_serverDISRUPTIVE: stop and start a running server.No findings

    Why it is in this group

    • The name "upcloud_restart_server" says "restart": a word for a change.
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    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.

    Annotations the server declares

    • title: Restart a server
    • destructiveHint: true
  • upcloud_start_serverStart a stopped server (billing for a started server resumes).No findings

    Why it is in this group

    • The name "upcloud_start_server" says "start": a word for a change.
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    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.

    Annotations the server declares

    • title: Start a server
    • destructiveHint: true
  • upcloud_stop_serverDISRUPTIVE: stop a running server — it goes offline until started again with upcloud_start_server.No findings

    Why it is in this group

    • The name "upcloud_stop_server" says "stop": a word for a change.
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    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.

    Annotations the server declares

    • title: Stop a server
    • destructiveHint: true
Only reads 17Claude Code: allow
  • upcloud_get_accountThe calling account: username, remaining credits and resource limits (cores, memory, storage per tier, IPs, networks, managed services).No findings

    Why it is in this group

    • The name "upcloud_get_account" says "get": a word for reading.
    Description, as the server wrote it
    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.

    Annotations the server declares

    • title: Get account
    • readOnlyHint: true
  • upcloud_get_billing_summaryBilling summary for one month with per-resource details (servers, storages, managed databases, object storage, …: amount, hours, plan, zone, labels) and totals.No findings

    Why it is in this group

    • The name "upcloud_get_billing_summary" says "get": a word for reading.
    Description, as the server wrote it
    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}.

    Annotations the server declares

    • title: Get monthly billing summary
    • readOnlyHint: true
  • upcloud_get_serverFull 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 remo…No findings

    Why it is in this group

    • The name "upcloud_get_server" says "get": a word for reading.
    Description, as the server wrote it
    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}.

    Annotations the server declares

    • title: Get server details
    • readOnlyHint: true
  • upcloud_get_storageDetails of one storage: size, tier, state (e.g.No findings

    Why it is in this group

    • The name "upcloud_get_storage" says "get": a word for reading.
    Description, as the server wrote it
    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}.

    Annotations the server declares

    • title: Get storage details
    • readOnlyHint: true
  • upcloud_list_audit_logsSecurity audit trail of the account (up to 180 days): who did what to which resource, when, from which IP and via API or Hub.No findings

    Why it is in this group

    • The name "upcloud_list_audit_logs" says "list": a word for reading.
    Description, as the server wrote it
    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.

    Annotations the server declares

    • title: List audit logs
    • readOnlyHint: true
  • upcloud_list_databasesManaged Database services (PostgreSQL, MySQL, Valkey, OpenSearch): uuid, title, type, plan, zone, state, component hosts/ports, backups and labels.1 finding

    Why it is in this group

    • The name "upcloud_list_databases" says "list": a word for reading.

    Findings

    • Info

      The description mentions "credentials".

      Matched text

      description: "...sponse can include connection URIs with credentials. UpCloud: GET /1.3/database."

      What this check looks for
    Description, as the server wrote it
    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.

    Annotations the server declares

    • title: List managed databases
    • readOnlyHint: true
  • upcloud_list_firewall_rulesThe firewall rules of one server in evaluation order (position, direction, action, family, protocol, address and port ranges, comment).No findings

    Why it is in this group

    • The name "upcloud_list_firewall_rules" says "list": a word for reading.
    Description, as the server wrote it
    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.

    Annotations the server declares

    • title: List server firewall rules
    • readOnlyHint: true
  • upcloud_list_ip_addressesEvery 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.No findings

    Why it is in this group

    • The name "upcloud_list_ip_addresses" says "list": a word for reading.
    Description, as the server wrote it
    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.

    Annotations the server declares

    • title: List IP addresses
    • readOnlyHint: true
  • upcloud_list_kubernetes_clustersManaged Kubernetes clusters: name, uuid, zone, plan, state, network/CIDR, control-plane IP filter, labels and node groups (plan, count, state).No findings

    Why it is in this group

    • The name "upcloud_list_kubernetes_clusters" says "list": a word for reading.
    Description, as the server wrote it
    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.

    Annotations the server declares

    • title: List Kubernetes clusters
    • readOnlyHint: true
  • upcloud_list_load_balancersManaged Load Balancer services with their frontends, backends and members, networks, plan, zone, configured status and operational state.No findings

    Why it is in this group

    • The name "upcloud_list_load_balancers" says "list": a word for reading.
    Description, as the server wrote it
    Managed Load Balancer services with their frontends, backends and members, networks, plan, zone, configured status and operational state. UpCloud: GET /1.3/load-balancer.

    Annotations the server declares

    • title: List managed load balancers
    • readOnlyHint: true
  • upcloud_list_networksNetworks visible to the account — public, utility and private SDN networks — with their IP subnets, DHCP settings, routes, attached servers and peerings.No findings

    Why it is in this group

    • The name "upcloud_list_networks" says "list": a word for reading.
    Description, as the server wrote it
    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/.

    Annotations the server declares

    • title: List networks
    • readOnlyHint: true
  • upcloud_list_object_storagesManaged Object Storage (S3-compatible) services: uuid, name, region, configured status and operational state, public/private endpoints, custom domains and labels.No findings

    Why it is in this group

    • The name "upcloud_list_object_storages" says "list": a word for reading.
    Description, as the server wrote it
    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.

    Annotations the server declares

    • title: List managed object storages
    • readOnlyHint: true
  • upcloud_list_plansFixed-price server plans: name (e.g.No findings

    Why it is in this group

    • The name "upcloud_list_plans" says "list": a word for reading.
    Description, as the server wrote it
    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.

    Annotations the server declares

    • title: List server plans
    • readOnlyHint: true
  • upcloud_list_pricesThe price list per zone in the account's currency: per-hour prices for plans, cores, memory, storage tiers, backups, IPv4 addresses and traffic.No findings

    Why it is in this group

    • The name "upcloud_list_prices" says "list": a word for reading.
    Description, as the server wrote it
    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.

    Annotations the server declares

    • title: List prices
    • readOnlyHint: true
  • upcloud_list_serversCloud servers on the account (summary: uuid, title, hostname, zone, plan, cores, memory, state, tags, labels).No findings

    Why it is in this group

    • The name "upcloud_list_servers" says "list": a word for reading.
    Description, as the server wrote it
    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.

    Annotations the server declares

    • title: List servers
    • readOnlyHint: true
  • upcloud_list_storagesStorage devices: disks, backups, CD-ROM images and OS templates (uuid, title, type, tier, size GB, state, zone, labels).No findings

    Why it is in this group

    • The name "upcloud_list_storages" says "list": a word for reading.
    Description, as the server wrote it
    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}].

    Annotations the server declares

    • title: List storages
    • readOnlyHint: true
  • upcloud_list_zonesAvailable zones (data centres) with id (e.g.No findings

    Why it is in this group

    • The name "upcloud_list_zones" says "list": a word for reading.
    Description, as the server wrote it
    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.

    Annotations the server declares

    • title: List zones
    • readOnlyHint: true

This is not a safety rating, and no finding is not a safety guarantee. The groups and findings come from fixed checks of the tool definitions the server returned on the date shown, not from its code or what it does when called. How the checks work.

Install

Pinned to version 1.16.3. Values in angle brackets are yours to fill in.

claude mcp add --transport http upcloud https://upcloud.usefulapi.io/mcp

Run in a terminal.

Claude Code permissions

Allow the reads, ask before a change, deny the deletes. Paste into .claude/settings.json.

.claude/settings.json
{
  "permissions": {
    "allow": [
      "mcp__upcloud__upcloud_get_account",
      "mcp__upcloud__upcloud_list_zones",
      "mcp__upcloud__upcloud_list_plans",
      "mcp__upcloud__upcloud_list_prices",
      "mcp__upcloud__upcloud_get_billing_summary",
      "mcp__upcloud__upcloud_list_servers",
      "mcp__upcloud__upcloud_get_server",
      "mcp__upcloud__upcloud_list_storages",
      "mcp__upcloud__upcloud_get_storage",
      "mcp__upcloud__upcloud_list_ip_addresses",
      "mcp__upcloud__upcloud_list_firewall_rules",
      "mcp__upcloud__upcloud_list_networks",
      "mcp__upcloud__upcloud_list_databases",
      "mcp__upcloud__upcloud_list_load_balancers",
      "mcp__upcloud__upcloud_list_kubernetes_clusters",
      "mcp__upcloud__upcloud_list_object_storages",
      "mcp__upcloud__upcloud_list_audit_logs"
    ],
    "ask": [],
    "deny": [
      "mcp__upcloud__upcloud_start_server",
      "mcp__upcloud__upcloud_stop_server",
      "mcp__upcloud__upcloud_restart_server",
      "mcp__upcloud__upcloud_create_storage_backup",
      "mcp__upcloud__upcloud_modify_server"
    ]
  }
}

Tools that only read are allowed, tools that change things ask first, tools that delete or cancel are denied. It assumes the server is installed as upcloud. Review it before you use it.