Fly Io

com.pulsemcp由 pulsemcp.com 發布v0.1.7更新於 Oct 24, 2026

MCP server for managing Fly.io machines, apps, logs, and Docker images.

概覽

AI 產生的概覽

一個 MCP 伺服器,讓助理透過 Fly.io CLI 管理 Fly.io 應用程式、機器、日誌和 Docker 映像。

可以做什麼
列出、檢視、建立和刪除 Fly.io 應用程式;可透過 FLY_IO_APP_NAME 限定單一應用程式,此時應用程式管理工具會停用,跨應用程式操作也會被封鎖。列出、檢視、建立、更新和刪除機器,並可啟動、停止、重新啟動、暫停機器以及等待狀態轉換。讀取機器事件日誌和應用程式日誌,支援依區域和機器篩選。透過 machine_exec 工具在執行中的機器上執行任意命令。檢視目前映像、列出發佈記錄並更新應用程式映像,以及推送、拉取或檢查 Fly.io 映像倉庫中的映像。
適用情境
適合想用對話方式操作 Fly.io 部署的情境:檢視應用程式和機器、擴縮或重新啟動機器、透過日誌和事件排查當機、更新映像,或在機器內執行命令。需要把助理限制在單一應用程式時,應用程式限定模式很有用。
執行需求
透過 npx 在本機執行,需要 Node.js 18+。需要 Fly.io 帳號,並在 FLY_IO_API_TOKEN 中提供 API 權杖。必須安裝 Fly.io CLI(fly);Docker CLI 為選用,僅映像倉庫工具需要。選用變數:FLY_IO_APP_NAME、ENABLED_TOOLGROUPS、SKIP_HEALTH_CHECKS、DISABLE_DOCKER_CLI_TOOLS。
安裝前請注意
此權杖可控制你的 Fly.io 帳號,寫入與管理類工具能夠建立、更新、重新啟動、暫停和刪除應用程式與機器。machine_exec 工具會在機器上執行任意命令,且預設啟用;應透過 ENABLED_TOOLGROUPS 限制,例如設為 readonly。伺服器會呼叫 fly CLI,因此能執行 shell 命令。操作受 Fly.io API 速率限制約束。

安裝

在 SourceWeft 中

  1. 開啟 儀表板中的 Fly Io,將其新增到工作區。
  2. 為需要使用其工具的對話啟用該服務。

Desktop only,透過 STDIO。 STDIO 服務會啟動本機處理程序,因此需要 SourceWeft 桌面主機。

其他 MCP 客戶端

參照 儲存庫 中的啟動說明。

README

Fly.io MCP Server

MCP server for managing Fly.io machines and applications. This server provides tools for CRUD operations on Fly.io apps and machines (VMs).

Highlights

  • Manage Fly.io applications and machines via MCP
  • Full CRUD operations for apps and machines
  • Start, stop, restart, and suspend machines
  • Get machine event logs for debugging
  • Wait for machine state transitions
  • Deploy Docker images to Fly.io
  • Retrieve application logs with region and machine filtering
  • Execute commands on running machines
  • Manage Docker images - view current image, list releases, update to new versions
  • Push/pull images to Fly.io registry - interact with registry.fly.io directly
  • Tool grouping for permission-based access control
  • Health checks for API credential and CLI tool validation

Capabilities

Tools

ToolPermissionsFeatureDescription
list_appsreadonly, write, adminappsList all Fly.io applications
get_appreadonly, write, adminappsGet details for a specific app
create_appwrite, adminappsCreate a new Fly.io application
delete_appadminappsDelete an application
list_machinesreadonly, write, adminmachinesList all machines in an app
get_machinereadonly, write, adminmachinesGet details for a specific machine
get_machine_eventsreadonly, write, adminmachinesGet event log for a machine (for debugging)
create_machinewrite, adminmachinesCreate a new machine with a Docker image
update_machinewrite, adminmachinesUpdate a machine's configuration
delete_machineadminmachinesDelete a machine
start_machinewrite, adminmachinesStart a stopped machine
stop_machinewrite, adminmachinesStop a running machine
restart_machinewrite, adminmachinesRestart a machine (stop then start)
suspend_machinewrite, adminmachinesSuspend a machine (save state to disk)
wait_machinewrite, adminmachinesWait for a machine to reach a state
get_logsreadonly, write, adminlogsGet application logs
machine_execwrite, adminsshExecute a command on a machine
show_imagereadonly, write, adminimagesShow current Docker image details
list_releasesreadonly, write, adminimagesList releases with image references
update_imagewrite, adminimagesUpdate app's image to latest or specific
push_new_fly_registry_imagewrite, adminregistryPush local image to Fly.io registry
pull_fly_registry_imagereadonly, write, adminregistryPull image from Fly.io registry
check_fly_registry_imagereadonly, write, adminregistryCheck if image exists in registry

Security Considerations

The machine_exec tool allows executing arbitrary commands on Fly.io machines. This is a powerful capability that should be used with caution:

  • Consider using ENABLED_TOOLGROUPS="readonly" or ENABLED_TOOLGROUPS="readonly,write" to disable administrative tools including machine_exec
  • The server requires the fly CLI to be installed, which means it has access to execute shell commands
  • All operations are authenticated via your FLY_IO_API_TOKEN

Tool Groups

Control which tools are available via the ENABLED_TOOLGROUPS environment variable. Two types of groups are supported and can be combined:

Permission Groups (what operations are allowed)
GroupDescription
readonlyRead-only operations (list, get)
writeWrite operations (create, update, start, stop)
adminAdministrative operations (delete apps/machines)
Feature Groups (what features are enabled)
GroupDescription
appsApp management tools (list_apps, get_app, create_app, delete_app)
machinesMachine management tools (list, get, create, update, delete, start, stop)
logsLog retrieval tools (get_logs)
sshRemote execution tools (machine_exec)
imagesImage management tools (show_image, list_releases, update_image)
registryDocker registry tools (push_new_fly_registry_image, pull_fly_registry_image, check_fly_registry_image) - requires Docker CLI

Examples:

  • ENABLED_TOOLGROUPS="readonly" - Only read operations (all features)
  • ENABLED_TOOLGROUPS="readonly,write" - Read and write, no delete (all features)
  • ENABLED_TOOLGROUPS="machines,logs" - All permissions, only machines and logs features
  • ENABLED_TOOLGROUPS="readonly,machines" - Read-only access to machines only
  • Not set - All tools enabled (default)

App Scoping

When FLY_IO_APP_NAME is set, the server operates in "scoped mode":

  • App management tools are disabled: list_apps, get_app, create_app, delete_app are not available
  • Machine tools are restricted: All machine operations only work on the configured app
  • app_name becomes optional: Machine tools will automatically use the scoped app
  • Cross-app operations are blocked: Attempting to operate on a different app returns an error

This is useful for:

  • Restricting access to a single application
  • Simplifying tool usage (no need to specify app_name)
  • Preventing accidental operations on wrong apps

Quick Start

Prerequisites

  1. A Fly.io account - Sign up at fly.io
  2. A Fly.io API token - Create one here
  3. Fly.io CLI (fly) installed - Install instructions
  4. Docker CLI installed (optional) - Required for registry tools (push_image, pull_image, check_registry_image)
  5. Node.js 18+ installed

Configuration

Environment Variables
VariableRequiredDescriptionDefault
FLY_IO_API_TOKENYesAPI token for Fly.io authentication-
FLY_IO_APP_NAMENoScope server to a single app (disables app management)-
ENABLED_TOOLGROUPSNoComma-separated tool groups to enableAll enabled
SKIP_HEALTH_CHECKSNoSkip API validation at startupfalse
DISABLE_DOCKER_CLI_TOOLSNoDisable Docker-based registry toolsfalse

Claude Desktop Configuration

macOS: ~/Library/Application Support/Claude/claude_desktop_config.json

Windows: %APPDATA%\Claude\claude_desktop_config.json

json
{  "mcpServers": {    "fly-io": {      "command": "npx",      "args": ["-y", "fly-io-mcp-server"],      "env": {        "FLY_IO_API_TOKEN": "fo_your_token_here"      }    }  }}

With app scoping (restricts to a single app):

json
{  "mcpServers": {    "fly-io": {      "command": "npx",      "args": ["-y", "fly-io-mcp-server"],      "env": {        "FLY_IO_API_TOKEN": "fo_your_token_here",        "FLY_IO_APP_NAME": "my-production-app"      }    }  }}

Restart Claude Desktop and you should be ready to go!

Usage Examples

List all apps

Use the list_apps tool to see all my Fly.io applications.

Create a new app and deploy a machine

Create a new Fly.io app called "my-web-app" in my personal organization,then deploy an nginx container to it with 512MB of RAM.

Scale machines

List the machines in my-web-app and create two more copiesin different regions (lax and lhr).

Update a deployment

Update all machines in my-web-app to use the nginx:1.25 image.

Debug a crashed machine

Get the events for machine abc123 in my-web-app to see why it crashed.

Restart a stuck machine

Restart machine abc123 in my-web-app to clear its state.

View application logs

Get the logs for my-web-app to see what's happening.

Execute a command on a machine

Run "ls -la /app" on machine abc123 in my-web-app to see the app files.

Check current image version

Show me the current Docker image details for my-web-app.

List deployment history

List the last 5 releases for my-web-app to see the deployment history.

Update to a new image

Update my-web-app to use the latest image version.

Push a local image to Fly.io registry

Push my local "my-app:v2" image to the Fly.io registry for my-web-app with tag "v2".

Check if an image exists in the registry

Check if the image with tag "v2" exists in the Fly.io registry for my-web-app.

Development

Setup

bash
# Clone the repositorygit clone https://github.com/pulsemcp/mcp-servers.gitcd mcp-servers/experimental/fly-io
# Install dependenciesnpm run install-all
# Buildnpm run build

Running in Development Mode

bash
npm run dev

Testing

bash
# Run functional tests in watch modenpm test
# Run tests oncenpm run test:run
# Run integration testsnpm run test:integration
# Run manual tests (requires .env with API token)npm run test:manual:setup  # First time onlynpm run test:manual

Linting and Formatting

bash
# Check for linting issues (run from repo root)npm run lint
# Auto-fix linting issuesnpm run lint:fix
# Format codenpm run format

Architecture

This server uses the Fly.io CLI (fly) for all operations instead of the REST API directly. This approach:

  • Ensures consistent behavior across all tools
  • Enables CLI-only features like logs and command execution
  • Simplifies authentication (uses FLY_API_TOKEN environment variable)

Rate Limits

The Fly.io API enforces rate limiting (applied by the CLI):

  • General: 1 request/second/action (burst: 3 req/s)
  • Get Machine: 5 req/s (burst: 10 req/s)
  • Delete App: 100/minute

Project Structure

fly-io/├── local/                 # Local server implementation│   ├── src/│   │   ├── index.ts      # Main entry point│   │   └── index.integration-with-mock.ts│   └── package.json├── shared/               # Shared business logic│   ├── src/│   │   ├── server.ts     # Server factory│   │   ├── tools.ts      # Tool registration│   │   ├── tools/        # Individual tool implementations│   │   ├── fly-io-client/  # Fly.io CLI client│   │   │   ├── fly-cli-client.ts   # CLI wrapper│   │   │   └── fly-io-client.ts    # Interface & exports│   │   ├── logging.ts│   │   └── types.ts│   └── package.json├── tests/│   ├── functional/       # Unit tests with mocks│   ├── integration/      # MCP protocol tests│   ├── manual/          # Real API tests│   └── mocks/├── scripts/├── package.json└── README.md

License

MIT

來源:experimental/fly-io/README.md,提交 0ed34de

工具

0
SourceWeft 尚未在沙箱中啟動過該軟體包,因此其工具未知。

版本歷史

1
  1. v0.1.7最新Sep 16, 2026

評分

已滿足適用檢查項的 50%

該評分衡量此收錄條目的完整程度,依據註冊中心條目、端點與公開來源計算得出。它不是對伺服器本身的評價,也不表示伺服器安全或目前可用:可連通性是帶日期的檢查結果,評分也不包含安裝量或使用者評價。

  • 近 30 天內可連通25 分

    請保持端點能夠回應 MCP 握手;SourceWeft 每 30 天探測一次。

  • 已宣告認證方式10 分

    請在註冊中心條目中宣告憑證請求標頭,或保持端點能夠回應探測,以便判定其認證方式。

  • 已列出工具15 分

    請讓伺服器在無憑證時回應 tools/list,或發布可在沙箱中無憑證啟動的軟體包。

  • 描述必需15 分
  • 圖示10 分
  • 文件15 分
  • 授權條款10 分