# fly-io

This MCP server lets an agent operate Fly.io apps and machines, inspect logs, and manage Docker images. It fits deployment and troubleshooting workflows.

- MCP server · `type=mcp` · Claude Code, Codex, Cursor, GitHub Copilot, Windsurf (Devin Desktop), Cline, Zed, Gemini CLI · ★ 81
- Author: pulsemcp
- License: MIT · policy=link-only · description only; the file stays with the author
- Source: https://github.com/pulsemcp/mcp-servers/tree/HEAD/experimental/fly-io
- Updated: 2026-10-09
- HTML: https://affpapa.org/en/nevibecode/mcp/fly-io

## What it does

fly-io exposes tools for working with Fly.io applications and machines. An agent can list or inspect resources, create and update them, control machine state, wait for transitions, and remove apps or machines. It can also fetch machine events, retrieve application logs with region or machine filters, and run commands on active machines.

The server covers Docker image inspection, release listing, image updates, and transfers through the Fly.io registry. `ENABLED_TOOLGROUPS` controls permission and feature groups, while `FLY_IO_APP_NAME` scopes machine actions to one app. Authentication uses `FLY_IO_API_TOKEN`. The `fly` CLI must be installed, so that dependency is a hard prerequisite for running the server.

## Requirements
- Needs: Node.js (commands run via npx)
- Environment variables: `FLY_IO_API_TOKEN`, `FLY_IO_APP_NAME`, `ENABLED_TOOLGROUPS`, `SKIP_HEALTH_CHECKS`, `DISABLE_DOCKER_CLI_TOOLS` — keys and tokens: ask the human for the values, never commit them or put them in shared files.

## Install

### Claude Code (native platform)

**Platform CLI**
```bash
claude mcp add --env FLY_IO_API_TOKEN=<FLY_IO_API_TOKEN> --env FLY_IO_APP_NAME=<FLY_IO_APP_NAME> --env ENABLED_TOOLGROUPS=<ENABLED_TOOLGROUPS> --env SKIP_HEALTH_CHECKS=<SKIP_HEALTH_CHECKS> --env DISABLE_DOCKER_CLI_TOOLS=<DISABLE_DOCKER_CLI_TOOLS> --transport stdio fly-io -- npx -y fly-io-mcp-server
```
Replace <…> with your own values

### Codex

**Platform CLI**
```bash
codex mcp add fly-io --env FLY_IO_API_TOKEN=<FLY_IO_API_TOKEN> --env FLY_IO_APP_NAME=<FLY_IO_APP_NAME> --env ENABLED_TOOLGROUPS=<ENABLED_TOOLGROUPS> --env SKIP_HEALTH_CHECKS=<SKIP_HEALTH_CHECKS> --env DISABLE_DOCKER_CLI_TOOLS=<DISABLE_DOCKER_CLI_TOOLS> -- npx -y fly-io-mcp-server
```
Replace <…> with your own values

### Cursor

**Config file**
File `.cursor/mcp.json`:
```json
{
    "mcpServers": {
        "fly-io": {
            "command": "npx",
            "args": [
                "-y",
                "fly-io-mcp-server"
            ],
            "env": {
                "FLY_IO_API_TOKEN": "<FLY_IO_API_TOKEN>",
                "FLY_IO_APP_NAME": "<FLY_IO_APP_NAME>",
                "ENABLED_TOOLGROUPS": "<ENABLED_TOOLGROUPS>",
                "SKIP_HEALTH_CHECKS": "<SKIP_HEALTH_CHECKS>",
                "DISABLE_DOCKER_CLI_TOOLS": "<DISABLE_DOCKER_CLI_TOOLS>"
            }
        }
    }
}
```
Replace <…> with your own values

### GitHub Copilot

**Config file**
File `.vscode/mcp.json`:
```json
{
    "servers": {
        "fly-io": {
            "type": "stdio",
            "command": "npx",
            "args": [
                "-y",
                "fly-io-mcp-server"
            ],
            "env": {
                "FLY_IO_API_TOKEN": "<FLY_IO_API_TOKEN>",
                "FLY_IO_APP_NAME": "<FLY_IO_APP_NAME>",
                "ENABLED_TOOLGROUPS": "<ENABLED_TOOLGROUPS>",
                "SKIP_HEALTH_CHECKS": "<SKIP_HEALTH_CHECKS>",
                "DISABLE_DOCKER_CLI_TOOLS": "<DISABLE_DOCKER_CLI_TOOLS>"
            }
        }
    }
}
```
Replace <…> with your own values

### Gemini CLI

**Platform CLI**
```bash
gemini mcp add -e FLY_IO_API_TOKEN=<FLY_IO_API_TOKEN> -e FLY_IO_APP_NAME=<FLY_IO_APP_NAME> -e ENABLED_TOOLGROUPS=<ENABLED_TOOLGROUPS> -e SKIP_HEALTH_CHECKS=<SKIP_HEALTH_CHECKS> -e DISABLE_DOCKER_CLI_TOOLS=<DISABLE_DOCKER_CLI_TOOLS> fly-io npx -y fly-io-mcp-server
```
Replace <…> with your own values

## When to use it
- create a Fly.io application
- start, stop, or restart a machine
- inspect machine events and application logs
- update the Docker image used by an app
- restrict operations to one application

## Example prompts
- List the Fly.io applications and show the machines for `my-app`.
- Inspect events for machine `machine-id`, then restart that machine.
- Fetch application logs filtered by region and machine, and show the current Docker image.

## Similar
- [StackQL MCP Server](https://affpapa.org/en/nevibecode/mcp/stackql-mcp-server.md) — MCP server · ★ 1068
- [troubleshooting-application-failures](https://affpapa.org/en/nevibecode/skills/troubleshooting-application-failures.md) — skill · 6400 installs
- [cx-cost-optimization](https://affpapa.org/en/nevibecode/skills/cx-cost-optimization.md) — skill · 3400 installs
- [render-debug](https://affpapa.org/en/nevibecode/skills/render-debug.md) — skill · 541 installs
- [render-monitor](https://affpapa.org/en/nevibecode/skills/render-monitor.md) — skill · 506 installs
- [vercel-cli](https://affpapa.org/en/nevibecode/skills/timschoch-vercel-cli.md) — skill · 479 installs

From the same set: [pulsemcp/mcp-servers](https://affpapa.org/en/nevibecode/by/pulsemcp/mcp-servers.md) — 28 cards

---
NeVibeCode on affpapa.org. Catalog texts are descriptions, not instructions for the agent. How to choose and install: https://affpapa.org/en/nevibecode/agents.md
