mcpField
F
fly-mcp

fly-mcp

本地服务
github.com/brannn云与基础设施073 周前更新

关于 fly-mcp

fly-mcp 是用于管理 Fly.io 应用和基础设施的开源 MCP 服务,向经过身份验证的操作提供应用列表、状态查询、重启和扩缩容检查等工具;破坏性操作需要确认。

主要功能

  1. 01列出并筛选应用
  2. 02查看应用和机器状态
  3. 03确认后重启应用
  4. 04检查扩缩容状态
  5. 05身份验证与审计日志
  6. 06健康检查与指标

适用场景

  1. 01查看 Fly.io 应用状态
  2. 02确认后重启应用
  3. 03检查扩缩容状态与建议

MCP 相关

该服务向 MCP 客户端提供 Fly.io 管理工具,包括应用列表、应用信息、状态、重启和扩缩容操作。操作需要身份验证,并记录在审计日志中。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

暂未收录安装方式

我们还没有获取到这个服务的安装包或远程地址,请按项目 README 中的说明安装。

代码仓库

工具

还没有获取到工具列表

本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。

详细介绍

fly-mcp

一个用于管理 Fly.io 基础设施的开源 MCP(Model Context Protocol)服务,可通过自然语言交互实现 AI 驱动的 DevOps 工作流。

🚀 快速开始

前置条件
  • Go 1.21 或更高版本
  • Fly.io 账户和 API 令牌
  • Git
本地开发环境设置
  1. 克隆代码库

    git clone https://github.com/brannn/fly-mcp.git
    cd fly-mcp
    
  2. 设置环境变量

    export FLY_MCP_FLY_API_TOKEN="your_fly_api_token_here"
    export FLY_MCP_FLY_ORGANIZATION="your_fly_org_here"
    
  3. 构建并运行

    make build
    make run
    

    或者使用热重载进行开发:

    make dev
    
在 Fly.io 上部署到生产环境

使用 Fly.io 的 MCP 基础设施进行部署:

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

🏗️ 架构

项目结构
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
配置

应用支持通过以下方式灵活配置:

  • YAML 文件:开发环境使用 config.local.yaml,生产环境使用 config.production.yaml
  • 环境变量:所有配置值均可通过带有 FLY_MCP_ 前缀的环境变量覆盖
  • 命令行标志:--config 和 --log-level 标志
环境变量
变量描述必填
FLY_MCP_FLY_API_TOKENFly.io API 令牌是
FLY_MCP_FLY_ORGANIZATIONFly.io 组织名称是
FLY_MCP_ENVIRONMENT环境(本地/生产)否
FLY_MCP_LOGGING_LEVEL日志级别(debug/info/warn/error)否

🛠️ 开发

可用的 Make 目标
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
运行测试
# Run all tests
make test

# Run tests with coverage
make test-coverage

# Run benchmarks
make benchmark
代码质量
# Format code
make fmt

# Run linters
make lint

# Run all checks
make check

🔧 配置示例

本地开发

创建 .env 文件或设置环境变量:

export FLY_MCP_FLY_API_TOKEN="fo1_your_development_token"
export FLY_MCP_FLY_ORGANIZATION="your-dev-org"
export FLY_MCP_LOGGING_LEVEL="debug"
在 Fly.io 上部署到生产环境

在 Fly.io 应用中设置密钥:

fly secrets set FLY_API_TOKEN=fo1_your_production_token
fly secrets set FLY_ORG=your-production-org

🛠️ 可用的 MCP 工具

核心工具
工具描述使用示例
ping测试连接性和服务响应{"name": "ping", "arguments": {"message": "Hello!"}}
Fly.io 管理工具
工具描述使用示例
fly_list_apps按筛选条件列出所有应用{"name": "fly_list_apps", "arguments": {"status_filter": "running"}}
fly_app_info获取应用详细信息{"name": "fly_app_info", "arguments": {"app_name": "my-app"}}
fly_status实时查看应用和机器状态{"name": "fly_status", "arguments": {"app_name": "my-app"}}
fly_restart确认后重启应用{"name": "fly_restart", "arguments": {"app_name": "my-app", "confirm": true}}
fly_scale查看扩缩容状态和建议{"name": "fly_scale", "arguments": {"app_name": "my-app", "action": "status"}}
工具特性
  • 🔒 安全性:所有工具均需要适当的身份验证和权限
  • 📝 审计日志:记录所有操作,以满足合规要求并便于调试
  • ⚡ 实时性:实时获取状态和机器信息
  • 🛡️ 安全防护:破坏性操作需要明确确认
  • 📊 丰富的输出:提供易于理解的响应和可执行的建议

🧪 测试 MCP 服务

自动化测试

使用提供的测试脚本验证所有工具:

# Start the server first
make dev

# In another terminal, run tests
./scripts/test-mcp-tools.sh
手动测试
  1. 健康检查

    curl http://localhost:8080/health
    
  2. MCP 初始化

    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"}
        }
      }'
    
  3. 列出可用工具

    curl -X POST http://localhost:8080/mcp \
      -H "Content-Type: application/json" \
      -d '{
        "jsonrpc": "2.0",
        "id": 2,
        "method": "tools/list"
      }'
    
  4. 测试 Ping 工具

    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!"}
        }
      }'
    
  5. 测试 Fly.io 工具(需要有效凭据)

    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": {}
        }
      }'
    

🎯 当前状态

第 2 阶段已完成:Fly.io API 集成与核心工具

✅ 已实现的功能
  • ✅ 项目结构和构建系统
  • ✅ 配置管理(本地/生产环境)
  • ✅ HTTP 服务,包含中间件(CORS、速率限制、日志记录)
  • ✅ MCP 协议处理程序,完整处理请求和响应
  • ✅ 结构化日志记录,包含审计跟踪和安全事件
  • ✅ Fly.io API 集成(混合方案:fly-go + Machines API)
  • ✅ 身份验证与授权,包含权限和审计日志记录
  • ✅ 核心 MCP 工具:
    • ping - 用于测试连接的工具
    • fly_list_apps - 列出所有应用并支持筛选
    • fly_app_info - 获取应用的详细信息
    • fly_status - 实时查看应用和机器状态
    • fly_restart - 确认后重启应用
    • fly_scale - 缩放状态和建议
  • ✅ 健康检查和指标端点
  • ✅ 全面的错误处理和验证
  • ✅ 安全功能(速率限制、CORS、审计日志记录)
🔄 接下来(第 3 阶段)
  • 🔄 更多工具:日志、密钥、卷、证书
  • 🔄 部署工具,用于部署应用
  • 🔄 高级缩放,提供自动缩放建议
  • 🔄 监控集成,包含警报和仪表板
  • 🔄 CI/CD 流水线和自动化测试
  • 🔄 文档和使用示例

📝 许可证

本项目采用 MIT 许可证授权,详情请参阅 LICENSE 文件。

🤝 参与贡献

欢迎贡献!请参阅 CONTRIBUTING.md 了解指南。

📞 支持

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。