关于 Bareos Mcp Server
Bareos Mcp Server 为监控备份基础设施的运维人员提供 Bareos 只读数据访问。它通过 bconsole 查询作业、客户端、文件集、存储池和卷,并支持筛选作业活动。
主要功能
- 01筛选并列出备份作业
- 02查看作业状态和日志
- 03列出已备份文件
- 04查看客户端和文件集
- 05检查存储池容量及卷信息
适用场景
- 01检查近期或失败的备份作业
- 02调查作业状态和日志
- 03查看可用存储及待修剪卷
MCP 相关
它将 Bareos 监控和查询操作以只读 MCP 工具形式提供。服务器通过 bconsole 与 Bareos Director 通信,可本地访问或通过配置的远程封装脚本访问。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
我们还没有获取到这个服务的安装包或远程地址,请按项目 README 中的说明安装。
工具
本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。
详细介绍
Bareos MCP 服务
适用于 Bareos backup system 的模型上下文协议(MCP)服务,提供只读操作,用于监控和查询备份基础设施。
快速开始
配置完成后,可以直接向 AI 助手询问有关备份的问题:
"Show me the last 10 backup jobs"
"Are there any failed backups today?"
"What's the status of job 12345?"
"How much storage is left in the Full pool?"
"List all volumes ready for pruning"
功能
只读操作
- 作业:列出近期作业、获取详细状态、查看作业日志
- 客户端:列出所有 Bareos 文件守护进程客户端
- 文件集:列出已配置的备份文件集
- 存储:列出存储池和卷,并显示容量信息
所有操作均经过设计,默认为只读,确保在生产环境中的安全性。
前提条件
- Rust 1.70+ - 用于构建服务
- Bareos Director - 可访问 bconsole
- bconsole - Bareos Director 的命令行界面
安装
1. 克隆并构建
git clone https://github.com/edeckers/bareos-mcp-server.git
cd bareos-mcp-server
cargo build --release
二进制文件位于:target/release/bareos-mcp-server
2. 配置 bconsole 访问权限
MCP 服务会调用 bconsole 与 Bareos Director 交互。默认情况下,它会在 PATH 中查找 bconsole;你也可以设置 BAREOS_BCONSOLE_PATH 环境变量,指定二进制文件或包装脚本的绝对路径:
export BAREOS_BCONSOLE_PATH=/usr/sbin/bconsole
你也可以通过 MCP 客户端配置传递此设置(见步骤 3)。
有以下几种选择:
选项 A:本地 bconsole(直接访问)
如果本地已安装 bconsole,且你有访问权限:
# Test that bconsole works
bconsole -c /etc/bareos/bconsole.conf
无需其他设置,服务将直接使用 bconsole。
选项 B:通过 SSH 访问远程 Bareos
如果 Bareos Director 位于远程主机上,请创建包装脚本:
# Copy the example
cp bconsole.example.sh bconsole
chmod +x bconsole
# Edit bconsole and set your hostname
vim bconsole
包装脚本示例内容:
#!/usr/bin/env bash
ssh your-bareos-host "sudo bconsole $*"
将包装脚本所在目录添加到 PATH,或在 MCP 配置中引用该脚本。
选项 C:Docker/容器环境
在可通过网络访问 Bareos Director 的容器中运行 bconsole。
3. 配置 MCP 客户端
对于 Claude Code(命令行)
在项目目录中创建 .mcp.json:
cp .mcp.json.example .mcp.json
# Edit with your paths
vim .mcp.json
配置示例:
{
"bareos": {
"command": "/absolute/path/to/bareos-mcp-server/target/release/bareos-mcp-server",
"args": [],
"env": {
"BAREOS_BCONSOLE_PATH": "/absolute/path/to/bconsole"
}
}
}
对于 Claude Desktop
在 Claude Desktop 配置文件中添加:
macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
Windows: %APPDATA%\Claude\claude_desktop_config.json
{
"mcpServers": {
"bareos": {
"command": "/absolute/path/to/bareos-mcp-server/target/release/bareos-mcp-server",
"args": [],
"env": {
"BAREOS_BCONSOLE_PATH": "/absolute/path/to/bconsole"
}
}
}
}
使用方法
使用 Claude Code
cd your-project
claude
查询示例:
- “显示最近 10 个备份作业”
- “作业 12345 的状态是什么?”
- “列出所有 Bareos 客户端”
- “Full 存储池中有多少存储空间?”
- “显示可以进行修剪的卷”
可用工具
| 工具 | 描述 | 参数 |
|---|---|---|
list_jobs | 按筛选条件列出备份作业 | job、client、jobstatus、jobtype、joblevel、volume、pool(均为可选筛选条件);days、hours(时间筛选条件,hours 优先);last、count(输出模式,count 优先) |
get_job_status | 获取作业的详细状态 | job_id(必填) |
get_job_log | 查看完整作业日志 | job_id(必填) |
list_files | 列出作业中备份的文件 | job_id(必填) |
list_clients | 列出所有文件守护进程客户端 | 无 |
list_filesets | 列出备份文件集 | 无 |
list_pools | 列出存储池 | 无 |
list_volumes | 列出卷/介质 | pool(可选筛选条件) |
list_jobs 参数详情
list_jobs 工具支持多个可组合使用的筛选条件和选项:
筛选条件(均为可选,可组合使用):
job- 按任务名称筛选client- 按客户端名称筛选jobstatus- 按状态筛选(例如,T=已终止,f=失败,R=运行中)jobtype- 按类型筛选(例如,B=备份,R=还原,V=验证,D=管理,C=复制,M=迁移)joblevel- 按级别筛选(例如,F=完整,I=增量,D=差异)volume- 按卷名称筛选pool- 按池名称筛选
了解任务类型:
- 用户询问“备份”或“备份性能”时,通常指仅备份任务(
jobtype: "B")。除非用户明确要求,否则不要包含验证、还原或其他类型的任务。 - 验证任务(
jobtype: "V")用于验证备份完整性,但本身并非备份 - 存在歧义时,使用
jobtype筛选条件聚焦于特定操作
时间筛选条件(互斥):
days- 显示最近 N 天的任务hours- 显示最近 N 小时的任务- 优先级:如果同时提供两者,则以
hours为准(与 Bareos 的行为一致)
输出模式(互斥):
last- 仅显示每个任务最近一次运行记录(警告:如果任务在指定时间范围内运行过多次,则只会返回最近一次记录)count- 显示匹配任务的数量,而非详细信息- 优先级:如果同时提供两者,则以
count为准(与 Bareos 的行为一致)
示例:
{"client": "web-server", "days": 7}- 显示 web-server 最近 7 天内的所有任务{"jobstatus": "f", "hours": 24, "count": true}- 统计最近 24 小时内失败的任务数量{"pool": "Full", "last": true}- 显示 Full 池中每种任务类型最近一次的运行记录(每个任务仅显示一次)
直接测试
在没有 MCP 客户端的情况下测试服务:
# Initialize
echo '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{}}' | ./target/release/bareos-mcp-server
# List tools
echo '{"jsonrpc":"2.0","id":1,"method":"tools/list","params":{}}' | ./target/release/bareos-mcp-server
# Call a tool - list jobs from last 7 days
echo '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"list_jobs","arguments":{"days":7}}}' | ./target/release/bareos-mcp-server
# List the most recent jobs for a specific client
echo '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"list_jobs","arguments":{"client":"backup-client-1","last":true}}}' | ./target/release/bareos-mcp-server
# Count failed jobs in the last 24 hours
echo '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"list_jobs","arguments":{"hours":24,"jobstatus":"f","count":true}}}' | ./target/release/bareos-mcp-server
故障排除
找不到 bconsole
# Check if bconsole is in PATH
which bconsole
# Or create wrapper script (see Setup section)
权限被拒绝
# Check bconsole config permissions
ls -l /etc/bareos/bconsole.conf
# May need to add user to bareos group
sudo usermod -a -G bareos $USER
连接被拒绝
# Test bconsole directly
echo "version" | bconsole
# Check Director is running
systemctl status bareos-dir
SSH 问题(远程设置)
# Test SSH connection
ssh your-host "bconsole" << EOF
version
quit
EOF
# Check SSH key authentication
ssh -v your-host
许可证
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。