Plex MCP Server
# Plex MCP Server
[](https://smithery.ai/server/@vyb1ng/plex-mcp)
Search and manage your Plex media libraries with Claude. Actively developed by Claude and a nerdy human who mostly uses Plex for auditory delights and wanted to see how much could be accomplished without knowing much about what they're doing. Results may vary, but probably in a good way.
## Quick Start
### Install via Smithery (Recommended)
```bash
npx -y @smithery/cli install @vyb1ng/plex-mcp --client claude
```
### Manual Setup for Claude Desktop
Add to your Claude Desktop MCP settings:
```json
{
"mcpServers": {
"plex": {
"command": "npx",
"args": ["plex-mcp"],
"env": {
"PLEX_URL": "http://your-plex-server:32400"
}
}
}
}
```
## Authentication
**Option 1: OAuth (Recommended)**
- Use the `authenticate_plex` tool to get a login URL
- Sign in through your browser
**Option 2: Static Token**
- Add `"PLEX_TOKEN": "your_token"` to the env section
- Get your token from [Plex Support](https://support.plex.tv/articles/204059436-finding-an-authentication-token-x-plex-token/)
**Note:** Replace `your-plex-server:32400` with your actual Plex server address and port.
## HTTP Debug Logging
For troubleshooting connection issues, you can enable comprehensive HTTP request/response logging:
```json
{
"mcpServers": {
"plex": {
"command": "npx",
"args": ["plex-mcp"],
"env": {
"PLEX_URL": "http://your-plex-server:32400",
"MCP_HTTP_DEBUG": "true"
}
}
}
}
```
When `MCP_HTTP_DEBUG=true`, the server will log:
- **Request Details**: Method, URL, headers, parameters, timing
- **Response Details**: Status codes, headers, response size, duration
- **Error Diagnostics**: Connection details, TLS/SSL certificate info, troubleshooting suggestions
- **Performance Metrics**: DNS lookup, TCP connection, TLS handshake timing
- **Security**: All sensitive headers (tokens, auth) are automatically redacted
All logs are structured JSON with correlation IDs for request/response tracking.
## What You Can Do
**Search & Browse**
- Search movies, TV shows, music, and other content
- Browse libraries and collections
- View recently added content and watch history
**Music Discovery**
- Natural language music discovery ("songs from the 90s", "rock bands I haven't heard")
- Smart recommendations based on listening patterns
- Intelligent randomization for variety and surprise
- Similar artist discovery and genre exploration
**Playlists**
- Create and manage playlists
- Add items to existing playlists
- Browse playlist contents
**Media Info**
- Get detailed media information (codecs, bitrates, file sizes)
- Check watch status and progress
- View library statistics and listening stats
**Resources (Data Access)**
- Access structured data via URI: `plex://libraries`, `plex://recent`, `plex://playlists`
- Library-specific data: `plex://library/{id}`, `plex://library/{id}/recent`
- Server statistics and connection status
- JSON-formatted data for analysis and automation
**Prompts (AI Assistance)**
- **playlist_description**: Generate creative playlist descriptions
- **content_recommendation**: Get personalized content recommendations
- **smart_playlist_rules**: Create smart playlist criteria and rules
- **media_analysis**: Analyze library content and patterns
- **server_troubleshooting**: Diagnose server connection issues
## Status
**✅ Working:** Search, browse, playlists, media info, library stats, watch history, collections, music discovery, resources, prompts
**❌ Disabled:** Smart playlists (filter logic broken)
**🚧 Planned:** Remote server browsing
## Development
Want to contribute? Point Claude at your local version:
```json
{
"mcpServers": {
"plex-dev": {
"command": "node",
"args": ["/path/to/plex-mcp/index.js"],
"env": {
"PLEX_URL": "http://your-plex-server:32400"
}
}
}
}
```
It works for us. If it doesn't work for you, well we tried. Hit us up, we don't bite. Much.
TDQS
Scored across 22 tools
Most tools have clearly distinct purposes, such as playlist management vs library browsing vs authentication. However, there is minor potential overlap between browse_libraries and browse_library, and between browse_collection and get_collections, but descriptions help disambiguate.
Tool names mostly follow a verb_noun pattern, but there are inconsistencies: browse_libraries vs browse_library (plural vs singular), some use 'get' and others 'browse' for similar operations, and validate_llm_response uses a different verb.
22 tools is on the higher side but reasonable for a comprehensive Plex media server covering authentication, browsing, playlists, collections, stats, and search. Slightly over the ideal range but still well-scoped.
The tool set covers many common Plex operations but misses some expected ones like updating playlists, marking media as watched, or editing media info. The presence of validate_llm_response seems out of place.