mcpField
F
fly-io

fly-io

ローカル
github.com/pulsemcpクラウド・インフラ818 週間前に更新

fly-io について

Fly.io のアプリ、マシン(VM)、ログ、Docker イメージを管理する MCP サーバーです。CRUD 操作に加え、ツールグループによる権限制御を備えており、AI アシスタントから Fly.io のリソースを操作したいユーザーに向いています。

主な機能

  1. 01アプリとマシンの作成・参照・更新・削除
  2. 02マシンの起動、停止、再起動、一時停止
  3. 03マシンのイベントログと状態遷移の待機
  4. 04リージョンやマシンで絞り込むアプリケーションログ
  5. 05イメージの確認、リリース一覧、イメージ更新
  6. 06権限と機能単位でツールを制限するグループ設定

活用シーン

  1. 01クラッシュしたマシンや応答しないマシンの調査
  2. 02アプリケーションログとデプロイ履歴の確認
  3. 03アプリを特定の Docker イメージバージョンに更新

MCP 対応

MCP サーバーとして、Fly.io のアプリ、マシン、ログ、イメージ、レジストリ操作に関するツールを MCP クライアントに公開します。

設定

ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。

mcp.json · 共通設定
{
"mcpServers": {
"com-pulsemcp-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>"
}
}
}
}
起動コマンドnpx -y fly-io-mcp-server
設定が必要な環境変数
FLY_IO_API_TOKENシークレットAPI token for Fly.io authentication.
FLY_IO_APP_NAMEScope server to a single app (disables app management tools).
ENABLED_TOOLGROUPSComma-separated tool groups to enable (readonly, write, admin, apps, machines, logs, ssh, images, registry).
SKIP_HEALTH_CHECKSSkip API validation at startup.
DISABLE_DOCKER_CLI_TOOLSDisable Docker-based registry tools.

ローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。

パッケージ
npmfly-io-mcp-server0.1.7

ツール

ツール一覧はまだ取得されていません

ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。

詳細

Fly.io MCP サーバー

Fly.io のマシンとアプリケーションを管理する MCP サーバーです。このサーバーは、Fly.io のアプリとマシン(VM)に対する CRUD 操作を実行するツールを提供します。

主な機能

  • MCP 経由で Fly.io のアプリケーションとマシンを管理
  • アプリとマシンに対する完全な CRUD 操作
  • マシンの起動、停止、再起動、一時停止
  • デバッグ用のマシンイベントログの取得
  • マシンの状態遷移を待機
  • Docker イメージを Fly.io にデプロイ
  • リージョンとマシンで絞り込んだアプリケーションログの取得
  • 実行中のマシンでコマンドを実行
  • Docker イメージの管理 — 現在のイメージの表示、リリースの一覧表示、新しいバージョンへの更新
  • Fly.io レジストリへのイメージのプッシュ/プル — registry.fly.io と直接やり取り
  • 権限ベースのアクセス制御に対応したツールのグループ化
  • API 認証情報と CLI ツールを検証するヘルスチェック

機能

ツール
ツール名権限機能説明
list_appsreadonly, write, adminappsFly.io アプリケーションをすべて一覧表示
get_appreadonly, write, adminapps特定のアプリの詳細を取得
create_appwrite, adminapps新しい Fly.io アプリケーションを作成
delete_appadminappsアプリケーションを削除
list_machinesreadonly, write, adminmachinesアプリ内のマシンをすべて一覧表示
get_machinereadonly, write, adminmachines特定のマシンの詳細を取得
get_machine_eventsreadonly, write, adminmachinesマシンのイベントログを取得(デバッグ用)
create_machinewrite, adminmachinesDocker イメージを使って新しいマシンを作成
update_machinewrite, adminmachinesマシンの設定を更新
delete_machineadminmachinesマシンを削除
start_machinewrite, adminmachines停止中のマシンを起動
stop_machinewrite, adminmachines実行中のマシンを停止
restart_machinewrite, adminmachinesマシンを再起動(停止後に起動)
suspend_machinewrite, adminmachinesマシンを一時停止(状態をディスクに保存)
wait_machinewrite, adminmachinesマシンが指定の状態になるまで待機
get_logsreadonly, write, adminlogsアプリケーションログを取得
machine_execwrite, adminsshマシン上でコマンドを実行
show_imagereadonly, write, adminimages現在の Docker イメージの詳細を表示
list_releasesreadonly, write, adminimagesイメージ参照を含むリリースを一覧表示
update_imagewrite, adminimagesアプリのイメージを最新版または指定版に更新
push_new_fly_registry_imagewrite, adminregistryローカルイメージを Fly.io レジストリにプッシュ
pull_fly_registry_imagereadonly, write, adminregistryFly.io レジストリからイメージをプル
check_fly_registry_imagereadonly, write, adminregistryレジストリにイメージが存在するか確認
セキュリティに関する考慮事項

machine_exec ツールを使うと、Fly.io マシン上で任意のコマンドを実行できます。強力な機能であるため、慎重に使用してください。

  • ENABLED_TOOLGROUPS="readonly" または ENABLED_TOOLGROUPS="readonly,write" を設定して、machine_exec を含む管理ツールを無効にすることを検討してください
  • このサーバーの実行には fly CLI が必要です。つまり、シェルコマンドを実行できます
  • すべての操作は FLY_IO_API_TOKEN を使って認証されます
ツールグループ

ENABLED_TOOLGROUPS 環境変数を使って、利用可能なツールを制御します。次の 2 種類のグループに対応しており、組み合わせて指定できます。

権限グループ(許可する操作)
グループ説明
readonly読み取り専用の操作(一覧表示、取得)
write書き込み操作(作成、更新、起動、停止)
admin管理操作(アプリ/マシンの削除)
機能グループ(有効にする機能)
グループ説明
appsアプリ管理ツール(list_apps、get_app、create_app、delete_app)
machinesマシン管理ツール(一覧表示、取得、作成、更新、削除、起動、停止)
logsログ取得ツール(get_logs)
sshリモート実行ツール(machine_exec)
imagesイメージ管理ツール(show_image、list_releases、update_image)
registryDocker レジストリツール(push_new_fly_registry_image、pull_fly_registry_image、check_fly_registry_image) - Docker CLI が必要

例:

  • ENABLED_TOOLGROUPS="readonly" - 読み取り操作のみ(すべての機能)
  • ENABLED_TOOLGROUPS="readonly,write" - 読み取りと書き込みを許可し、削除は不可(すべての機能)
  • ENABLED_TOOLGROUPS="machines,logs" - すべての権限を許可し、マシンとログの機能のみ
  • ENABLED_TOOLGROUPS="readonly,machines" - マシンへの読み取り専用アクセスのみ
  • 未設定 - すべてのツールを有効化(デフォルト)
アプリのスコープ設定

FLY_IO_APP_NAME を設定すると、サーバーは「スコープモード」で動作します。

  • アプリ管理ツールは無効になります:list_apps、get_app、create_app、delete_app は利用できません
  • マシンツールは制限されます:すべてのマシン操作は、設定されたアプリに対してのみ実行できます
  • app_name は省略可能になります:マシンツールでは、スコープが設定されたアプリが自動的に使用されます
  • アプリをまたぐ操作はブロックされます:別のアプリに対する操作を試みると、エラーが返されます

次のような用途に便利です。

  • 1 つのアプリケーションへのアクセスを制限する
  • ツールの使用を簡素化する(app_name を指定する必要がありません)
  • 誤ったアプリに対する操作を防ぐ

クイックスタート

前提条件
  1. Fly.io アカウント - fly.io で登録
  2. Fly.io API トークン - こちらから作成
  3. Fly.io CLI(fly)をインストール済み - インストール手順
  4. Docker CLI をインストール済み(任意) - レジストリツール(push_image、pull_image、check_registry_image)に必要です
  5. Node.js 18 以降をインストール済み
設定
環境変数
変数必須説明デフォルト
FLY_IO_API_TOKENはいFly.io 認証用の API トークン-
FLY_IO_APP_NAMEいいえサーバーの対象を単一のアプリに限定します(アプリ管理を無効化)-
ENABLED_TOOLGROUPSいいえ有効にするツールグループをカンマ区切りで指定しますすべて有効
SKIP_HEALTH_CHECKSいいえ起動時の API 検証をスキップしますfalse
DISABLE_DOCKER_CLI_TOOLSいいえDocker ベースのレジストリツールを無効にしますfalse
Claude Desktop の設定

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

Windows:%APPDATA%\Claude\claude_desktop_config.json

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

アプリのスコープを指定する場合(単一のアプリに制限します):

{
  "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"
      }
    }
  }
}

Claude Desktop を再起動すれば、準備完了です!

使用例

すべてのアプリを一覧表示する
Use the list_apps tool to see all my Fly.io applications.
新しいアプリを作成してマシンをデプロイする
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.
マシンをスケーリングする
List the machines in my-web-app and create two more copies
in different regions (lax and lhr).
デプロイを更新する
Update all machines in my-web-app to use the nginx:1.25 image.
クラッシュしたマシンをデバッグする
Get the events for machine abc123 in my-web-app to see why it crashed.
応答しなくなったマシンを再起動する
Restart machine abc123 in my-web-app to clear its state.
アプリケーションのログを表示する
Get the logs for my-web-app to see what's happening.
マシンでコマンドを実行する
Run "ls -la /app" on machine abc123 in my-web-app to see the app files.
現在のイメージバージョンを確認する
Show me the current Docker image details for my-web-app.
デプロイ履歴を一覧表示する
List the last 5 releases for my-web-app to see the deployment history.
新しいイメージに更新する
Update my-web-app to use the latest image version.
ローカルイメージを Fly.io レジストリにプッシュする
Push my local "my-app:v2" image to the Fly.io registry for my-web-app with tag "v2".
レジストリにイメージが存在するか確認する
Check if the image with tag "v2" exists in the Fly.io registry for my-web-app.

開発

セットアップ
# Clone the repository
git clone https://github.com/pulsemcp/mcp-servers.git
cd mcp-servers/experimental/fly-io

# Install dependencies
npm run install-all

# Build
npm run build
開発モードで実行する
npm run dev
テスト
# Run functional tests in watch mode
npm test

# Run tests once
npm run test:run

# Run integration tests
npm run test:integration

# Run manual tests (requires .env with API token)
npm run test:manual:setup  # First time only
npm run test:manual
リントとフォーマット
# Check for linting issues (run from repo root)
npm run lint

# Auto-fix linting issues
npm run lint:fix

# Format code
npm run format

アーキテクチャ

このサーバーは、REST API を直接使用せず、すべての操作に Fly.io CLI(fly) を使用します。この方式には次の利点があります。

  • すべてのツールで一貫した動作を実現します
  • ログやコマンド実行など、CLI 専用の機能を利用できます
  • 認証を簡素化します(FLY_API_TOKEN 環境変数を使用します)
レート制限

Fly.io API にはレート制限があり、CLI によって適用されます。

  • 一般:アクションごとに毎秒 1 リクエスト(バースト時:毎秒 3 リクエスト)
  • マシンの取得:毎秒 5 リクエスト(バースト時:毎秒 10 リクエスト)
  • アプリの削除:毎分 100 回

プロジェクト構成

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

ライセンス

MIT

コメント

MCP は初めてですか?

プロトコルの概要から最初のサーバーの導入まで、よくある疑問にまとめて答えます。

AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。