---
title: "30 Minutes With MCP and flyctl"
description: "Kurt Mackey describes building a minimal MCP server for flyctl in 30 minutes, motivated by testing how an LLM could inspect deployed applications. MCP connects an LLM client to server-exported tools through JSON exchanges; this implementation uses stdio mode, a Go MCP library, and exposes only fly logs and fly status, producing roughly 90 lines of code. Existing JSON modes in flyctl commands made the tools easier to drive from automation. When pointed at unpkg through Claude, the server surfaced a globally distributed deployment, identified two critical machines, and connected repeated restarts and oom_killed events to Bun using about 3.7 GB of a machine’s 4 GB allocation. The post calls the result surprisingly useful while warning that local MCP servers give cloud-hosted Claude access to native programs and would be safer in isolation."
---

# 30 Minutes With MCP and flyctl

[Fly.io](https://yomu.fyi/company/fly-io) · Apr 10, 2025

**Type:** Explainer

## Summary

Kurt Mackey describes building a minimal MCP server for flyctl in 30 minutes, motivated by testing how an LLM could inspect deployed applications. MCP connects an LLM client to server-exported tools through JSON exchanges; this implementation uses stdio mode, a Go MCP library, and exposes only fly logs and fly status, producing roughly 90 lines of code. Existing JSON modes in flyctl commands made the tools easier to drive from automation. When pointed at unpkg through Claude, the server surfaced a globally distributed deployment, identified two critical machines, and connected repeated restarts and oom\_killed events to Bun using about 3.7 GB of a machine’s 4 GB allocation. The post calls the result surprisingly useful while warning that local MCP servers give cloud-hosted Claude access to native programs and would be safer in isolation.

## Context

The work tests how an LLM can inspect deployed applications through flyctl, while also addressing concerns about giving a cloud-hosted Claude instance access to native programs on a local machine.

## Approach / What changed

A minimal MCP server uses stdio mode and a Go MCP library to expose fly logs and fly status, capturing flyctl output. It also uses flyctl commands’ existing JSON modes, which were created to make them easier to drive from automation.

## Takeaways

- The MCP server exposes only fly logs and fly status and consists of roughly 90 lines of Go code using MCP’s stdio mode.
- Claude identified two critical unpkg machines and linked repeated restarts to oom\_killed events, including Bun consuming about 3.7 GB of a machine’s 4 GB allocation.
- The author considers the tooling surprisingly useful but says local MCP servers would be safer when flyctl runs in an isolated environment.

**Tags:** [Fly.io](https://yomu.fyi/topic/fly-io), [Go](https://yomu.fyi/topic/go), [MCP](https://yomu.fyi/topic/mcp)

- Source: [Fly.io](https://fly.io/blog/30-minute-mcp)
- Source URL: https://fly.io/blog/30-minute-mcp
- Ingested by Yomu: 2026-09-03T12:00:45.703Z

[Read original post](https://fly.io/blog/30-minute-mcp)
