系统监控协议服务器

Beszel MCP服务器为Beszel系统监控工具提供与PocketBase后端交互的功能,支持查询系统、容器、警报及其历史记录。

  • by Red5d
  • Python
  • 本地部署
  • 7 星标
  • 更新于
在 GitHub 查看 Red5d/beszel-mcp

使用说明

更好的MCP服务器

模型上下文协议(MCP)服务器 贝塞尔 系统监控工具。

概述

此MCP服务器提供了与Beszel的PocketBase后端交互的工具,允许您:

  • 列出系统、容器、警报和警报历史记录
  • 查询系统统计信息
  • 查询集装箱统计信息

建于 FastMCP -一个高级Python框架,用于构建具有最小样板的MCP服务器。看 为什么选择FastMCP? 了解详情。

配合使用效果很好 紫外线 -快速的Python包管理器。看 uv快速入门 2分钟的设置!

安装

使用紫外线(推荐)

紫外线 是一个快速的Python包管理器,可以自动处理虚拟环境:

# Install uv if you haven't already
curl -LsSf https://astral.sh/uv/install.sh | sh

# Install the project
uv pip install -e .

# Or run directly without installing
uv run python -m beszel_mcp

使用pip

pip install -e .

或者直接从依赖项安装:

pip install fastmcp httpx

配置

服务器需要以下环境变量:

  • BESZEL_URL:您的Beszel/PacketBase实例的URL(例如。, http://localhost:8090)
  • BESZEL_EMAIL (可选):用于身份验证的管理员电子邮件
  • BESZEL_PASSWORD (可选):用于身份验证的管理员密码

用法

使用克劳德桌面

添加到您的 claude_desktop_config.json:

使用紫外线(推荐):

{
  "mcpServers": {
    "beszel": {
      "command": "uvx",
      "args": ["--from", "/path/to/beszel-mcp", "beszel-mcp"],
      "env": {
        "BESZEL_URL": "http://localhost:8090",
        "BESZEL_EMAIL": "your-email@example.com",
        "BESZEL_PASSWORD": "your-password"
      }
    }
  }
}

或者直接使用Python:

{
  "mcpServers": {
    "beszel": {
      "command": "python",
      "args": ["-m", "beszel_mcp"],
      "env": {
        "BESZEL_URL": "http://localhost:8090",
        "BESZEL_EMAIL": "your-email@example.com",
        "BESZEL_PASSWORD": "your-password"
      }
    }
  }
}

独立

export BESZEL_URL="http://localhost:8090"
export BESZEL_EMAIL="your-email@example.com"
export BESZEL_PASSWORD="your-password"

# Using uv (recommended)
uv run beszel-mcp

# Or with python -m
uv run python -m beszel_mcp

# Without uv
python -m beszel_mcp

# Or use fastmcp's CLI
fastmcp run src/beszel_mcp/server.py

可用工具

list_systems

列出所有受监控的系统。

参数:

  • page (可选):页码(默认:1)
  • per_page (可选):每页结果(默认值:50)
  • filter (可选):PocketBase过滤器字符串
  • sort (可选):排序顺序(例如,“-created”)

列表_容器

列出所有受监控的容器。

参数:

  • page (可选):页码(默认:1)
  • per_page (可选):每页结果(默认值:50)
  • filter (可选):PocketBase过滤器字符串
  • sort (可选):排序顺序

列表_警报

列出所有警报。

参数:

  • page (可选):页码(默认:1)
  • per_page (可选):每页结果(默认值:50)
  • filter (可选):PocketBase过滤器字符串
  • sort (可选):排序顺序

list_alert_history

列出警报历史记录。

参数:

  • page (可选):页码(默认:1)
  • per_page (可选):每页结果(默认值:50)
  • filter (可选):PocketBase过滤器字符串
  • sort (可选):排序顺序

query_system_stats

查询特定系统的统计信息。

参数:

  • system_id (必填):系统ID
  • start_time (可选):统计开始时间(ISO 8601格式)
  • end_time (可选):统计结束时间(ISO 8601格式)
  • page (可选):页码(默认:1)
  • per_page (可选):每页结果(默认值:100)

查询容器统计数据

查询特定容器的统计信息。

参数:

  • container_id (必填):容器ID
  • start_time (可选):统计开始时间(ISO 8601格式)
  • end_time (可选):统计结束时间(ISO 8601格式)
  • page (可选):页码(默认:1)
  • per_page (可选):每页结果(默认值:100)

PocketBase过滤器示例

# Filter by name
filter="name ~ 'server'"

# Filter by status
filter="status = 'active'"

# Filter by date range
filter="created >= '2024-01-01' && created <= '2024-12-31'"

# Complex filters
filter="(cpu > 80 || memory > 90) && status = 'active'"

为什么选择FastMCP?

此服务器使用FastMCP而不是原始MCP SDK构建,原因有几个:

  • 代码减少35% -注重逻辑,而不是样板
  • 自动模式生成 -类型提示变成JSON模式
  • 清洁装饰师 -简单 @mcp.tool() 而不是手动路由
  • 更好的DX -热重新加载、开发模式等

看 为什么选择FastMCP? 以进行详细比较。

许可证

麻省理工学院