mcp-tautulli
mcp-tautulli is a read-only MCP server for monitoring and analyzing your Plex media server through Tautulli, offering 15 tools:
Live activity – See who's streaming, what they're watching, playback progress, quality, and bandwidth usage
Playback history – Retrieve recent watch history filtered by user, media type, title, or date
Recently added content – Browse newly added media across Plex libraries
Search content – Find media by title across all libraries
User statistics – Per-user play counts, total watch time, and last-seen info
Library statistics – Item counts, total plays, and last played content per library
Most watched content – Top TV shows, movies, music, or users ranked by plays or watch duration
Server info – Plex server name, version, platform, and connection details
Server status – Verify Tautulli configuration and reachability
Transcode analysis – Direct play vs transcode breakdowns by platform/device
Platform/device stats – Top streaming devices by plays and total watch time
Resolution analysis – Compare source quality vs delivered resolution
Daily play trends – Day-by-day play counts broken down by stream type
Weekly & hourly patterns – Identify peak viewing days and hours
All operations are read-only. Configuration requires just a Tautulli URL and API key, and it works with Claude Code or any MCP-compatible client.
Provides tools for monitoring Plex media server activity, playback history, and statistics through Tautulli, including real-time stream status, library item counts, and per-user watch metrics.
mcp-tautulli
A single-file MCP server for Tautulli — Plex monitoring via Claude Code (or any MCP client).
19 read-only tools. No mutations. All configuration via environment variables.
Prerequisites
Python 3.10+
A running Tautulli instance with an API key
Claude Code (or any MCP-compatible client)
Related MCP server: ntfy-mcp
Installation
pip install mcp-tautulliOr install with uv:
uv tool install mcp-tautulliOr from source:
git clone https://github.com/lodordev/mcp-tautulli.git
cd mcp-tautulli
pip install .Configuration
Three environment variables:
Variable | Required | Default | Description |
| Yes | — | Tautulli base URL with protocol (e.g. |
| Yes | — | Tautulli API key (Settings → Web Interface → API Key) |
| No |
| Set to |
Claude Code Setup
Add to your project's .mcp.json:
{
"mcpServers": {
"tautulli": {
"command": "mcp-tautulli",
"env": {
// Include the protocol (http:// or https://)
"TAUTULLI_URL": "http://your-tautulli-host:8181",
"TAUTULLI_API_KEY": "your-api-key-here"
}
}
}
}Claude Desktop Setup
Add to ~/Library/Application Support/Claude/claude_desktop_config.json (macOS) or %APPDATA%\Claude\claude_desktop_config.json (Windows):
{
"mcpServers": {
"tautulli": {
"command": "mcp-tautulli",
"env": {
"TAUTULLI_URL": "http://your-tautulli-host:8181",
"TAUTULLI_API_KEY": "your-api-key-here"
}
}
}
}Local Development Config
To point your MCP client at local source without reinstalling after every change, use uv run --directory instead of the installed binary:
{
"mcpServers": {
"tautulli-dev": {
"command": "uv",
"args": ["run", "--directory", "/path/to/mcp-tautulli", "mcp-tautulli"],
"env": {
"TAUTULLI_URL": "http://your-tautulli-host:8181",
"TAUTULLI_API_KEY": "your-api-key-here"
}
}
}
}This works in both Claude Code (.mcp.json) and Claude Desktop (claude_desktop_config.json). Restart the client after code changes — no uv tool install needed.
Or run standalone:
export TAUTULLI_URL="http://localhost:8181"
export TAUTULLI_API_KEY="your-api-key"
mcp-tautulliTools
Tool | Description |
| Current Plex streaming activity — who's watching what, progress, quality |
| Recent playback history with filters (user, media type, search, date) — includes transcode decision; pass |
| Recently added content — what's new in your Plex libraries |
| Search Plex content by title across all libraries — output includes |
| Full metadata for one item by rating key — summary, cast/crew, genres, ratings, and media quality (resolution, codecs, HDR/Dolby Vision, file size). Server file paths omitted |
| Watch stats for one item — plays/time over 24h/7d/30d/all, plus which users watched it (friendly name only) |
| Per-user watch statistics — plays, watch time, last seen |
| Library item counts, total plays, last played per library — output includes |
| Per-library media-quality breakdown — total size, item count, and per-item resolution/codec/container/size (find largest files) |
| Top content by plays or duration (TV, movies, music, users) |
| Plex server identity — name, version, platform, connection |
| Server config and reachability check |
| Direct play vs transcode breakdown by platform |
| Top platforms/devices by plays and watch time |
| Source vs delivered resolution analysis |
| Daily play counts over time by stream type |
| Weekly viewing patterns — which days see the most activity |
| Hourly viewing distribution — when people watch |
| Detailed stream performance data — bitrate, codec, transcode decision, bandwidth for a specific play (use |
All tools are read-only — this server does not modify any Tautulli or Plex state. Each tool calls a fixed Tautulli get_*/search command; there is no passthrough that could reach a write/destructive endpoint.
Privacy: user-identifying data is minimized by default — usernames, user IDs, emails, and thumbnails are never emitted (users appear by friendly name only), server file paths are omitted, and client IP addresses are opt-in (include_ip=true on tautulli_history). Note that Tautulli itself has no read-only API key — the key you configure is a full-access master key, so this server's read-only guarantee lives in its fixed command set, not in the credential.
tautulli_activity
2 active stream(s):
• Alice playing "The Bear S02E06 — Fishes" — 45%, on Apple TV (direct play)
• Bob playing "Oppenheimer (2023)" — 12%, on Roku (transcode)
Bandwidth: 18.5 Mbps total (LAN: 12.2, WAN: 6.3)tautulli_plays_by_day_of_week
Plays by day of week (last 30 days):
Monday : 91 ██████████████████████████████ (TV:62, Movies:18, Music:11) ← peak
Tuesday : 76 █████████████████████████ (TV:56, Movies:15, Music:5)
Wednesday: 62 ████████████████████ (TV:34, Movies:20, Music:8)
Thursday : 45 ██████████████ (TV:32, Movies:8, Music:5)
Friday : 59 ███████████████████ (TV:37, Movies:14, Music:8)
Saturday : 50 ████████████████ (TV:32, Movies:10, Music:8)
Sunday : 86 ████████████████████████████ (TV:60, Movies:16, Music:10)
Total: 469 plays, avg 67.0/daytautulli_stream_data (pass row_id from history output)
Stream Performance Data:
Media: Game of Thrones — The Red Woman (episode)
Quality Profile: Original
Source Bitrate: 10617 kbps
Source Video Bitrate: 10233 kbps
Source Audio Bitrate: 384 kbps
Stream Bitrate: 10617 kbps
Stream Resolution: 1080p
Stream Video Codec: h264
Stream Framerate: 24p
Stream Audio Codec: ac3
Stream Audio Channels: 6
Source Container: mkv
Source Video Codec: h264
Source Audio Codec: ac3
Source Resolution: 1080
Video Decision: direct play
Audio Decision: direct playtautulli_metadata (pass [key: N] from search / recently-added)
Example Movie (2019) — movie
Library: Movies
Content Rating: PG-13
Aired: 2019-05-01
Duration: 2h 10m
Ratings: audience 7.9
Genres: Adventure, Sci-Fi
Resolution: 1080p
Container: mkv
Video Codec: h264
Audio: eac3 6ch
File Size: 18.5 GB
Dynamic Range: SDR
IDs: imdb://tt0000000, tmdb://00000tautulli_library_media_info (pass [id: N] from library stats)
Library media info (section 1, 500 items, 4.2 TB total):
Resolutions (top 3): 1080:2, 4k:1
Items (sorted by file_size desc):
• Example Feature (2021) — 4k, hevc, mkv, 42.0 GB
• Another Movie (2018) — 1080, h264, mkv, 12.3 GB
• A Third Film (2016) — 1080, h264, mp4, 9.8 GBtautulli_search
Search results for "breaking":
Movies:
• Breaking (2012) — Movies
TV Shows:
• Breaking Bad (2008) — TV ShowsTroubleshooting
"TAUTULLI_URL environment variable not set"
Both TAUTULLI_URL and TAUTULLI_API_KEY must be set. Find your API key in Tautulli → Settings → Web Interface → API Key.
TLS/SSL errors
If Tautulli is behind a reverse proxy with a self-signed certificate, set TAUTULLI_TLS_VERIFY=false.
"Tautulli unreachable" Verify the URL is accessible from the machine running the MCP server. Check firewalls and that Tautulli is running.
License
MIT
Available Tools
16 toolstautulli_activityA
Get current Plex streaming activity — who's watching what, playback state, progress, and quality.
Use this before restarting Plex or rebooting servers to check for active streams.
Inputs: no named parameters. Returns: result
tautulli_historyB
Get recent Plex playback history.
Inputs: length, user, media_type, search, +3 more. Returns: result
tautulli_library_statsA
Get library-level statistics — item counts, total plays, and last played content per library.
Inputs: no named parameters. Returns: result
tautulli_most_watchedC
Get most watched content over a time period.
Inputs: days, stat_type, category. Returns: result
tautulli_platform_statsA
Get top platforms/devices by plays and total watch time.
Inputs: days. Returns: result
tautulli_plays_by_dateA
Get daily play counts over time, broken down by stream type (direct play, direct stream, transcode).
Inputs: days. Returns: result
tautulli_plays_by_day_of_weekB
Get weekly viewing patterns — which days of the week see the most Plex activity.
Inputs: days. Returns: result
tautulli_plays_by_hourB
Get hourly viewing distribution — when people watch Plex throughout the day.
Inputs: days. Returns: result
tautulli_recently_addedA
Get recently added content to Plex — shows what's new in your libraries.
Inputs: count, media_type. Returns: result
tautulli_searchB
Search Plex content by title — find movies, shows, episodes, and tracks.
Inputs: query (required), limit. Returns: result
tautulli_server_infoA
Get Plex server identity — name, version, platform, and connection details.
Inputs: no named parameters. Returns: result
tautulli_statusA
Check Tautulli server configuration and reachability.
Inputs: no named parameters. Returns: result
tautulli_stream_dataA
Get detailed stream performance data for diagnosing Plex playback issues.
Use row_id from history or session_key from current activity to fetch detailed performance metrics including bitrate, bandwidth, codec information, and connection details.
Inputs: row_id, session_key. Returns: result
tautulli_stream_resolutionB
Get source vs delivered resolution analysis — shows what quality your library serves and what clients actually receive.
Inputs: days. Returns: result
tautulli_transcode_statsA
Get direct play vs transcode breakdown by platform — shows which devices cause the most transcoding load.
Inputs: days. Returns: result
tautulli_user_statsA
Get per-user watch statistics — total plays, watch time, last seen.
Inputs: user, days. Returns: result
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 16 tools
Each tool targets a distinct aspect of Plex monitoring: activity, history, various statistics, search, server info, etc. Descriptions clearly differentiate them, minimizing confusion.
All tools follow a consistent 'tautulli_<descriptive_name>' pattern using lowercase with underscores. No mixing of conventions.
With 16 tools, the set is well-scoped for a monitoring/stats server. It covers essential queries without being overwhelming.
The tool set covers a comprehensive range of monitoring needs: current activity, history, various statistics, search, server info, stream performance, and user stats. No obvious gaps for the stated domain.
Maintenance
Related MCP Connectors
The official MCP Server for the Mux API
A simple MCP server built with FastMCP and python
MCP server for the Vulners.com API
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceMCP server for interacting with Prometheus metrics and data.17MIT
- AlicenseNot gradedqualityDmaintenanceThe MCP server that keeps you informed by sending the notification on phone using ntfy.sh284 npm44Apache 2.0
- AlicenseBqualityAmaintenanceA Model Context Protocol server that enables AI assistants to query and manage Plex Media Server content through natural language, providing library access, viewing statistics, and media management capabilities.54444 npm57JavaScriptMIT
- AlicenseBqualityCmaintenanceA simple MCP server that grabs prediction market data from polymarket, PredictIt, & Kalshi.126 npm38MIT