Skip to main content
Glama

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 統合を自動的にインストールするには:

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_TOKEN : Plex認証トークン

    • PLEX_SERVER_URL : PlexサーバーのURL(例: http ://192.168.1.100:32400)

Plexトークンを見つける

Plex トークンは次の方法で見つけることができます:

  • Plexウェブアプリにサインイン

  • 開発者ツールを開く

  • コンソールタブで以下を貼り付けて実行します:

    window.localStorage.getItem('myPlexAccessToken')

クロードとの使用

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_movies

ライブラリ内の映画をさまざまなフィルター (タイトル、監督、ジャンルなど) で検索します。結果の数を制御するためのlimitパラメータもサポートされています。

/library/sections/{sectionKey}/search

get_movie_details

特定の映画に関する詳細情報を取得します。

/library/metadata/{ratingKey}

get_movie_genres

特定の映画のジャンルを取得します。

/library/sections/{sectionKey}/genre

list_playlists

Plex サーバー上のすべてのプレイリストを一覧表示します。

/playlists

get_playlist_items

特定のプレイリスト内のアイテムを取得します。

/playlists/{playlistID}/items

create_playlist

指定した映画で新しいプレイリストを作成します。

/playlists

delete_playlist

Plex サーバーからプレイリストを削除します。

/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

統合テストには統合マーカーが付いています。統合テストのみを実行するには、以下の手順を実行してください。

uv run pytest -m integration

Plex サーバーへの接続に問題がある場合は、トラブルシューティングのために統合テストを実行してみてください。

コードスタイルと規約

  • モジュール構造:
    インポート、ログ設定、ユーティリティ関数、クラス定義、グローバルヘルパー、ツールメソッド、およびメイン実行 ( if __name__ == "__main__":によって保護される) には、明確なセクション ヘッダーを使用します。

  • ネーミング:
    クラスにはCamelCase、関数、変数、フィクスチャにはlower_snake_caseを使用してください。テストでは、組み込みフィクスチャ(例: monkeypatch )をカスタムフィクスチャの前に記述してください。

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

  • エラー処理とログ記録:
    一貫したエラー メッセージ (プレフィックス「ERROR:」) と明示的な例外処理を備えた Python のloggingモジュールを使用します。

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

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/djbriane/plex-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server