服务器进程管理工具

MCP Server Manager是一个基于配置文件的守护进程工具,用于管理多个服务器进程(启动、关闭、监控和自动重启),并集成systemd服务以提高可用性。

  • by ksawaray
  • Python
  • 本地部署
  • 2 星标
  • 更新于
在 GitHub 查看 ksawaray/systemd-mcp

使用说明

MCP服务器管理器

概述

MCP Server Manager是一个守护程序工具,用于根据配置文件管理多个服务器进程(启动、关闭、监视和自动重启) mcp_server.conf.

每个服务器进程都会根据其启动命令自动分配一个唯一的ID。使用 mcpctl 命令行工具,您可以通过指定单个服务器的ID来操作它们。

它作为一个 systemd 服务,并通过自动重启意外终止的进程来提高服务可用性。

主要特点

  • 简单配置文件: 只需描述您要在其中管理的服务器的命令 mcp_server.conf.
  • 自动生成ID: 每个服务器命令都会根据其内容自动分配一个唯一的ID(哈希)。
  • 命令行操作: 使用 mcpctl 通过以下方式检查ID status 并通过以下方式操作单个服务器 start, stop,以及 restart.
  • 自动进程重启: 当进程因其他原因终止时 mcpctl stop,守护进程会自动重新启动它。
  • systemd集成: 使用以下方式轻松注册服务 mcp-manager.service.

工作流程

  1. 配置: 编辑 /etc/mcp/mcp_server.conf 描述要管理的服务器的启动命令,每行一个。
  2. 重新加载: 执行 sudo systemctl restart mcp-manager.service 以反映守护进程的配置更改。
  3. 检查: 跑 mcpctl status 以检查每个服务器的状态和自动生成的ID。
  4. 操作: 将确认的ID与以下命令一起使用 mcpctl start <ID> 或 mcpctl stop <ID> 管理单个服务器。

设置和安装

自动安装(推荐)

  1. 运行安装脚本

    sudo ./install.sh
    

    此脚本自动执行以下任务:

    • 创建必要的目录(/usr/local/lib/mcp-manager/, /etc/mcp/)
    • 副本 mcp_manager.py 向 /usr/local/lib/mcp-manager/
    • 副本 mcpctl 向 /usr/local/bin/ (添加到PATH)
    • 复制配置文件 mcp_server.conf 向 /etc/mcp/
    • 安装并注册systemd服务文件
    • 启动服务并启用自动启动
  2. 验证安装

    mcpctl status
    

手动安装

对于手动安装,请执行以下步骤:

  1. 授予执行权限 授予项目中脚本的执行权限。

    chmod +x mcp_manager.py mcpctl mcp_server.sh install.sh uninstall.sh
    
  2. 创建目录

    sudo mkdir -p /usr/local/lib/mcp-manager
    sudo mkdir -p /etc/mcp
    
  3. 部署文件

    sudo cp mcp_manager.py /usr/local/lib/mcp-manager/
    sudo cp mcpctl /usr/local/bin/
    sudo cp mcp_server.conf /etc/mcp/mcp_server.conf
    
  4. 编辑配置文件 根据需要编辑配置文件。

    sudo vi /etc/mcp/mcp_server.conf
    
  5. 验证并启动systemd服务文件 打开 mcp-manager.service 并验证路径是否正确。 然后按如下方式启动服务:

    sudo cp mcp-manager.service /etc/systemd/system/
    sudo systemctl daemon-reload
    sudo systemctl start mcp-manager.service
    sudo systemctl enable mcp-manager.service
    

卸载

要从系统中完全删除MCP服务器管理器:

sudo ./uninstall.sh

此脚本执行以下任务:

  • 停止并禁用systemd服务
  • 删除服务文件
  • 删除已安装的文件
  • 删除配置文件(确认后)

使用 mcpctl

  • 检查状态: 显示中描述的所有服务器的状态和ID mcp_server.conf.

    mcpctl status
    

    输出示例:

    ID       STATUS    PID          UPTIME COMMAND
    -------- --------- ------- --------------- --------------------------------
    a1b2c3d  Running   12345 0 days, 0:10:30 /data/systemd-mcp/mcp_server.sh
    e4f5g6h  Stopped     N/A             N/A /usr/bin/python3 /path/to/another/server
    
  • 启动服务器: 使用ID启动已停止的(Stopped)或闲置(Idle)服务器。

    mcpctl start e4f5g6h
    
  • 从配置文件启动所有服务器: 重新加载配置文件并启动所有服务器。

    mcpctl apply
    
  • 停止服务器: 使用ID停止跑步(Running)服务器。以这种方式停止的服务器将被排除在自动重启之外。

    mcpctl stop a1b2c3d
    
  • 重新启动服务器: 使用ID重新启动正在运行的服务器。

    mcpctl restart a1b2c3d