mcp-fly部署器

内容来源:README.md(说明文档) · 原始地址 · 查看安装指南

原始内容

MCP Fly Deployer

A specialized configuration generator for deploying Model Context Protocol (MCP) servers to Fly.io. This tool automates the creation of Dockerfiles, fly.toml configurations, and deployment scripts for stdio-based MCP servers.

This project integrates supergateway to enable MCP stdio servers to communicate over SSE (Server-Sent Events) or WebSockets, facilitating seamless deployment to Fly.io's infrastructure.

Features

  • 🚀 Automated Fly.io deployment configuration generation
  • 🐳 Dynamic Dockerfile generation based on runtime
  • ⚙️ Customizable fly.toml configuration
  • 🔧 Support for multiple runtimes:
    • Python
    • Node.js
    • Go
    • Custom binary
  • 🔑 Environment variables and secrets management
  • 🌐 Configurable regions and deployment options

How It Works

The MCP Fly Deployer uses supergateway to:

  • Convert stdio-based MCP servers into SSE or WebSocket services
  • Enable remote access and debugging capabilities
  • Manage JSON-RPC versioning automatically
  • Handle package metadata transmission

For more details about the underlying gateway technology, see the supergateway documentation.

Prerequisites

  • Python 3.13 or higher
  • pip (Python package manager)
  • Fly.io CLI installed and configured
  • Node.js and npm (for supergateway functionality)

Installation

  1. Clone the repository:
git clone https://github.com/yourusername/mcp-fly-deployer.git
cd mcp-fly-deployer
  1. Create and activate a virtual environment:
python -m venv .venv
source .venv/bin/activate  # On Unix/macOS
# OR
.venv\Scripts\activate     # On Windows
  1. Install dependencies:
uv sync

Usage

  1. Start the MCP server:
python mcp_server_generator.py

The server will start on port 8000 by default, using SSE (Server-Sent Events) transport.

  1. Send requests to generate deployment plans with the following parameters:
{
    "server_command": "node",              # Command to run the target stdio server
    "server_args": ["index.js"],           # Arguments for the server command
    "runtime": "node",                     # Runtime ('python', 'node', 'go', 'binary')
    "runtime_version": "20",               # Specific runtime version
    "dependencies": [],                    # List of dependencies
    "requirements_file_content": None,     # Content of requirements.txt for Python
    "files_to_create": [],                # Files to create in the image
    "required_env_vars": [],              # Required environment variables
    "target_port": 8000,                  # Port the container will listen on (default: 8000)
    "app_name": "mcp-server-app",         # Suggested Fly.io app name
    "primary_region": "ord"               # Suggested Fly.io primary region
}

Configuration Options

Supported Runtimes

  • python: Python runtime with version specification
  • node: Node.js runtime with version specification
  • go: Go runtime
  • binary: Custom binary deployment

Deployment Regions

Fly.io regions can be specified using the primary_region parameter. Common options:

  • ord: Chicago
  • iad: Northern Virginia
  • dfw: Dallas
  • lax: Los Angeles
  • bom: Mumbai

Example

Here's a simple example of generating a deployment plan for a Node.js MCP server:

{
    "server_command": "node",
    "server_args": ["index.js"],
    "runtime": "node",
    "runtime_version": "20",
    "dependencies": ["@modelcontextprotocol/server"],
    "target_port": 8080,
    "app_name": "my-mcp-server",
    "primary_region": "ord"
}

Development

To contribute to the project:

  1. Fork the repository
  2. Create a feature branch
  3. Make your changes
  4. Submit a pull request

License

This project is licensed under the MIT License - see the LICENSE file for details.

Contributing

Contributions are welcome! Please feel free to submit a Pull Request.

Support

If you encounter any problems or have questions, please open an issue.