MCP飞行展开器
用于将模型上下文协议(MCP)服务器部署到Fly.io的专用配置生成器。此工具可自动创建基于stdio的MCP服务器的Dockerfiles、Fly.toml配置和部署脚本。
该项目整合 超级通道 使MCP stdio服务器能够通过SSE(服务器发送事件)或WebSockets进行通信,从而促进无缝部署到Fly.io的基础设施。
特性
- 🚀 自动生成Fly.io部署配置
- 🐳 基于运行时的动态Dockerfile生成
- ⚙️ 可定制的
fly.toml配置 - 🔧 支持多个运行时:
- python - Node.js - 去 - 自定义二进制文件
- 🔑 环境变量和秘密管理
- 🌐 可配置的区域和部署选项
运作原理
MCP飞行部署器使用超级网关来:
- 将基于stdio的MCP服务器转换为SSE或WebSocket服务
- 启用远程访问和调试功能
- 自动管理JSON-RPC版本
- 处理包元数据传输
有关底层网关技术的更多详细信息,请参阅 超级通道文件.
先决条件
- Python 3.13或更高版本
- pip(Python包管理器)
- Fly.io命令行界面 已安装并配置
- (用于超级通道功能)
安装
- 克隆存储库:
git clone https://github.com/yourusername/mcp-fly-deployer.git
cd mcp-fly-deployer- 创建并激活虚拟环境:
python -m venv .venv
source .venv/bin/activate # On Unix/macOS
# OR
.venv\Scripts\activate # On Windows- 安装依赖项:
uv sync用法
- 启动MCP服务器:
python mcp_server_generator.py默认情况下,服务器将使用SSE(服务器发送事件)传输在端口8000上启动。
- 发送请求以生成具有以下参数的部署计划:
{
"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
}配置选项
支持的运行库
python:带有版本规范的Python运行时node:具有版本规范的Node.js运行时go:运行时binary:自定义二进制部署
部署区域
Fly.io区域可以使用指定 primary_region 参数。常见选项:
ord:芝加哥iad:北弗吉尼亚州dfw:达拉斯lax:洛杉矶bom:孟买
示例
以下是一个为Node.js MCP服务器生成部署计划的简单示例:
{
"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"
}发展
为项目做出贡献:
- 分叉存储库
- 创建要素分支
- 进行更改
- 提交拉取请求
许可证
此项目根据MIT许可证获得许可-请参阅 许可证 文件以获取详细信息。
贡献
欢迎投稿!请随时提交拉取请求。
支持
如果您遇到任何问题或有疑问,请 打开一个问题.
