add_to_playlist
Add a media item to a playlist (requires PLEX_ENABLE_MUTATIVE_OPS=true)
Ask questions about your Plex server and act on the answer — watch stats, recommendations, playlists, and requests straight into Sonarr and Radarr.
LABSCO SUMMARY
Plex alone would give you a library browser; adding Sonarr, Radarr and Trakt means "I want the next season" becomes an actual queue entry, and your watch history can live in both Plex and Trakt without exporting anything. Everything but the Plex token is optional, so it degrades cleanly if you only run some of the stack.
One server across four systems: Plex for the library and playback data, Sonarr and Radarr for acquiring what is missing, and Trakt for syncing history.
A Plex token in PLEX_TOKEN with PLEX_URL pointing at the server — that is the only required credential. SONARR_URL with SONARR_API_KEY, RADARR_URL with RADARR_API_KEY, and TRAKT_CLIENT_ID with TRAKT_CLIENT_SECRET are each optional; tools for a service you have not configured return an explanation rather than failing the server. Published on npm as plex-mcp-server and run over stdio. Write operations add to the tool count when enabled.
One command plus a key — npx plex-mcp-server, then supply credentials
USE CASES
Read what is on deck and recently added, then ask for recommendations based on your history.
Pull watch statistics, per-user activity and the most popular content, and check who is streaming now.
Search for the show or film, add it with the right quality profile, and trigger the search.
Read the queue and what is still missing, and check the calendar for when it is due.
Search the library for what fits, create the playlist and add the items to it.
Authenticate once, then sync history in the direction you need and check the sync status.
Check which fields are editable for the item, then update them individually or from a JSON payload.
Counted once with only startup setup. Other versions, modes or optional credentials may expose a different list.
add_to_playlistAdd a media item to a playlist (requires PLEX_ENABLE_MUTATIVE_OPS=true)
add_to_watchlistAdd a media item to watchlist (requires PLEX_ENABLE_MUTATIVE_OPS=true)
arr_get_statusCheck connection status of Sonarr and Radarr services
clear_playlistClear all items from a playlist (preview unless confirm=true; requires PLEX_ENABLE_MUTATIVE_OPS=true)
create_playlistCreate a new Plex playlist (requires PLEX_ENABLE_MUTATIVE_OPS=true). For regular playlists, ratingKeys is required — Plex does not support creating empty playlists. For smart playlists, set smart=true and provide librarySectionId (and optionally libtype / smartFilter).
delete_playlistDelete a Plex playlist without deleting the underlying media (requires PLEX_ENABLE_MUTATIVE_OPS=true)
export_libraryExport a full library to a JSON file (within ./exports)
get_active_sessionsGet currently active Plex streams — who is watching what right now, including player state, session location, transcode decisions and media quality
get_editable_fieldsGet editable fields and available tags for a media item
get_fully_watchedGet all fully watched movies and shows from a library
get_librariesGet all Plex libraries
get_library_itemsList items in a library with pagination (useful for large libraries)
get_library_statsGet library-specific statistics
get_media_detailsGet detailed information about a specific media item
get_on_deckGet on deck (continue watching) items
get_playlist_itemsGet items in a Plex playlist
get_playlistsGet all Plex playlists
get_popular_contentGet most popular content by plays or duration
get_recently_addedGet recently added media
get_recently_watchedGet recently watched movies and shows
get_recommendationsGet personalized movie recommendations from your Plex library based on watch history. Analyzes genres, directors, and actors you've watched to score unwatched films. Supports per-user recommendations for multi-user Plex servers. If Trakt is configured, uses your rating profile to further refine scores.
get_user_statsGet user-specific watch statistics
get_watch_historyGet detailed watch history with session information
get_watch_statsGet comprehensive watch statistics (Tautulli-style analytics)
get_watchlistGet the user's Plex watchlist
radarr_add_movieAdd a new movie to Radarr by TMDB ID
radarr_get_calendarGet upcoming movies from the Radarr calendar
radarr_get_missingGet missing/wanted movies from Radarr
radarr_get_moviesList all movies in Radarr with optional title filter
radarr_get_profilesGet Radarr quality profiles and root folders (needed before adding movies)
radarr_get_queueGet the current Radarr download queue
radarr_searchSearch TMDB for new movies to add to Radarr
radarr_trigger_searchTrigger a search for missing movies, optionally for a specific movie
remove_from_playlistRemove an item from a playlist (requires PLEX_ENABLE_MUTATIVE_OPS=true)
remove_from_watchlistRemove a media item from watchlist (requires PLEX_ENABLE_MUTATIVE_OPS=true)
search_mediaSearch for media in Plex libraries
sonarr_add_seriesAdd a new series to Sonarr by TVDB ID
sonarr_get_calendarGet upcoming episodes from the Sonarr calendar
sonarr_get_missingGet missing/wanted episodes from Sonarr
sonarr_get_profilesGet Sonarr quality profiles and root folders (needed before adding series)
sonarr_get_queueGet the current Sonarr download queue
sonarr_get_seriesList all series in Sonarr with optional title filter
sonarr_searchSearch TheTVDB for new series to add to Sonarr
sonarr_trigger_searchTrigger a search for missing episodes, optionally for a specific series
trakt_authenticateStart Trakt.tv OAuth authentication process
trakt_complete_authComplete Trakt.tv authentication with authorization code
trakt_get_auth_statusCheck Trakt.tv authentication status
trakt_get_sync_statusCheck status of ongoing sync operations
trakt_get_user_statsGet enhanced viewing statistics from Trakt.tv
trakt_searchSearch for movies and shows on Trakt.tv
trakt_start_scrobblingEnable real-time scrobbling to Trakt.tv
trakt_sync_from_traktGet watch history from Trakt.tv for comparison
trakt_sync_to_traktSync Plex watch history to Trakt.tv
update_metadataUpdate metadata fields for a media item (requires PLEX_ENABLE_MUTATIVE_OPS=true)
update_metadata_from_jsonUpdate metadata from a JSON payload (requires PLEX_ENABLE_MUTATIVE_OPS=true)
BEFORE YOU INSTALL
55 tools when we connected; the project documents 58. The 55 we saw already included nine write tools, so that build did not hold them back. The current README counts 46 out of the box and 58 with PLEX_ENABLE_MUTATIVE_OPS=true; rate_media, mark_watched and mark_unwatched did not appear. Sonarr, Radarr and Trakt tools need their own credentials.
The documented client runs the server on your machine.
INSTALLATION
git clone https://github.com/niavasha/plex-mcp-server.git
cd plex-mcp-server
npm install
npm run buildnpx plex-mcp-server{
"mcpServers": {
"plex": {
"command": "node",
"args": [
"<YOUR_PATH_TO_PLEX_MCP_SERVER>/build/plex-mcp-server.js"
],
"env": {
"PLEX_URL": "http://localhost:32400",
"PLEX_TOKEN": "<YOUR_PLEX_TOKEN>"
}
}
}
}This block runs your own build: <YOUR_PATH_TO_PLEX_MCP_SERVER> is the folder the clone step created (build/plex-mcp-server.js exists after npm run build). Put your Plex token in PLEX_TOKEN and your server's address in PLEX_URL. http://localhost:32400 is right only if Plex runs on this machine.