Skip to main content

A MCP server to allow LLM's to interact with your plex server

Project description

🎬 Plex MCP Server

A Model Context Protocol (MCP) server that enables AI assistants to interact with your Plex Media Server! 🚀

✨ Features

🎥 Movies

  • Search movies by title, genre, year, or rating
  • Browse recently added movies
  • Get detailed movie info including cast, directors, and ratings
  • Filter by year ranges and rating criteria

🎵 Music

  • Search music tracks and artists
  • Create and manage playlists
  • Get random tracks by decade for discovery
  • Browse music library information

📺 TV Shows

  • Search TV shows and episodes
  • Browse episodes by season
  • Get detailed episode information
  • Find recently added shows

🚀 Quick Start

Prerequisites

  • Python 3.12+
  • A running Plex Media Server
  • Plex authentication token

Installation

# Clone the repository
git clone https://github.com/your-username/plex-mcp.git
cd plex-mcp

# Install dependencies
pip install -e .

Configuration

Set up your Plex server credentials:

export PLEX_BASEURL="http://localhost:32400"  # Your Plex server URL
export PLEX_TOKEN="your-plex-token-here"      # Your Plex token

Finding your Plex token:

  1. Go to your Plex server web interface
  2. Navigate to Settings → Network
  3. Look for "Plex Token" or use browser dev tools to find the X-Plex-Token header

Running the Server

plex-mcp

MCP Server Configuration

To use this server with an MCP client (like Cursor), add this configuration to your MCP settings:

{
  "mcpServers": {
    "plex-mcp": {
      "command": "uv",
      "args": [
        "run",
        "plex-mcp",
        "--baseurl",
        "<PLEX_BASEURL>",
        "--token",
        "<PLEX_TOKEN>"
      ]
    }
  }
}

Replace <PLEX_BASEURL> / <PLEX_TOKEN> with your actual Plex server URL and authentication token.

🎯 Sample Use Cases

🎬 Movie Discovery

"Find all sci-fi movies from the 80s with ratings above 7.0"
"Show me recently added action movies"
"What are the highest rated movies in my library?"

🎵 Music Curation

"Create a playlist of random 90s rock songs"
"Find all tracks by The Beatles"
"Show me my most recently added music"

📺 TV Show Management

"List all episodes of Breaking Bad season 1"
"Find shows I haven't watched yet"
"What's the latest episode of The Office?"

🔍 Smart Search

"Find movies similar to Inception"
"Show me horror movies from the last 5 years"
"Create a workout playlist with high-energy songs"

🛠️ Available Tools

Movies 🎥

  • search_movies - Search movies by title
  • get_movies_library - Get library information
  • get_movie_info - Detailed movie information
  • search_movies_by_genre - Filter by genre
  • search_movies_by_year - Filter by year/range
  • get_recently_added_movies - Latest additions
  • get_movies_by_rating - Filter by rating

Music 🎵

  • search_music_tracks - Search music library
  • get_music_library - Library information
  • create_music_playlist - Create playlists
  • get_random_tracks_by_decade - Random discovery
  • search_tracks_by_artist - Artist-specific search
  • get_playlist_info - Playlist details
  • delete_playlist - Remove playlists

TV Shows 📺

  • search_tv_shows - Search TV library
  • get_tv_shows_library - Library information
  • get_show_episodes - Episode listings
  • get_episode_info - Episode details
  • search_episodes_by_show - Show-specific episodes
  • get_recently_added_shows - Latest additions

🔧 Development

Setup Development Environment

# Install development dependencies
pip install -e ".[dev]"

# Run linting
uv run ruff check --fix && uv run ruff format

# Run tests
pytest

Project Structure

src/plex_mcp/
├── client/           # Plex API client
├── sections/         # Media type handlers
│   ├── movies.py     # Movie operations
│   ├── music.py      # Music operations
│   └── tv_shows.py   # TV show operations
└── __init__.py       # Main server entry point

🤝 Contributing

  1. Fork the repository
  2. Create a feature branch (git checkout -b feature/amazing-feature)
  3. Commit your changes (git commit -m 'Add amazing feature')
  4. Push to the branch (git push origin feature/amazing-feature)
  5. Open a Pull Request

📝 License

This project is licensed under the MIT License - see the LICENSE file for details.

🙏 Acknowledgments

  • Built with FastMCP framework
  • Uses PlexAPI for Plex integration
  • Inspired by the Model Context Protocol specification

Happy streaming! 🎬🎵📺

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

plex_mcp-0.1.0.tar.gz (304.5 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

plex_mcp-0.1.0-py3-none-any.whl (19.4 kB view details)

Uploaded Python 3

File details

Details for the file plex_mcp-0.1.0.tar.gz.

File metadata

  • Download URL: plex_mcp-0.1.0.tar.gz
  • Upload date:
  • Size: 304.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for plex_mcp-0.1.0.tar.gz
Algorithm Hash digest
SHA256 4066b5830575c772bfb188eb27f5b688661ea7d0f08e6ec0a1918ac4cc3dc86d
MD5 ee460965b0cc227fa2929f3878c7bd73
BLAKE2b-256 a8efcdc50e9f34a1bd4f7453f02fd637c3fef1c74dd95ca4f91dceb46c823b88

See more details on using hashes here.

Provenance

The following attestation bundles were made for plex_mcp-0.1.0.tar.gz:

Publisher: publish.yml on knguyen1/plex-mcp

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file plex_mcp-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: plex_mcp-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 19.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for plex_mcp-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 6ffcd68c1c2effa84db5742e9069d2370eca4277a5d3f9355ac94a8ec0f03a7b
MD5 977c75cdb4f151a66497d43495dd842b
BLAKE2b-256 8489aa3a8f3c0d5aa9bf55b468f162abaed7e7688b9a0519d51256c04746b059

See more details on using hashes here.

Provenance

The following attestation bundles were made for plex_mcp-0.1.0-py3-none-any.whl:

Publisher: publish.yml on knguyen1/plex-mcp

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page