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.
22 tools: 5 can delete or cancel things and 17 only read.
Scanned Oct 21, 2026
- Deletes or cancels5Claude Code: deny: see these tools
- Can't be undone0Claude Code: ask
- Changes things0Claude Code: ask
- Only reads17Claude Code: allow: see these tools
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/mcpFindings
Matches of fixed checks, with the text they matched.
The description mentions "credentials".
What this check looks forMatched text
description: "...sponse can include connection URIs with credentials. UpCloud: GET /1.3/database."
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".
What this check looks forMatched text
description: "...sponse can include connection URIs with credentials. UpCloud: GET /1.3/database."
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/mcpRun in a terminal.
Claude Code permissions
Allow the reads, ask before a change, deny the deletes. Paste into .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.