tracearr-mcp
tracearr-mcp is a read-only MCP server for querying Plex, Jellyfin, and Emby monitoring data via Tracearr Public API v2. You can:
Watch History: Retrieve cursor-paginated global history (
tracearr_get_history) with filters by user, server, media, type, date range, IMDb/TMDb/TVDb IDs, and watched status; also retrieve per-media and per-user history (tracearr_get_media_history,tracearr_get_user_history).Active Streams: View currently active playback sessions across all servers (
tracearr_get_streams), optionally as a summary with aggregate stats only.Media Lookup & Stats: Resolve a media item by UUID or provider ref (
tracearr_get_media), list its children/seasons/episodes (tracearr_get_media_children), get play counts, watch time, and distinct viewers over all-time, last 30 days, and last 7 days (tracearr_get_media_stats), and list per-account watchers ordered by watch time (tracearr_get_media_watchers).User Management & Stats: List all Tracearr identities with linked media-server accounts (
tracearr_list_users), resolve a specific user (tracearr_get_user), get user stats like plays, watch time, and top genres (tracearr_get_user_stats), and retrieve user-specific watch history.Library Browsing: List recently added library items with filters for server, library, and media type (
tracearr_list_recently_added), and fetch per-library rollups including item counts, total file size, and resolution breakdowns (tracearr_list_libraries).
All tools are read-only and expose capabilities for LLM integration.
Provides tools for querying Emby monitoring data through Tracearr, including watch history, active streams, media, users, libraries, and recently added items.
Provides tools for querying Jellyfin monitoring data through Tracearr, including watch history, active streams, media, users, libraries, and recently added items.
Provides tools for querying Plex monitoring data through Tracearr, including watch history, active streams, media, users, libraries, and recently added items.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@tracearr-mcp What's currently streaming on Plex?"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
tracearr-mcp
Part of the arr-mcps collection. MCP server exposing Tracearr's Public API v2 (REST, read-only) as tools, so an LLM can query your Plex, Jellyfin, and Emby monitoring data: watch history, active streams, media, users, libraries, and recently added items.
Built with FastMCP.
Enabling the API on your Tracearr server
The Public API is read-only and requires a bearer API key. Generate one in
Tracearr Settings > General — the key looks like trr_pub_<token>. See
the API reference for details.
Related MCP server: Arr-MCP
Install
Download a wheel from the latest release
and install it as a uv tool (no repo checkout needed):
uv tool install tracearr_mcp-*.whlThis puts a tracearr-mcp command on your PATH. Register it with Claude Code:
claude mcp add tracearr \
--env TRACEARR_URL=https://your-tracearr-host \
--env TRACEARR_API_KEY=<key> \
-- tracearr-mcpFrom source
uv sync
cp .env.example .env # fill in TRACEARR_URL and TRACEARR_API_KEYclaude mcp add tracearr \
--env TRACEARR_URL=https://your-tracearr-host \
--env TRACEARR_API_KEY=<key> \
-- uv run --directory /path/to/tracearr-mcp tracearr-mcpConfig
Env var | Required | Default |
| yes | - |
| yes* | none (no auth header sent if unset) |
* Every API endpoint requires auth; practically you must set it, but the server still starts without one so errors surface from the API rather than at startup.
Tools
One tool per Tracearr Public API v2 endpoint. All are read-only.
Tool | Endpoint |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ref accepts a canonical media uuid or a type-qualified provider ref such as
movie:tmdb:584 or show:tvdb:81189. Cursor-paginated tools take cursor
and page_size; read meta.nextCursor from the response and pass it back as
cursor to fetch the next page. Optional params are omitted when unset so the
API's defaults apply.
Development
make help # list all commandsCommand | Does |
|
|
| Offline tests - one per endpoint, mocked HTTP |
| Tests against the live instance (needs |
| Build wheel + sdist into |
| Bump the version in |
| Remove build artifacts |
The release workflow (.github/workflows/release.yml) builds and publishes to
Releases whenever a v*
tag is pushed - so the usual flow is make bump-patch, commit, then tag and
push.
The integration suite is read-only (the Tracearr public API has no write surface), so it never modifies your instance.
Available Tools
13 toolstracearr_get_historyARead-only
Cursor-paginated watch history, newest first, one record per play with canonical media identity on every record. A play is one resume chain.
Filters: user_id (Tracearr identity), server_id, media_id (canonical id; a show id matches all its episodes), rating_key (server-specific id), imdb_id/tmdb_id/tvdb_id, media_type (movie|episode|track|live|photo| unknown), watched (bool), since/until (date or ISO datetime). Pass meta.nextCursor back as cursor to fetch the next page.
Inputs: since, until, cursor, imdb_id, +9 more. Returns: object
tracearr_get_mediaARead-only
Resolve a media ref to its canonical identity, merged ids, and per-server
availability. ref is a canonical media uuid or a type-qualified provider ref:
{movie|show|episode}:{imdb|tmdb|tvdb}:{id} (e.g. movie:tmdb:584,
show:tvdb:81189).
Inputs: ref (required). Returns: object
tracearr_get_media_childrenARead-only
List a show's seasons (with episode counts) or a season's episodes. ref is a canonical media uuid or a provider ref (seasons are uuid-only).
Inputs: ref (required). Returns: object
tracearr_get_media_historyARead-only
Cursor-paginated watch history for a single media item. ref is a canonical media uuid or a provider ref. Pass meta.nextCursor back as cursor.
Inputs: ref (required), cursor, page_size. Returns: object
tracearr_get_media_statsARead-only
Play counts, watch time, and distinct viewers for a media item across all_time, last_30, and last_7 windows, each with a combined and per-server breakdown. ref is a canonical media uuid or a provider ref.
Inputs: ref (required). Returns: object
tracearr_get_media_watchersARead-only
Per-account watchers of a media item, ordered by watch time. window is all_time|last_30|last_7 (default all_time). ref is a canonical media uuid or a provider ref.
Inputs: ref (required), window, server_id. Returns: object
tracearr_get_streamsARead-only
Currently active playback sessions across all servers. Each stream carries canonical media identity. Set summary=true to return only summary stats (omits the data array).
Inputs: summary, server_id. Returns: object
tracearr_get_userARead-only
Resolve a Tracearr identity id to its correlation block (linked accounts across servers).
Inputs: id (required). Returns: object
tracearr_get_user_historyARead-only
Cursor-paginated watch history for an identity, scoped to every account it owns. Pass meta.nextCursor back as cursor.
Inputs: id (required), cursor, page_size. Returns: object
tracearr_get_user_statsARead-only
Plays and watch time for an identity, summed across every account it owns, over all_time/last_30/last_7 windows, plus its top genres by play count.
Inputs: id (required). Returns: object
tracearr_list_librariesARead-only
Per-library rollups: item/movie/episode/show/track counts, total file size, and per-resolution counts for each server library.
Inputs: no named parameters. Returns: object
tracearr_list_recently_addedARead-only
Cursor-paginated library items ordered by server-reported added date, newest first. Filter by server_id, library_id, media_type (movie|episode| season|show|artist|album|track|photo). Set include_removed=true to include tombstones.
Inputs: cursor, page_size, server_id, library_id, +2 more. Returns: object
tracearr_list_usersARead-only
Cursor-paginated Tracearr identities, newest first, each with the media-server accounts it owns (account correlation is Tracearr-side). Set include_removed=true to include identities whose every account has been removed.
Inputs: cursor, page_size, include_removed. Returns: object
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 13 tools
There are three history tools (get_user_history, get_history, get_media_history) that overlap because get_history can filter by user_id and media_id, subsuming the other two. Descriptions clarify the intended scope, but an agent may be unsure which to use for a specific query.
All tool names follow the consistent pattern tracearr_<verb>_<noun> with verbs limited to get_ and list_. Naming is uniform, snake_case, and each noun clearly indicates the resource.
13 tools is well-scoped for a media tracking server. Each tool covers a distinct aspect of the domain (history, streams, media metadata, users, libraries) without feeling bloated or sparse.
The tool surface covers core watch history, media resolution/stats, user identity, and library rollups. Minor gaps include no way to list available servers or search media by title, which could require working around with known IDs.
Maintenance
Related MCP Connectors
Hosted MCP server for DataLikers — Instagram & TikTok data API. 51 tools: Instagram user search by demographics (gender/age/race/country/city), profiles, bulk lookup, engagement, posts & reels, comments, hashtags, locations, stories, highlights, music, business accounts, top users; TikTok users, videos, comments, hashtags, playlists and top charts. Streamable HTTP, Bearer API key. Free tier: 100 requests on signup at https://datalikers.com/p/1by27bwg
Read-only MCP server for The Quiet Protocol's engines, benchmarks, proof, and business data.
MCP server for Riveter's enrichment, scraping, and monitoring API
Search MCP servers, MCP clients and AI agents, and retrieve listing details. Free, read-only access.
Related MCP Servers
- AlicenseAqualityCmaintenanceMCP server for managing a media server stack (Plex, Radarr, Overseerr, Bazarr, Prowlarr, Trakt.tv) using natural language to browse, request, and discover content.12MIT
- AlicenseAqualityCmaintenanceMCP server to manage your *ARR media stack (Radarr, Sonarr, Lidarr, Readarr, Prowlarr) for searching, adding, and managing movies, TV shows, music, books, and indexers.1ISC
- AlicenseNot gradedqualityBmaintenanceA locally-run, read-only MCP server that lets an LLM client diagnose a self-hosted *arr media stack by aggregating across Sonarr, Radarr, Prowlarr, qBittorrent, Tdarr, and Profilarr.53 PyPIApache 2.0
- AlicenseAqualityAmaintenanceA unified MCP server for your self-hosted media stack (Radarr, Sonarr, Jellyfin, etc.). It correlates across services to answer questions no single service can, with safety features like untrusted-output fencing and safe-by-default deletions.244140MIT