brannn/fly-mcp
If you are the rightful owner of fly-mcp and would like to certify it and/or have it hosted online, please leave a comment on the right or send an email to henry@mcphub.com.
Fly-MCP is an open-source MCP server designed for Fly.io infrastructure management, enabling AI-driven DevOps workflows through natural language interactions.
fly-mcp
An open-source MCP (Model Context Protocol) server for Fly.io infrastructure management, enabling AI-driven DevOps workflows through natural language interactions.
๐ Quick Start
Prerequisites
- Go 1.21 or later
- Fly.io account and API token
- Git
Local Development Setup
-
Clone the repository
git clone https://github.com/brannn/fly-mcp.git cd fly-mcp
-
Set up environment variables
export FLY_MCP_FLY_API_TOKEN="your_fly_api_token_here" export FLY_MCP_FLY_ORGANIZATION="your_fly_org_here"
-
Build and run
make build make run
Or for development with hot reload:
make dev
Production Deployment on Fly.io
Deploy using Fly.io's MCP infrastructure:
fly mcp launch \
"github.com/brannn/fly-mcp" \
--claude --cursor --zed \
--server fly-infrastructure \
--secret FLY_API_TOKEN=fo1_your_token \
--secret FLY_ORG=your-org-name
๐๏ธ Architecture
Project Structure
fly-mcp/
โโโ cmd/fly-mcp/ # Main application entry point
โโโ pkg/
โ โโโ mcp/ # MCP protocol implementation
โ โโโ fly/ # Fly.io API client (coming soon)
โ โโโ auth/ # Authentication (coming soon)
โ โโโ tools/ # MCP tool implementations (coming soon)
โ โโโ config/ # Configuration management
โโโ internal/
โ โโโ server/ # HTTP server implementation
โ โโโ security/ # Security utilities (coming soon)
โ โโโ logger/ # Structured logging
โโโ config.local.yaml # Local development configuration
โโโ config.production.yaml # Production configuration
โโโ Makefile # Build automation
Configuration
The application supports flexible configuration through:
- YAML files:
config.local.yaml
for development,config.production.yaml
for production - Environment variables: All config values can be overridden with
FLY_MCP_
prefixed env vars - Command line flags:
--config
and--log-level
flags
Environment Variables
Variable | Description | Required |
---|---|---|
FLY_MCP_FLY_API_TOKEN | Fly.io API token | Yes |
FLY_MCP_FLY_ORGANIZATION | Fly.io organization name | Yes |
FLY_MCP_ENVIRONMENT | Environment (local/production) | No |
FLY_MCP_LOGGING_LEVEL | Log level (debug/info/warn/error) | No |
๐ ๏ธ Development
Available Make Targets
make build # Build the binary
make build-all # Build for all platforms
make test # Run tests
make test-coverage # Run tests with coverage
make lint # Run linters
make fmt # Format code
make clean # Clean build artifacts
make dev # Run in development mode
make validate-config # Validate configuration
make docker-build # Build Docker image
make help # Show all available targets
Running Tests
# Run all tests
make test
# Run tests with coverage
make test-coverage
# Run benchmarks
make benchmark
Code Quality
# Format code
make fmt
# Run linters
make lint
# Run all checks
make check
๐ง Configuration Examples
Local Development
Create a .env
file or set environment variables:
export FLY_MCP_FLY_API_TOKEN="fo1_your_development_token"
export FLY_MCP_FLY_ORGANIZATION="your-dev-org"
export FLY_MCP_LOGGING_LEVEL="debug"
Production on Fly.io
Set secrets in your Fly.io app:
fly secrets set FLY_API_TOKEN=fo1_your_production_token
fly secrets set FLY_ORG=your-production-org
๐ ๏ธ Available MCP Tools
Core Tools
Tool | Description | Example Usage |
---|---|---|
ping | Test connectivity and server response | {"name": "ping", "arguments": {"message": "Hello!"}} |
Fly.io Management Tools
Tool | Description | Example Usage |
---|---|---|
fly_list_apps | List all applications with filtering | {"name": "fly_list_apps", "arguments": {"status_filter": "running"}} |
fly_app_info | Get detailed application information | {"name": "fly_app_info", "arguments": {"app_name": "my-app"}} |
fly_status | Real-time application and machine status | {"name": "fly_status", "arguments": {"app_name": "my-app"}} |
fly_restart | Restart applications with confirmation | {"name": "fly_restart", "arguments": {"app_name": "my-app", "confirm": true}} |
fly_scale | Scaling status and recommendations | {"name": "fly_scale", "arguments": {"app_name": "my-app", "action": "status"}} |
Tool Features
- ๐ Security: All tools require proper authentication and permissions
- ๐ Audit Logging: All operations are logged for compliance and debugging
- โก Real-time: Status and machine information is fetched in real-time
- ๐ก๏ธ Safety: Destructive operations require explicit confirmation
- ๐ Rich Output: Human-readable responses with actionable recommendations
๐งช Testing the MCP Server
Automated Testing
Use the provided test script to verify all tools:
# Start the server first
make dev
# In another terminal, run tests
./scripts/test-mcp-tools.sh
Manual Testing
-
Health Check
curl http://localhost:8080/health
-
MCP Initialize
curl -X POST http://localhost:8080/mcp \ -H "Content-Type: application/json" \ -d '{ "jsonrpc": "2.0", "id": 1, "method": "initialize", "params": { "protocolVersion": "2024-11-05", "capabilities": {}, "clientInfo": {"name": "test-client", "version": "1.0.0"} } }'
-
List Available Tools
curl -X POST http://localhost:8080/mcp \ -H "Content-Type: application/json" \ -d '{ "jsonrpc": "2.0", "id": 2, "method": "tools/list" }'
-
Test Ping Tool
curl -X POST http://localhost:8080/mcp \ -H "Content-Type: application/json" \ -d '{ "jsonrpc": "2.0", "id": 3, "method": "tools/call", "params": { "name": "ping", "arguments": {"message": "Hello from fly-mcp!"} } }'
-
Test Fly.io Tools (requires valid credentials)
curl -X POST http://localhost:8080/mcp \ -H "Content-Type: application/json" \ -d '{ "jsonrpc": "2.0", "id": 4, "method": "tools/call", "params": { "name": "fly_list_apps", "arguments": {} } }'
๐ฏ Current Status
Phase 2 Complete: Fly.io API Integration & Core Tools
โ Implemented Features
- โ Project structure and build system
- โ Configuration management (local/production environments)
- โ HTTP server with middleware (CORS, rate limiting, logging)
- โ MCP protocol handler with full request/response handling
- โ Structured logging with audit trails and security events
- โ Fly.io API integration (hybrid approach: fly-go + Machines API)
- โ Authentication & authorization with permissions and audit logging
- โ
Core MCP tools:
ping
- Test tool for connectivityfly_list_apps
- List all applications with filteringfly_app_info
- Get detailed application informationfly_status
- Real-time application and machine statusfly_restart
- Restart applications with confirmationfly_scale
- Scaling status and recommendations
- โ Health checks and metrics endpoints
- โ Comprehensive error handling and validation
- โ Security features (rate limiting, CORS, audit logging)
๐ Coming Next (Phase 3)
- ๐ Additional tools: logs, secrets, volumes, certificates
- ๐ Deploy tool for application deployment
- ๐ Advanced scaling with auto-scaling recommendations
- ๐ Monitoring integration with alerts and dashboards
- ๐ CI/CD pipeline and automated testing
- ๐ Documentation and usage examples
๐ License
This project is licensed under the MIT License - see the file for details.
๐ค Contributing
Contributions are welcome! Please see for guidelines.
๐ Support
- GitHub Issues: Report bugs or request features
- Documentation:
- Community: Discussions