项目简介
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。
- 克隆仓库:
首先,使用 Git 将项目仓库克隆到您的本地机器:
git clone https://github.com/masx200/supervisor-mcp-server.git - 进入项目目录:
cd supervisor-mcp-server - 安装依赖:
运行以下命令安装项目所需的所有 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': (可选)指定服务器的运行日志输出文件。
基本使用方法
-
启动 MCP 服务器:
- 开发模式 (带热重载,方便开发调试):
npm run dev - 生产模式 (推荐用于实际部署):
- 首先编译 TypeScript 代码:
npm run build - 然后启动服务器:
npm start
- 首先编译 TypeScript 代码:
服务器成功启动后,将监听您在 '.env' 文件中配置的 'MCP_PORT' (默认是 '3000') 端口,并准备好接收 MCP 客户端的请求。
- 开发模式 (带热重载,方便开发调试):
-
健康检查: 您可以随时通过 HTTP GET 请求访问 '/health' 端点来检查 MCP 服务器与 Supervisord 的连接状态:
curl http://localhost:3000/health(请将 '3000' 替换为您实际配置的 MCP 服务器端口)。
-
与 MCP 客户端交互: MCP 服务器启动并运行后,您的 LLM 客户端或其他任何兼容 MCP 协议的客户端即可通过 JSON-RPC 协议与此服务器通信,调用其注册的各种工具(如 'list_programs', 'start_program', 'read_log', 'get_config' 等)来智能地管理和监控您的 Supervisord 实例。
信息
分类
开发者工具