Skip to main content
While MCPs and Fly.io have a lot of concepts, when launching MCPs on Fly.io you generally only have to worry about:
  • Host tool (examples: Claude, Cursor, Neovim, VSCode, Windsurf, Zed)
  • MCP server name. If you are using, for example, Claude as your host and connect multiple MCP servers to it, you need to give each MCP server a name.
  • Secrets. If you see places in the docs where they tell you to put secrets in environment variables, you will instead put them in secrets. Your MCP servers will be able to access these secrets, but your host tool will not.
That’s it. You don’t have to worry about streaming, authentication, fly.toml. Try some of the following commands. After running them, restart Claude and ask it what tools it has access to.

flyctl server

We provide a flyctl MCP server for issuing flyctl commands:

Fetch

Run Fetch MCP server where it doesn’t have access to your local servers:

Fly.io internal DNS

mcp-internal-dns enables your MCP client to query Fly.io .internal DNS:

Slack

Look at the Slack setup instructions and obtain a Bot User OAuth Token and Team ID, then run:

Filesystem / volume

The Filesystem MCP can be paired with a Fly.io volume:
You can do the same thing with the go mcp-filesystem-server:

GitHub

If you have the Github CLI installed, you can launch the GitHub MCP Server:

Desktop Commander

You can run DesktopCommander which requires a setup step: