Bareos MCP服务器
 
一种模型上下文协议(MCP)服务器 Bareos备份系统,提供用于监视和查询备份基础架构的只读操作。
快速开始
配置后,自然地向您的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文件守护进程客户端
- 文件集:列出已配置的备份文件集
- 存储:列出具有容量信息的池和卷
为了确保生产环境的安全,所有操作都是只读的。
先决条件
- 锈蚀1.70+ -用于构建服务器
- Bareos董事 -通过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总监互动。默认情况下,它会查找 bconsole 在PATH中,但您可以设置 BAREOS_BCONSOLE_PATH 环境变量,用于指定二进制或包装器脚本的绝对路径:
export BAREOS_BCONSOLE_PATH=/usr/sbin/bconsole您还可以通过MCP客户端配置传递此信息(请参阅步骤3)。
您有几个选择:
选项A:本地控制台(直接访问)
如果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客户端
克劳德代码(CLI)
创建 .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配置文件中:
macOS: ~/Library/Application Support/Claude/claude_desktop_config.json 窗户: %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"
}
}
}
}用法
使用克劳德代码
cd your-project
claude示例查询:
- “显示最近10个备份作业”
- “作业12345的状态如何?”
- “列出所有Bareos客户端”
- “满池中有多少存储空间?”
- “显示准备修剪的卷”
可用工具
| 工具 | 说明 | 参数 |
|---|---|---|
list_jobs | 列出带有筛选器的备份作业 | job, client, jobstatus, jobtype, joblevel, volume, pool (所有可选过滤器); days, hours (时间过滤器,以小时为准); last, 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}-过去7天内web服务器的所有作业{"jobstatus": "f", "hours": 24, "count": true}-过去24小时内失败的作业计数{"pool": "Full", "last": true}-完整池中每种作业类型的最新运行(每个作业只运行一次)
直接测试
在没有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-dirSSH问题(远程设置)
# Test SSH connection
ssh your-host "bconsole" << EOF
version
quit
EOF
# Check SSH key authentication
ssh -v your-host