
MCP Fly Deployer
MCP server that provides docker files for stdio based MCP server to be deployed on platform like Fly.IO
What is MCP Fly Deployer?
MCP Fly Deployer is a specialized configuration generator designed for deploying Model Context Protocol (MCP) servers to Fly.io. It automates the creation of Dockerfiles, fly.toml configurations, and deployment scripts for stdio-based MCP servers.
How to use MCP Fly Deployer?
To use MCP Fly Deployer, clone the repository, set up a virtual environment, install dependencies, and start the MCP server. You can then send requests to generate deployment plans with specific parameters.
Key features of MCP Fly Deployer?
- Automated Fly.io deployment configuration generation
- Dynamic Dockerfile generation based on runtime
- Customizable
fly.toml
configuration - Support for multiple runtimes: Python, Node.js, Go, and Custom binaries
- Environment variables and secrets management
- Configurable regions and deployment options
Use cases of MCP Fly Deployer?
- Deploying Python-based MCP servers to Fly.io
- Setting up Node.js applications with automated configurations
- Managing Go applications with Docker and Fly.io
FAQ from MCP Fly Deployer?
- What runtimes are supported?
MCP Fly Deployer supports Python, Node.js, Go, and custom binaries.
- Is there a license for this project?
Yes, this project is licensed under the MIT License.
- How can I contribute to the project?
You can contribute by forking the repository, creating a feature branch, making changes, and submitting a pull request.
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
- Clone the repository:
git clone https://github.com/yourusername/mcp-fly-deployer.git
cd mcp-fly-deployer
- Create and activate a virtual environment:
python -m venv .venv
source .venv/bin/activate # On Unix/macOS
# OR
.venv\Scripts\activate # On Windows
- Install dependencies:
uv sync
Usage
- Start the MCP server:
python mcp_server_generator.py
The server will start on port 8000 by default, using SSE (Server-Sent Events) transport.
- 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 specificationnode
: Node.js runtime with version specificationgo
: Go runtimebinary
: Custom binary deployment
Deployment Regions
Fly.io regions can be specified using the primary_region
parameter. Common options:
ord
: Chicagoiad
: Northern Virginiadfw
: Dallaslax
: Los Angelesbom
: 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:
- Fork the repository
- Create a feature branch
- Make your changes
- 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.