Skip to main content
Glama
micky-devs

Sonarr MCP Server

by micky-devs
README.md
# Sonarr MCP Server

A Model Context Protocol (MCP) server for [Sonarr](https://sonarr.tv/), enabling AI assistants to manage your TV series collection through natural language interactions.

## Features

- 🔍 **Search Series** - Find TV series to add to your collection
- ➕ **Add Series** - Add TV series with quality profiles, season monitoring, and search options
- 📋 **List Series** - View your entire TV series library with episode counts
- 📺 **Series Details** - Get detailed information including episode status and downloads
- ⚙️ **Update Series** - Change quality profiles, season monitoring, and trigger searches
- 🗑️ **Delete Series/Seasons** - Remove entire series or specific seasons (with optional file deletion)
- 🔍 **Interactive Search** - Browse available releases for episodes with quality and seeder info
- 📊 **Quality Profiles** - View available quality settings
- ⬇️ **Download Release** - Manually download specific releases for episodes
- 🎯 **Season Control** - Granular monitoring and management of individual seasons

## Installation

### From PyPI (Recommended)

```bash
pip install sonarr-mcp
```

### From Source

```bash
git clone https://github.com/MichaelReubenDev/sonarr-mcp.git
cd sonarr-mcp
uv sync
```

## Usage

### Command Line

```bash
# Using uvx (if installed from PyPI)
uvx sonarr-mcp --url http://localhost:8989 --api-token YOUR_API_TOKEN

# Using uv run (from source)
uv run sonarr-mcp --url http://localhost:8989 --api-token YOUR_API_TOKEN

# With debug logging
uv run sonarr-mcp --url http://localhost:8989 --api-token YOUR_API_TOKEN --debug
```

### With Claude Desktop

Add this to your Claude Desktop MCP configuration:

```json
{
  "mcpServers": {
    "sonarr": {
      "command": "uvx",
      "args": [
        "sonarr-mcp",
        "--url", "http://localhost:8989",
        "--api-token", "YOUR_API_TOKEN"
      ]
    }
  }
}
```

### With MCP Inspector

For testing and development:

```bash
npx @modelcontextprotocol/inspector uv run sonarr-mcp --url http://localhost:8989 --api-token YOUR_API_TOKEN
```

## Configuration

### Required Parameters

- `--url`: Your Sonarr base URL (e.g., `http://localhost:8989`)
- `--api-token`: Your Sonarr API token (found in Settings → General → Security)

### Optional Parameters

- `--debug`: Enable debug logging

## Available Tools

| Tool | Description | Parameters |
|------|-------------|------------|
| `search_series` | Search for TV series to add | `query` (string) |
| `add_series` | Add a TV series to Sonarr | `tvdb_id` (int), `quality_profile_id` (int), `monitor_type` (string, **required**), `root_folder_path` (string, default: "/tv"), `season_folder` (bool, default: true), `monitor_seasons` (array, optional), `search_for_missing_episodes` (bool, default: false) |
| `list_series` | List all TV series in library | None |
| `get_series` | Get detailed series information | `series_id` (int) |
| `update_series` | Update series settings | `series_id` (int), `quality_profile_id` (int, optional), `monitor_type` (string, optional), `monitor_seasons` (array, optional), `start_search` (bool, default: false) |
| `delete_series` | Delete a series or specific seasons | `series_id` (int), `delete_seasons` (array, optional), `delete_files` (bool, default: false) |
| `interactive_search` | Browse available releases | `series_id` (int), `season_number` (int, optional), `episode_number` (int, optional) |
| `download_release` | Download a specific release | `release_guid` (string), `series_id` (int) |
| `get_quality_profiles` | List available quality profiles | None |

### Monitor Types

The `monitor_type` parameter supports these options:
- `all` - Monitor all episodes
- `future` - Monitor future episodes only
- `missing` - Monitor missing episodes
- `existing` - Monitor existing episodes
- `recent` - Monitor recent episodes
- `first` - Monitor first season only
- `latest` - Monitor latest season only
- `none` - Monitor no episodes
- `season_specific` - Monitor specific seasons (requires `monitor_seasons` array)

## Example Workflows

### Adding a TV Series

1. Search for series: "Search for Breaking Bad TV series"
2. Add series: "Add Breaking Bad with HD-1080p quality, monitor all episodes"
3. Add with specific seasons: "Add The Office with monitor_type: 'season_specific' and monitor_seasons: [1, 2, 3]"
4. Check status: "Show me details for Breaking Bad"

### Managing Your Collection

1. List series: "Show me all my TV series"
2. Update monitoring: "Change series ID 123 to monitor only seasons 2 and 4"
3. Update quality and search: "Change series ID 123 to 4K quality and start searching for missing episodes"
4. Browse releases: "Show me available releases for series ID 123 season 2"

### Season-Specific Management

1. Monitor specific seasons: "Update series ID 123 with monitor_type: 'season_specific', monitor_seasons: [1, 3, 5]"
2. Delete specific seasons: "Delete seasons 2 and 4 from series ID 123 including files"
3. Search specific episodes: "Show releases for series ID 123 season 3 episode 5"

### Finding Downloads

1. Get series details: "Show me the status of Game of Thrones"
2. Interactive search: "What releases are available for The Walking Dead season 1?"
3. Episode search: "Find releases for series ID 456 season 2 episode 10"

## Requirements

- Python 3.13+
- Sonarr v3+ with API access
- Network access to your Sonarr instance

## Development

```bash
# Clone the repository
git clone https://github.com/MichaelReubenDev/sonarr-mcp.git
cd sonarr-mcp

# Install dependencies
uv sync

# Test with the MCP Inspector
task mcp_inspector

# Run with debug logging
uv run sonarr-mcp --url http://localhost:8989 --api-token YOUR_TOKEN --debug
```

## Contributing

1. Fork the repository
2. Create a feature branch
3. Make your changes
4. Add tests if applicable
5. Submit a pull request

## License

This project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.

## Acknowledgments

- [Sonarr](https://sonarr.tv/) - The amazing TV series collection manager
- [Model Context Protocol](https://modelcontextprotocol.io/) - For enabling AI tool integration
- [Anthropic](https://www.anthropic.com/) - For Claude and MCP development

## Support

- 🐛 [Report Issues](https://github.com/MichaelReubenDev/sonarr-mcp/issues)
- 💬 [Discussions](https://github.com/MichaelReubenDev/sonarr-mcp/discussions)
- 📖 [Sonarr API Documentation](https://sonarr.tv/docs/api/)

---

TDQS

B3.4/5.0

Scored across 9 tools

Disambiguation5/5

Each tool targets a distinct action or resource: add/delete/update series, list/get/search series, search/download releases, and get quality profiles. No two tools overlap in purpose.

Naming Consistency4/5

Most tools use a consistent verb_noun pattern (e.g., add_series, delete_series, download_release). The exception is interactive_search, which mixes an adjective with a noun, breaking the pattern slightly.

Tool Count5/5

With 9 tools, the set is well-scoped. Each tool covers an essential function for Sonarr management, not too few or too many for the domain.

Completeness4/5

The set covers core CRUD operations and key workflows (search, add, download). Minor gaps exist, such as tools for managing episode status or series seasons, but the main operations are covered.

Maintenance

ActivityInactive
ResponsivenessNo issues