NZBGet MCP Server
NZBGet MCP Server
An MCP (Model Context Protocol) server for NZBGet that exposes NZBGet API functionality as MCP tools usable by LLM clients.
Control your Usenet downloads with natural language through Claude and other MCP-compatible clients.
Features
15 MCP tools for complete NZBGet control
Queue management: list, add, pause, resume, delete downloads
History tracking: view completed and failed downloads
Speed control: set download rate limits
Status monitoring: real-time server status, disk space, queue info
Logging: access and write to NZBGet logs
TypeScript implementation with JSON-RPC client
Stdio transport compatible with Claude Desktop
Requirements
Node.js 18+
A running NZBGet instance with RPC enabled
Setup
Clone the repository and install dependencies:
git clone https://github.com/aserper/nzbget-mcp.git
cd nzbget-mcp
npm installBuild the project:
npm run buildCopy
.env.exampleto.envand set your values:
cp .env.example .envEdit .env:
NZBGET_HOST=localhost
NZBGET_PORT=6789
NZBGET_USERNAME=nzbget
NZBGET_PASSWORD=tegbzn6789
NZBGET_USE_HTTPS=falseRunning the MCP Server
npm startOr directly:
node dist/index.jsTesting
# Run all tests
npm test
# Run with coverage
npm run test:coverage
# Run tests in watch mode
npm run test:uiArchitecture
This MCP server uses a modular architecture:
src/tools/*.ts- Individual tool implementationssrc/tools/index.ts- Tool registry and discoverysrc/utils/errors.ts- Error handling utilitiessrc/__tests__/mocks/- Test fixtures and mocks
All 15 tools are self-contained modules that register themselves on import.
Configuration
Variable | Description | Default |
| NZBGet hostname |
|
| NZBGet RPC port |
|
| NZBGet username | - |
| NZBGet password | - |
| Use HTTPS |
|
Claude Desktop Configuration
Add to your Claude Desktop config (~/Library/Application Support/Claude/claude_desktop_config.json on macOS, or equivalent on other platforms):
{
"mcpServers": {
"nzbget": {
"command": "node",
"args": ["/path/to/nzbget-mcp/dist/index.js"],
"env": {
"NZBGET_HOST": "localhost",
"NZBGET_PORT": "6789",
"NZBGET_USERNAME": "nzbget",
"NZBGET_PASSWORD": "tegbzn6789"
}
}
}
}Docker
Build Locally
docker build -t nzbget-mcp .Run
docker run --rm -it \
-e NZBGET_HOST="localhost" \
-e NZBGET_PORT="6789" \
-e NZBGET_USERNAME="nzbget" \
-e NZBGET_PASSWORD="tegbzn6789" \
nzbget-mcpExposed Tools
Status & Information
nzbget_status- Get server status (speed, queue size, disk space)nzbget_version- Get NZBGet versionnzbget_server_volumes- Get download statistics per server
Download Queue
nzbget_list_groups- List all downloads in queuenzbget_append- Add NZB file to queuenzbget_edit_queue- Edit queue (pause, resume, delete, set priority)
History
nzbget_history- View download history
Control
nzbget_pause_download/nzbget_resume_downloadnzbget_pause_post/nzbget_resume_postnzbget_rate- Set download speed limit (KB/s)nzbget_scan- Scan for new NZB files
Logging
nzbget_log- Get log entriesnzbget_write_log- Write custom log message
Usage Examples
"Show me what's currently downloading"
"Pause the download queue"
"Set download speed to 5 MB/s"
"Add an NZB file to the queue"
"Show my recent download history"Development
# Install dependencies
npm install
# Build
npm run build
# Watch mode
npm run dev
# Lint
npm run lint
# Type check
npm run typecheckLicense
MIT
Contributing
Contributions welcome! Feel free to open an issue or submit a PR.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/aserper/nzbget-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server