项目简介

Supervisor MCP 服务器是一个使用 TypeScript 开发的后端服务,它将 Linux 上的 Supervisor 进程管理工具的各项功能(如进程管理、日志查看、配置修改)封装成符合 Model Context Protocol (MCP) 规范的工具。这使得大型语言模型(LLM)或其他 AI 客户端能够通过标准化的 JSON-RPC 协议与 Supervisor 交互,从而实现对系统进程的智能管理、监控和自动化操作。

主要功能点

  • 进程管理: 提供对 Supervisor 管理的所有程序的全面控制,包括列出所有程序及其状态、启动、停止单个程序,以及对多个程序进行批量启动或停止操作。还支持获取单个程序的详细状态信息。
  • 日志管理: 允许用户读取程序的标准输出 (stdout) 和标准错误 (stderr) 日志。支持灵活的日志读取方式,例如从文件末尾读取指定行数、从特定字节偏移量开始读取指定长度的数据等。
  • 配置管理: 能够查看、更新 Supervisor 配置文件中的特定配置项或整个文件,支持添加和删除配置节。为了数据安全,所有配置修改前都会自动备份原始配置文件。
  • 系统控制: 提供重载 Supervisor 配置的功能,使更改立即生效而无需重启服务。同时,可以获取 Supervisor 自身的信息,如进程 ID (PID)、版本号以及其日志文件路径。
  • HTTP 日志记录: 集成了 Morgan 中间件,以 Apache combined 格式记录所有 HTTP 请求,便于进行服务器访问分析和调试。
  • 类型安全与生产就绪: 项目采用 TypeScript 开发,确保了代码的类型安全和可维护性。内置了完善的错误处理、日志记录和健康检查机制,满足生产环境的部署要求。

安装步骤

在开始使用之前,请确保您的系统已安装 Node.js (推荐 v18 或更高版本) 和 npm。

  1. 克隆仓库: 首先,使用 Git 将项目仓库克隆到您的本地机器:
    git clone https://github.com/masx200/supervisor-mcp-server.git
  2. 进入项目目录:
    cd supervisor-mcp-server
  3. 安装依赖: 运行以下命令安装项目所需的所有 Node.js 依赖:
    npm install

服务器配置

MCP 服务器需要连接到您的 Supervisord 实例。在启动服务器之前,您需要配置一些环境变量来指定连接信息、Supervisord 配置文件路径以及 MCP 服务器自身的监听端口。

您可以在项目根目录下创建一个名为 '.env' 的文件来设置这些环境变量,例如:

# Supervisord 连接配置
SUPERVISORD_HOST=127.0.0.1          # Supervisord 进程管理工具的 IP 地址
SUPERVISORD_PORT=9001               # Supervisord HTTP RPC 接口的端口
SUPERVISORD_USERNAME=admin          # (可选)连接 Supervisord 的用户名
SUPERVISORD_PASSWORD=password       # (可选)连接 Supervisord 的密码

# Supervisord 配置文件路径
SUPERVISORD_CONFIG_FILE=/etc/supervisord.conf # Supervisord 主配置文件在服务器上的绝对路径

# MCP 服务器监听配置
MCP_PORT=3000                       # 本 MCP 服务器将监听的端口
SUPERVISORD_EXECUTABLE_PATH=/usr/bin/supervisord # (可选)Supervisord 可执行文件的完整路径,用于发送信号等高级操作

MCP 客户端连接此服务器的配置信息示例:

MCP 客户端需要知道如何启动并连接到此 Supervisor MCP 服务器。以下是一个典型的 JSON 格式配置示例,您可以在 MCP 客户端中参照此格式进行设置:

{
  "name": "supervisor-mcp-server",
  "command": "node",
  "args": [
    "./dist/server.js"
  ],
  "env": {
    "SUPERVISORD_HOST": "127.0.0.1",
    "SUPERVISORD_PORT": "9001",
    "SUPERVISORD_USERNAME": "admin",
    "SUPERVISORD_PASSWORD": "password",
    "SUPERVISORD_CONFIG_FILE": "/etc/supervisord.conf",
    "MCP_PORT": "3000",
    "SUPERVISORD_EXECUTABLE_PATH": "/usr/bin/supervisord"
  },
  "workingDirectory": "/path/to/your/supervisor-mcp-server",
  "daemon": true,
  "autoRestart": true,
  "logFile": "/path/to/your/supervisor-mcp-server/logs/mcp-server.log"
}
  • 'name': 定义 MCP 服务器的名称,此处为 "supervisor-mcp-server"。
  • 'command': 启动 MCP 服务器的命令,通常是 'node'。
  • 'args': 传递给启动命令的参数,指向编译后的服务器入口文件,例如 './dist/server.js'。
  • 'env': 包含 MCP 服务器运行所需的环境变量。请确保 'SUPERVISORD_HOST'、'SUPERVISORD_PORT'、'MCP_PORT' 等信息与您在 '.env' 文件中配置的一致。
  • 'workingDirectory': MCP 服务器运行的工作目录,应为 'supervisor-mcp-server' 项目的根路径。
  • 'daemon': (可选)指示是否将服务器作为守护进程运行。
  • 'autoRestart': (可选)指示服务器意外停止时是否自动重启。
  • 'logFile': (可选)指定服务器的运行日志输出文件。

基本使用方法

  1. 启动 MCP 服务器:

    • 开发模式 (带热重载,方便开发调试):
      npm run dev
    • 生产模式 (推荐用于实际部署):
      1. 首先编译 TypeScript 代码:
        npm run build
      2. 然后启动服务器:
        npm start

    服务器成功启动后,将监听您在 '.env' 文件中配置的 'MCP_PORT' (默认是 '3000') 端口,并准备好接收 MCP 客户端的请求。

  2. 健康检查: 您可以随时通过 HTTP GET 请求访问 '/health' 端点来检查 MCP 服务器与 Supervisord 的连接状态:

    curl http://localhost:3000/health

    (请将 '3000' 替换为您实际配置的 MCP 服务器端口)。

  3. 与 MCP 客户端交互: MCP 服务器启动并运行后,您的 LLM 客户端或其他任何兼容 MCP 协议的客户端即可通过 JSON-RPC 协议与此服务器通信,调用其注册的各种工具(如 'list_programs', 'start_program', 'read_log', 'get_config' 等)来智能地管理和监控您的 Supervisord 实例。

信息

分类

开发者工具