SYSTEM Cited by 1 source
fly mcp launch¶
fly mcp launch is a flyctl
subcommand (shipped in flyctl v0.3.125, announced 2025-05-19)
that takes an existing local / stdio-style
MCP server command and
one-shots it into a remote HTTP/Streamable-HTTP MCP server
running as a Fly Machine, with
client-config files rewritten in place, bearer-token auth
configured by default on both ends, and --secret KEY=value
flags piped through to the Machine's
secrets. It is the
canonical wiki instance of the
patterns/remote-mcp-server-via-platform-launcher pattern.
Canonical invocation¶
From the announcement post:
fly mcp launch \
"npx -y @modelcontextprotocol/server-slack" \
--claude --server slack \
--secret SLACK_BOT_TOKEN=xoxb-your-bot-token \
--secret SLACK_TEAM_ID=T01234567
Flag anatomy:
- Positional quoted command — the stdio MCP server
invocation (here,
npx -y @modelcontextprotocol/server-slack— the reference Slack MCP server). Executed inside the Fly Machine, not on the operator's workstation. - Client selector (
--claude,--cursor,--zed,--vscode,--windsurf,--neovim) — tellsfly mcp launchwhich MCP-client config file(s) to rewrite in place. Multiple clients can be selected in one invocation. --server <name>— the name the server gets inside the client's MCP-server registry.- Repeated
--secret KEY=value— each becomes a Fly Machine secret, visible to the MCP server process as an env var. (Source: sources/2025-05-19-flyio-launching-mcp-servers-on-flyio.)
Full option list documented at fly.io/docs/flyctl/mcp-launch/.
What it automates¶
- Machine creation — provisions a Fly Machine, builds the container (or uses a prebuilt image), deploys the server.
- Auth setup — bearer-token authentication is on by default on both the Fly Machine side (server) and the rewritten client config (client). OAuth 2.1 is available as an option for clients that need it. "By default, bearer token authentication will be set up on both the server and client." (Source: sources/2025-05-19-flyio-launching-mcp-servers-on-flyio.)
- Secrets injection — each
--secretbecomes a Fly Machine secret, avoiding environment-variable leakage through the shell history or client-config JSON. - Client-config rewrite — the selected client's MCP-server JSON registry is updated in place, solving the client-config fragmentation problem the post leads with.
- Fly platform knobs — auto-stop (concepts/scale-to-zero), file contents, Flycast private-network exposure, additional secrets, region, volumes, and VM sizes are all configurable from the same command. (Source: sources/2025-05-19-flyio-launching-mcp-servers-on-flyio.)
Deployment-shape flexibility¶
The announcement lists four shapes supported by the broader fly
mcp family (not all exclusive to launch):
- Machines-API deploy for operators who want finer control
than the
fly mcp launchCLI shorthand. - One Machine per MCP server — the default, for isolation.
- One container or process per MCP server — for density.
- MCP server inside your application — library-mode, for MCP exposed as part of an existing Fly.io app.
Access paths also enumerated: "HTTP Authorization, wireguard tunnels and flycast, or reverse proxies." (Source: sources/2025-05-19-flyio-launching-mcp-servers-on-flyio.)
Client coverage at launch¶
Six editors / agents with built-in config-rewrite support:
| Client | Config file the command rewrites |
|---|---|
| Claude Desktop | ~/Library/Application Support/Claude/claude_desktop_config.json under the MCPServer key |
| Zed | ~/.config/zed/settings.json under the context_servers key |
| Cursor, VS Code, Windsurf, Neovim | OS-dependent paths; covered by the same command |
"Some tools put these files in a different place depending on
whether you are running on MacOS, Linux, or Windows" — fly mcp
launch abstracts over this. (Source:
sources/2025-05-19-flyio-launching-mcp-servers-on-flyio.)
Status¶
Beta. The announcement explicitly says: "Be forewarned, most pages are marked as beta. But the examples provided all work. Well, there may be a bug here or there, but the examples as shown are thought to work. Maybe." Closing line: "Let's figure out the ideal ergonomics of deploying MCP servers remotely together!" The shape is being negotiated with customers. (Source: sources/2025-05-19-flyio-launching-mcp-servers-on-flyio.)
Seen in¶
- sources/2025-05-19-flyio-launching-mcp-servers-on-flyio — announcement post; canonical wiki entry.
Related¶
- systems/fly-flyctl — the CLI this subcommand is part of.
- systems/fly-machines — the compute primitive a launched MCP server becomes an instance of.
- systems/fly-proxy — fronts the remote MCP server, provides session-affinity routing for long-lived SSE.
- systems/flycast — access-path option for non-public MCP servers.
- systems/model-context-protocol — the protocol being deployed.
- concepts/mcp-client-config-fragmentation — the editorial motivation this subcommand solves.
- concepts/local-mcp-server-risk — the security motivation for moving servers off the operator's workstation.
- concepts/mcp-long-lived-sse — the routing constraint the resulting remote MCP server inherits.
- patterns/remote-mcp-server-via-platform-launcher — canonical pattern.
- patterns/wrap-cli-as-mcp-server — the pattern that
produces the stdio MCP servers
fly mcp launchdeploys. - patterns/session-affinity-for-mcp-sse — the routing pattern Fly Proxy enforces for a remote MCP server's SSE connections.
- companies/flyio.