Beta

The Fly MCP

Bring Fly.io to your AI coding agent. Manage your Machines, Sprites, and more right from your editor.

Choose your client

Tools

Account and context

4 tools
Account and context 4 tools
get_fly_context
Show this connection's current authorized resource bindings, per-resource scopes, and restrictions, including the Sprites name_prefix and max_sprites_total creation limit. This describes the grant and never expands access.
list_organizations
List current organization identities and roles under explicitly granted account-directory access. This does not authorize their resources.
get_organization
Read the selected organization's identity, current role and launch eligibility.
get_launch_requirements
Explain launch blockers and return browser handoffs for billing, SSO or provider terms. Does not accept terms or alter payment settings.

Fly apps and resources

47 tools
Apps 3 tools
list_apps
List app identity, organization, status, and counts.
get_app
Read an app's identity, organization, status, and counts.
delete_app
Permanently delete the app. This can disrupt or delete its resources; inspect the app first. Requires explicit fly:apps:delete authorization.
Machines 28 tools
list_machines
List Machine identity and lifecycle summaries for an app. Excludes configuration and secrets.
get_machine
Read a Machine's identity and lifecycle summary. Excludes configuration and secrets.
get_machine_configuration
Read the full Machine configuration under explicit authorization. Configuration can contain sensitive environment, file and metadata values. Requires explicit fly:machines:sensitive:read authorization.
create_machine
Create a billable Machine from explicit configuration. It starts unless skip_launch is set. If the response is lost, inspect existing Machines before retrying; mutations are not automatically retried. Requires explicit fly:machines:write authorization.
delete_machine
Permanently destroy the Machine and its ephemeral root filesystem. Attached volumes are separate resources. force is never enabled implicitly. Requires explicit fly:machines:delete authorization.
start_machine
Start Machine. Requires explicit fly:machines:write authorization.
stop_machine
Stop running work on the Machine. Existing auto_destroy configuration still applies. Requires explicit fly:machines:write authorization.
restart_machine
Restart the Machine and interrupt its running work. Requires explicit fly:machines:write authorization.
suspend_machine
Suspend running work on the Machine; this interrupts service until resumed. Requires explicit fly:machines:write authorization.
signal_machine
Signal Machine. Requires explicit fly:machines:write authorization.
cordon_machine
Remove this Machine from proxy routing; existing application work can continue. Requires explicit fly:machines:write authorization.
uncordon_machine
Allow proxy routing to this Machine again. Requires explicit fly:machines:write authorization.
list_machine_events
List Events. Requires explicit fly:machines:read authorization.
list_machine_versions
Read historical Machine configurations under explicit authorization. History can contain sensitive environment, file and metadata values. Requires explicit fly:machines:sensitive:read authorization.
list_machine_processes
Read process details, which can include sensitive command arguments, under explicit authorization. Requires explicit fly:machines:sensitive:read authorization.
wait_for_machine_state
Wait for State. Requires explicit fly:machines:read authorization.
get_machine_lease
Read the active lease under an explicit management grant. Lease nonces are sensitive concurrency credentials. Requires explicit fly:machines:write authorization.
get_machine_metadata
Read arbitrary Machine metadata under explicit authorization; values can be sensitive. Requires explicit fly:machines:sensitive:read authorization.
get_machine_metadata_key
Read one arbitrary Machine metadata value under explicit authorization. Requires explicit fly:machines:sensitive:read authorization.
exec_machine_command
Execute an explicit argv array on the Machine, without an implicit shell. Can read or change application data. Command output may contain sensitive values. Requires explicit fly:machines:exec authorization.
create_machine_lease
Acquire a temporary Machine lease, or renew it with the existing lease_nonce. Keep the returned nonce private; use it for subsequent mutations and release. Requires explicit fly:machines:write authorization.
release_machine_lease
Release the Machine lease using its exact lease_nonce. Requires explicit fly:machines:write authorization.
get_machine_memory
Get Machine Memory. Requires explicit fly:machines:write authorization.
set_machine_memory_limit
Set Machine Memory Limit. Requires explicit fly:machines:write authorization.
reclaim_machine_memory
Reclaim Machine Memory. Requires explicit fly:machines:write authorization.
update_machine_metadata
Set or remove metadata keys, without replacing other keys. Null or empty values remove keys. Requires machine_version; stale versions fail without updating. Requires explicit fly:machines:write authorization.
set_machine_metadata_key
Upsert Metadata Key. Requires explicit fly:machines:write authorization.
delete_machine_metadata_key
Delete Metadata. Requires explicit fly:machines:write authorization.
Volumes 8 tools
list_volumes
List volumes, hiding deletion-state volumes by default. Set include_destroyed=true to include them. With summary=true, byte and block statistics are unavailable and omitted. Requires explicit fly:volumes:read authorization.
create_volume
Create a new billable persistent volume. Restoring or forking another volume is not supported by this tool; those operations require separate source-resource authorization. Requires explicit fly:volumes:write authorization.
get_volume
Get Volume. Requires explicit fly:volumes:read authorization.
update_volume
Update Volume. Requires explicit fly:volumes:write authorization.
delete_volume
Permanently destroy a persistent volume and its data. Detach it from Machines before deletion. Requires explicit fly:volumes:delete authorization.
extend_volume
Increase persistent volume capacity and associated charges; volumes cannot be shrunk. Requires explicit fly:volumes:write authorization.
list_volume_snapshots
List Snapshots. Requires explicit fly:volumes:read authorization.
create_volume_snapshot
Schedule a volume snapshot. The volume must be attached and ready. Creation is asynchronous and may not return a snapshot ID; use list_volume_snapshots afterward to find the snapshot ID and completion status. Requires explicit fly:volumes:write authorization.
App secrets 5 tools
list_app_secrets
List secret names, digests and timestamps. Secret values are never returned. Requires explicit fly:secrets:read authorization.
get_app_secret
Read one secret's name, digest and timestamps. Its value is never returned. Requires explicit fly:secrets:read authorization.
update_app_secrets
Set or remove several secrets. Null values remove secrets and additionally require fly:secrets:delete consent. The upstream bulk API requires create, write and delete action bits even for sets; secret values are never echoed. Requires explicit fly:secrets:write authorization.
set_app_secret
Set a secret value. The result contains metadata only; secret values are not echoed. Requires explicit fly:secrets:write authorization.
delete_app_secret
Delete an app secret. Deletion is idempotent: an absent name can still succeed and advance the secrets version. Requires explicit fly:secrets:delete authorization.
IP addresses 1 tool
list_app_ips
List IP assignments for app. Requires explicit fly:network:read authorization.
TLS certificates 2 tools
list_app_certificates
List certificates for app. Requires explicit fly:certificates:read authorization.
get_app_certificate
Get certificate details. Requires explicit fly:certificates:read authorization.

Managed Postgres

14 tools
Clusters and plans 5 tools
list_postgres_clusters
List Managed Postgres clusters for an organization.
get_postgres_plans
List the Managed Postgres plans available when creating or forking a cluster in an organization, cheapest first.
get_postgres_cluster
Get details of a specific Managed Postgres cluster, including its status and, once it is ready, its endpoints.
create_postgres_cluster
Create a Managed Postgres cluster in the organization. Provisioning is asynchronous: poll get_postgres_cluster until its status is ready before creating databases or enabling extensions.
fork_postgres_cluster
Fork a ready Managed Postgres cluster into a new cluster that inherits the source's settings, on the source's plan unless plan is given. The source cluster is left unchanged, and the fork is provisioned asynchronously.
Backups 2 tools
list_postgres_backups
List all backups associated with a specific cluster.
create_postgres_backup
Create a backup for a specific cluster. The backup runs asynchronously and is rejected if one is already in progress.
Databases and extensions 4 tools
list_postgres_databases
List all databases within a specific cluster.
list_postgres_extensions
List all extensions available within a specific database, indicating which are installed.
create_postgres_database
Create a database within a specific cluster.
enable_postgres_extension
Enable a Postgres extension within a specific database. PostGIS extensions require a PostGIS-enabled cluster.
Users and query activity 3 tools
list_postgres_users
List all Postgres users within a specific cluster.
list_postgres_active_queries
List active queries in the supplied database. Returns full query text and durations in seconds.
list_postgres_slow_queries
List the top 20 queries by cumulative total execution time, excluding the postgres database. Uses the latest available metrics within the lookback range; statistics are cumulative PostgreSQL counters, not deltas over that range. Returns full query text and execution times in seconds.

Sprites

27 tools
Discovery and lifecycle 6 tools
list_sprites
List Sprites visible to this connection. The grant's name prefix and optional label filter access; this is not necessarily every Sprite in the organization, nor limited to Sprites created by this client. Call get_fly_context to inspect the restrictions.
create_sprite
Create a Sprite within this connection's grant restrictions. First call get_fly_context and inspect the Sprites binding restrictions for the required name_prefix and max_sprites_total creation limit.
destroy_sprite
Destroy a sprite in the authenticated organization.
search_sprite_mentions
Find up to 20 authorized Sprites by name prefix for composer mentions.
open_sprite_inspector
Open a read-only Sprite Inspector showing environments, services, checkpoints and recent service logs. Opening only lists metadata; runtime reads are explicit and may wake a Sprite.
get_sprite_info
Read authorized Sprite metadata without waking it. Pass sprite_id from a mention or Inspector selection to reject deleted and recreated environments.
Commands and sessions 3 tools
exec_list
List active exec sessions.
exec
Execute a command via simple HTTP POST (non-TTY only). Simpler alternative for exec for environments that can't handle websockets.
exec_kill
Kill an exec session by session ID. Returns streaming NDJSON with kill progress.
Files and directories 6 tools
file_read
Read file contents from the sprite filesystem. Returns raw file bytes.
file_write
Write up to 16 MiB of file contents to the sprite filesystem. Request body contains raw file bytes.
file_list
List directory contents.
file_delete
Delete a file or directory.
file_rename
Rename or move a file or directory.
file_copy
Copy a file or directory.
Services and logs 6 tools
service_list
List all configured services and their current state.
service_get
Get details of a specific service.
service_create
Create or update a service definition.
service_start
Start a service. Returns streaming NDJSON with stdout/stderr.
service_stop
Stop a running service. Returns streaming NDJSON with service stop progress.
service_logs
Stream logs for a service.
Checkpoints 4 tools
checkpoint_create
Create a new checkpoint of the current sprite state. Returns streaming NDJSON progress.
checkpoint_list
List all checkpoints.
checkpoint_get
Get details of a specific checkpoint.
checkpoint_restore
Restore to a specific checkpoint. Returns streaming NDJSON progress.
Network policies 2 tools
policy_network_get
Get the current network policy configuration.
policy_network_update
Update the network policy configuration.

FAQ

What can Fly MCP do?

Work with your existing Fly apps, Machines, volumes, and app secrets, with Managed Postgres in the organizations you select, and with Sprites. IP addresses and certificates are read-only. Managed Postgres tools never delete anything, change users or passwords, or return passwords. General Machine configuration updates, deployment workflows, app creation, other product provisioning, and organization administration are not included.

Do I need an API token?

No. Your client signs in through fly.io in the browser with OAuth, so there is nothing to paste.

What can my agent access?

Only the organizations, apps, and Sprites permissions you approve on the consent screen. New tools do not expand an existing grant, and your client's tool approvals still apply.

Which clients work with Fly MCP?

Any client that supports remote HTTP MCP servers with OAuth. Pick yours above for its setup command, or choose Other clients and use the server URL.

Will my agent wake a sleeping Sprite?

Reading Sprite metadata does not. Reading runtime state, services, logs, or files may wake it.

How do I revoke access?

Disconnect the client and revoke its backing Sprites token. Revocation stops further use of that token, including OAuth refresh.

A call failed. What should I do?

Retry reads once the service recovers. If a write timed out, check whether it completed before repeating it. If sign-in fails or access was revoked, reconnect through the consent screen.