Plex MCP サーバー
これはPythonベースのMCPサーバーで、Plex Media Server APIと統合して映画の検索やプレイリストの管理を行うことができます。PlexAPIライブラリを使用することで、Plexサーバーとのシームレスな連携が可能です。
スクリーンショット
Plex MCP サーバーの動作例をいくつか示します。
1. Plexライブラリで監督別に映画を探す
監督名を指定して、Plexライブラリ内の映画を検索します。例えば、「アルフレッド・ヒッチコック」を検索すると、ライブラリ内の彼の映画のリストが表示されます。

2. 監督の行方不明の映画を探す
Plexライブラリにない特定の監督の映画を特定します。これにより、コレクションの欠落箇所を発見するのに役立ちます。

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

Related MCP server: SerpApi MCP Server
設定
前提条件
Python 3.8以上
uvパッケージマネージャーAPIアクセスを備えたPlexメディアサーバー
インストール
Smithery経由でインストール
Smithery経由で Claude Desktop 用の Plex Media Server 統合を自動的にインストールするには:
手動でインストールする
このリポジトリをクローンします:
git clone <repository-url> cd plex-mcpuvを使用して依存関係をインストールします。uv venv source .venv/bin/activate uv syncPlex サーバーの環境変数を設定します。
PLEX_TOKEN: Plex認証トークンPLEX_SERVER_URL: PlexサーバーのURL(例: http ://192.168.1.100:32400)
Plexトークンを見つける
Plex トークンは次の方法で見つけることができます:
Plexウェブアプリにサインイン
開発者ツールを開く
コンソールタブで以下を貼り付けて実行します:
window.localStorage.getItem('myPlexAccessToken')
クロードとの使用
Claude アプリに次の構成を追加します。
利用可能なコマンド
Plex MCP サーバーは次のコマンドを公開します:
指示 | 説明 | OpenAPIリファレンス |
| ライブラリ内の映画をさまざまなフィルター (タイトル、監督、ジャンルなど) で検索します。結果の数を制御するための |
|
| 特定の映画に関する詳細情報を取得します。 |
|
| 特定の映画のジャンルを取得します。 |
|
| Plex サーバー上のすべてのプレイリストを一覧表示します。 |
|
| 特定のプレイリスト内のアイテムを取得します。 |
|
| 指定した映画で新しいプレイリストを作成します。 |
|
| Plex サーバーからプレイリストを削除します。 |
|
| 既存のプレイリストに映画を追加します。 |
|
| ライブラリから最近追加された映画を取得します。 |
|
テストの実行
このプロジェクトには単体テストと統合テストの両方が含まれています。各テストを実行するには、以下の手順に従ってください。
ユニットテスト
ユニット テストでは、ダミー データを使用して、ライブ Plex サーバーを必要とせずに各モジュールの機能を検証します。
すべてのユニットテストを実行するには:
統合テスト
統合テストは、.env ファイルで定義された環境変数を使用して、ライブ Plex サーバーに対して実行されます。まず、プロジェクトルートに Plex の設定を記述した .env ファイルを作成します。
統合テストには統合マーカーが付いています。統合テストのみを実行するには、以下の手順を実行してください。
Plex サーバーへの接続に問題がある場合は、トラブルシューティングのために統合テストを実行してみてください。
コードスタイルと規約
モジュール構造:
インポート、ログ設定、ユーティリティ関数、クラス定義、グローバルヘルパー、ツールメソッド、およびメイン実行 (if __name__ == "__main__":によって保護される) には、明確なセクション ヘッダーを使用します。ネーミング:
クラスにはCamelCase、関数、変数、フィクスチャにはlower_snake_caseを使用してください。テストでは、組み込みフィクスチャ(例:monkeypatch)をカスタムフィクスチャの前に記述してください。ドキュメントとコメント:
すべてのモジュール、クラス、関数に簡潔な docstring を含め、複雑なロジックにはインライン コメントを追加します。エラー処理とログ記録:
一貫したエラー メッセージ (プレフィックス「ERROR:」) と明示的な例外処理を備えた Python のloggingモジュールを使用します。非同期パターン:
I/O バウンド関数を async として定義し、asyncio.to_thread()を使用してブロッキング操作を処理します。