GitHub
GitHub’s official server lets AI read and manage code, issues and pull requests in your account. Use GitHub’s hosted version or run it locally with Docker.
Description from the maker (original English)
MCP server for managing Fly.io machines, apps, logs, and Docker images.
These three are never merged into one score: opinions, measurements and popularity are different things.
We have not written a plain-language summary for this one yet. Below are the facts we read from the registry.
Pick the AI app you use, then copy the settings.
FLY_IO_API_TOKEN, FLY_IO_APP_NAME, ENABLED_TOOLGROUPS, SKIP_HEALTH_CHECKS, DISABLE_DOCKER_CLI_TOOLSValues marked secret are keys to your account. Never share them or paste them into a chat.
You need
Which app do you use?
Pick your app above. We remember it, so next time the button says “Install in …”.
Open Claude Desktop → Settings → Developer → Edit Config, and paste this into claude_desktop_config.json
{
"mcpServers": {
"fly-io": {
"command": "npx",
"args": [
"-y",
"fly-io-mcp-server"
],
"env": {
"FLY_IO_API_TOKEN": "your-value",
"FLY_IO_APP_NAME": "your-value",
"ENABLED_TOOLGROUPS": "your-value",
"SKIP_HEALTH_CHECKS": "your-value",
"DISABLE_DOCKER_CLI_TOOLS": "your-value"
}
}
}
}Run this in your terminal
claude mcp add fly-io --env FLY_IO_API_TOKEN=your-value --env FLY_IO_APP_NAME=your-value --env ENABLED_TOOLGROUPS=your-value --env SKIP_HEALTH_CHECKS=your-value --env DISABLE_DOCKER_CLI_TOOLS=your-value -- npx -y fly-io-mcp-serverFill in the empty values before running it.
Paste into .cursor/mcp.json in your project, or ~/.cursor/mcp.json
{
"mcpServers": {
"fly-io": {
"command": "npx",
"args": [
"-y",
"fly-io-mcp-server"
],
"env": {
"FLY_IO_API_TOKEN": "your-value",
"FLY_IO_APP_NAME": "your-value",
"ENABLED_TOOLGROUPS": "your-value",
"SKIP_HEALTH_CHECKS": "your-value",
"DISABLE_DOCKER_CLI_TOOLS": "your-value"
}
}
}
}Your browser asks to open the app, then the app shows the settings and asks you to confirm. Key values are left empty for you to fill in.
Paste into .vscode/mcp.json in your project
{
"servers": {
"fly-io": {
"type": "stdio",
"command": "npx",
"args": [
"-y",
"fly-io-mcp-server"
],
"env": {
"FLY_IO_API_TOKEN": "your-value",
"FLY_IO_APP_NAME": "your-value",
"ENABLED_TOOLGROUPS": "your-value",
"SKIP_HEALTH_CHECKS": "your-value",
"DISABLE_DOCKER_CLI_TOOLS": "your-value"
}
}
}
}Your browser asks to open the app, then the app shows the settings and asks you to confirm. Key values are left empty for you to fill in.
This one runs on your computer, and ChatGPT can only connect to servers on the internet. Pick another app.
Your choice stays on this device in a cookie; no account needed.
FLY_IO_APP_NAME envENABLED_TOOLGROUPS envSKIP_HEALTH_CHECKS envDISABLE_DOCKER_CLI_TOOLS envThese settings are generated from the maker’s registry entry. If the README says otherwise, follow the README.
Runs on your computer; the tool list appears in your AI app after you install it.
We check information anyone can see; we have not read the code. Checks that do not apply are left out of the count. · Checked Nov 7, 2026
The registry name was verified against the domain pulsemcp.com (the registry checks domain ownership)
We have not read this repo from GitHub yet
We have not read this repo from GitHub yet
This one runs on your computer; there is no internet endpoint
Runs on your computer and uses local settings instead
Runs on your computer; we can only read tool lists from internet endpoints
Compared with every active server in this category in the registry. Stars count only when the publisher owns the repo.
It passed 1 of 1 applicable basic checks. We have not read the code. Before adding a key or token, see what access the server asks for and use a key with only the permissions you need.
You need to fill in: FLY_IO_API_TOKEN
It runs on your computer. Your AI app starts it when needed, and data does not pass through the maker’s servers (unless it calls an online service itself).
The GitHub repo last changed –, and the latest version (0.1.7) reached the registry 5 months ago.
Apps that support MCP, such as Claude Desktop, Claude Code, Cursor and VS Code. You also need Node.js on your computer.
In the same category: GitHub, Desktop Commander, Cloudflare MCP
Servers in the same category from other makers, sorted by stars.
Reading a card:★ GitHub starsiThree pillars: reviews · checks · usageiUpdated = latest version published to the registryi
GitHub’s official server lets AI read and manage code, issues and pull requests in your account. Use GitHub’s hosted version or run it locally with Docker.
MCP server for terminal commands, file operations, and process management
Cloudflare MCP servers
Copied from the maker’s repo as written. PopNx MCP has not reviewed or endorsed it. HTML, images and scripts are removed. Links lead off this site.
MCP server for managing Fly.io machines and applications. This server provides tools for CRUD operations on Fly.io apps and machines (VMs).
| Tool | Permissions | Feature | Description |
|---|---|---|---|
list_apps | readonly, write, admin | apps | List all Fly.io applications |
get_app | readonly, write, admin | apps | Get details for a specific app |
create_app | write, admin | apps | Create a new Fly.io application |
delete_app | admin | apps | Delete an application |
list_machines | readonly, write, admin | machines | List all machines in an app |
get_machine | readonly, write, admin | machines | Get details for a specific machine |
get_machine_events | readonly, write, admin | machines | Get event log for a machine (for debugging) |
create_machine | write, admin | machines | Create a new machine with a Docker image |
update_machine | write, admin | machines | Update a machine's configuration |
delete_machine | admin | machines | Delete a machine |
start_machine | write, admin | machines | Start a stopped machine |
stop_machine | write, admin | machines | Stop a running machine |
restart_machine | write, admin | machines | Restart a machine (stop then start) |
suspend_machine | write, admin | machines | Suspend a machine (save state to disk) |
wait_machine | write, admin | machines | Wait for a machine to reach a state |
get_logs | readonly, write, admin | logs | Get application logs |
machine_exec | write, admin | ssh | Execute a command on a machine |
show_image | readonly, write, admin | images | Show current Docker image details |
list_releases | readonly, write, admin | images | List releases with image references |
update_image | write, admin | images | Update app's image to latest or specific |
push_new_fly_registry_image | write, admin | registry | Push local image to Fly.io registry |
pull_fly_registry_image | readonly, write, admin | registry | Pull image from Fly.io registry |
check_fly_registry_image | readonly, write, admin | registry | Check if image exists in registry |
The machine_exec tool allows executing arbitrary commands on Fly.io machines. This is a powerful capability that should be used with caution:
ENABLED_TOOLGROUPS="readonly" or ENABLED_TOOLGROUPS="readonly,write" to disable administrative tools including machine_execfly CLI to be installed, which means it has access to execute shell commandsFLY_IO_API_TOKENControl which tools are available via the ENABLED_TOOLGROUPS environment variable. Two types of groups are supported and can be combined:
| Group | Description |
|---|---|
readonly | Read-only operations (list, get) |
write | Write operations (create, update, start, stop) |
admin | Administrative operations (delete apps/machines) |
| Group | Description |
|---|---|
apps | App management tools (list_apps, get_app, create_app, delete_app) |
machines | Machine management tools (list, get, create, update, delete, start, stop) |
logs | Log retrieval tools (get_logs) |
ssh | Remote execution tools (machine_exec) |
images | Image management tools (show_image, list_releases, update_image) |
registry | Docker 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 featuresENABLED_TOOLGROUPS="readonly,machines" - Read-only access to machines onlyWhen FLY_IO_APP_NAME is set, the server operates in "scoped mode":
list_apps, get_app, create_app, delete_app are not availableThis is useful for:
push_image, pull_image, check_registry_image)| Variable | Required | Description | Default |
|---|---|---|---|
FLY_IO_API_TOKEN | Yes | API token for Fly.io authentication | - |
FLY_IO_APP_NAME | No | Scope server to a single app (disables app management) | - |
ENABLED_TOOLGROUPS | No | Comma-separated tool groups to enable | All enabled |
SKIP_HEALTH_CHECKS | No | Skip API validation at startup | false |
DISABLE_DOCKER_CLI_TOOLS | No | Disable Docker-based registry tools | false |
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" } } } }
With app scoping (restricts to a single app):
{
"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!
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.
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
npm run install-all
npm run build
npm run dev
# Run functional tests in watch mode
npm test
npm run test:run
npm run test:integration
npm run test:manual:setup # First time only npm run test:manual
# Check for linting issues (run from repo root)
npm run lint
npm run lint:fix
npm run format
This server uses the Fly.io CLI (`fly`) for all operations instead of the REST API directly. This approach:
FLY_API_TOKEN environment variable)The Fly.io API enforces rate limiting (applied by the CLI):
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 # S
Only the beginning is shown; read the rest in the repo