ต้นแบบ · รุ่นทดลอง: มีทุก server ในทะเบียนทางการ อัปเดตทุก 30 นาที เข้าสู่ระบบด้วย Google เพื่อเขียนรีวิวได้แล้ว
PopNx MCPที่รวม MCP สำหรับคนใช้ AI · อธิบายเป็นภาษาคน

Plex MCP

โดย dustinhansenรุ่น 0.10.0i★ 0iรันบนเครื่อง
ชื่อใน registryio.github.dustinhansen/plex-mcp

วิธีติดตั้ง

ภาพรวม

คำอธิบายจากผู้ทำ (ภาษาอังกฤษตามต้นฉบับ)

Full-library Plex access for AI agents: watched state, all-user watch history, safe curation writes.

ใช้ทำอะไรได้

ตัวนี้ยังไม่ได้เรียบเรียงเป็นภาษาไทย ด้านล่างคือข้อเท็จจริงที่เราอ่านจาก registry

  • การเชื่อมต่อ: รันบนเครื่อง
  • ช่องทาง (transport): stdio, Streamable HTTP
  • หมวด: อื่น ๆ
  • ต้องใส่ค่าเหล่านี้: PLEX_URL, PLEX_TOKEN, TAUTULLI_API_KEY

ติดตั้ง

เลือกโปรแกรม AI ที่คุณใช้ แล้วคัดลอกค่าตั้งไปวาง

ผลตรวจผ่าน 3/3 · ทำงานบนเครื่องคุณ

ขั้นแรก: คุณใช้ AI ตัวไหน

เลือกแอปที่คุณใช้ ขั้นตอนจะขึ้นด้านล่าง

ต่อกับ Claude ได้ แต่ต้องเตรียมก่อน

ต้องมีคีย์ของ Plex MCP (สมัครที่เว็บของผู้ทำ อาจมีค่าใช้จ่าย) · ต้องลง Node.js ในเครื่องก่อน (ทำครั้งเดียว) · ใช้ได้เฉพาะแอป Claude บนคอม (Windows หรือ Mac) ไม่ใช่บนเว็บหรือมือถือ

  1. ลง Node.js ในเครื่อง

    ทำครั้งเดียว ใช้ได้กับทุกตัวที่ต้องใช้ Node.js

    เปิดหน้าดาวน์โหลด Node.js ↗

  2. สมัครและสร้างคีย์ของ Plex MCP

    เปิดเว็บของผู้ทำ สมัครบัญชีแล้วสร้างคีย์ (API key) เก็บไว้ ใช้ในขั้นถัดไป อาจมีค่าใช้จ่าย

    วิธีขอคีย์อยู่ใน README ของผู้ทำด้านล่าง

  3. เปิดไฟล์ตั้งค่าของแอป Claude บนคอม

    SettingsDeveloperEdit Config

  4. วางค่าตั้งนี้แล้วบันทึกไฟล์

    {
      "mcpServers": {
        "plex": {
          "command": "npx",
          "args": [
            "-y",
            "@dustinhansen/plex-mcp"
          ],
          "env": {
            "PLEX_URL": "ใส่ค่าของคุณ",
            "PLEX_TOKEN": "ใส่ค่าของคุณ",
            "PLEX_ALLOW_PLAYBACK": "ใส่ค่าของคุณ",
            "PLEX_READ_ONLY": "ใส่ค่าของคุณ",
            "TAUTULLI_URL": "ใส่ค่าของคุณ",
            "TAUTULLI_API_KEY": "ใส่ค่าของคุณ"
          }
        }
      }
    }

    วางคีย์ในช่องของแอปเท่านั้น อย่าวางในแชตหรือส่งให้ใคร

  5. ปิดแอป Claude แล้วเปิดใหม่

  6. ลองเลย

    ใช้ Plex MCP บอกหน่อยว่าทำอะไรให้ฉันได้บ้าง แล้วลองทำให้ดูหนึ่งอย่าง

    ✓ ถ้า Claude บอกว่ากำลังใช้ Plex MCP หรือมีชื่อเครื่องมือของ Plex MCP ขึ้นในคำตอบ แปลว่าต่อสำเร็จ

ชื่อเมนูตรวจกับหน้าช่วยเหลือของ Anthropic เมื่อ 11 พ.ย. 2569 · หน้าจอของคุณอาจต่างเล็กน้อยตามรุ่นของแอป

ChatGPT ยังต่อ Plex MCP ไม่ได้

Plex MCP ต้องติดตั้งในเครื่องคุณ แต่ ChatGPT ต่อได้เฉพาะตัวที่ทำงานบนเว็บ

คุณทำแบบนี้แทนได้

ก · ใช้แอปที่ต่อ Plex MCP ได้

  • ต้องมีคีย์ของ Plex MCP (สมัครที่เว็บของผู้ทำ อาจมีค่าใช้จ่าย) · ต้องลง Node.js ในเครื่องก่อน (ทำครั้งเดียว) · ใช้ได้เฉพาะแอป Claude บนคอม (Windows หรือ Mac) ไม่ใช่บนเว็บหรือมือถือ
  • ต้องมีคีย์ของ Plex MCP (สมัครที่เว็บของผู้ทำ อาจมีค่าใช้จ่าย) · ต้องลง Node.js ในเครื่องก่อน (ทำครั้งเดียว)
  • ต้องมีคีย์ของ Plex MCP (สมัครที่เว็บของผู้ทำ อาจมีค่าใช้จ่าย) · ต้องลง Node.js ในเครื่องก่อน (ทำครั้งเดียว)
  • ต้องมีคีย์ของ Plex MCP (สมัครที่เว็บของผู้ทำ อาจมีค่าใช้จ่าย) · ต้องลง Node.js ในเครื่องก่อน (ทำครั้งเดียว)

ข · ตัวอื่นในหมวด อื่น ๆ ที่ต่อกับ ChatGPT ได้

เลือกจากตัวที่ใช้มากในหมวดเดียวกัน เฉพาะตัวที่ต่อด้วยที่อยู่ได้โดยไม่ต้องใส่คีย์

ต่อกับ Claude Code ได้ แต่ต้องเตรียมก่อน

ต้องมีคีย์ของ Plex MCP (สมัครที่เว็บของผู้ทำ อาจมีค่าใช้จ่าย) · ต้องลง Node.js ในเครื่องก่อน (ทำครั้งเดียว)

  1. ลง Node.js ในเครื่อง

    ทำครั้งเดียว ใช้ได้กับทุกตัวที่ต้องใช้ Node.js

    เปิดหน้าดาวน์โหลด Node.js ↗

  2. สมัครและสร้างคีย์ของ Plex MCP

    เปิดเว็บของผู้ทำ สมัครบัญชีแล้วสร้างคีย์ (API key) เก็บไว้ ใช้ในขั้นถัดไป อาจมีค่าใช้จ่าย

    วิธีขอคีย์อยู่ใน README ของผู้ทำด้านล่าง

  3. เปิด Terminal

    Mac: กด Command+Space พิมพ์ Terminal · Windows: เปิด PowerShell

  4. วางคำสั่งนี้แล้วกด Enter

    claude mcp add plex --env PLEX_URL='ใส่ค่าของคุณ' --env PLEX_TOKEN='ใส่ค่าของคุณ' --env PLEX_ALLOW_PLAYBACK='ใส่ค่าของคุณ' --env PLEX_READ_ONLY='ใส่ค่าของคุณ' --env TAUTULLI_URL='ใส่ค่าของคุณ' --env TAUTULLI_API_KEY='ใส่ค่าของคุณ' -- npx -y @dustinhansen/plex-mcp

    แก้ “ใส่ค่าของคุณ” เป็นคีย์ของคุณก่อนกด Enter

    วางคีย์ในช่องของแอปเท่านั้น อย่าวางในแชตหรือส่งให้ใคร

  5. พิมพ์ /mcp ใน Claude Code

    ต้องเห็น Plex MCP ในรายการและขึ้นว่าเชื่อมต่อแล้ว

  6. ลองเลย

    ใช้ Plex MCP บอกหน่อยว่าทำอะไรให้ฉันได้บ้าง แล้วลองทำให้ดูหนึ่งอย่าง

    ✓ ถ้า Claude Code บอกว่ากำลังใช้ Plex MCP หรือมีชื่อเครื่องมือของ Plex MCP ขึ้นในคำตอบ แปลว่าต่อสำเร็จ

ชื่อเมนูตรวจกับหน้าช่วยเหลือของ Anthropic เมื่อ 11 พ.ย. 2569 · หน้าจอของคุณอาจต่างเล็กน้อยตามรุ่นของแอป

ต่อกับ Cursor ได้ แต่ต้องเตรียมก่อน

ต้องมีคีย์ของ Plex MCP (สมัครที่เว็บของผู้ทำ อาจมีค่าใช้จ่าย) · ต้องลง Node.js ในเครื่องก่อน (ทำครั้งเดียว)

  1. ลง Node.js ในเครื่อง

    ทำครั้งเดียว ใช้ได้กับทุกตัวที่ต้องใช้ Node.js

    เปิดหน้าดาวน์โหลด Node.js ↗

  2. สมัครและสร้างคีย์ของ Plex MCP

    เปิดเว็บของผู้ทำ สมัครบัญชีแล้วสร้างคีย์ (API key) เก็บไว้ ใช้ในขั้นถัดไป อาจมีค่าใช้จ่าย

    วิธีขอคีย์อยู่ใน README ของผู้ทำด้านล่าง

  3. กดปุ่มนี้เพื่อเปิด Cursor

    เปิดใน Cursor

    Cursor จะถามยืนยันการติดตั้ง ให้กด Install

  4. ใส่คีย์ในช่องที่ว่างไว้

    ในค่าตั้งของ Plex MCP ช่อง PLEX_URL, PLEX_TOKEN, PLEX_ALLOW_PLAYBACK, PLEX_READ_ONLY, TAUTULLI_URL, TAUTULLI_API_KEY ยังว่าง ใส่คีย์ของคุณแล้วบันทึก

    วางคีย์ในช่องของแอปเท่านั้น อย่าวางในแชตหรือส่งให้ใคร

  5. เปิดแชตของ AI ใน Cursor โหมด Agent

  6. ลองเลย

    ใช้ Plex MCP บอกหน่อยว่าทำอะไรให้ฉันได้บ้าง แล้วลองทำให้ดูหนึ่งอย่าง

    ✓ ถ้า Cursor บอกว่ากำลังใช้ Plex MCP หรือมีชื่อเครื่องมือของ Plex MCP ขึ้นในคำตอบ แปลว่าต่อสำเร็จ

ชื่อเมนูตรวจกับหน้าช่วยเหลือของ Cursor เมื่อ 11 พ.ย. 2569 · หน้าจอของคุณอาจต่างเล็กน้อยตามรุ่นของแอป

ต่อกับ VS Code ได้ แต่ต้องเตรียมก่อน

ต้องมีคีย์ของ Plex MCP (สมัครที่เว็บของผู้ทำ อาจมีค่าใช้จ่าย) · ต้องลง Node.js ในเครื่องก่อน (ทำครั้งเดียว)

  1. ลง Node.js ในเครื่อง

    ทำครั้งเดียว ใช้ได้กับทุกตัวที่ต้องใช้ Node.js

    เปิดหน้าดาวน์โหลด Node.js ↗

  2. สมัครและสร้างคีย์ของ Plex MCP

    เปิดเว็บของผู้ทำ สมัครบัญชีแล้วสร้างคีย์ (API key) เก็บไว้ ใช้ในขั้นถัดไป อาจมีค่าใช้จ่าย

    วิธีขอคีย์อยู่ใน README ของผู้ทำด้านล่าง

  3. กดปุ่มนี้เพื่อเปิด VS Code

    เปิดใน VS Code

    VS Code จะถามยืนยันการติดตั้ง ให้กด Install

  4. ใส่คีย์ในช่องที่ว่างไว้

    ในค่าตั้งของ Plex MCP ช่อง PLEX_URL, PLEX_TOKEN, PLEX_ALLOW_PLAYBACK, PLEX_READ_ONLY, TAUTULLI_URL, TAUTULLI_API_KEY ยังว่าง ใส่คีย์ของคุณแล้วบันทึก

    วางคีย์ในช่องของแอปเท่านั้น อย่าวางในแชตหรือส่งให้ใคร

  5. เปิดแชตของ AI ใน VS Code โหมด Agent

  6. ลองเลย

    ใช้ Plex MCP บอกหน่อยว่าทำอะไรให้ฉันได้บ้าง แล้วลองทำให้ดูหนึ่งอย่าง

    ✓ ถ้า VS Code บอกว่ากำลังใช้ Plex MCP หรือมีชื่อเครื่องมือของ Plex MCP ขึ้นในคำตอบ แปลว่าต่อสำเร็จ

ชื่อเมนูตรวจกับหน้าช่วยเหลือของ VS Code เมื่อ 11 พ.ย. 2569 · หน้าจอของคุณอาจต่างเล็กน้อยตามรุ่นของแอป

โปรแกรมอื่นที่ใช้ MCP ได้ เช่น Windsurf, Zed หรือ Gemini CLI มีวิธีเพิ่มต่างกัน ดูวิธีของแต่ละตัวในหน้ารวมโปรแกรม

ดูโปรแกรมที่ใช้ MCP ทั้งหมด →

ค่าตั้งแบบไฟล์ JSON อยู่ในหัวข้อ “สำหรับคนเขียนโค้ด” ด้านล่าง

ติดตรงไหน? ถามคนที่ใช้ Plex MCP อยู่💬 พูดคุย →
สำหรับคนเขียนโค้ด: คำสั่ง Terminal และค่าตั้ง JSON

ติดตั้งในเครื่อง

Claude Code

claude mcp add plex --env PLEX_URL='ใส่ค่าของคุณ' --env PLEX_TOKEN='ใส่ค่าของคุณ' --env PLEX_ALLOW_PLAYBACK='ใส่ค่าของคุณ' --env PLEX_READ_ONLY='ใส่ค่าของคุณ' --env TAUTULLI_URL='ใส่ค่าของคุณ' --env TAUTULLI_API_KEY='ใส่ค่าของคุณ' -- npx -y @dustinhansen/plex-mcp

Claude Desktop (claude_desktop_config.json)

{
  "mcpServers": {
    "plex": {
      "command": "npx",
      "args": [
        "-y",
        "@dustinhansen/plex-mcp"
      ],
      "env": {
        "PLEX_URL": "ใส่ค่าของคุณ",
        "PLEX_TOKEN": "ใส่ค่าของคุณ",
        "PLEX_ALLOW_PLAYBACK": "ใส่ค่าของคุณ",
        "PLEX_READ_ONLY": "ใส่ค่าของคุณ",
        "TAUTULLI_URL": "ใส่ค่าของคุณ",
        "TAUTULLI_API_KEY": "ใส่ค่าของคุณ"
      }
    }
  }
}

Cursor (~/.cursor/mcp.json)

{
  "mcpServers": {
    "plex": {
      "command": "npx",
      "args": [
        "-y",
        "@dustinhansen/plex-mcp"
      ],
      "env": {
        "PLEX_URL": "ใส่ค่าของคุณ",
        "PLEX_TOKEN": "ใส่ค่าของคุณ",
        "PLEX_ALLOW_PLAYBACK": "ใส่ค่าของคุณ",
        "PLEX_READ_ONLY": "ใส่ค่าของคุณ",
        "TAUTULLI_URL": "ใส่ค่าของคุณ",
        "TAUTULLI_API_KEY": "ใส่ค่าของคุณ"
      }
    }
  }
}

VS Code (mcp.json)

{
  "servers": {
    "plex": {
      "type": "stdio",
      "command": "npx",
      "args": [
        "-y",
        "@dustinhansen/plex-mcp"
      ],
      "env": {
        "PLEX_URL": "ใส่ค่าของคุณ",
        "PLEX_TOKEN": "ใส่ค่าของคุณ",
        "PLEX_ALLOW_PLAYBACK": "ใส่ค่าของคุณ",
        "PLEX_READ_ONLY": "ใส่ค่าของคุณ",
        "TAUTULLI_URL": "ใส่ค่าของคุณ",
        "TAUTULLI_API_KEY": "ใส่ค่าของคุณ"
      }
    }
  }
}

ค่าที่ต้องใส่เอง

  • PLEX_URL จำเป็น env
    Plex server base URL, e.g. http:// :32400
  • PLEX_TOKEN ความลับ จำเป็น env
    Owner/admin X-Plex-Token (run `npx @dustinhansen/plex-mcp login`)
  • PLEX_ALLOW_PLAYBACK env
    Set to 1 to enable play-to-client tools
  • PLEX_READ_ONLY env
    Set to 1 to register no write or playback tools
  • TAUTULLI_URL env
    Optional Tautulli base URL
  • TAUTULLI_API_KEY ความลับ env
    Optional Tautulli API key

ค่าตั้งนี้สร้างจากข้อมูลใน registry ของผู้ทำ ถ้าไม่ตรงกับ README ให้เชื่อ README

สรุป

ดาวน์โหลดต่อสัปดาห์i
406/สัปดาห์
การเชื่อมต่อ
รันบนเครื่อง
ช่องทาง (transport)
stdio, streamable-http
รุ่นล่าสุดi
0.10.0
หมวดi
อื่น ๆ
ส่งเข้า registryi
8 พ.ย. 2569
แก้โค้ดล่าสุดi
8 พ.ย. 2569
ผู้ทำ
dustinhansen
แพ็กเกจ
npm: @dustinhansen/plex-mcp
oci: ghcr.io/dustinhansen/plex-mcp:v0.10.0
สถานะใน registry
ใช้งานอยู่

ใช้กับโปรแกรมไหนได้

ดูจากแบบการต่อของ server ตัวนี้ และเอกสารของผู้ทำโปรแกรมแต่ละตัว ตรวจเมื่อ 10 พ.ย. 2569

ติดตั้งบนเครื่องได้ใน

ClaudeGooseLM StudioMsty StudioCherry StudioCursorVS Code + GitHub CopilotVisual StudioWindsurf (Devin Desktop)ZedKiroClineContinueJetBrains AI AssistantClaude CodeCodex CLIGemini CLIOpenCodenodecodeWarpLibreChatRaycast

ดูโปรแกรมทั้งหมดพร้อมข้อดีข้อเสีย →

คู่มือที่เกี่ยวข้อง

ทำอะไรได้บ้าง

รันในเครื่องคุณ รายการเครื่องมือจะขึ้นในแอป AI หลังติดตั้ง

ผลตรวจเบื้องต้นi

เราตรวจจากข้อมูลที่ใครก็เปิดดูได้ ยังไม่ได้อ่านโค้ด ข้อที่ไม่เกี่ยวกับตัวนี้ไม่นับในตัวหาร · ตรวจเมื่อ 11 พ.ย. 2569

  • ✓ ผ่าน

    ตัวตนผู้ทำตรงกับ repo

    ชื่อใน registry ยืนยันด้วยบัญชี GitHub dustinhansen ซึ่งเป็นเจ้าของ repo

  • ✓ ผ่าน

    ยังมีคนดูแล

    มีการแก้โค้ดล่าสุด 3 วันที่ผ่านมา

  • ✓ ผ่าน

    มีสัญญาอนุญาต (license)

    ใช้ MIT

  • – ไม่เกี่ยว

    endpoint ตอบ

    ตัวนี้รันบนเครื่องคุณ ไม่มี endpoint บนอินเทอร์เน็ต

  • – ไม่เกี่ยว

    ล็อกอินแบบ OAuth

    ตัวนี้รันบนเครื่อง ใช้ค่าที่ตั้งในเครื่องแทน

  • … ยังไม่ตรวจ

    คำอธิบายเครื่องมือไม่มีคำสั่งแอบแฝง

    รันในเครื่องคุณ เราอ่านรายการเครื่องมือได้เฉพาะตัวที่มี endpoint บนอินเทอร์เน็ต

พูดคุย

ถาม แชร์เคล็ดลับ หรือแจ้งว่าใช้ไม่ได้ เรียงตามที่คนกดว่ามีประโยชน์

ยังไม่มีใครโพสต์ ถามหรือแชร์เป็นคนแรกได้เลย

ข้อความในส่วนนี้เขียนโดยผู้ใช้ ไม่ใช่ทีม PopNx

เข้าสู่ระบบด้วย Google เพื่อโพสต์

รีวิวจากผู้ใช้

ยังไม่มีรีวิว

เข้าสู่ระบบด้วย Google เพื่อเขียนรีวิว

เทียบกับตัวอื่นในหมวด อื่น ๆi

  • ดาวมากกว่า 0% ของอีก 19198 ตัวในหมวดนี้
  • ส่งรุ่นใหม่เข้า registry ล่าสุดกว่า 91% ของอีก 19198 ตัวในหมวดนี้
  • ผลตรวจเบื้องต้นดีกว่าหรือเท่ากับ 100% ของอีก 19198 ตัวในหมวดนี้

เทียบกับทุก server ที่ยังใช้งานในหมวดนี้ทั้งทะเบียน ดาวนับเฉพาะเมื่อผู้ลงทะเบียนเป็นเจ้าของ repo

คำถามที่พบบ่อย

Plex MCP ปลอดภัยไหม?

จากการตรวจเบื้องต้นของเรา ผ่าน 3 จาก 3 ข้อที่ตรวจได้ เรายังไม่ได้อ่านโค้ด ก่อนใส่กุญแจหรือ token ให้ดูว่า server ขอสิทธิ์อะไร และเลือกกุญแจที่ทำได้เท่าที่จำเป็น

ต้องใช้กุญแจหรือรหัสอะไรบ้าง?

ต้องใส่ค่าเหล่านี้: PLEX_URL, PLEX_TOKEN, TAUTULLI_API_KEY

ตัวนี้รันบนเครื่องหรือบนคลาวด์?

รันบนเครื่องของคุณ โปรแกรม AI จะเปิด server ขึ้นมาเองเมื่อใช้ ข้อมูลไม่ต้องผ่านเซิร์ฟเวอร์ของผู้ทำ (ยกเว้นตัวที่ไปเรียกบริการออนไลน์ต่อ)

ยังมีคนดูแลอยู่ไหม?

repo บน GitHub มีการแก้โค้ดล่าสุด 3 วันที่ผ่านมา และส่งรุ่นล่าสุด (0.10.0) เข้า registry 3 วันที่ผ่านมา

ใช้กับโปรแกรมไหนได้บ้าง?

โปรแกรมที่รองรับ MCP เช่น Claude Desktop, Claude Code, Cursor และ VS Code ตัวนี้ต้องมี Node.js, Docker ในเครื่องด้วย

มีตัวไหนใช้แทนได้บ้าง?

ในหมวดเดียวกันมี World Monitor, Claude Flow, Tldraw

ตัวที่ใช้แทนได้

server หมวดเดียวกันจากผู้ทำคนอื่น เรียงตามดาว

อ่านการ์ด:↓ ดาวน์โหลดต่อสัปดาห์i★ ดาว GitHubiสามเสา: รีวิว · ผลตรวจ · การใช้งานiอัปเดต = วันที่ส่งรุ่นล่าสุดเข้า registryi

World Monitor

ข่าวกรองโลกแบบเรียลไทม์: ความขัดแย้ง ตลาด พลังงาน การค้า การขนส่ง และไซเบอร์

โดย koala73ใช้กันมาก★ 90.5Kอัปเดต 6 วันที่ผ่านมา

รันบนคลาวด์✓ worldmonitor.app

Claude Flow

AI orchestration with hive-mind swarms, neural networks, and 87 MCP tools for enterprise dev.

โดย ruvnetใช้กันมาก↓ 13.5K/สัปดาห์★ 81.4Kอัปเดต 14 เดือนที่ผ่านมา

รันบนเครื่อง

Tldraw

วาดภาพและระดมไอเดียร่วมกับ AI บนกระดาน tldraw

โดย tldrawใช้กันมาก★ 51.4Kอัปเดต 8 เดือนที่ผ่านมา

รันบนคลาวด์

README จากผู้ทำ

เปิดอ่าน README

ส่วนนี้คัดจาก repo ของผู้ทำตามต้นฉบับ PopNx MCP ไม่ได้ตรวจหรือรับรองเนื้อหา ตัด HTML รูปภาพ และสคริปต์ออกแล้ว ลิงก์จะพาออกนอกเว็บ

plex-mcp

An MCP server that gives your AI assistant a complete picture of your Plex Media Server: every library, watched and unwatched, every household member's watch history, plus safe curation writes (playlists, collections, watched state, ratings, the plex.tv watchlist).

It talks to Plex's HTTP API directly (no client library, 2 runtime dependencies), ships as an npm package and a Docker image, and is tested offline.

Nothing in this server can delete, move, or modify media files or metadata.

What you can ask

  • "Which Scorsese films haven't I seen?"
  • "Pick three unwatched 90s thrillers under 100 minutes."
  • "What should I continue tonight?" (the next unwatched episode of each show)
  • "Has anyone else watched Severance? Who's furthest along?"
  • "What did the kids watch this month?"
  • "What's new in the TV library this week?"
  • "Make a collection of everything Denis Villeneuve directed that I haven't rated."

Quick start

Requires Node 22+ and a Plex Media Server you own.

1. Sign in and get your credentials (plex.tv PIN flow, no token hunting):

npx @dustinhansen/plex-mcp login

It prints a link, waits for you to approve it in the browser, then prints PLEX_URL=… and PLEX_TOKEN=…. Add --write to append both lines to a file as well. The file holds your token, so on macOS and Linux a new one is created readable by you only. An existing file keeps its permissions. --write refuses a file name that starts with -, so pass it as ./-name. (Prefer the manual route? Plex Web → play any item → ⋮ → Get Info → View XML → X-Plex-Token in the URL.)

2. Add it to your client. Any MCP client that can launch a local (stdio) server works. Most of them take the server as a command, its arguments and an environment. Here are 2 CLIs, for example:

# Claude Code

claude mcp add plex -e PLEX_URL=http:// :32400 -e PLEX_TOKEN= -- npx -y @dustinhansen/plex-mcp

Codex

codex mcp add plex --env PLEX_URL=http:// :32400 --env PLEX_TOKEN= -- npx -y @dustinhansen/plex-mcp

Clients configured with a JSON file (Claude Desktop, Cursor, and any client that reads a .mcp.json) mostly use this shape. Your client's docs say where the file lives and whether it names the top-level key differently:

{

"mcpServers": { "plex": { "command": "npx", "args": ["-y", "@dustinhansen/plex-mcp"], "env": { "PLEX_URL": "http:// :32400", "PLEX_TOKEN": " " } } } }

Assistants that run in a browser or on a phone (claude.ai, ChatGPT) can't launch a local process. They need the server in HTTP mode, reachable from the vendor's cloud. See HTTP mode and Docker and docs/remote-access.md.

Use the server owner's admin token if you want every user's watch history.

Tools

The server registers 22 tools by default, and the optional ones below add up to 4 more. Each tool declares a title and all 4 MCP annotations (read-only, destructive, idempotent, open-world). The spec tells clients to treat annotations as hints, so the Safety model rests on what the server registers.

Browse & read
toolwhat it does
list_librariesAll sections with libraryType (Movies / TV Shows / Music / Photos / Other Videos), scanner type, agent, and whether a scan is running.
list_mediaAny library, any kind (movie/show/season/episode/artist/album/track/collection). Filters: watched, rated, genre, year, decade, contentRating, collection, country, studio, label, maxDurationMin, addedSince, lastViewedBefore, lastViewedAfter. The last-viewed filters take an ISO date or a relative value like -3y. A never-watched item counts as last viewed before any date, so pair lastViewedBefore with watched: "watched" to leave those out. Sorts: title, year, rating, audienceRating, userRating, addedAt, lastViewedAt, viewCount, duration, random. A filters object names what each genre, collection, country, studio or label filter matched, so you can see when a name matched a longer one. collection with no kind lists the kind the collection holds, so an episode collection in a TV library lists episodes. A smart collection with no tag is an error naming the ratingKey to pass to get_children. Paginated (offset/limit/nextOffset). fields projects each record to the keys you need. detail: true adds fields such as cast, crew and a summary to each record, and caps limit at 25.
searchGlobal search across libraries incl. people, collections, playlists. externalId (imdb:tt0113277, tmdb:949, tvdb:12345) looks a movie or show up by the id Plex holds for it instead.
get_itemFull metadata + file info (paths, codecs, sizes, every version) by ratingKey. labels names the item's Plex labels, and is an empty array when it has none.
get_childrenChildren of a show (seasons), season (episodes), artist (albums), album (tracks), collection (items) or playlist (items, with playlist: true). A movie, episode or track has no children, and the call fails saying so. Paginated (offset/limit/nextOffset). fields projects each record to the keys you need. detail: true adds fields such as cast, crew and a summary to each record, and caps limit at 25.
get_extrasTrailers, featurettes, behind-the-scenes for an item.
person_creditsFilmography by director/actor/writer/composer, with watched filter. Paginated (offset/limit/nextOffset). fields projects each record to the keys you need. detail: true adds fields such as cast, crew and a summary to each record, and caps limit at 25.
library_changesWhat's new or updated since a cutoff (-7d or ISO date), as an added and an updated list, each capped by limit. detail: true adds fields such as cast, crew and a summary to each record, and caps limit at 25 for each list.
library_statsTotals watched and unwatched, with genre/decade/rating breakdowns and optional per-user play counts.
Discover
toolwhat it does
similar_itemsPlex's "more like this" for an item, with a watched filter.
random_pickN random items matching any list_media filter set ("surprise me, unwatched, 80s, under 2h"). Each pick is the same record list_media returns. filters names what the tag filters matched, as in list_media, and collection with no kind picks the kind the collection holds. A smart collection with no tag is an error naming the ratingKey to pass to get_children. detail: true adds fields such as cast, crew and a summary to each record. user picks as a Plex Home user, so unwatched means unwatched by them.
continue_watchingPlex's Continue Watching row: the next unwatched episode per in-progress show and any partially watched movie, with how far into each you are. detail: true returns full item records instead, and caps limit at 25.
get_watchlistThe server owner's plex.tv watchlist, with whether each title is in a library here and its ratingKey if so. Paginated (offset/limit).

There are also two MCP prompts, movie_night and whats_new, and a plex://libraries resource.

History & household
toolwhat it does
watch_historyWho watched what, and when. Filter by user, library, time window, or item.
now_playing / list_usersLive sessions and every account on the server.

continue_watching, list_media, random_pick and library_stats accept a user argument to see the library as a Plex Home user (their watched state, their on-deck). Plex only allows this for Home (managed) users. For friends, watch_history is the view that works for everyone.

Curate (writes)

Registered unless PLEX_READ_ONLY=1.

toolwhat it does
set_watchedMark items watched/unwatched (explicit ratingKeys only).
rate_itemSet or clear the server owner's star rating.
manage_playlist / manage_collectionCreate, add, remove, delete. Deleting removes only the grouping, never media.
manage_watchlistAdd movies and shows in the library to the server owner's plex.tv watchlist, or remove them (explicit ratingKeys only).
scan_libraryTrigger "Scan Library Files" for a section, optionally one folder.

manage_watchlist resolves each ratingKey to the Plex GUID plex.tv identifies the item by. It takes movies and shows only, the kinds a Plex watchlist offers, and refuses an item matched by a legacy agent (which has no Plex GUID). Both checks run before anything is sent.

Optional: playback (off by default)

Set PLEX_ALLOW_PLAYBACK=1 to register list_clients and play_item ("play this album on my phone"). Both tools use Plex's player-control API, so the target must be a player that advertises itself to the server. We have tested playback with Plexamp. Current Plex apps for TVs and desktops may not show up in list_clients at all: Plex for Apple TV and Plex for Mac did not, even with the app open. Off by default because it's the one thing here that touches the real world. PLEX_READ_ONLY=1 keeps them unregistered even when this is set.

Optional: Tautulli

Set TAUTULLI_URL and TAUTULLI_API_KEY to add tautulli_stats (home stats: most watched, most active users, popular items over a period) and tautulli_history (per-play records with platform, player, and percent watched). Plex's own history covers the basics. Tautulli adds the detail most admins already collect. They need Tautulli 2.18.0 or later, the first release that reads the API key from a request header.

Safety model

  • No media mutations. There is no code path that deletes, moves, renames, or edits media files or metadata. Playlist/collection deletion removes the grouping only.
  • Writes are explicit. Every write names its targets: items by ratingKey, a playlist or collection by id, and a library by title. A library scan can narrow to one folder. Creating a collection names its library too: several read tools default to Movies because a read changes nothing, but a write never picks its own target. The collection's kind is not a target: it follows the named library (movie, show, or album for a music library), so it always agrees with where the collection goes. A kind that contradicts the library is refused before the write, and so is a library type that holds no collection kind the tool offers. Nothing operates on "all matches".
  • Playback is opt-in via an environment variable. The tools aren't registered without it.
  • `PLEX_READ_ONLY=1` removes every write. The curation writes and the playback tools are not registered, whatever PLEX_ALLOW_PLAYBACK says, so a client sees only reads. The Tautulli tools are reads and stay. The restriction wins over the opt-in because a server set up to change nothing should not start changing things when another variable is added. Any value other than 1, 0 or empty stops the server rather than starting it with writes.
  • Ids are a run of digits. A tool refuses any ratingKey, playlist id or collection id with anything else in it before the request reaches Plex (the client also refuses a request path that does not resolve to itself). We made this decision because a tool puts the id into the request path, and Plex marks an item watched, rates it and refreshes a library over GET. An id carrying .. or ? could turn a read into one of those writes, even with PLEX_READ_ONLY=1. We refuse a bad id rather than encode it, because no real Plex id needs encoding.
  • Errors never echo upstream response bodies from Plex, plex.tv or Tautulli, which can contain server paths and configuration. A failed request names the upstream, the path and either the HTTP status or the network cause, such as `Plex unreachable (E

ตัดมาแค่ช่วงต้น อ่านต่อใน repo