Skip to main content
Glama

Configure a Server

configure_server
DestructiveIdempotent

Change the host-level configuration of a Cycle server: its nickname, its tags (the labels containers target through constraints.node.tags), what it allows (pool: containers with no tags; services: environment service containers; overcommit: CPU shares beyond the hardware, by overcommit_multiple), its base volume size (the space reserved for images; grows only, never shrinks), whether it accepts SSH and SFTP connections (SFTP is required for container volumes with remote access), whether gateway services may run on it, and the shared file systems it exposes to containers. Shared file systems come in two kinds, each under an identifier: a shared DIRECTORY on the host, and a shared MOUNT that attaches an external file system (NFS, EFS, ...) with a type, mount options, and source. Containers mount an identifier via shared_file_systems on deploy_application or reconfigure_container; this tool is the server half only.

Nickname, tags, and allow apply immediately in one update with no job; tags are a complete replacement set, allow merges the passed flags over the current ones. Cycle applies features and shared file systems as two separate jobs, each replacing that whole group: the tool reads the current values, lays the fields you pass over them, and submits the full result, so anything you don't pass keeps its value. Shared file system directories and mounts are added (or replace an existing identifier); remove drops identifiers. Mount type, options, and source go to the host's mount verbatim, and a source the host cannot reach fails that job. Reconfiguring does not restart the server.

Always call with preview:true first: it returns the server's current tags, allow flags, features and shared file systems, the field-by-field change list, the containers across the hub whose placement constraints reference a tag being removed ('constrained_by'), and for every identifier being removed or replaced the containers that mount it ('mounted_by'). With nothing to change, preview is a read of the server's configuration. Confirm with the user, then call again without preview. Steps run the update (nickname, tags, allow) first, then features, then shared file systems, and stop at the first failure; read 'steps' rather than assuming all-or-nothing.

Input Schema

NameRequiredDescriptionDefault
sshNoAccept incoming SSH connections to the server.
sftpNoAccept incoming SFTP connections for container volumes with remote access.
tagsNoComplete replacement tag list, e.g. ['vultr', 'gpu'] — pass every tag wanted; [] removes them all. Containers target tags via constraints.node.tags, and a removed tag leaves containers that require it with one less eligible server.
allowNoPlacement permissions, merged over the current flags.
serverYesServer to configure: hostname, nickname, or 24-char hex ID.
contextNoWhy are you calling this tool? Briefly describe the user's goal.
gatewayNoGateway service type the server may run, or 'none' to disallow gateway services. 'static' is what Cycle currently implements; 'bgp' only where the provider supports it natively.
previewNoReturn the current configuration and the change list without applying anything. Always run this first.
nicknameNoCustom name for identification; does not change the hostname. Empty string clears it.
wait_secondsNoMax seconds to wait, across every step this call performs. 0 returns as soon as the jobs are accepted.
base_volume_gbNoNew base volume size in GB. Must be larger than the current size.
conversation_idNoConversation tracking id. Omit on your first tool call; every result then includes a conversation_id line — pass that exact value on all later calls in this conversation.
shared_file_systemsNoShared file systems to add, replace, or remove on this server.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Added

TDQS

A4.8/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare destructiveHint=true and idempotentHint=true, but the description adds far more: tags are a complete replacement while allow merges, features and shared file systems are applied as two jobs each replacing that whole group, reconfiguring does not restart the server, base volume grows only, a source the host cannot reach fails that job, and steps stop at the first failure so the agent must read 'steps' rather than assume all-or-nothing. This is exactly the destruction/failure/auth surface an agent needs beyond annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The first sentence front-loads the purpose, and the preview-first instruction is easy to find. It is dense and long, and the second and third paragraphs interleave merge semantics with job ordering, so some information is harder to scan than it could be, but given 13 parameters with nested objects the length is largely justified.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

No output schema exists, yet the description explains what preview returns (current tags/allow/features/shared file systems, field-by-field change list, 'constrained_by' for removed tags, 'mounted_by' for removed identifiers) and that 'steps' should be read after execution. For a 13-parameter mutation tool with nested objects, this is complete enough to invoke correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3, but the description adds real semantics the schema does not: nickname 'does not change the hostname', tags replacement vs allow merge behavior, overcommit_multiple as CPU share multiplier, and the add-vs-remove semantics of shared file system identifiers. It stops short of covering wait_seconds/conversation_id nuance, keeping it a 4 rather than a 5.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a precise verb+resource ('Change the host-level configuration of a Cycle server') and then enumerates the exact configurable surface (nickname, tags, allow, base volume, SSH/SFTP, gateway, shared file systems). It also draws a boundary against the container side by saying 'this tool is the server half only' and naming deploy_application/reconfigure_container as where the mount half lives, so an agent can separate it from siblings without opening schemas.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives an explicit workflow: 'Always call with preview:true first', then 'Confirm with the user, then call again without preview.' It also states a degenerate case ('With nothing to change, preview is a read of the server's configuration') and clarifies the server-vs-container split, leaving little to inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources