mcpField
P
Plex MCP Server

Plex MCP Server

ローカル
github.com/djbrianeゲーム・エンタメ780 週間前に更新

Plex MCP Server について

Plex MCP ServerはPlex Media Serverに接続し、MCPツールから映画ライブラリの検索や作品情報の確認、プレイリスト管理を行えます。

主な機能

  1. 01条件を指定した映画検索
  2. 02作品の詳細とジャンルの取得
  3. 03プレイリストの一覧と内容確認
  4. 04プレイリストの作成・編集・削除
  5. 05最近追加された映画の取得

活用シーン

  1. 01監督やジャンルでライブラリ内の映画を探す
  2. 02監督作品のうち未所蔵の映画を確認する
  3. 03検索結果をプレイリストにまとめる

MCP 対応

MCPクライアントに、Plexの映画検索、メタデータ取得、最近追加された作品の取得、プレイリスト操作ツールを公開します。

設定

ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。

mcp.json · 共通設定
{
"mcpServers": {
"plex": {
"command": "npx",
"args": [
"-y",
"@smithery/cli"
]
}
}
}
起動コマンドnpx -y @smithery/cli

ローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。

パッケージ
npm@smithery/cli

ツール

ツール一覧はまだ取得されていません

ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。

詳細

Plex MCP サーバー

smithery badge

これは、Plex Media Server API と連携して映画を検索し、プレイリストを管理する Python ベースの MCP サーバーです。PlexAPI ライブラリを使用して、お使いの Plex サーバーとスムーズに連携します。

スクリーンショット

Plex MCP サーバーの動作例をいくつか紹介します。

1. Plex ライブラリから監督名で映画を検索する

監督名を指定して、Plex ライブラリ内の映画を検索します。たとえば、「Alfred Hitchcock」を検索すると、ライブラリにある彼の映画の一覧が表示されます。

監督名で映画を検索


2. 監督の映画のうちライブラリにないものを探す

特定の監督の映画のうち、Plex ライブラリにないものを特定します。コレクションの不足を見つけるのに役立ちます。

ライブラリにない映画を検索


3. Plex ライブラリにプレイリストを作成する

検索で見つかった映画を使って、Plex ライブラリに新しいプレイリストを作成します。これにより、ライブラリを効率的に整理できます。

プレイリストを作成

セットアップ

前提条件
  • Python 3.8 以降
  • uv パッケージマネージャー
  • API アクセスが可能な Plex Media Server
インストール
Smithery 経由でインストールする

Smithery 経由で Plex Media Server Integration for Claude Desktop を自動的にインストールするには、次の手順に従います。

npx -y @smithery/cli install @djbriane/plex-mcp --client claude
手動でインストールする
  1. このリポジトリをクローンします。

    git clone <repository-url>
    cd plex-mcp
    
  2. uv で依存関係をインストールします。

    uv venv
    source .venv/bin/activate
    uv sync
    
  3. Plex サーバーの環境変数を設定します。

Plex トークンを確認する

Plex トークンは次の手順で確認できます。

  • Plex Web App にサインインします
  • 開発者ツールを開きます
  • コンソールタブで、次のコードを貼り付けて実行します。
    window.localStorage.getItem('myPlexAccessToken')
    

Claude での使用方法

次の設定を Claude アプリに追加します。

{
    "mcpServers": {
        "plex": {
            "command": "uv",
            "args": [
                "--directory",
                "FULL_PATH_TO_PROJECT",
                "run",
                "src/plex_mcp/plex_mcp.py"
            ],
            "env": {
                "PLEX_TOKEN": "YOUR_PLEX_TOKEN",
                "PLEX_SERVER_URL": "YOUR_PLEX_SERVER_URL"
            }
        }
    }
}

利用可能なコマンド

Plex MCP サーバーでは、次のコマンドを利用できます。

コマンド説明OpenAPI リファレンス
search_movieslimit パラメーターで結果数を指定して、タイトル、監督、ジャンルなどのさまざまな条件でライブラリ内の映画を検索します。/library/sections/{sectionKey}/search
get_movie_details特定の映画の詳細情報を取得します。/library/metadata/{ratingKey}
get_movie_genres特定の映画のジャンルを取得します。/library/sections/{sectionKey}/genre
list_playlistsPlex サーバー上のすべてのプレイリストを一覧表示します。/playlists
get_playlist_items特定のプレイリスト内のアイテムを取得します。/playlists/{playlistID}/items
create_playlist指定した映画で新しいプレイリストを作成します。/playlists
delete_playlistPlex サーバーからプレイリストを削除します。/playlists/{playlistID}
add_to_playlist既存のプレイリストに映画を追加します。/playlists/{playlistID}/items
recent_moviesライブラリに最近追加された映画を取得します。/library/recentlyAdded

テストの実行

このプロジェクトには、ユニットテストと統合テストの両方が含まれています。それぞれのテストを実行するには、次の手順に従います。

ユニットテスト

ユニットテストでは、稼働中の Plex サーバーを必要とせず、ダミーデータを使って各モジュールの機能を検証します。

すべてのユニットテストを実行するには:

uv run pytest
統合テスト

統合テストでは、.env ファイルで定義された環境変数を使って、稼働中の Plex サーバーに対してテストを実行します。まず、プロジェクトのルートに Plex の設定を記述した .env ファイルを作成します。

PLEX_SERVER_URL=https://your-plex-server-url:32400
PLEX_TOKEN=yourPlexTokenHere

統合テストには integration マーカーが付いています。統合テストのみを実行するには:

uv run pytest -m integration

Plex サーバーへの接続に問題がある場合は、問題の特定に役立てるため、統合テストを実行してみてください。

コードスタイルと規約

  • モジュール構成:
    インポート、ロギングの設定、ユーティリティ関数、クラス定義、グローバルヘルパー、ツールメソッド、メイン処理(if __name__ == "__main__": でガード)の各セクションには、分かりやすい見出しを使用します。

  • 命名:
    クラスには CamelCase を、関数、変数、フィクスチャには lower_snake_case を使用します。テストでは、組み込みフィクスチャ(例:monkeypatch)をカスタムフィクスチャより先に記述します。

  • ドキュメントとコメント:
    すべてのモジュール、クラス、関数に簡潔な docstring を記述し、複雑なロジックにはインラインコメントを付けます。

  • エラー処理とロギング:
    Python の logging モジュールを使用し、「ERROR:」を先頭に付けた一貫性のあるエラーメッセージと、明示的な例外処理を用います。

  • 非同期処理のパターン:
    I/O バウンドな関数は async として定義し、ブロッキング処理には asyncio.to_thread() を使用します。

コメント

MCP は初めてですか?

プロトコルの概要から最初のサーバーの導入まで、よくある疑問にまとめて答えます。

AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。