返回市场
MCP服务器统一部署

MCP服务器统一部署

作者:BigUncle37 星标更新:2025-10-10

项目介绍

MCP服务器统一部署工具

English | 中文

这是一个用于统一部署和管理MCP(Model Context Protocol)服务器的工具。该项目将以不同形式(uvx、npx等)部署的MCP服务器统一转换为标准化的SSE(Server-Sent Events)部署方式,方便不同工具的统一调用。

特性

  • 统一管理:通过单一界面管理多个MCP服务器
  • SSE标准化:将各种MCP服务器实现转换为SSE协议
  • 跨平台:支持Windows、macOS和Linux
  • 灵活配置:轻松配置不同类型和环境的服务器
  • 进程管理:启动、停止、重启和检查MCP服务器状态
  • Docker支持:全面的Docker部署和管理选项
  • GitHub工作流集成:自动化测试和部署的CI/CD管道

前提条件

  • Python 3.12+
  • Git(用于源代码类型服务器)
  • Node.js和npm(用于基于Node.js的服务器)
  • uv(用于依赖管理)
  • pipx(用于安装mcp-proxy)
  • uvx(用于基于uvx的服务器)
  • Docker和Docker Compose(可选,用于容器化部署)

安装

  1. 克隆此仓库:
git clone https://github.com/BigUncle/MCP-Server-Unified-Deployment.git
cd MCP-Server-Unified-Deployment
  1. 使用uv设置虚拟环境并安装所需的Python依赖:
# 如果没有安装uv,先安装uv
pip install uv

# 创建虚拟环境
uv venv --python=3.12

# 使用uv安装依赖
uv pip install -r requirements.txt

# 激活虚拟环境(Windows)
.venv\Scripts\activate
# 或激活虚拟环境(Linux/MacOS)
# source .venv/bin/activate

或者,您可以使用我们的设置脚本:

python scripts/setup_env.py
  1. 使用pipx安装mcp-proxy(推荐):
# 如果没有安装pipx,先安装pipx
pip install pipx
pipx ensurepath

# 安装mcp-proxy
pipx install mcp-proxy
  1. 创建配置文件:
cp config/mcp_servers.example.json config/mcp_servers.json
  1. 编辑配置文件以满足您的需求。

配置

配置文件(config/mcp_servers.json)包含您想要管理的所有MCP服务器的设置。每个服务器条目包括:

{
  "name": "server-name",         // 服务器的唯一名称
  "enabled": true,              // 服务器是否启用
  "type": "uvx",                // 服务器类型(uvx、node、source_code等)
  "sse_host": "localhost",      // SSE端点的主机
  "sse_port": 23001,            // SSE端点的端口
  "allow_origin": "*",          // SSE端点的CORS设置
  "install_commands": [          // 安装服务器的命令
    "uvx -v mcp-server-fetch"
  ],
  "sse_start_command": "mcp-proxy {start_command} --sse-host={sse_host} --sse-port={sse_port} --allow-origin='{allow_origin}' ",  // SSE模式的命令模板
  "start_command": "uvx mcp-server-fetch",  // 原始启动命令
  "env": {},                    // 服务器的环境变量
  "working_directory": "",      // 运行命令的可选工作目录
  "repo_url": "",               // 对于source_code类型,git仓库URL
  "branch": "main"              // 对于source_code类型,使用的git分支
}

服务器类型

  • uvx:使用uvx部署的服务器
  • node:基于Node.js的服务器
  • source_code:需要从源代码构建的服务器
  • docker:在Docker容器中运行的服务器

环境变量

您可以在env部分为每个服务器指定环境变量:

"env": {
  "NODE_ENV": "production",
  "DEBUG": "true"
}

使用方法

基本命令

# 启动所有已启用的服务器
python scripts/manage_mcp.py start

# 启动特定服务器
python scripts/manage_mcp.py start <server-name>

# 停止所有服务器
python scripts/manage_mcp.py stop

# 停止特定服务器
python scripts/manage_mcp.py stop <server-name>

# 重启特定服务器
python scripts/manage_mcp.py restart <server-name>

# 检查所有服务器的状态
python scripts/manage_mcp.py status

示例

启动fetch服务器:

python scripts/manage_mcp.py start fetch

目录结构

.
├── config/                       # 配置文件
│   ├── host_info.json            # 主机信息缓存文件(自动生成/用于辅助配置)
│   ├── mcp_servers.example.json  # MCP服务器配置示例
│   ├── mcp_servers.json          # MCP服务器主配置文件
|   └── client_configs/      # 由integrate_config_generator.py生成的客户端配置
|        └── mcp_<client>_*.json # 客户端配置文件
├── docker
│   ├── docker-compose.yml        # 生产环境 Docker Compose 配置
│   ├── Dockerfile                # 生产环境 Docker 镜像构建文件
│   ├── entrypoint.sh             # 容器入口脚本
│   └── README.md                 # Docker 相关说明文档
├── docker-dev
│   ├── docker-compose.yml        # 开发环境 Docker Compose 配置
│   ├── Dockerfile                # 开发环境 Docker 镜像构建文件
│   └── .devcontainer             # 容器目录
│       └─ devcontainer.json      # devcontainer.json
├── docs/                         # 项目文档目录
├── logs/                         # 服务器运行日志目录
├── mcp-data/                     # 运行时数据存储目录(如有需要)
├── mcp-servers/                  # MCP服务器源代码目录(如有需要)
├── node-modules/                 # Node.js 依赖目录(如有需要)
├── npm-global                    # 全局 npm 依赖及缓存目录
│   ├── bin
│   ├── _cacache
│   ├── lib
│   ├── _logs
│   ├── _npx
├── pids/                         # 进程ID文件目录
├── scripts
│   ├── mcp_manager/              # 管理模块(如命令、配置、进程工具等)
│   │   ├── commands.py           # 
│   │   ├── config.py             # 配置管理
│   │   └── process_utils.py      # 进程工具
│   ├── container_startup.py      # 容器启动辅助脚本
│   ├── detect_host_ip.py         # 主机IP检测脚本
│   ├── integrate_config_generator.py # 客户端配置生成脚本
│   ├── manage_mcp.py             # MCP统一管理主脚本
│   └── setup_env.py              # 环境初始化脚本
├── uv-cache/                     # Python依赖缓存目录(uv工具自动生成)
├── README.md                     # 项目说明文档
└── requirements.txt              # Python依赖清单

Docker支持

本项目为开发和部署环境提供全面的Docker支持。

Docker部署选项

  1. 开发环境

    • 预装所有必要工具的开发容器
    • 通过devcontainer配置集成Visual Studio Code
  2. 生产部署

    • 使用Docker Compose的多容器设置
    • 具有适当隔离的单独服务器容器
    • 用于数据和配置的持久卷管理

使用Docker进行开发

启动开发环境:

# 启动开发容器
docker compose -f docker-dev/docker-compose.yml up -d

# 连接到容器
docker exec -it mcp-dev zsh

拉取项目镜像生产部署

镜像部署推荐流程

使用Docker compose 进行生产部署

在生产环境中部署:

配置

cp config/mcp_servers.example.json config/mcp_servers.json

或者根据需求编辑配置文件。

修改Dockerfile

有需要时,修改docker/目录中的Dockerfiledocker-compose.yml以适应您的需求。 比如,您可能需要调整ENTRYPOINTREAL_HOST_IP变量或TIME ZONE变量。

构建和启动容器

# 构建并启动所有容器
docker compose -f docker/docker-compose.yml up -d

# 查看日志
docker compose -f docker/docker-compose.yml logs -f

贡献

欢迎贡献!详情请参阅CONTRIBUTING.md

许可证

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