Plex-MCP

Plex-MCP

Enables full management of a Plex Media Server via Claude, including browsing libraries, fixing metadata, managing collections, and more.

Category
访问服务器

README

Plex MCP Server

A Model Context Protocol server that gives Claude full management access to a Plex Media Server — browsing libraries, fixing metadata, syncing between servers, managing collections, and more.

Works with Claude Desktop (Windows/macOS) and Claude Code via an SSH connection to the Ubuntu host running this server.


Prerequisites

  • Python 3.11+ on the host machine
  • Plex Media Server accessible on your LAN
  • A Plex authentication token (see Finding your token)
  • Claude Desktop or Claude Code

Installation

git clone https://github.com/ericwarthan/Plex-MCP
cd Plex-MCP
python3 -m venv venv
source venv/bin/activate        # Windows: venv\Scripts\activate
pip install -r requirements.txt

Configuration

Copy the example config and fill in your details:

cp config/config.example.json ~/.config/plex-mcp/config.json

Edit ~/.config/plex-mcp/config.json:

{
  "plex_name": "My Plex Server",
  "plex_host": "192.168.1.x",
  "plex_port": 32400,
  "token": "YOUR_PLEX_TOKEN_HERE",
  "plex_url": "http://192.168.1.x:32400"
}

The config file is stored in your home directory (not the repo) so credentials are never accidentally committed.


Connecting to Claude Desktop (Windows)

Claude Desktop connects to the MCP server over SSH. Add this to your %APPDATA%\Claude\claude_desktop_config.json:

{
  "mcpServers": {
    "plex": {
      "command": "C:\\Program Files\\Git\\usr\\bin\\ssh.exe",
      "args": [
        "username@YOUR_SERVER_IP",
        "cd /home/username/Plex-MCP && source venv/bin/activate && python3 server.py --stdio"
      ]
    }
  }
}

Important — use Git's ssh.exe, not Windows OpenSSH. Claude Desktop launches ssh.exe as a subprocess and reads its stdout as the MCP stream. Windows' built-in OpenSSH (C:\Windows\System32\OpenSSH\ssh.exe) sometimes uses a different key format or agent that fails silently. The SSH binary bundled with Git for Windows (C:\Program Files\Git\usr\bin\ssh.exe) is more reliable for this use case.

Your SSH public key must be in ~/.ssh/authorized_keys on the server host.


Connecting to Claude Code

Claude Code can use the MCP server directly (no SSH wrapper needed if running on the same machine) or via SSH. In your project's .claude/settings.json:

{
  "mcpServers": {
    "plex": {
      "command": "python3",
      "args": ["/home/username/Plex-MCP/server.py", "--stdio"]
    }
  }
}

Or via SSH from a remote machine (same pattern as Claude Desktop above).


Tool Reference

The server exposes 125+ tools across 15 categories. Destructive operations (delete, bulk-mark) require confirmed=true.

Libraries

Tool Description
library_list List all libraries with type, item count, and last scan time
library_scan Trigger a full or partial path scan
library_refresh_metadata Refresh metadata from agents for all items
library_cancel_scan Cancel an in-progress scan
library_get_genres List all genres present in a library
library_get_years List all release years present
library_get_studios List all studios present
library_get_directors List all directors present
library_empty_trash Permanently remove deleted items from trash
library_create Create a new library section
library_delete Permanently delete a library (confirmed=true)
library_update Rename, change agent/language, or add/remove folder locations
library_settings_get Read advanced settings (thumbnail gen, intro detection, etc.)
library_settings_set Update advanced library settings

Movies

Tool Description
movie_list List movies with filtering by genre, year, resolution, watched status
movie_recently_added Movies added most recently
movie_recently_viewed Recently played movies
movie_on_deck In-progress / resume-watching movies
movie_get Full details including cast, GUIDs, media info
movie_search Search by title
movie_find_candidates Find correct metadata match candidates
movie_apply_match Apply a metadata match by GUID
movie_update_metadata Edit title, sort title, year, summary, studio, rating, etc.
movie_delete Delete a movie (confirmed=true)
movie_missing_posters Find all movies without poster artwork
movie_optimize Queue a pre-transcoded optimized version for a device target
movie_merge Merge two separate items into one multi-version item
movie_split_media Split a multi-version item back into separate items
movie_list_merged List all items with more than one media file attached
movie_list_unmatched List items with no external metadata agent match

TV Shows

Tool Description
show_list List shows with metadata summary
show_get Full details including season/episode counts, cast
show_seasons List seasons with episode counts and watch status
show_episodes List episodes for a season
show_recently_added Recently added episodes
show_on_deck Next episodes to watch
show_find_candidates Find correct metadata match candidates for a show
show_apply_match Apply a metadata match by GUID
show_update_metadata Edit metadata on a show, season, or episode
show_delete Delete a show, season, or episode (confirmed=true)

Artwork

Tool Description
artwork_get_posters List all poster options (online + local) with selection state
artwork_get_available Same as above but also shows provider info for browsing
artwork_set_poster_url Set poster by downloading from a URL
artwork_set_poster_plex Select a poster from available options by index
artwork_upload_poster Upload a poster from a local file path on the server
artwork_lock_poster Lock poster so metadata refreshes cannot override it
artwork_get_backgrounds List available background/art images
artwork_set_background_url Set background art from a URL
artwork_set_background_plex Select a background by index
artwork_get_banners List available banner images (TV shows)
artwork_set_banner_url Set a banner from a URL
artwork_get_themes List available theme music (TV shows)

Collections

Tool Description
collection_list List all collections in a library
collection_get Get collection details and item list
collection_create Create a new collection
collection_delete Delete a collection (confirmed=true)
collection_add_items Add items to an existing collection (confirmed=true for 10+)
collection_remove_items Remove items from a collection (confirmed=true for 10+)
collection_set_poster Set a collection poster from a URL
collection_set_sort_order Set sort order: release, alpha, or custom

Playlists

Tool Description
playlist_list List all playlists
playlist_get Get playlist details and items
playlist_create Create a playlist from titles or rating keys
playlist_delete Delete a playlist (confirmed=true)
playlist_add_items Add items to a playlist
playlist_remove_items Remove items from a playlist

Sessions & Playback

Tool Description
session_list List active playback sessions
session_transcode_list List active transcoding sessions
session_terminate Stop a playback session
session_terminate_transcode Stop a transcode job
session_history Recent play history
playback_clients List available Plex clients
playback_play Resume playback on a client
playback_pause Pause playback
playback_stop Stop playback
playback_seek Seek to a position
playback_start_media Start playing a specific item on a client
playback_skip_next Skip to next item
playback_skip_prev Skip to previous item
playback_set_volume Set volume on a client

Watch State

Tool Description
watch_mark_watched Mark an item as watched (confirmed=true for 10+ episodes)
watch_mark_unwatched Mark an item as unwatched (confirmed=true for 10+)
watch_set_rating Set a star rating (0–10)
watch_get_status Get watch status, view count, and ratings
watch_bulk_mark_watched Mark entire library or collection as watched (confirmed=true)
watch_bulk_mark_unwatched Mark entire library or collection as unwatched (confirmed=true)

Users & Sharing

Tool Description
user_list List all managed users and home users
user_get Get details for a specific user
user_watch_history Get a user's watch history
user_statistics Playback statistics for a user
user_share_library Share a library with a Plex user
user_unshare_library Remove a user's access to a library

Discovery

Tool Description
discovery_hubs Get the home screen hubs (On Deck, Recently Added, etc.)
discovery_on_deck On Deck items across all libraries
discovery_recently_added Recently added content across all libraries
discovery_continue_watching Items with a resume position
discovery_search Full-text search across all libraries

Music

Tool Description
music_list_artists List artists in a music library
music_list_albums List albums for an artist
music_list_tracks List tracks for an album
music_get_artist Full artist details
music_get_album Full album details including tracks
music_search Search within a music library
music_update_metadata Edit artist or album metadata
music_fix_match Find correct metadata match for an artist or album
music_apply_match Apply a metadata match by GUID

Server Admin

Tool Description
server_identity Server name, version, machine ID
server_capabilities Feature flags and enabled capabilities
server_preferences Read all server preferences
server_set_preference Update a server preference
server_check_updates Check for available Plex updates
server_apply_update Apply a pending update
server_activity_log Recent server activity
server_transient_token Generate a short-lived access token
server_statistics Bandwidth and media statistics

Maintenance

Tool Description
maintenance_empty_all_trash Empty trash on all libraries (confirmed=true)
maintenance_optimize_database Run database VACUUM and ANALYZE
maintenance_clean_bundles Remove orphaned metadata bundle files
maintenance_empty_codecs Clear the codec cache (confirmed=true)
maintenance_download_logs Download diagnostics log archive to disk
maintenance_check_orphaned Find items whose files no longer exist on disk
maintenance_library_info Storage and metadata statistics for a library
maintenance_server_logs_tail Recent log lines filtered by level and component
maintenance_library_health Combined unmatched / merged / orphaned check

Sync

Tool Description
plex_sync Copy sort titles, posters, watch state, and collections from a source Plex server to the connected one. Matches items by GUID across both legacy and modern agent formats. Supports dry_run=true to preview changes.

Known Quirks

Git ssh.exe vs Windows OpenSSH Claude Desktop on Windows must use the SSH binary from Git for Windows, not the built-in Windows OpenSSH. Point command to C:\Program Files\Git\usr\bin\ssh.exe. The built-in version at C:\Windows\System32\OpenSSH\ssh.exe often fails silently when Claude Desktop reads the MCP stream from its stdout.

confirmed=true on destructive tools Any tool that deletes items, empties trash, or bulk-modifies many records requires the confirmed parameter set to true. This prevents accidental bulk operations when Claude is exploring or describing what it would do. Always ask Claude to preview first, then confirm.

Poster lock behavior When you upload a custom poster or select a specific one via the artwork tools, the server locks the thumb field so scheduled metadata refreshes cannot overwrite it. To allow Plex to choose the poster again, use movie_update_metadata or the Plex web UI to unlock the field.

plex_sync dry run Always run plex_sync with dry_run=true first. The summary shows every item that would be changed and every GUID that didn't match. Unmatched items usually indicate the source has legacy agent GUIDs that need the mapping table extended — open an issue with the unmatched GUID strings.


License

AGPL-3.0 — free to use and modify, but if you deploy this as a service you must release your modifications under the same license.

推荐服务器

Baidu Map

Baidu Map

百度地图核心API现已全面兼容MCP协议,是国内首家兼容MCP协议的地图服务商。

官方
精选
JavaScript
Playwright MCP Server

Playwright MCP Server

一个模型上下文协议服务器,它使大型语言模型能够通过结构化的可访问性快照与网页进行交互,而无需视觉模型或屏幕截图。

官方
精选
TypeScript
Magic Component Platform (MCP)

Magic Component Platform (MCP)

一个由人工智能驱动的工具,可以从自然语言描述生成现代化的用户界面组件,并与流行的集成开发环境(IDE)集成,从而简化用户界面开发流程。

官方
精选
本地
TypeScript
Audiense Insights MCP Server

Audiense Insights MCP Server

通过模型上下文协议启用与 Audiense Insights 账户的交互,从而促进营销洞察和受众数据的提取和分析,包括人口统计信息、行为和影响者互动。

官方
精选
本地
TypeScript
VeyraX

VeyraX

一个单一的 MCP 工具,连接你所有喜爱的工具:Gmail、日历以及其他 40 多个工具。

官方
精选
本地
graphlit-mcp-server

graphlit-mcp-server

模型上下文协议 (MCP) 服务器实现了 MCP 客户端与 Graphlit 服务之间的集成。 除了网络爬取之外,还可以将任何内容(从 Slack 到 Gmail 再到播客订阅源)导入到 Graphlit 项目中,然后从 MCP 客户端检索相关内容。

官方
精选
TypeScript
Kagi MCP Server

Kagi MCP Server

一个 MCP 服务器,集成了 Kagi 搜索功能和 Claude AI,使 Claude 能够在回答需要最新信息的问题时执行实时网络搜索。

官方
精选
Python
e2b-mcp-server

e2b-mcp-server

使用 MCP 通过 e2b 运行代码。

官方
精选
Neon MCP Server

Neon MCP Server

用于与 Neon 管理 API 和数据库交互的 MCP 服务器

官方
精选
Exa MCP Server

Exa MCP Server

模型上下文协议(MCP)服务器允许像 Claude 这样的 AI 助手使用 Exa AI 搜索 API 进行网络搜索。这种设置允许 AI 模型以安全和受控的方式获取实时的网络信息。

官方
精选