该项目提供了一个基于 Model Context Protocol (MCP) 的服务器端实现,专门用于与 HAProxy 负载均衡器进行交互。它允许 MCP 客户端(例如集成了 MCP 的大型语言模型应用)通过标准化的 JSON-RPC 接口来调用 HAProxy 的管理和监控功能。
项目简介
该服务器作为 LLM 客户端和 HAProxy 之间的桥梁,将 LLM 的自然语言指令转化为 HAProxy 可识别的命令,并将 HAProxy 的响应数据结构化后返回给 LLM,从而实现通过聊天界面管理和查看 HAProxy 状态的能力。
主要功能点
- HAProxy 管理: 支持启用/禁用后端服务器、调整服务器权重和最大连接数等动态配置变更。
- 状态与统计查询: 获取 HAProxy 整体运行时信息、详细统计数据(如连接数、流量、错误率等)、后端列表、服务器列表及其详细状态。
- 健康检查控制: 启用或禁用服务器的健康检查和 Agent 检查。
- 配置重载: 触发 HAProxy 配置的运行时重载。
- 多种连接方式: 支持通过 TCP 或 Unix Socket 连接到 HAProxy 的 Runtime API,以及通过 HTTP 获取 Stats 页面数据。
- 多种传输协议: 支持使用 Stdio 或 HTTP (SSE) 协议与 MCP 客户端通信。
安装步骤
您可以选择以下方法安装此服务器:
- 使用 Homebrew (macOS/Linux): 首先添加 Tap:'brew tap tuannvm/tap' 然后安装:'brew install haproxy-mcp-server'
- 下载预编译二进制文件: 访问项目的 Releases 页面,下载适用于您操作系统的最新版本二进制文件。
- 使用 Go 命令安装: 确保您已安装 Go 环境,然后执行:'go install github.com/tuannvm/haproxy-mcp-server/cmd/server@latest'
- 使用 Docker:
拉取镜像:'docker pull ghcr.io/tuannvm/haproxy-mcp-server:latest'
运行容器(示例,需根据您的HAProxy配置调整环境变量):
docker run -it --rm \ -e HAPROXY_HOST=your-haproxy-host \ -e HAPROXY_PORT=9999 \ ghcr.io/tuannvm/haproxy-mcp-server:latest
服务器配置(用于MCP客户端)
MCP 客户端通常通过启动外部进程的方式连接到 MCP 服务器。您需要在 MCP 客户端的配置文件中指定如何启动 'haproxy-mcp-server' 程序,并通过环境变量传递 HAProxy 的连接信息。
典型的 MCP 客户端配置(通常是 JSON 格式)会包含如下结构:
{ "mcpServers": { "your_server_name": { // 您为该服务器定义的名称,例如 "haproxy" "command": "haproxy-mcp-server", // 服务器可执行文件的名称或路径 "args": [], // 如果需要传递启动参数 "env": { // 传递给服务器进程的环境变量 "HAPROXY_HOST": "localhost", // HAProxy Runtime API 的主机名 (TCP模式) "HAPROXY_PORT": "9999", // HAProxy Runtime API 的端口 (TCP模式) "HAPROXY_RUNTIME_MODE": "tcp4", // 连接模式: "tcp4" 或 "unix" "HAPROXY_RUNTIME_SOCKET": "/var/run/haproxy/admin.sock", // HAProxy Unix Socket 路径 (Unix模式) "HAPROXY_RUNTIME_TIMEOUT": "10", // Runtime API 操作超时时间 (秒) "HAPROXY_STATS_ENABLED": "true", // 是否启用 Stats API "HAPROXY_STATS_URL": "http://localhost:8404/stats", // HAProxy Stats 页面 URL "HAPROXY_STATS_TIMEOUT": "5", // Stats API 操作超时时间 (秒) "MCP_TRANSPORT": "stdio", // MCP 传输协议: "stdio" 或 "http" "MCP_PORT": "8080", // HTTP 传输时监听的端口 "LOG_LEVEL": "info" // 日志级别: debug, info, warn, error } } // 可以配置其他 MCP 服务器 } }
请根据您的实际 HAProxy 配置和偏好的 MCP 传输协议,设置 'env' 中的环境变量。至少需要正确配置 Runtime API 连接信息 ('HAPROXY_HOST'/'HAPROXY_PORT'/'HAPROXY_RUNTIME_MODE'/'HAPROXY_RUNTIME_SOCKET') 或 Stats API 信息 ('HAPROXY_STATS_ENABLED'/'HAPROXY_STATS_URL') 中的一种或同时配置。
基本使用方法
配置完成后,在支持 MCP 的 LLM 客户端中,您就可以通过自然语言指令来与 HAProxy 交互。例如:
- 询问 HAProxy 的当前版本或运行时信息。
- 要求列出所有后端及其状态。
- 查询特定后端或服务器的详细统计数据。
- 请求禁用某个后端下的特定服务器。
- 要求启用一个被禁用的服务器。
- 让 LLM 分析统计数据,报告异常或瓶颈。
LLM 客户端会识别您的意图,并调用 'haproxy-mcp-server' 中对应的工具(如 'show_info', 'list_backends', 'show_stat', 'disable_server', 'enable_server' 等)来执行操作,并将返回的结果或状态反馈给您。
信息
分类
开发者工具