内容
# SABnzbd 管理协议服务器
SABnzbd 的管理协议(Model Context Protocol)服务器 — 通过 Claude 或任何兼容 MCP 的客户端管理您的 Usenet 下载器。
## 功能
- **队列管理** — 查看、暂停、恢复、删除、重新排序和重新优先下载
- **历史记录** — 浏览、搜索、重试和删除已完成/失败的下载
- **添加下载** — 通过 URL 添加 NZB,附带可选类别、优先级和脚本
- **速度控制** — 动态设置下载速度限制
- **状态和信息** — 服务器状态、版本、警告、类别和脚本
- **两种传输方式** — stdio(Claude Desktop)或 HTTP(远程客户端)
## 工具
| 工具 | 描述 |
|------|-------------|
| `get_status` | 获取完整服务器状态(速度、磁盘空间、队列摘要) |
| `get_version` | 获取 SABnzbd 版本 |
| `get_warnings` | 获取当前警告和日志消息 |
| `get_categories` | 获取所有已配置的类别 |
| `get_scripts` | 获取所有已配置的后处理脚本 |
| `get_queue` | 获取下载队列,支持分页 |
| `pause_queue` | 暂停所有下载 |
| `resume_queue` | 恢复所有下载 |
| `pause_post_processing` | 暂停后处理 |
| `resume_post_processing` | 恢复后处理 |
| `set_speed_limit` | 设置下载速度限制 |
| `delete_from_queue` | 从队列中删除项目 |
| `set_priority` | 设置下载优先级 |
| `change_category` | 更改队列项目的类别 |
| `move_in_queue` | 将项目移动到队列中的特定位置 |
| `add_nzb_url` | 通过 URL 添加 NZB |
| `get_history` | 获取下载历史,支持搜索和过滤 |
| `retry_download` | 重试失败的下载 |
| `retry_all_failed` | 重试所有失败的下载 |
| `delete_history` | 删除历史记录项目 |
| `purge_history` | 清除所有历史记录 |
## 快速开始
### Docker(HTTP 模式)
```bash
docker run -d \
-e SABNZBD_URL=http://your-sabnzbd:8080 \
-e SABNZBD_API_KEY=your_api_key \
-e MCP_TRANSPORT=http \
-p 3001:3001 \
ghcr.io/ltmarx/sabnzbd-mcp:latest
```
### Docker Compose
```bash
cp .env.example .env
# 编辑 .env 文件,填写您的 SABnzbd URL 和 API 密钥
docker compose --profile http up -d
```
### Claude Desktop(stdio)
```json
{
"mcpServers": {
"sabnzbd": {
"command": "docker",
"args": [
"run", "--rm", "-i",
"-e", "SABNZBD_URL=http://your-sabnzbd:8080",
"-e", "SABNZBD_API_KEY=your_api_key",
"ghcr.io/ltmarx/sabnzbd-mcp:latest"
]
}
}
}
```
## 环境变量
| 变量 | 默认值 | 描述 |
|----------|---------|-------------|
| `SABNZBD_URL` | `http://localhost:8080` | SABnzbd 基本 URL |
| `SABNZBD_API_KEY` | *(必填)* | SABnzbd API 密钥(设置 → 通用 → API 密钥) |
| `MCP_TRANSPORT` | `stdio` | 传输模式:`stdio` 或 `http` |
| `MCP_PORT` | `3000` | HTTP 端口(仅在 `MCP_TRANSPORT=http` 时使用) |
| `MCP_HOST` | `0.0.0.0` | HTTP 绑定主机(仅在 `MCP_TRANSPORT=http` 时使用) |
## 开发
```bash
npm install
cp .env.example .env
# 编辑 .env 文件
npm run dev
```